Inferior Is Better
parentheticallyspeaking.org
parentheticallyspeaking.org
Hilarious and I wholeheartedly agree with the elitist sentiment.
Every programmer should treat themselves to some dabbling with a Racket #lang at some point, if only for the great documentation. It’s a beautiful lisp dialect with quite a few weird twists. Wholesome and chock-full of human ingenuity.
I would add that there probably is an economic aspect to it as well here.
Programmers do generally love to solve problems - doesn’t matter if they are the actual root cause of much incidental complexity themselves - and they also love to get paid well for it.
React based SPAs, distributed systems with Kubernetes, etc all treasure troves of endless solutions to endless problems which need lots of highly skilled peole.
If you think about it from a worker’s perspective there is actually not much wrong with that.
Indeed, inferior is better for many.
But the feature might not actually be in the standard library for your actually-powerful language, yet.
The lack of expressivity is a strength. My idea of a good programming language is heavily focused on making it hard to write bugs.
The more flexible the language, the harder it is for the compiler to understand it, and the more you encourage random tinkering over bog standardness.
Great for academic language, but in production, the ideal language tries it's best to keep you from doing anything clever.
Core language features tell me that the designers said "This is common, let's provide this one way to do it and not bother with enabling any other ways".
This is why sufficiently modern C++ programs have no memory usage errors. It would be extra work to code them.
(Do give it a few minutes if you don’t find it useful in the beginning, it will make sense I promise)
The rest of the articles reads a bit like someone being salty because their favorite language is not good enough to achieve widespread adoption and so they must conclude that the fault lies not with their language but with any other language that actually has this side-effect of enabling their users to get things done(tm) (which is of course of no importance to the intellectual programmer, as opposed to us mere grunts xD)
That's a rather absurd proposition. The number of problems a programming language can be applied to is infinite, and span virtually all domains of knowledge. A core dev team likely isn't even capable of making every necessary tool, the idea that they would always make the optimal implementation is laughable. And of course every user will have a different definition of what is necessary.
The key to creating a great community is not to build lots of broken things to fix, but to build a strong foundation that makes building easy. A language can be lacking many important and useful features but so long as it has well thought out standards and a commonly understood vision, the easiest and simplest way to extend its capability is to remain consistent with other language features. These consistent third party tools make the language more widely applicable and easier to further extend.
It's like that saying, if you want people to answer your question, first post the wrong answer and they won't be able to help themselves but to point you in the right direction.
First is the urban myth (well, I don't know if it happened or not) of the student arriving late to class just as homework assignments are being handed out, and the student diligently works at the problems though the last one is very hard, and hands them in. The teacher approaches him later and is shocked that he was able to solve the last question which was actually an unsolved problem in the field. The student arrived after that information was shared with the class, and hence simply thought he had to solve it and so did.
Second the phrase "if you don't know how it breaks, you don't know how it works".
The other way to make a community is to have things "just work" as much as possible, and become a standard to the point where only masochists commonly use anything else.
The downside is of course, the suckless crowd can get totally left out when the whole world switches to the new standard(see The Init System That Starts Flame Wars), which is almost unsolvable since there's no product that can please both minimalists and those who want things to just work with zero tinkering, and not much reason for mainstream users to pay attention to anything but the popular standard.
Sometimes I look into using it for personal projects, but always wind up using some Python/JS/Dart instead, since whatever it was I thought about doing in Rust usually already exists as a library.