← Back to context

Comment by brookst

9 hours ago

This whole argument can be made for why every programmer needs to deeply understand assembly language and computer hardware.

At a certain point, higher level languages stop working. Performance, low level control of clocks and interrupts, etc.

I’m old enough dropping into assembly to be clever with the 8259 interrupt controller really was required. Programmers today? The vast majority don’t really understand how any of that works.

And honestly I still believe that hardware-up understanding is valuable. But is it necessary? Is it the most important thing for most programmers today?

When I step back this just reads like the same old “kids these days have it so easy, I had to walk to school uphill through the snow” thing.

Teaching how computer hardware works is pretty smart. There is no need to do it in depth though.

Writing assembly is probably completely irrelevant. You should still know how programming language concepts map to basic operations though. Simple things like strict field offsets, calling conventions, function calls, dynamic linking, etc.

  • > Writing assembly is probably completely irrelevant.

    ffmpeg disagrees.

    More broadly, though, it’s a logical step if you want to go from “here’s how PN junctions work” to “let’s run code on a microprocessor.” There was a game up here yesterday about building a GPU, in the same vein of nand2tetris, Turing Complete, etc. I find those quite fun, and if you wanted to do something like Ben Eater’s 8-bit computer, it would probably make sense to continue with assembly before going into C, and then a higher-level language.