Live data from Hacker News

There's No Such Thing as Knowing Your Computer 'All the Way to the Bottom'

codefol.io

11–20 of 21 posts

Re: There's No Such Thing as Knowing Your Computer 'All the Way to the Bottom'

#11

This lives on the assumption (one I often see repeated) that everyone is writing code to the same requirements and implementation details as you. If I'm in a washing machine I;m in total control (or bloody well should be).

What you say is true.

I would point out that the vast bulk of software in the entire world is vertical market business software. Vertical market meaning for a limited kind of user, versus horizontal software such as Word or Excel that everyone might use. Vertical market software is literally everywhere and largely invisible. Your public library has custom software. Your hospital. Ever go to get a blood draw and notice the operator is using specialized software. The place that changes the oil in your car. A lawyer's office. Cabinetry makers have custom specialized software. Cities using utility billing software. Keeps track of what gas meters (models, serial numbers) and whether and where installed, tracks the meter usage and generates bills. Rental car companies and airlines have custom software. Hotels have custom software. Restaurants software may have a map of the tables and what "state" they are in, with a list of customers in line. Some of these categories like City, Healthcare, School Districts, and other specialized software are entire industries unto themselves with huge software companies that build software just for these specific industries.

Much of this software is now web based. Because web based is centrally controlled. Zero install at the workstation and zero maintenance at all the workstations. All you need is an OS and a browser. (hint: chromebooks in some cases, and iPads, etc)

Is it any surprise that languages like Java have been the top languages year after year? It's where the jobs are.

It's not the same thing as microcontrollers. And microcontrollers are in lots of things around us. But they get built once, and replicated millions of times. The vertical market business software has thousands of specialized categories, all different, and with ever changing regulatory requirements (federal and state) and reporting requirements, etc. An accounting system with a large complex payroll module probably pays your paycheck. And is integrated with a human resources system. And benefits system.

All this software is written thinking at a higher level of abstraction some distance from the hardware. Transactions. Currency amounts and conversion. Databases. Yes, it may sound boring, but it's what makes the world go around and is mostly invisible.

It's also very stable. Like decades of employment stable.

Re: There's No Such Thing as Knowing Your Computer 'All the Way to the Bottom'

#12
There is one main reason to learn C: everything can interface with C, and you may need to extend your language's capabilities.

There is one main reason to learn assembly: things WILL eventually go wrong, to the point that you need to debug at the machine level in order to understand what's going on.

Also, many debug tools such as ptrace are primarily accessed through C, and require a basic understanding of the assembler view of the machine.

Re: There's No Such Thing as Knowing Your Computer 'All the Way to the Bottom'

#13
post #6
post #3

I disagree. If it can be built, it can be known, top to bottom. Not everyone may want to know all the gory details, and nobody wants to get called on to explain it, but it can be, and should be done as a matter of course. The issue is that the industry will kick and scream to keep from being held accountable to providing the customer with a way to be able to parse that information, and no one wants to hire people to…

It would take many human lifetimes to learn how your computer works from the web frontend down to the semiconductor physics.

It depends how in-depth you want to go.

On my four year electronic engineering course, we did semiconductor physics, principles of electromagnetism, IC design, digital logic using semiconductors, abstract digital logic, processors and systems programming with ARM assembly, transmission lines, digital comms systems (stuff like network throughput, dish areas, network capacity, information theory), the Ethernet standard, packet switching algorithms, TCP/IP, network programming with C, high level languages (Python, Java), and on my own for degree projects I did stuff with PostgreSQL, FastCGI, Elixir, HTTP and Javascript. There were optional modules for stuff like nanotech, physical modelling synthesis, control theory, audio programming for iOS, etc.

Combine that four year degree with a computer science degree (so eight years total), and I think you'd have a pretty in-depth overview of the principles of every part of the stack from React down to silicon, boron and phosphorus, albeit not all the implementation details.

Re: There's No Such Thing as Knowing Your Computer 'All the Way to the Bottom'

#14
post #6

Earlier quoted context omitted.

It would take many human lifetimes to learn how your computer works from the web frontend down to the semiconductor physics.

It depends how in-depth you want to go. On my four year electronic engineering course, we did semiconductor physics, principles of electromagnetism, IC design, digital logic using semiconductors, abstract digital logic, processors and systems programming with ARM assembly, transmission lines, digital comms systems (stuff like network throughput, dish areas, network capacity, information theory), the Ethernet standard…

Agressive EEs can cover a lot. I started out designing chips. Agressive CS (Compilers, OS, Data Structures, Databases) can cover a lot. Some of the modern stacks dependencies (npm, blegh) leave you with a lot to comb through. Modern compiler's ability to deal with various level caches and memory architectures, and look-aheads, and TLBs, and what not, can boggle the mind a bit.

