← Back to context

Comment by jorl17

20 hours ago

*Many* devs would be completely incapable of learning assembly. Heck, many would be unable to learn C.

Likewise, *many* vibecoders would absolutely fail to adapt, and some would adapt, with this being their first experience. Just think of how many people started coding by using old gamemaker tools or scratch, or playing silly games. It is not the same as an LLM, but the idea that it is a gateway is definitely there. I wouldn't call LLMs "programming", because they're doing more: they're building products, which involves a lot more than programming -- hence why the skills to really thrive with LLMs are not just those of a good developer or engineer.

But weeks? I'd say less than 10% of the devs I've known my entire life would develop properly in assembly (and I'm being quite generous). Memory management, pointers, registers...just to name a few.

I think far too many people fail to realize that, with LLMs, the brain of a good problem solver, especially one with engineering background, gets much better results than someone with different characteristics. Similarly, the mind of a good product developer (and even someone with good UX inclination) does a much better job and building usable products.

This idea that LLMs are doing all of the work is frankly mind-boggling to me. It must stem from vastly different experiences of what LLMs do or whomever is using them around who says these claims. Obviously they do a lot of work, especially in the development prototyping, architecture and even ideation parts. But they only do (almost) "all of the work" in very simple or bad apps.

I've seen loads of terrible vibe-coding jobs: UX is terrible, bugs everywhere, clearly no consideration at any point for architecture (and thus the product is barely holding on). And I've seen the opposite: products that feel and act like premium stuff, because they were built by people with true love for what they do, sometimes even with a very good problem solving mind to add to that (leading to a not-so-terrible-albeit-still-barely-holding-on-but-thats-clearly-good-enough-for-the-product architecture). For every good app there are maybe 100 lovable apps that all look the same and break the second you do the wrong sequence of clicks, but the good ones do exist.

It's a tool that enables mediocrity to exist where it didn't previously, but it also empowers so many people in incredible ways. Still, you definitely need to be good at using the tool, and it definitely doesn't just happen overnight.

Isn't OS still required for a CS degree? Didn’t we all write our own kernel and virtual memory system in MIPs assembly code? We’ve been here before, I’m sure a lot of future AI coders will be forced to learn the abstraction stack like we did in a formal CS program.

  • As the field of "computing" develops more and more high level abstractions, that necessarily reduces the amount of time that can be spend on lower-level stuff. These days I think it's typical to have one or two courses that cover OS/embedded/assembly/compiler type of topics, but that's the bare minimum for awareness, not near enough for actual learning. On the spectrum from low-level to high-level, CS sits just below SE. Computer engineering is the field/degree that gives people actual skills in OS-level programming.

  • The courses might have assembly and stuff on paper (in many places not even that) but in most cases you write very simple toy programs, nothing like real-world stuff, reading compiler output or writing larger asm programs.

  • I've seen "software engineering" degrees where they teach some high level coding and how to manage tickets and this sort of stuff.

    0 mathematics, 0 algorithms, 0 formal languages.

    Universities are pumping out "professionals" like crazy, plus nowadays they are replacing courses with new courses about AI (which might be machine learning in the best case or just prompting in the worst case).

    The result is that you need to go and ask what courses where in a degree, and even then it's not really a guarantee of anything (I've met master student with bachelor in computer science who were completely unable to find the smallest number in an array).

  • Yeah, it was, 15 years ago when I was in school.

    And yet: I have not written assembly since school except for one Advent of Code challenge, and I expect it would take me quite a while to pick up a productive level of facility with it.

Well, I'm only a few years from retirement, so maybe the demographics are different now, I grant. Used to be everyone learned assembly in college.

  • I learned MIPS assembly and there were brief references to x86 assembly, and I know most of my friends would do fine with assembly, but, alas, most engineers I've known barely even know what memory management is, so being able to create proper abstractions with assembly would definitely be out of their league.

    It's vaguely similar to how JS and Node enable so many people to flood the market without really knowing the underlying technology. Many of those would definitely not pick up assembly (which is the entire point I was trying to make)

  • Hell, I did a Physics degree, and I had to learn assembly (the NS 32k), which wasn't a huge issue alongside the 6502, Z80 and m68k that I already knew.

    Now retired (come join the dark side, we have cookies) but still a few years away from what people would call "retirement age"

    • I need to retire so I can really tear into my massive project backlog. :) I'm really enjoying teaching, but it's unclear if this position will exist 3 years from now.

  • I think some still do. But writing a few lines of code in some computer architecture course isn't really enough. It's not just the language, it's the libraries and not understanding how things work under the hood.

  • I remember back in 2014 we had a class in assembly (we used x86 assembly running in DOSbox). One of the projects I most vividly remember was writing a simple paint program controlled using the arrow keys.

  • by the 90's more like struggle through a single, one-semester course that had a unit and some labs on assembly.

  • That was 40 years ago when we had 5.25" discs in school. In todays schools (up to 16-18), nobody knows what Assembly is, even the teachers.

  • Used to be everyone learned assembly in college.

    I imagine that was x86, which was relatively easy but also horrible. Very few people are writing assembly today because you'd need to be able to do x86-64 SIMD, ARM64, and maybe RISC-V, which are all quite a bit more complicated.

    • We learnt MIPS assembly as part of the processor design class, where we built a DLX processor & emulated it running our code, and then we learnt x86 assembly as part of a class on debugging & reverse engineering (which is also where you'd usually have the good old bomblab assignment). That was in 2014.

    • MIPS, because of the books provided for computer architecture (Hennessy and Paterson) were written by the MIPs designers. No one I knew of learned X-86, the Dragon compiler book however had all its examples in VAX assembly.

To add to what you're saying, that's also ignoring that having the time or ability to build really complex things in assembly is harder, higher level languages making things easier also enables people to do more complex things