Hacker News new | ask | show | jobs
by alberth 1689 days ago
I wonder if there is any parallels of programming languages to spoken languages.

Every year, new words are constantly added to official dictionaries ... while old words continually fall out of favor/use.

And concepts in one language (e.g. "English" or "Rust") then get adopted/imported into another language (e.g. "French" or "Go").

3 comments

Words in natural language dictionaries is more akin to functions in libraries. OTOH natural language syntax doesn't change nearly as fast.

But OP is right - we haven't really been doing programming all that long in the grand scheme of things, and there are still too many unsettled questions.

Also, in many cases, we came up with desirable concepts long ago, but using them wasn't feasible due to performance overhead until recently.

There's also domain-specific language / slang.

I think this analogy is a good one. I've always held that software development has a crafty side in addition to the raw computer science. And I think you nailed it that this is where that comes in. There's multiple ways to write any program. So the only "complete" language is one that allows you to express anything and everything exactly the way you want to.

For instance, one could argue that using process forking vs threads vs fibers vs async / await are all just different connotations of the same denotation of "doing multiple things in parallel".

Spoken languages are constantly evolving and mostly evolve at the keyword / reserved level and sometimes when interacting with neighboring languages through necessity you’ll get pidgins and creoles (think of them as external DSLs). But because spoken languages are so fluid there is a massive amount of ambiguity over time. It’s not like we can read Middle English very well now (we need scholars oftentimes) and another problem with human languages is the entity knowledge problem with idioms oftentimes being computationally “AI complete” (requiring general AI to comprehend semantically).

In this respect x86 is the English of the computing world moreso than even C, Java, etc because these are different cultures. And as someone that was in ESL I can’t express how much waste and cruft is in the language that makes me think it’s Perl or Ruby (note that Larry Wall is a linguist and wrote Perl to be more like a human language - we can see now why it was not a great idea).

Also seriously, human languages are entirely defined by its user base (language pedantic folks have very little influence empirically such as the flawed academic rule of not ending English sentences with a preposition which was a bad port of a rule from Latin) and given the trends of each programming language community I’m doubtful giving language control to users is what helps keep a language ecosystem alive and thriving. In fact, human languages are essentially a secondary map of imperialism, genocide, and suffering across all of human history moreso than trade and integration with consent.