3 ms·
Programming languages have a lot in common with natural languages. The viability of the latter tends to be measured by it's native speakers, daily use, prolifer
by CaptArmchair 5y ago
Programming languages have a lot in common with natural languages. The viability of the latter tends to be measured by it's native speakers, daily use, proliferation, adoption,... and so on. Linguists and anthropologists don't consider those metrics in isolation though.
The evolution of language can only be explained by considering context as well: natural languages are intrinsically tied to communities, tribes, culture, shared identities, shared morals and values, geography and so on and so on. In that regard, this evolution is extremely fluid. Billions of people know more then one language. Languages influence each other, as peoples and cultures meet. Sometimes, languages are adopted, like French was adopted by English elites after the Norman invasion, or Greek was the language of Roman elites.
Programming languages share many parallels with natural language. It's a fallacy to assume that programmers are homogeneous group of individuals with no discernible differences. On the contrary, being a programming is just part of one's identity. Most people come to programming because they are interested in solving particular challenges, or contributing to larger goals in specific problem domains or industries. The challenges faced by embedded system engineers in aviation are nowhere near the same as those faced by an frontend engineer specialized in using a particular content management system.
Moreover, many programmers don't reduce themselves to a single language. They might know the nooks and crannies of one or two languages in depth - much like a native speaker is innately wired to their mother tongue - but chances are they know a handful languages which are useful throughout their career and daily life, such as they identify parts of it with programming.
In that regard, I feel that the 'competition' between programming languages is largely perceived, instead of a real thing.
At worst, it leads people into "golden hammer" thinking about the tools they use. The "zero sum" thinking as you've pointed out, then reveals itself for what it is: a self-fulfilling prophecy, self inflicted by tool-centric thinking.
And that's exactly what the article is arguing against.
- lmm 5y ago> Programming languages have a lot in common with natural languages. Can you substantiate this claim? They're not used in the same way, their learning patterns are different; the fact that we use the same word is coincidence more than anything IMO. > At worst, it leads people into "golden hammer" thinking about the tools they use. The "zero sum" thinking as you've pointed out, then reveals itself for what it is: a self-fulfilling prophecy, self inflicted by tool-centric thinking. Nonsense. The advantages of having good tooling and ecosystem are very real and concrete. If anything, the idea that particular programming languages are useful in particular problem domains is a lot more of an self-fulfilling prophecy - in my experience any halfway decent general-purpose programming language can be used in every domain if you actually try, usually the only reason to prefer a language with a good reputation in that domain is because there tend to be more libraries and so on, but that itself happens for purely circular reasons. (If you really believe that programming languages are like natural languages, wouldn't you expect programmers to pick one and use it for everything?)
- mjburgess 5y agoThey mean extrinsically, rather than intrinsically. Their properties are essentially nothing alike. P-langs not having a semantics in anything other than a metaphorical sense. Their extrinsic properties are similar insofar as they are inventions of human beings which have some socio-cultural dimension.
- tialaramex 5y ago> in my experience any halfway decent general-purpose programming language can be used in every domain if you actually try That's going to be an extremely limited experience. Most of the world's general-purpose languages have a heavy runtime. The runtime is expected to provide the running program with all manner of conveniences, but one very common item that you've probably imagined is just "universal" is an allocator so that you can... allocate memory. Nope. What programming language do you think the allocator is written in? Languages like C and Rust are designed with such a runtime as only an optional extra, so that you can in fact write the allocator in those languages.
- lmm 5y ago> Most of the world's general-purpose languages have a heavy runtime. "Heavy" by 1970 standards perhaps. When e.g. ML was first created, the newest and fanciest PCs had 512Kb of RAM. Nowadays if you wanted to buy a microcontroller with such a small amount of RAM you'd have to pay extra because you're asking for a lower-volume specialised part. > What programming language do you think the allocator is written in? Any language where someone actually bothered to actually try to write one - writing them in high-level languages has been done plenty of times with plenty of techniques (perhaps most elegantly in T by just carefully writing the allocator code such that it's not doing any allocations in the allocator itself). "Not actually needing to write a custom allocator" is also very easy in every domain if you actually try, IME.
- tialaramex 5y ago"by just carefully writing the allocator code such that it's not doing any allocations in the allocator itself" The tautology you've inadvertently described there isn't actually an allocator. Isn't that fascinating? I can't tell if you were trying to be clever or if you just didn't see what you were doing. What's actually going on is that T is sat on top of an entire operating system (often a Unix) which provides it with an allocator. It then uses garbage collection so that the lay user needn't worry about, like many high level languages.