4 ms·
This post is a bit all-over-the-place, but I'll bite. I used to share this belief once. The only gains to be had from intimately understanding underlying struct
by okal 14y ago
This post is a bit all-over-the-place, but I'll bite. I used to share this belief once. The only gains to be had from intimately understanding underlying structures are to be found in performance optimizations. You don't model a problem space by thinking in terms of what values go into what registers. If that were the case, we'd all be writing web applications in Assembly. Abstractions help us to reason out a solution without getting lost in implementation details. As Dijkstra puts it [0], "In this connection it might be worth-while to point out that the purpose of abstracting is not to be vague, but to create a new semantic level in which one can be absolutely precise." This is why the whole idea of Domain Specific Languages is so interesting. Any loss in flexibility is more than compensated for by the gains made in expressiveness when you can treat low level entities as black boxes.
[0] "The Humble Programmer" - http://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html http://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340....
- chill1 14y agoI haven't read the whole lecture yet, but you kind of flipped my whole argument on its head. Well done. I still think it's helpful from time to time to think a bit deeper about the details of what's actually happening below the top couple layers of abstraction, though :)
- ulisesrmzroche 14y agoLook, if you actually understood what an abstraction means, you and the rest of these guys (JoelsSpolsky, I'm looking at you) wouldn't even be pulling the "mightier than thou REAL PROGRAMMER" argument. You know what debugging is? It's patching up the leaks in abstractions. Thus, we all think about what's behind the abstraction pretty much every working day. Ya'll soap-boxing is annoying the fuck out of me.
- chill1 14y agoSounds like you have had a bad day, so I won't hold this too much against you. I suggest you not take all of this so personally. Have you read the lecture that okal posted the link to? It's from the early 1970's and speaks to the early days of when abstractions were first being implemented for computers in general. Perhaps it is you who does not understand what abstraction means.
- ulisesrmzroche 14y agoIt's not that I had a bad day, is that you used the age-old "REAL PROGRAMMER" argument, which is and remains, annoying since the 70's. Me? I write in machine code – in 'raw, unadorned, inscrutable hexadecimal numbers. Directly. http://www.ee.ryerson.ca/~elf/hack/realmen.html http://www.ee.ryerson.ca/~elf/hack/realmen.html
- chill1 14y agoI was not saying there is such a thing as a "real programmer." I am not sure where you're getting that from. I was merely attempting to spur some debate surrounding the recent trends towards very superficial "innovations" being put forth by many on Hacker News. I am not saying I have the answers to any of these questions. And, I don't think I am better than anyone for thinking a particular way. I just want to learn and try to understand the world around me. That's it.
- gems 14y agoWhat makes you think you can't be truly innovative by using somebody else's construction? There are new things to be done by building off of somebody else's work or by starting from the ground up. If you attempt the latter, you can almost be sure that your work will be less fruitful, unless you have some truly unique perspective.
- gems 14y ago"The only gains to be had from intimately understanding underlying structures are to be found in performance optimizations." Or, you know, being able to effectively troubleshoot when something breaks or when abstractions leak.
- okal 14y agoThanks. Hadn't thought of that.