5 ms·
Isn't it possible that, like human languages that evolve over time for multiple reasons (https://en.wikipedia.org/wiki/Language_change https://en.wikipedia.org/
by IHLayman 7y ago
Isn't it possible that, like human languages that evolve over time for multiple reasons (https://en.wikipedia.org/wiki/Language_change https://en.wikipedia.org/wiki/Language_change) such as language contact, principle of least action, and pejoration, that computer languages also experience similar shifts? All of this grumbling about how command line options have exploded or why doesn't everyone use language X or shell Y or OS Z that has existed for forever is similar in tone to me about people who grumble about Oxford commas or starting sentences with conjunctions or (heaven forbid) using emojis?
Of course some principles of speech and syntax should stay around (as they probably exist for a good reason), but it is foolhardy to grip tightly onto any language, human or computer, thinking it will always stay the same, when it plainly won't.
- beigeoak 7y agoI'm assuming you didn't read the article, because a lot of the author's examples have nothing to do with evolution or complexity. Also please don't compare human languages to programming languages to make a point. It's the programmer equivalent of bad managers comparing Java to JavaScript. Argument by analogy in such situations is a sign of not having a basic understanding of the problem at hand. Yes I am aware of the contradiction.
- dexen 7y agocomputer languages also experience similar shifts? Partly, but less so. Human language vocabularies approximate Huffman Coding - the more frequently used words (and phrases) tend to be proportionally shorter. This is a gradual process for spoken languages, and somewhat quantized for written languages.[1] It's possible because with human languages, "close" is "good enough"; one can read english written with ye olde orthography, if with a bit of extra effort. Less so in the lifespans of particular programming languages. Per Postel's law we tend to be liberal with extending but conservative with breaking backward compatibility. I think the case of command line tool parameters is particularly conservative for various reasons; among them because the 'knowledge' of options is spread among multitude of separate project - many of them obscure and bespoke - and coordination would be nigh impossible. However there are some signs of similar trends; note how the "function" and "integer" and similar keywords of older languages tend to turn into "fn" and "int" in newer languages. -- [1] Not sure if there's a comparable process for grammars, but I guess it's a fair bet...?
- IHLayman 7y agoI agree, that's why I mentioned principle of least action. But you also forget the power of idioms. We would connect to a file with a file handle using something like open("file"), and then have to close it with close(handle). This got tedious (and dangerous because people would forget to close files), so people would write macros that would automatically open and close file handles, and soon languages would have the "with" idiom that would handle the context for you. And this is not the only case of an idiom causing a paradigm shift in languages. Pejoration happens too. When is the last time you used a GOTO in code? And yet, 40 years ago, you couldn't write a BASIC program without one. And the revulsion against NULL causing a shift to Maybes and optional types to the point where the concept is reified in many languages now? All I'm saying is that there are multiple mechanisms that are changing the languages we write code with, and that it is changing far faster than people realize.
- close04 7y agoSystems grow in complexity and as a result you want to do more with them and for them, all while maintaining decades of backwards compatibility. Which is why all those basic tools presented in the article, that have existed over the past 4 decades still do the same and more. They have to cater to scenarios that didn't exist 4 decades ago but also to the ones that did.
- hhas01 7y agoThat’s an excuse. Of course demands will increase over time—all the more reason to build a system that scales well! Unix Philosophy doesn’t demand much: just small simple composable tools, each of which does one thing well. So why does `ls` have a recursion flag? Why does `cp` have a recursion flag? Why does `chmod` have a recursion flag? Why does `chown` have a recursion flag? Why isn’t recursion its own command, that takes as argument the command to apply at each level? Ditto untyped, untagged streams, which mean every tool implements its own custom UI behavior when attached to a terminal, instead of outputting tagged data and letting the consumer run it through system-standard data formatters. This is not good—or even borderline competent—systems design. This is bullshit. Because the people who slapped it all together are bums, and the people who accepted it didn’t care enough to call them on it. But noooo, we can’t change anything now; because “backwards compatibility”. Protip: when you build a system that can’t evolve, that grinds to a halt under its own impossible weight, it’s time to confess “yeah, we totally ballsed that one up” and start over again, lessons learnt. Because maintaining that status quo is a tyranny: dragging everyone else down to the level of its incompetence, and beating them to death with intransigence. No prizes for guessing who that benefits: the bums who built it. And who pays for it: everyone else. It’s a scam. Perpetrated by and for those who cannot admit they are wrong. Smash it down. Because whatever comes after it should be so much better, the only question will be “Why the frell did we wait so long?” -- “Those who make peaceful revolution impossible will make violent revolution inevitable.”—John F Kennedy
- lonelappde 7y agoHuman language doesn't get more complex over time. Humans have limited mental capacity. We are creating software that exceeds out ability to understand it.