Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

As a curiosity, it's worth mentioning there have been entire GUIs written in assembly. Probably the last commercially released one was GEOS a.k.a. GeoWorks Ensemble. It was a small and efficient GUI environment for x86 PCs, briefly somewhat popular as a Windows alternative around 1990.

Steve Yegge worked there and tells an interesting story. 15 million lines of hand-written x86 assembly!

http://steve-yegge.blogspot.com/2008/05/dynamic-languages-st...

"OK: I went to the University of Washington and [then] I got hired by this company called Geoworks, doing assembly-language programming, and I did it for five years. To us, the Geoworkers, we wrote a whole operating system, the libraries, drivers, apps, you know: a desktop operating system in assembly. 8086 assembly! It wasn't even good assembly! We had four registers! [Plus the] si [register] if you counted, you know, if you counted 386, right? It was horrible.

"I mean, actually we kind of liked it. It was Object-Oriented Assembly. It's amazing what you can talk yourself into liking, which is the real irony of all this. And to us, C++ was the ultimate in Roman decadence. I mean, it was equivalent to going and vomiting so you could eat more. They had IF! We had jump CX zero! Right? They had "Objects". Well we did too, but I mean they had syntax for it, right? I mean it was all just such weeniness. And we knew that we could outperform any compiler out there because at the time, we could!

"So what happened? Well, they went bankrupt. Why? Now I'm probably disagreeing – I know for a fact that I'm disagreeing with every Geoworker out there. I'm the only one that holds this belief. But it's because we wrote fifteen million lines of 8086 assembly language. We had really good tools, world class tools: trust me, you need 'em. But at some point, man...

"The problem is, picture an ant walking across your garage floor, trying to make a straight line of it. It ain't gonna make a straight line. And you know this because you have perspective. You can see the ant walking around, going hee hee hee, look at him locally optimize for that rock, and now he's going off this way, right?

"This is what we were, when we were writing this giant assembly-language system. Because what happened was, Microsoft eventually released a platform for mobile devices that was much faster than ours. OK? And I started going in with my debugger, going, what? What is up with this? This rendering is just really slow, it's like sluggish, you know. And I went in and found out that some title bar was getting rendered 140 times every time you refreshed the screen. It wasn't just the title bar. Everything was getting called multiple times.

"Because we couldn't see how the system worked anymore!"

...I have to say, the "140 redraws by accident" part sounds like an ordinary day in web UI development using 2023 frameworks. The problem of not seeing the entire picture of what's going on isn't limited to assembly programmers. You can start from the opposite end of the abstraction spectrum and end up with the same issues.



Roller Coaster Tycoon was almost entirely written in assembler by Chris Sawyer. Pretty amazing story, and released in 1999, as well, so well past the point most people had stopped doing 100% assembler development.

https://en.wikipedia.org/wiki/RollerCoaster_Tycoon_(video_ga...


A couple of GUIs written in assembly this century are MenuetOS and KolibriOS.


Not only GUIs, entire operating systems.

Besides the early computing days, the 8 and 16 bit home computers were mostly Assembly.

Even if Amiga, Atari and Archimedes had their share of BCPL, C and Modula-2, MS-DOS was fully implemented in Assembly.


Early in the 1990s Photodex wrote their CompuPic photo management program in assembly. The shareware version of CompuPic was popular for creating/editing/retouching lowball graphics when the www soon emerged.


I'm pretty sure the 90s painting app Xara Studio was also done in assembly.


That wouldn't surprise me. The original Xara could render complex SVGs in under two seconds on a 486-66. The most optimized program I have ever used.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: