Remix.run Logo
shermantanktop 17 hours ago

Ok, sure, windows.

But here’s one I heard literally two days ago: we counted three engineers (out of many) who knew that physical memory was not actually a giant flat space of contiguous addresses, and that there were multiple layers of address-mapping and region-joining glue logic between a program and the hardware, including in os libraries, and even inside the hardware.

Maybe knowing such information is archaic or useless for most engineers. But the good ones (or at least a certain flavor of the good ones) ask questions that lead them there.

59percentmore 4 hours ago | parent | next [-]

You seem to be under the impression that any part of the average contemporary identity-and-behavioral-development stack encourages asking questions. Babysitting/teach-to-the-test schools don't, authoritarian parents and community authorities and corporate overseers don't, consensus-manufacturing politicians and media don't. (Heck, even our national soccer team doesn't.)(That was a joke.)

Worse, people who find it within themselves to ask questions anyway frequently face silence or a smackdown. The Internet's Own Boy remains no longer with us.

kristiandupont 8 hours ago | parent | prev | next [-]

I wrote x86 assembly back when we were switching from real mode to protected mode, and I still have a feeling that I would not have been able to answer whatever question you asked there in a way that would satisfy you.

I also could no longer tell you how to balance a binary tree or implement Quicksort.

masfuerte 16 hours ago | parent | prev [-]

But physical memory is a giant flat space of contiguous addresses. Do you mean virtual memory?

assimpleaspossi 6 hours ago | parent | next [-]

I almost questioned the same thing but I think we both know that's what he meant.

customguy 10 hours ago | parent | prev [-]

How could it be? For example, each memory stick doesn't know beforehand what other memory sticks it will be used with, so the "physical" addressing of the memory on each stick has to be independent of the others, i.e. a local address, that gets mapped to a virtual one.

inigyou 2 hours ago | parent | next [-]

This guy is right. Physical memory isn't flat. Every system with more than a few cores is NUMA. There are caches and cache lines. Memory channel interleaving. Ranks and banks and rows. Each DRAM chip keeps the last selected row and can access addresses within that row more quickly even if other accesses to other chips occur in the middle, unless a refresh cycle occurs.

It's all a layer below even OS programming. It's configured at the BIOS level and then performed in hardware. But that's the point, isn't it? Virtual memory is below the application programmer, too, but here we're chastising him for not understanding it. If we do that, shouldn't we equally chastise people for not understanding physical memory? Or speculative execution? Or head seeking and servo tracks? Or Ethernet line coding?

hvb2 9 hours ago | parent | prev [-]

But that's not relevant? What would be relevant if, depending on where your bits are stored, acces time is significantly slower. If, regardless of where my data goes, my access time is constant then I do not care as a dev?

That's the abstraction I'm working with when coding. Which is necessary because in most cases this should be an implementation detail.

customguy 21 minutes ago | parent [-]

Really not caring about something also means not making a positive and false claim about it. What I said was relevant to that claim. That claim in turn was, according to your heuristics, not relevant (for daily coding).