Software engineering is held back by having to get as much mindshare and reach the lowest denominator to have as many contributors or developers possible, so a niche language which might have been very productive to get the ball rolling, is cast aside once the project reaches maturity, and I would argue never for the best.
Two examples off the top of my head are Reddit and SICP abandoning their Lisp roots because it's hard for new engineers (of average quality) to get into.
Imagine if in mathematics there was a culture of avoiding abstraction and domain specific symbols because the average undergrad might have a hard time understanding them. Good luck exploring quantum mechanics with polynomials equations as your ceiling of complexity.
In fact, it might a cultural problem at large: give people a chance to learn, and most are able to. But we are afraid of people needing to become familiar with it, that we strive to dumb everything down. Much of the UX focus of the 20 years has been on targeting the beginners, forgetting the fact that beginners eventually become power users and need force multipliers, not rounded-off scissors.
(Sorry, Saturday morning philosophical rant after a week of thinking about the future of computing)
I agree. The longer I've been a programmer, the more Greenspun's tenth rule
rings true. It's sad that in the modern day, ad-hoc YAML template programming is more widespread than e.g. embedded Lisps. Feels like the concept of "code as data" is severely underrepresented in the programming zeitgeist.
I've been thinking a lot about how to make Prolog (and niche languages in general) more palatable. Killer app, like Ruby:Rails? Corporate backing, like Go:Google? Strong IDE integration, like Typescript:VSCode? Cute mascot? Meme power (HTMX:Grug)? Seems like all of these can help but none are a guarantee. So I figure that starting with IDE support is a decent approach. At the very least it's something I would use myself.
The Reddit example you brought up is very interesting. I feel like niche languages can be a kind of advantage in attracting strong talent despite the small talent pool, but then you have companies that mistake headcount as growth and optimize their tech stack for hireability, picking the popular choices instead.
One decent argument against niche languages is libraries. I have some vague hopes that Wasm Components will be a huge boon for niche languages once it stabilizes and libraries and cloud services start providing their APIs in component form. Of course, we already have near-universal FFI with the C ABI but that is messy enough that most people are unwilling to work with it.
Enjoyed the rant! Here's my own :). I understand there are valid business reasons not to pick a niche language ("we need to hire 10 people NOW and use XYZ library! no time to write our own!") but it's a bit soul-crushing. Working on Prolog stuff is my way of coping.
The problem in your rant is comparing Reddit to "quantum mechanics". Reddit is a (huge) CRUD. You don't really need any fancy languages or abstractions because frankly the difference they are going to make is negligible.
Go to places where they do software to solve problems which "undergrads might have a hard time understanding them" and then for sure you'll start to see extremely domain specific languages.
This is a good point, although be careful not to find yourself on the other side of the spectrum, surrounded by academics writing signal processing code in Visual Basic.
Maths is held back by having to get as much mindshare and reach the lowest denominator schoolchild, to have as many people able to add up as possible, so a niche branch which might have been very productive is ignored and then child reaches maturity and leaves. We should not teach anyone basic math, it should be reserved for those who can do advanced math from a young age, we should circle the wagons around an in-group and exclude all the others, the inferiors, who can't do what we can do, and spend time patting ourselves on the back about how clever we are instead of building things which improve the world.
Rumour has it there's people using sums to keep track of their money, trade, measure their houses for furniture, weigh ingredients, count attendance levels, count votes - just adding and subtracting! crying laughing emoji Imagine being that dumb. crying laughing emoji. Millions of people who haven't even heard of {niche clever idea I love} making their lives better using {simpleton idea I scorn}. It's a disgrace, it should be stopped. They haven't heard of {niche clever idea I've tied my identity to} and it rankles that they aren't even aware how dumb they are. angry face emoji.
> "we strive to dumb everything down."
No you don't, you strive to keep everything elitist so you can feel clever; when it comes to making things easier and more accessible you don't talk of it as as positive thing, - simplifying, clarifying, explaining - you call it "dumbing down" - for dumb people who are beneath you. Instead of raising the floor with the idea that a rising tide lifts all boats, improving the situation for the lowest, you scorn the lowest; you want your genius for being able to use the dark arts to be known, not for the dark arts to be taken apart, explained clearly, widely known and considered blasé. The last thing you want is for all the web developers to use LISP, heaven forbid they might find the Holy Grail. You want them to stop programming entirely and worship you for using LISP. Maybe if they do that enough, you'll deign to make a CRUD app once in a decade to appease them, before going back to your true calling - writing a new LISP which fixing all the stupid decisions of the previous LISPs.
Meanwhile, trillions of dollars of value and joy are added to the world, fraud is detected, trade is eased, family members stay connected, by people doing the lowly work of trucking bytes around with tools which are merely 'good enough' but not approved by the high priests.
That's a weird rant, that barely disguises its ad hominem nature. And you completely miss the point. I'm not scorning "those below me" (your words, not mine), I am simply saying the complete opposite, that we should in fact stop being so condescending of non-techies, creating fisher-price interfaces because they might get hurt or, by God, they might have to become proficient at it. The comparison is always with grandma, ask her how she likes being treated like that. She's quicker than most give her credit for.
Dumbing down interfaces is treating users like idiots. Users are not idiot. Teach them instead. Let them make mistakes.
In any case, you could disagree with a coherent response instead of being an obnoxious twit for absolutely no reason. The air of condescension is all on your side here, so I hope you feel real smart for putting me down right now. Good day.
> "I'm not scorning "those below me" (your words, not mine)"
Your opening sentence: "Software engineering is held back by having to get as much mindshare and reach the lowest denominator" - the lowest denominator is not you, which means it's other people and they are low - beneath you. Instead of saying "the world is improved by experts making things accessible for everyone", you say "we (elites) are being held back by the lowest common denominator (plebs)". How is that not scorning those below you?
> "I am simply saying the complete opposite, that we should in fact stop being so condescending of non-techies, creating fisher-price interfaces because they might get hurt"
Fisher-Price?? What's that quote, "You think it’s degrading for a man to act like a woman, because you think being a woman is degrading"; you think using a plain, simple, accessible interface is not convenient and desirable, but like a baby's toy? That's you scorning those below you, right there. This is the "real man" view that things are better if they are hard and dangerous for no specific reason other than that filters out inferiors. It's the old, deaf, missing-fingered laborer mocking hearing protection and safety guards on workshop equipment, it's the person running everything as root. Hello? Getting hurt is bad, avoiding it is good, not laughable.
> "or, by God, they might have to become proficient at it." "The comparison is always with grandma, ask her how she likes being treated like that. She's quicker than most give her credit for."
My mom is approaching 70. She's used a smartphone for maybe 5 years and has never installed an app, never tried to swype on the keyboard despite seeing me do it, always saying she will have to learn about it another time, she has no interest in computers, but she uses it multiple times a day to WhatsApp with family and friends, share photos. The simple interface hides so much complexity, it is a wonder which enables her to do things without having to learn computer internals, not an embarrassment. The last thing she needs is punishing her by taking the guard rails off because some programmer thinks making a simple interface is holding the industry back, making her choose between png, webp, jpg2000, watch videos through ffmpg so she can set her own filter and processing chains, be able to sideload apps or use open source firmware. And if she did want those things, there's Android phones with third party builds and removable safety rails available.
> "Dumbing down interfaces is treating users like idiots. Users are not idiot."
If users are not idiots then making something easy for them ISN'T DUMBING DOWN. Hiding complexity and making things simpler is good, not bad. It's how we progress - abstractions let us wrap complexity up and pretend it's not there and use it as building blocks for higher level things. It's amazing that I can swipe an email to the left and it gets deleted, and I don't have to care if it's POP or IMAP or ActiveSync or if it's held in a text file or a SQLite DB, and the delete syncs across all my devices without me having to host the server or punch NAT holes in firewalls or anything. If I wanted to host my own mailserver and configure all that, that is an option, but it's in no way beneficial to force everyone to have to do that so they can become proficient at postfix or exim config files or Exchange administration or DKIM and SPF; what a complete waste of grandma's time!
Lisp is the source of almost everything that makes programming easy, welcoming, forgiving of mistakes and inclusive. (Except the ability to use infix syntax to calculate a formula, which goes back mostly to Fortran.)
It should be taught to small children in schools. All kids should know how to correctly use macroexpand with an environment argument inside the body of a macrolet by the time they finish eighth grade. No elitist secrets!
At least Excel has lambda now. That means every MBA who finds it in a reference manual and starts using it is ahead of most of his or her peers that went to CS.
Two examples off the top of my head are Reddit and SICP abandoning their Lisp roots because it's hard for new engineers (of average quality) to get into.
Imagine if in mathematics there was a culture of avoiding abstraction and domain specific symbols because the average undergrad might have a hard time understanding them. Good luck exploring quantum mechanics with polynomials equations as your ceiling of complexity.
In fact, it might a cultural problem at large: give people a chance to learn, and most are able to. But we are afraid of people needing to become familiar with it, that we strive to dumb everything down. Much of the UX focus of the 20 years has been on targeting the beginners, forgetting the fact that beginners eventually become power users and need force multipliers, not rounded-off scissors.
(Sorry, Saturday morning philosophical rant after a week of thinking about the future of computing)