Live data from Hacker News

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

codefol.io

1–10 of 21 posts

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

#2
This is an excellent article and I rarely see people giving this advise. At the end of the day there is no bottom in general. And it's not clear why that's the case unless you have a reasonable amount of experience in electrical engineering / manufacturering and computer design. An interpreter or a compiler is a computer. Anything lower than that is just implementation details.

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

#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 document, because that isn't seen as positive value creation in today's corporate climate. It won't ever be short of a legal requirement to do so. That legal requirement will be fought tooth and nail on the basis of wanting to continue to protect trade secrets.

Nothing keeps a device from having it's actions fully elucidated except an unwillingness to abolish information asymmetry.

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

#4
The main reason to dig down is to uncover faults and leaks in abstractions, which is something you absolutely will have to do in the fullness of time.

A corollary reason is to improve your "mechanical sympathy" when writing high-performance code.

Many of what we once called "application devs" -- now more commonly "full-stack devs" -- will never have to discover real mechanical sympathy, which is fine. But there is a glass floor for such people.

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

#5
Maybe it's not worth learning C as a programming language, but it's worth learning the C standard library, as every language links it in and most of the functionality is available. I'd also say to throw in a cursory reading of the Linux kernel's syscalls as exposed through glibc and a tutorial on how to go from glibc to the kernel implementation of the syscall. It's not strictly necessary for game development or frontend website design, but in games you'll end up learning C++ anyway and with websites everyone seems to migrate into the backend servers eventually or else quit programming and do graphics design.

As far as operating systems, Rust does seem to be a better entry point, with the Redox OS and general community.

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

#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.

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

#7
I was recently doing some language evaluation for rewriting an existing system in Go to improve its cross-platform compatibility. One of the things I realized in this exercise was that "compiles to C" was a powerful feature - not because of C itself, since C often gets in the way of the source language's intent - but because it means that the result fits into and leverages all the C-based tooling, facilitating the desired level of platform independence.

And for a lot of projects today, "the bottom" ends with C for precisely this reason - while the fact that C is the chosen language for this task is completely arbitrary, as arbitrary as the status quo hardware paradigm of "x86 on desktops, ARM on mobile". I could imagine a universe where it was an extended form of Basic or Pascal that ruled the world instead.

Likewise, I was also looking into extending Lua with a small DSL interpreter that could accelerate certain byte-level tasks: copy around blocks of bytes, run some common algorithms quickly, define spaces for variables, apply some parameters. At first I thought of this language as a "VLIW" assembly language with a particular focus on having a big bag of tricks, but when I compared my semantics with actual hardware assemblers, I found that having no registers or stack manipulation and focusing only on direct memory addresses changed the character of it so much as to make it a different beast, one more like the "autocoders" of the 1950's: not quite ALGOL, and yet clearly headed in that direction.

All of which is to say - the more you are comfortable with compilers, the more the bottom just becomes the thing you happen to be leveraging to ship product. It isn't "the real stuff" until it becomes the specification language. Some things, like how numeric types are defined in hardware, force the terms of specification way up the stack so that the hardware may be used at its capacity. But that in itself is an "essential complexity" in computing, where the physical realities coincide with the desired programming model. When it's software defining the spec, as in our libc-and-Javascript-driven universe, that's more akin to social complexity, but it produces the same kinds of effects.

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

#8
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 am sure a few months is enough.
Post reply on HN