3 ms·
Well, describing oneself as a working programmer (as opposed to a computer scientist) is a valid position, but why does it invalidate the "programming language
by miloshasan 16y ago
Well, describing oneself as a working programmer (as opposed to a computer scientist) is a valid position, but why does it invalidate the "programming language as tool" metaphor?
A basic message of CS is that most general-purpose programming languages are to a large extent isomorphic in their expressive power, and that many computing problems can be solved efficiently in the mathematical language of sets, matrices, or abstract nodes sending each other abstract messages. The translation to a real language is then the easier step (though it still can be time-consuming and error-prone, for sure).
If only we all worked this way - there would be fewer language wars, and less terrible code resulting from "thinking in the language" rather than "thinking about the problem".
- mturmon 16y agoThe reason is that the programming language, in this usage, is not analogous to a single tool (like a hammer). People build all kinds of complete things with just "C" -- where by this term, I mean the compiler, standard library, build and debug system (make/gdb, say). There are few things of interest you can build with just a hammer. The evidence for this is that no craftsman builds with just a hammer. The better analogy to the concept of "C" above is "wood shop" (as opposed to, say, "metal shop", "polymer shop", "electronics shop"). You still get the point, which is that everything out of the wood shop to some degree "looks the same" but it's not so clearly leading the reader to the hoped-for conclusion ("the statement is stupid").
- miloshasan 16y agoSo you're saying that the "language is a tool" metaphor breaks down because C is "complete" in a way that a hammer isn't. True, but that's taking the metaphor too far; it's original meaning is that the tool matters less than what you're building.
- mturmon 16y agoI was saying that the OP ("hammer carpenter") is taking the metaphor too far, which is why the phrase "hammer carpenter" sounds silly, and we seem to agree on this. I have no problem with the conclusion that the tool matters less than what you're building. I'd go farther and say that there is a certain tendency for C projects to "look the same" and that lispy projects "look the same" in a different way (e.g., surprisingly extensible, incorporating a language).