Hacker News new | ask | show | jobs
by ashleyn 3175 days ago
I love low-level, assembly-level programming. The big problem is, we're largely past the era of it.

All but the most simplest embedded systems are complex enough to require some pre-developed library or abstraction layer to stand between a single tinkerer and the hardware. Otherwise it would take you an eternity just to stand up a "Hello World!" The cost of a Linux-capable SoC is low enough that you can buy one for $5 in the form of the Pi Zero. If a system complex enough to run Linux only costs $5 to sell, and probably even less to make, what incentive is there anymore to produce hardware that's simple enough to work with directly at the assembly layer?

The last holdouts are extremely power-efficient embedded systems. And even then you can do those with C.

I'm an old fart who can remember the "good ol' days" just as well, and I still program the SNES as a hobby. But really, that's all it'll ever be anymore; a hobby for legacy systems. There's no reason anymore to even skip C, when architectures have been so fine-tuned for code written with C.

4 comments

You would be surprised how much it is used still in embedded dev. Picking an embedded board that can, with low level coding, just run your target software is generally far cheaper and power friendly than something more powerful. On millions of devices being produced every cent counts and on wearable devices every hour battery life counts.

For instance, in our case and the case I know best, we could use a full 32 bit ARM arch in our hardware but we do not; we retarget a very simple microcontroller with a few kilobytes of memory for this because it is far cheaper and far less power hungry. Result is that we have to use asm or C with quite a high % of asm. We decided to use only asm because it makes the audits easier too. Because of this work I got to meet many manufacturers and these components are in a lot of appliances and are often coded in asm.

I don't fully agree that we're "past" it.

It's definitely out of fashion, but when something complicated breaks, where is the "adult" you call to figure it out? :)

I do 100% agree that commercial systems / enterprise / game dev is past the low level era, but the knowledge of the area is anything but obsolete for the reason I mentioned before.

I like learning about these legacy systems precisely because we are past them. They are no longer being extended. What I learn about e.g. 6502 today will be 100% applicable 10 years from now. I don't have that confidence with modern systems.
That is what I like about it too. The systems I have in my mancave and program for fun on, are from the early 80s. They are known inside and out (literally), they all still work and in 10 years they will be exactly the same.
my intent in working on this project was (for my personal education) to start engaging with computers involving the fewest layers of abstraction possible, and the gameboy seemed like a fun way to do that.

my hope was to try to stand these up on systems that i actually use on a day-to-day basis, so it's kinda disheartening that that may be overly ambitious, but i'll write about it if i have any success :)