Skip to content
DevMeme
3646 of 7435
The Annual Meeting of Unhated Programming Languages
Languages Post #3984, on Nov 28, 2021 in TG

The Annual Meeting of Unhated Programming Languages

Why is this Languages meme funny?

Level 1: Everyone Hates Something

Imagine you tried to throw a party for the one food that absolutely everybody loves. You set up a sign that says “Party for Unhated Food – Everyone Welcome!” You might think of pizza or ice cream as super popular. But surely, someone out there doesn’t like pizza (too cheesy!) or can’t stand ice cream (too cold, or lactose intolerant!). In the end, no food is loved by every single person. So your party room stays empty because every food has at least one picky eater who won’t touch it. 😄

This meme is doing the same thing but with programming languages instead of foods. It jokes that if you tried to gather all the coding languages that nobody ever complains about, no one would show up. In real life, programmers all have their own likes and dislikes about different coding languages. The funny picture of an empty meeting room makes us laugh because it’s a simple way to say: “There’s no perfect language that everyone agrees on.” Just like how everyone has an opinion on foods or games they don’t like, every coder has an opinion on which computer language is the “bad” one. The empty chairs are a silly reminder that in the world of coding, nothing is loved by all – and that little truth is what makes the joke so relatable and funny.

Level 2: No Perfect Language

For a newer developer, the meme’s punchline is that every programming language has at least a few people who really don’t like it. The sign outside reads “Unhated Programming Languages – Annual Meeting,” as if there’s a gathering for languages that nobody ever complains about. But in the next frame, the conference room is empty. The joke is saying that no such programming language existsevery language has quirks or flaws that cause some developers to groan.

This relates to what devs often call language wars: debates or arguments over which programming language is best. These happen in developer communities all the time (on forums, chat groups, at work). You’ve maybe seen discussions like “Java vs Python” or “JavaScript vs Everyone.” Each language has its community of fans who love it and also detractors who highlight its problems. For example, one group might rave that JavaScript is super flexible for web development, while another group might joke about JavaScript’s odd behaviors (like how 0 == "0" is true, but 0 == [] is also true – confusing!). Java is trusted by big companies, but people tease it for being very verbose (lots of code for simple things). Python is praised for being easy to read, yet some developers dislike that whitespace (indentation) affects its code blocks, or they find it slow for certain tasks. Even newer languages like Go or Rust, which were created to improve on older languages, quickly found people pointing out “missing” features or a steep learning curve.

The term tech tribalism or developer_language_polarization describes how developers sometimes split into camps based on the technologies they use. It’s almost like sports teams rivalry: a developer might feel their favorite language is the “right” way, and others are “wrong” or inefficient. This can lead to playful banter, memes, and sometimes heated arguments. But fundamentally, it’s because programming languages each make different design choices. A language might prioritize speed, safety, ease of use, or community libraries – and whatever it doesn’t prioritize becomes a reason for someone to criticize it. There’s even an annual Stack Overflow survey that asks about “most loved” and “most dreaded” languages. Inevitably, no language escapes the dreaded list entirely. If a lot of people use something, a subset of them will report frustrations with it.

So this meme is a bit of developer humor that’s very relatable: it’s an inside joke acknowledging that, in programming, there’s no silver bullet language that everyone agrees on. The empty meeting room visualizes that idea in a simple, funny way. Even though programmers often have favorite tools, we all secretly know that every tool has its warts – and hearing others poke fun at your favorite language is just part of the culture. In short, no programming language gets a free pass, not even one.

Level 3: The Null Conference

The scene is a wry commentary on an uncomfortable truth in software development: the annual meeting of unhated programming languages is utterly empty because no programming language is universally loved. Every language has its detractors. Veteran developers have witnessed endless language wars – those heated debates where one camp insists “{Language A} is the future!” while another groans “Ugh, {Language A} is the worst, use {Language B} instead.” This meme taps into that shared experience of developer communities divided by tech tribalism.

Why is the room empty? Because even the most popular or elegant languages carry some baggage or design trade-offs that irk a subset of programmers. Seasoned engineers know that choosing a language is balancing pros and cons. If a language is super fast, low-level, and powerful (like C++), someone will hate its complexity and memory pitfalls. If it’s simple and high-level (like Python), critics will complain about performance or the infamous Global Interpreter Lock. JavaScript may dominate the web, but just mention == type coercion or its chaotic unique history and watch some developers roll their eyes. Java is a workhorse in enterprises, yet it’s joked that writing “Hello, World” in Java feels like authoring War and Peace an overly verbose script. Even languages celebrated for clean design (Go, Rust, Kotlin, you name it) quickly accumulate quips about what they “got wrong.”

