7 ms·
Trying to program without understanding how data is stored in memory is like trying to cook without understanding how heat affects food.
by tomp 6y ago
Trying to program without understanding how data is stored in memory is like trying to cook without understanding how heat affects food.
- AnIdiotOnTheNet 6y agoThat depends entirely on the kind of programming you're trying to do. For beginners working in high level languages it is an implementation detail they need not be concerned about. Growing up with BASIC, I didn't have any understanding of pointers or how memory worked. PEEK and POKE, which I only saw used in other people's programs and examples, were black magic as far as I could tell. It wasn't until I learned C that I actually understood them but I still managed to write a whole lot of programs without ever using them. To be a professional programmer I'd agree though. If you don't understand how pointers work, regardless of the language you're using, you're probably not good at your job.
- stabbles 6y agoLisp programmers don't care how heat affects food since the 1950s.
- RaptorJ 6y agoThis is an unfortunate analogy given how complicated and poorly understood the heat-affects-food chemical reactions are. And yet food gets cooked.
- NateEag 6y agoI'd say that makes it an apt analogy. It just makes a point opposite to the author's intent.
- Someone 6y agoAre you sure about the author’s intent? Unless you know the writer very, very well, I think it’s impossible to tell from written text.
- NateEag 6y agoYou make an excellent point. I shouldn't have been sure about the author's intent. Thank you for pointing out my error.
- mewpmewp2 6y agoExactly, you don't need to know how molecules act under the hood to be productive cooking.
- IncRnd 6y agoUntil you need to substitute ingredients, you use a different type or rangetop, the pan metal or thickness is different, or something else changes. This was a perfect analogy. People can follow the recipe of assemling various frameworks and toolkits to create software, but they will eventually encounter difficulty. You may not need to understand molecular differences, but knowing hows fats, proteins, and carbs work, along with how to substitute ingredients, and different theories of cooking all help to actually understand why you can cook until mysteriously things don't work the same as yesterday.
- vendiddy 6y agoI've been learning to cook recently and I haven't the slightest idea how heat affects food.
- IncRnd 6y agoIt is said that each fold on a chef's hat represents a different way they know how to cook an egg. Thet need to understand when to apply low heat, high heat, add liquids, when proteins denature and when they coagulate. Of course, following a recipe in specific ideal circumstances works, as long as nothing changes.
- siltpotato 6y agoI can cook and my knowledge of science is limited entirely to CS and a little bit of the physics that pertains to music, like the overtone series. I'm neither proud nor ashamed that my head is empty of the meanings of words like "fugacity."
- oliverx0 6y agoTerrible analogy. The beauty about computer science lies in abstractions. You don’t have to understand the low level details to be productive at the higher levels, you just have to understand the interfaces. If we go down this rabbit hole, do you have to understand how the memory bus works, how the operating system is implemented, etc... before getting to hello world?
- turminal 6y agoThere is a huge difference between explaining how indexes come from offsets and understanding operating systems. I think more emphasis should be put on the insane amounts abstractions underlying the high level language at hand when teaching programming. Explaining that 0-based indexing comes from offests seems like a good start in that direction for a kid learning python. And when beginners won't be beginners anymore they'l have to learn how the underlying abstractions work anyway. A programmer that doesn't at least superficially understand how operating systems work is not going to be able to write performant or secure software, let alome combine those qualities.
- userbinator 6y agoDigital logic is a good start... You don’t have to understand the low level details to be productive at the higher levels, you just have to understand the interfaces. I've worked with programmers like that. They can glue a lot of things together, but when the slightest of problems appears, they are absolutely lost with how to debug. They usually resort to making pseudorandom changes until it "appears to work", and are also unable to appreciate just how fast computers are supposed to be.
- TuringTest 6y agoI learned physics and transistors at comp-sci. It didn't help with programming at all (though it made wonders for my understanding of the philosophy of computation). The kind of understanding you're rooting for relies on formal logic, not electronics.
- cmrdporcupine 6y agoAt this point even assembly language is an abstraction of a simpler machine overtop of a much more complicated one, and few programmers really understand what's happening underneath. It's not like a chunk of 'memory' in your C program corresponds exactly to a physical location on a DRAM chip anymore. There's N layers in-between, not just in the OS's virtual memory model but also in the chip's caches, etc. We're all dealing with abstractions over abstractions at this point, so it's really about finding what model of understanding works for the learner and then going from there.