Hacker News new | ask | show | jobs
by JohnFen 1177 days ago
> while there are undoubtedly experts in this domain whose contributions are indispensable, the majority of programmers can comfortably rely on higher-level abstractions without delving into the complexities of Assembly.

True. You don't need to be an assembly expert to be a great programmer, but I do think you need to have a solid understanding of how computers work all the way down to the CPU level in order to be a great programmer. And once you have that knowledge, assembly isn't a big hurdle anyway.

2 comments

I don't think any individual needs to be an assembly expert, but as a community developers still need some people to be assembly experts.

Our systems will rot without people to maintain them, the AI aren't infallable yet.

The greater worry isn't that the general user will let mostly defunct skills rot, it's that we need a path to raise the next generation of experts in these niche skills.

Oh, do not you worry, that path is called SNES emulators and teen crackers reverse engineering new releases' product activation loops. Curious teens are a staple of civilization.
I don’t know anything about assembly and I can’t say I’ve ever thought about it.
You’ve never learned about it in university? It’s still a semi important concept to learn how a compiler is kind of rewriting your code and optimizing things. In rare occasions it can mess things up when you use optimization options. Even in rare iOS and Android development cases and LLVM. Not exactly assembly but similar logic. I think that goes to the original point, if you are just trying to make something? Sure JavaScript is enough, but I don’t think that’s a good mindset to have if you are trying to be an expert in computing/computer science.
I’m a programmer. I’m not a computer scientist. I didn’t study computer science. I agree it’s probably important to computer science.
Sorry I didn’t mean it that way. What I mean to say is that even in cases of iOS and Android, there are edge cases where assembly knowledge does help. While LLVM isn’t exactly assembly it’s similar in logic. It’s not to say “computer science” more so, than it is to say it’s still a decently good topic to at least know and be familiar with when you get the build button on a native app even. Granted these are rare edge cases. It was similar to someone in this thread mentioned street navigation and how we don’t care about it anymore. I do… there will be a time and place in my life that a GPS will not be in my pocket, so it’s still important to familiarize how to physically navigate the world. As we abstract more and more away from our workflows, it’s still a good mentality to familiarize your self with the old tools. It’s why math is still important for programmers ti know! You won’t need a matrix multiplication anytime soon, but it helps if you are suddenly doing graphics and you want to know how something is working (or AI…)
So I’m not trying to be difficult, but can you give an example of how it could help with some sort of iOS task? Because I really don’t know and I’m curious.
I don't think you are being difficult at all! Also, in fairness I've only ran into it once that I can remember off the top of my head but there was a problem with an optimization flag settings. A crash would only happen with a certain higher level optimization flag (you can also get linker issues but that is not really the issue here). When you get a compiler bug, or it feels like there is no way your source code could be wrong, sometimes it can be at a level that looking at the disassembly code can be inspected compared it with your written source code. In 10 years of doing iOS stuff I've only ever had to do it once. An edge case of an edge case, but I am glad that I could have run into that problem.