This empty conference room illustrates an inside joke: there’s no such thing as an “unhated” language. Developers are a passionate bunch, and passion breeds strong opinions (and the occasional snarky Reddit comment). Historically, every new language that promised to end the previous decades’ headaches just introduced new quirks to gripe about. The moment a language becomes popular enough, inevitable tech tribalism kicks in – with loyal fans on one side and frustrated critics on the other. From the curly-brace wars of C vs. Pascal in the ’80s, to Java vs. .NET in the 2000s, to today’s debates of monolithic JS frameworks and “Rust will save us all” skepticism – the faces change, but the rivalry remains. An old joke in programming circles says: “The number of programming languages that someone doesn’t hate is exactly zero.” In set theory form, the set of unhated_programming_languages = ∅. In code:

languages = ["Python","JavaScript","Java","C++","Ruby","Go","Rust"]
unhated = [lang for lang in languages if is_universally_loved(lang)]
print(unhated)  # Output: []

No surprise – the list is empty. The humor here rings relatable because every developer has seen flame wars or online polls where even the top-ranked “most loved” language still has a vocal hate group. The meme exaggerates this reality by imagining a meeting for languages that absolutely no one dislikes, and then revealing tumbleweeds. It’s a clever jab at our industry’s language polarization: the fact that given any programming language, you can find a frustrated Stack Overflow post or an inside joke mocking it. After all, one developer’s “beautiful solution” in Language X is another developer’s headache at 3 AM on call, cursing that very tool. In the end, the empty chairs speak volumes: every programming language lives rent-free in someone’s pet-peeve list, so a reunion of unhated ones will always be lonely.

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