One can pretty easily understand all of the sub-systems in isolation (well, it takes more than a couple of years!), but not on ALL of the systems, and complex systems, in total are more than any one mind can reason about in, in total. Too much for one brain to contain the dependency graph.

Re: There's No Such Thing as Knowing Your Computer 'All the Way to the Bottom'

#15
The article makes some good points, but I feel that the headline is inaccurate.

It may be impossible to know everything, just as one cannot claim to know "all" of history, but one can make a bloody good go of it.

The main problem I've encountered personally is simply limits on human memory. Things fall out of your brain.

I studied semiconductors, electromagnetism, quantum mechanics etc as part of my Physics degree. I've written emulators, webapps, backend code, etc.

There are gaps. Not conceptual gaps but rather in implementation.

Could I write a top to bottom tutorial? Not without research, and undoubtedly subject matter experts would pick at it, but I believe I have some understanding about every level of the stack and an idea of where to pick that knowledge back up if I need to.

Is it useful?

I mean, surely that's for an individual to decide. Financially perhaps you'll be better off learning the hot new framework of the day and hobnobbing with the cool kids.

But then you could also get rich making wanky adtech optimisation. Or just starting a run of the mill exploity corp.

Me? I just want to know how it works, in endless fractal beauty.

I don't live my life based on what others consider to be "useful".

Not just in programming, either.

Re: There's No Such Thing as Knowing Your Computer 'All the Way to the Bottom'

#16
post #11

This lives on the assumption (one I often see repeated) that everyone is writing code to the same requirements and implementation details as you. If I'm in a washing machine I;m in total control (or bloody well should be).

What you say is true. I would point out that the vast bulk of software in the entire world is vertical market business software. Vertical market meaning for a limited kind of user, versus horizontal software such as Word or Excel that everyone might use. Vertical market software is literally everywhere and largely invisible. Your public library has custom software. Your hospital. Ever go to get a blood draw and notic…

Probably mis-represented myself. For my sins 30 odd years of MS stack. Doing exactly the money market stuff you're talking about (50bn$ PnL system on last job). I know you know, but how many people understand the transaction isolation model in SQL server (or how to write your own transaction compensator?). Wtf when a supposed DB admin won't allow MARS. Deeper knowledge, deeper understanding. You can't argue - I kinda Know this is you.

Re: There's No Such Thing as Knowing Your Computer 'All the Way to the Bottom'

#17
> there's No Such Thing as Knowing Your Computer 'All the Way to the Bottom'

NAND to Tetris (www.nand2tetris.org) seems like a pretty good take on the concept.

Another one is Wirth's Oberon system, which runs on Wirth's TRM/RISC architecture, which is simple enough for students to implement in Verilog (or another HDL such as VHDL or Wirth's Lola) and compile to an FPGA.

MIPS is also simple enough to implement in Verilog over the course of an academic term and also has good tool support for languages like C and C++.

Personally I find understanding low-level system behavior to be interesting, fun, and helpful for understanding many irritating application behaviors (often errors and slowdowns) which are caused by interactions with the OS and hardware.

Re: There's No Such Thing as Knowing Your Computer 'All the Way to the Bottom'

#18
I realize that it's a bit like saying that COBOL programmers will never have trouble finding work (probably mostly true) but until Linux is rewritten in Rust and macOS/Xnu is rewritten in Swift, C is going to be essential for anyone who has to work with UNIX-like OS kernels and associated drivers.

I would also argue that C is pretty essential for anyone who wants to use EBPF/IOvisor.

Re: There's No Such Thing as Knowing Your Computer 'All the Way to the Bottom'

#19
post #6
post #3

I disagree. If it can be built, it can be known, top to bottom. Not everyone may want to know all the gory details, and nobody wants to get called on to explain it, but it can be, and should be done as a matter of course. The issue is that the industry will kick and scream to keep from being held accountable to providing the customer with a way to be able to parse that information, and no one wants to hire people to…

It would take many human lifetimes to learn how your computer works from the web frontend down to the semiconductor physics.

I'm only at 0.5 and I do fairly well... Key is that it's not in crystal clear focus at the semiconductor physics or Node.js levels, it still pretty close everywhere else.

Not only is it possible, but it is important to demand.

Re: There's No Such Thing as Knowing Your Computer 'All the Way to the Bottom'

#20
I don't agree. At all. Forget C/C++. Build a microprocessor in VHDL or Verilog. This is a common task in many universities with better EE or CSE disciplines. Do these folks understand Java? Or modern C/C++. Well they do much better than the folks that learn at the Java level and work up.
Post reply on HN