Low-Level Programming Debate

This cluster debates whether modern programmers need deep knowledge of low-level concepts like assembly, C, CPU architecture, and hardware fundamentals, or if high-level abstractions are sufficient for effective software development.

šŸ“‰ Falling 0.5x Programming Languages
3,689
Comments
20
Years Active
5
Top Authors
#9813
Topic ID

Activity Over Time

2007
6
2008
42
2009
72
2010
102
2011
137
2012
180
2013
126
2014
171
2015
129
2016
209
2017
197
2018
212
2019
252
2020
216
2021
336
2022
323
2023
358
2024
293
2025
306
2026
24

Keywords

RE CS CPU AI OP IMO OK TCP HTTP godbolt.org level abstraction assembly abstractions low level high level cpu programmers understanding understand

Sample Comments

ZephyrBlu • Aug 25, 2022 • View on HN

What do you consider "high-level code" and in what way does deeply understanding how a computer works influence your approach?

bogota • Oct 19, 2022 • View on HN

People have already got to that level without understanding the environment and hardware. I have worked with them and spent a lot of time explaining how the system works.I personally don’t understand how people enjoy programming without understanding the stack they are ontop of but im sure some C and assembly programmers said the same thing about most of us today.

layer8 • Dec 19, 2024 • View on HN

Until maybe 15-ish years ago, it was common for programmers to ā€œbottom outā€ on the machine code level. In other words, they came to roughly understand the whole software stack in principle down to the software-hardware interface (the CPU executing machine code). The topic of this thread is that this has (allegedly) changed, developers at large don’t go down in their understanding until they hit hardware anymore.Okay, you might argue that in earlier decades programmers also tended to ha

jawerty • Jun 9, 2024 • View on HN

Most people don’t need to write their own OS or compiler. Knowing the details of how things work is apart of getting to gaining expertise

scarface74 • Aug 15, 2020 • View on HN

If we don't understand something from first principles, we don't really understand it in my opinion.How many modern developers have written a single line of assembly yet alone written production assembly code? How many have even written C or used any other language that doesn’t have garbage collection.Everyone who started working on a technology before abstractions make it more accessible think that you really need to understand deeper to be effective.I had to get out o

Const-me • Jun 1, 2017 • View on HN

There’re no fundamental concepts.If you’ll start with C, there’s assembler and machine code underneath.Underneath there’s memory hierarchy, CPU microarchitecture, buses, and other things like USB protocol stack.Underneath there’re logic gates, comparators, summators.Underneath there’s physics, quantum mechanics, electrodynamics.Each of these abstraction levels is fundamental relative to the upper one.The level of abstraction that you declare fundamental is arbitrary. You can de

mytailorisrich • Jun 23, 2021 • View on HN

The point is not to tech "C'isms" but to teach how computers and software work at low level. Even an introduction to an assembly language would be helpful. Higher level languages still perform these tasks but hide them from the user. Even if most people will end up using a high level language, having an understanding of what is going on and of how things work "under the hood" is invaluable.

subwindow • Apr 11, 2012 • View on HN

I don't think that knowledge of low-level systems programming is ever going away. The order in which we learn it is merely changing. In the past, everyone had to understand the absolute basics first because the higher level abstractions were very leaky. Over time the abstractions have gotten better, performance has become less of a problem for most cases, and low-level systems are no longer something everybody needs to know in order to get by at the higher layers of abstraction.

akuma73 • Nov 17, 2016 • View on HN

Don't feel too bad.Fully understanding the complete stack of a modern computer system is outside the scope of almost everyone. These things are complicated and we've built abstractions, interfaces and modules to manage the complexity.People specialize in their own fields. I am trained in digital integrated circuit design, but don't ask me to build a file system.

donkeybeer • Jan 24, 2024 • View on HN

Of course. Even below assembly language there are many layers on today's computers. As you noted pipelining, microcode, branch prediction, etc there is a lot more below it. And further below one gets electronics and then quantum theory and so on. So its a matter of what abstraction one can safely ignore I think. And today I think we at least need to go to the level of that sub-assembly stuff if one wants to write anything that does not perform badly. I personally also feel whatever layer on