3 ms·
> When we program we categorize the world in English (or Spanish, or any other natural language), and then we encode that into a program. Speaking solely for m
by Twisol 7y ago
> When we program we categorize the world in English (or Spanish, or any other natural language), and then we encode that into a program.
Speaking solely for myself, I don't find this to be true. Yes, it does seem to be the case that you have to represent the program in your mind before you can accurately convey it to the computer. But no, I don't find myself using words to represent that. Maybe I use English to talk myself through the concepts, but I would not conflate the mental model with the words I use to describe that model.
My mental model feels a lot more like data structures -- abstract relationships between parts of the program, degrees of closeness, and senses of information flow. I can't represent the brainfeel of that in words without losing too much of it. And very often, yes, the semantic world in which I know this program will be embedded -- by way of a programming language that exposes that semantics -- does influence how I think about the program.
> If we think of programming languages as tools, then it becomes evident how some programming languages lend themselves naturally to problems that in other languages might be — while not impossible — hard to solve. See for example Erlang, a language that’s tailored for Concurrency Oriented and Message Passing programming, or Racket itself, a language tailored for LOP.
I don't understand the proposed distinction. If we can agree that the "tool" affects how you think about a program built using that tool, aren't we ultimately just quibbling over what the word "language" means? I feel like that's missing the point of the assertion that programming languages are languages -- you still end up with some form of Sapir-Whorf.
The idea of a "programming language paradigm" better captures the essential semantic distinctions between languages, but even these can be too coarse-grained. I'm more interested in adjectives like "single-ownership", "message-passing", "immutable", "backtracking", and so on. Words that describe the semantic world that the PL purports to be an interface to. Maybe that's what the word "tool" is supposed to convey, here, but then I don't think PL researchers really disagree.