85
Anonymous ★ Top Pick The 'Unhatable Programming Languages' meeting was moved to /dev/null to save on room booking fees
  1. Anonymous ★ Top Pick

    The 'Unhatable Programming Languages' meeting was moved to /dev/null to save on room booking fees

  2. Anonymous

    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

  3. Anonymous

    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

  4. Anonymous

    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

  5. Anonymous

    Unhated programming languages are just the ones we haven’t shipped to prod long enough to be blamed for a 3 a.m. incident

  6. Anonymous

    After 20 years scaling monoliths to microservices, the only unhated language is the one you rewrote last quarter

  7. Anonymous

    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

  8. @sylfn 4y

    whitespace is here

    1. @SamsonovAnton 4y

      I now wonder if there is a programming language consisting of whitespaces only... 🤔

      1. @sylfn 4y

        there is https://en.wikipedia.org/wiki/Whitespace_(programming_language)

        1. @SamsonovAnton 4y

          "Rule 34, only for programmers", no exceptions.

        2. @sylfn 4y

          "when tabs were banned by codestyle"

        3. @SamsonovAnton 4y

          Wow, it is C++ compatible, but cannot be mixed with Python. I always knew Python is flawed! 🤪

          1. @sylfn 4y

            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))

            1. @sylfn 4y

              good things were said; the only flaw is that no compiler supports this good C++

  9. @qtsmolcat 4y

    JavaScript is best, fight me

    1. @sylfn 4y

      for what? without this information your statement is true and false

      1. @qtsmolcat 4y

        Everything

        1. @sylfn 4y

          try doing competitive programming in javascript (e.g. on codeforces)

    2. @erizpl 4y

      Since when another framework has been released, eg. this hour?

      1. @qtsmolcat 4y

        Only things I use are jQuery and bootstrap lol

  10. @neitex 4y

    I like Kotlin, Is it hated too? If yes - for what?

    1. @sylfn 4y

      if you don't hate <x> this does not mean that no one doesn't hate <x> (russian: не означает что никто не ненавидит, quadruple negation)

      1. Deleted Account 4y

        I like it ¯\_(ツ)_/¯

    2. Deleted Account 4y

      +

    3. @deerspangle 4y

      Because of the Kotlin evangelists

  11. Deleted Account 4y

    How you can hate python :D?

    1. @sylfn 4y

      Other way is impossible because of shitty python [sticker text]

    2. @deerspangle 4y

      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!

      1. Deleted Account 4y

        Yeah, that's how python sometimes works :D

      2. @RiedleroD 4y

        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.

        1. @deerspangle 4y

          Yeah, assumed it was one of those at first

        2. @deerspangle 4y

          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

          1. @RiedleroD 4y

            not a syntax error, a TypeError.

            1. @deerspangle 4y

              Yeah of course, sorry, only just woke up

              1. @RiedleroD 4y

                same, I'm barely alive.

  12. @SamsonovAnton 4y

    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

    1. @sylfn 4y

      > that was popular in Russian secondary schools throughout 80-s and 90-s i think it is also popular now

      1. @SamsonovAnton 4y

        As of today, children are instructed to install Python and write some sorting algorithms as their very first excercise. 😳

        1. @sylfn 4y

          it depends on school. in my school we learn python and first task was print 2 to 179-th power

          1. @SamsonovAnton 4y

            By using BigInt, right? Not by rolling out your own arbitrary precision math library, right? :padme_meme:

            1. @sylfn 4y

              print(2 ** 179) one line solution

          2. @RiedleroD 4y

            I my school, we learn java

    2. @sylfn 4y

      that := just makes my eyes bleed

      1. @SamsonovAnton 4y

        Thas is actually better than having tons of typical C/C++ bugs due to = and == confusion.

        1. @sylfn 4y

          if (r = get()) { // equals to ((r = get()) != 0) // do smth } good code, especially when you really need to assign some values

          1. @SamsonovAnton 4y

            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.

            1. @sylfn 4y

              or just -Wdisable or something

              1. @SamsonovAnton 4y

                Disabling any warning is bad, and also non-portable. That's why adding extra parenthesis is better, despite impairing readability.

  13. @QutePoet 4y

    How about bash? It's powerful enough for much use cases, even as a solution for the REST API.

    1. @RiedleroD 4y

      bash = trash

      1. @RiedleroD 4y

        sorry, but it just does not work as a general-purpose scripting language

        1. @thematdev 4y

          no, it does

        2. @QutePoet 4y

          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.

          1. @RiedleroD 4y

            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.

  14. @elleqt1337 4y

    C++ is best, change my mind.

    1. Deleted Account 4y

      I feel sorry for your legs

      1. @elleqt1337 4y

        ?

        1. Deleted Account 4y

          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

          1. @elleqt1337 4y

            Cpp is easy af

            1. Deleted Account 4y

              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

              1. @RiedleroD 4y

                > idiots like chrome devs Have they had many problems with UAF? I use FF, so I have no idea tbh.

                1. Deleted Account 4y

                  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

                  1. @RiedleroD 4y

                    I see

              2. @RiedleroD 4y

                I'm like 50% sure the first paragraph is sarcastic, but honestly, I can't tell for sure.

                1. Deleted Account 4y

                  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

                  1. @RiedleroD 4y

                    C++ giveth and C++ giveth and C++ giveth and jesus please taketh some legacy away

                    1. Deleted Account 4y

                      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

                      1. @RiedleroD 4y

                        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.

                        1. @RiedleroD 4y

                          there's probably already something like this out there though

                          1. Deleted Account 4y

                            There is such thing. If you don't believe me, google "Rust language" /s

                            1. @RiedleroD 4y

                              lmao. Ignoring the fact that Rust has a completely different language design, it does benefit from its lack of legacy standards.

                              1. @RiedleroD 4y

                                I mean, even python3 is starting to feel old e.g. with all those legacy string formatting standards.

                                1. Deleted Account 4y

                                  I like python formatting syntax (f"{variable}"). It's not the best but it's quite simple and not too much explicit

                                  1. @RiedleroD 4y

                                    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__()

                                    1. @RiedleroD 4y

                                      I think there's even more, but those are the ones I know about

                                    2. Deleted Account 4y

                                      These are someway ugly but i don't use them (and hope that nobody uses them except the first)

                                      1. @RiedleroD 4y

                                        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.

              3. @affirvega 4y

                If it isn't in STD, then it's in boost

          2. @RiedleroD 4y

            hand-pistol vs. Rocket launcher

          3. @affirvega 4y

            Life be so fine then boom, segfault

  15. @rekechynskyi 4y

    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)

  16. @Shheeerrrr 4y

    Dont you hate YOUR main pl the most? or is it just me

  17. @lol123a10 4y

    Undoubtedly, it's js.

  18. @biskwiq 4y

    where is rust tho

Use J and K for navigation