The Annual Meeting of Unhated Programming Languages
Description
A two-panel meme illustrates the cynical reality of programming language preferences. The top panel shows an exterior view of a building with a sign that reads "UNHATED Programming Languages ANNUAL MEETING," pointing toward the entrance. The bottom panel reveals the meeting room inside, which is completely empty, with a large, vacant conference table and chairs. The humor stems from the universally accepted truth among experienced software engineers that no programming language is perfect or free from criticism. Every language has its own set of trade-offs, quirks, and vocal detractors, making the concept of an "unhated" language a humorous impossibility. This meme resonates with senior developers who have witnessed decades of "language wars" and appreciate the nuanced reality that language choice is about finding the right tool for the job, not a universally beloved solution
Comments
85Comment deleted
The 'Unhatable Programming Languages' meeting was moved to /dev/null to save on room booking fees
An “unhated” language only exists in two states: experimental toy or legacy liability - scale it past hello-world and the hate flag flips to true
The only thing rarer than this meeting is a senior engineer who hasn't written a blog post about why their favorite language is actually terrible after maintaining it in production for five years
The only programming language that could claim to be 'unhated' would be one that nobody has actually used in production - which explains why the meeting room remains perpetually empty. Every language that's solved real problems has accumulated enough battle scars and opinionated developers to guarantee it'll never achieve universal approval. It's the software equivalent of 'you either die a hero, or live long enough to see yourself become the villain' - except in this case, you become the villain the moment your first production bug ships
Unhated programming languages are just the ones we haven’t shipped to prod long enough to be blamed for a 3 a.m. incident
After 20 years scaling monoliths to microservices, the only unhated language is the one you rewrote last quarter
Programming languages obey a social CAP theorem: pick any two of fast, safe, and ergonomic - the third spawns a hate thread, so the 'unhated languages' meeting never reaches quorum
whitespace is here Comment deleted
I now wonder if there is a programming language consisting of whitespaces only... 🤔 Comment deleted
there is https://en.wikipedia.org/wiki/Whitespace_(programming_language) Comment deleted
"Rule 34, only for programmers", no exceptions. Comment deleted
"when tabs were banned by codestyle" Comment deleted
Wow, it is C++ compatible, but cannot be mixed with Python. I always knew Python is flawed! 🤪 Comment deleted
https://www.stroustrup.com/whitespace98.pdf C++ could have operator () (operator <Space>) Single letter variable names (we have full unicode range, what could be wrong? spoiler: a != а (latin/cyrillic)) Comment deleted
good things were said; the only flaw is that no compiler supports this good C++ Comment deleted
JavaScript is best, fight me Comment deleted
for what? without this information your statement is true and false Comment deleted
Everything Comment deleted
try doing competitive programming in javascript (e.g. on codeforces) Comment deleted
Since when another framework has been released, eg. this hour? Comment deleted
Only things I use are jQuery and bootstrap lol Comment deleted
I like Kotlin, Is it hated too? If yes - for what? Comment deleted
if you don't hate <x> this does not mean that no one doesn't hate <x> (russian: не означает что никто не ненавидит, quadruple negation) Comment deleted
I like it ¯\_(ツ)_/¯ Comment deleted
+ Comment deleted
Because of the Kotlin evangelists Comment deleted
How you can hate python :D? Comment deleted
Other way is impossible because of shitty python [sticker text] Comment deleted
When you realise that item in my_list == False evaluates as (item in my_list) and (my_list == False) You do start raising some eyebrows at the language. And yes, the right way to do that would obviously be item not in my_list , but I was helping out a starter programmer who got some very odd results. I had to dig into the byte code before I recognised what was happening. It's the same logic that allows a < b < c to mean (a < b) and (b < c) but it certainly does confuse things for a while! Comment deleted
Yeah, that's how python sometimes works :D Comment deleted
fair, but the first statement is ambiguous anyway - Assuming the a<b<c syntax doesn't exist, it could still either mean (item in my_list)==False or item in (my_list==False) - keyword importance ordering shouldn't be relied on. So setting parentheses for situations like these is important anyway. Comment deleted
Yeah, assumed it was one of those at first Comment deleted
But the first of those would have returned True, and the second would raise a syntax error. So the fact it returned False was very confusing Comment deleted
not a syntax error, a TypeError. Comment deleted
Yeah of course, sorry, only just woke up Comment deleted
same, I'm barely alive. Comment deleted
In KuMir programming language (that was popular in Russian secondary schools throughout 80-s and 90-s, and is still developed nowadays) we were able to use whitespaces as a part of identifier - that is, something like this (how it would look like in English): begin function My Fancy Function var My Cool Variable := 42 print My Cool Variable end function Comment deleted
> that was popular in Russian secondary schools throughout 80-s and 90-s i think it is also popular now Comment deleted
As of today, children are instructed to install Python and write some sorting algorithms as their very first excercise. 😳 Comment deleted
it depends on school. in my school we learn python and first task was print 2 to 179-th power Comment deleted
By using BigInt, right? Not by rolling out your own arbitrary precision math library, right? :padme_meme: Comment deleted
print(2 ** 179) one line solution Comment deleted
I my school, we learn java Comment deleted
that := just makes my eyes bleed Comment deleted
Thas is actually better than having tons of typical C/C++ bugs due to = and == confusion. Comment deleted
if (r = get()) { // equals to ((r = get()) != 0) // do smth } good code, especially when you really need to assign some values Comment deleted
That's exactly it! The if (a = b) bug is so common in C/C++ that extra parenthesis are usually required to prevent compiler warnings in a perfectly correct code. Comment deleted
or just -Wdisable or something Comment deleted
Disabling any warning is bad, and also non-portable. That's why adding extra parenthesis is better, despite impairing readability. Comment deleted
How about bash? It's powerful enough for much use cases, even as a solution for the REST API. Comment deleted
bash = trash Comment deleted
sorry, but it just does not work as a general-purpose scripting language Comment deleted
no, it does Comment deleted
For frontend cases I guess no (it's still possible via CGI or FastCGI but it's not solution for nowadays). For backend cases it surely can and I have successfull results. Depending on the task. For example it can do passive checks for Nagios. Moreover it follows most POSIX standards so it's quite understandable and can be checked for errors and closed checks before the run with ShellCheck. It also does not need compilation, and takes small amount of CPU if the scripting had been done cleverly. Comment deleted
all of this and more is also doable with python, just in much less lines and much more readable. Except if you really just want to pipe some programs into each other. Comment deleted
C++ is best, change my mind. Comment deleted
I feel sorry for your legs Comment deleted
? Comment deleted
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off. Bjarne Stroustrup Comment deleted
Cpp is easy af Comment deleted
Of course C++ is easy! Only an idiot would write C++ code with UAF and other memory bugs. I mean idiots like Chrome developers. And im not even talking about "UB this, UB that", large STD/STL (though it still doesn't provide a way to work with network) C++ is one of the hardest languages, you shouldn't underestimate it's complexity Comment deleted
> idiots like chrome devs Have they had many problems with UAF? I use FF, so I have no idea tbh. Comment deleted
I've seen several news about memory-related cves in chrome but it's not like "new day new cve". I've used it as an example that it's hard to write C++ code without bugs even for professional developers with experience Comment deleted
I see Comment deleted
I'm like 50% sure the first paragraph is sarcastic, but honestly, I can't tell for sure. Comment deleted
It's sarcastic, yap C++ gives very much freedom but it also takes equally much attention and understanding of language. C++ isn't easy and it won't be considering the committee's clinging to keeping backward compatibility and huge legacy codebase, that's what i've meant Comment deleted
C++ giveth and C++ giveth and C++ giveth and jesus please taketh some legacy away Comment deleted
Looking at c++ subreddit I can say that many people share this opinion (including me). C++ committee is so striving for backward compatibility and portability that it became PITA for some c++ developers. C++ needs a really huge update but who would take responsibility for consequences Comment deleted
what version are we at rn? C++20? (are the versions numbered after the years?) I say we need C! or smth - just a C++ fork (of gcc or smth idk) with many deprecated warnings turned into compilation errors. Also we could call it C-bang, which is an incredibly funny name. Comment deleted
there's probably already something like this out there though Comment deleted
There is such thing. If you don't believe me, google "Rust language" /s Comment deleted
lmao. Ignoring the fact that Rust has a completely different language design, it does benefit from its lack of legacy standards. Comment deleted
I mean, even python3 is starting to feel old e.g. with all those legacy string formatting standards. Comment deleted
I like python formatting syntax (f"{variable}"). It's not the best but it's quite simple and not too much explicit Comment deleted
aye, but then there's also these: "{}".format(variable) "%s"%(variable) ↓ not technically format strings, but achieve the same goal str(variable) variable.__str__() repr(variable) variable.__repr__() Comment deleted
I think there's even more, but those are the ones I know about Comment deleted
These are someway ugly but i don't use them (and hope that nobody uses them except the first) Comment deleted
the first is godawfully slow, the second is fast, but unreadable, the rest are shit. They're all being used. That's why a language needs to be simply clean. Comment deleted
If it isn't in STD, then it's in boost Comment deleted
hand-pistol vs. Rocket launcher Comment deleted
Life be so fine then boom, segfault Comment deleted
The least hated programming language is the least known language (for example, someone created a language and loves it, but nobody else knows about it) Comment deleted
Dont you hate YOUR main pl the most? or is it just me Comment deleted
Undoubtedly, it's js. Comment deleted
where is rust tho Comment deleted