Skip to content
DevMeme
5186 of 7435
C++ Frog Taunts Its Would-Be Replacements
Languages Post #5680, on Nov 18, 2023 in TG

C++ Frog Taunts Its Would-Be Replacements

Why is this Languages meme funny?

Level 1: Old Reliable

Imagine you have an old machine that everyone in town uses because it’s super fast and powerful, but it’s also a bit dangerous because it doesn’t have any safety guards. Let’s say it’s a magical kitchen mixer that can mix ingredients faster than any other, but if you’re not very careful, ingredients can splatter everywhere or you could even hurt yourself on its sharp blades. This mixer has been around forever – your grandparents used it, your parents used it, and now you use it. Over the years, people have invented new mixers that have cool safety lids and automatic timers so you won’t get hurt and won’t make a mess. These new mixers are easier and safer to use, especially for someone who isn’t an expert chef. You might think, “Why don’t we all just switch to these new safe mixers?”

Well, here’s the thing: the old mixer is built into almost every kitchen and recipe in town. All the bakeries and restaurants have their processes centered around how that old mixer works. It’s super fast – if you know what you’re doing, you can make the perfect cake batter in seconds. The new mixers, while safe, sometimes aren’t quite as fast or they work a bit differently, so you’d have to adjust all your recipes. Some expert chefs even complain that the new mixers are hard to figure out or don’t let them do certain fancy tricks they could do with the old one. Changing all the kitchens to use the new mixer would be a huge project – you’d have to retrain all the cooks, maybe remodel the kitchen counters to fit them, and some of the special old recipes might not work exactly the same.

So every time someone says, “This new mixer will replace the old one for sure!”, they find out it’s not so simple. The old trusty mixer is still there on the counter, humming along, almost smug. It’s like the mixer is saying, “Oh, you think you can get rid of me that easily? Good luck, I’ll be here when your new gadget doesn’t pan out.” In a way, people have a love-hate relationship with this old mixer: they know it’s a bit unsafe and tricky, but they also know exactly how to use it and it’s proven to get the job done.

In the meme, the old mixer is the C programming language. It’s that old reliable tool that’s deeply woven into everything. The new mixers are the newer programming languages (like Rust) that are safer and modern. The meme is showing the old tool (C, depicted as a cheeky frog with a C logo) grinning and teasing everyone trying to replace it: “I see you want to replace me – not so easy, is it?” It’s funny because it’s true: even if something newer and better comes along, the old thing sticks around longer than you’d expect, and it almost feels like it’s challenging you to prove you can really do without it.

Level 2: Language Wars 101

Let’s break down the meme for a newcomer to low-level programming and the world of programming languages. First, who is that smug frog? That’s Pepe the Frog, a well-known internet meme character often used to convey a sly, smug, or trollish mood. In this image, Pepe is colored and styled as the C programming language logo — a big blue letter C. The two little plus signs (++) on his hip signify C++, which is basically the closest sibling to C (C++ started as “C with extra features”). So this frog represents the whole C family of languages looking very self-satisfied. The text on the meme says: “I’ve noticed a certain interest in replacing me… too hard for you?” It’s as if C (the language) is speaking and teasing programmers: “Oh, you want to get rid of me? Having trouble with that, aren’t you?”

Now, why would anyone talk about “replacing” C? This is about programming languages and how developers sometimes argue over which language to use — often called language wars. C is a very old programming language (created in the early 1970s) and is famous for being super powerful but also a bit dangerous or difficult. It’s used for low-level programming tasks, which means code that interacts closely with the computer’s hardware and operating system. For example, parts of operating systems (like Windows, Linux, MacOS), device drivers (the software that talks to your hardware like printers or USB devices), and embedded systems (software in devices like microwaves, cars, or IoT gadgets) are typically written in C or C++. These are places where you need fast, efficient code and direct control over memory and the CPU.

However, C is “dangerous” in the sense that it doesn’t automatically prevent mistakes that can crash your program or make your computer vulnerable. A classic example: C lets you manage memory manually. You can allocate some memory (with a function like malloc in C) and later free it (free). But if you make a mistake – say you forget to free memory (causing a memory leak), or you free it too early and then try to use it (causing a dangling pointer, which often leads to a crash or weird behavior) – C won’t stop you. It’ll happily (or rather obliviously) let you shoot yourself in the foot. Another example is going outside the bounds of an array (buffer overflow): C will let you write data past the end of an array, which can overwrite other data in memory. This kind of bug has led to many security issues over the years. In short, C gives the programmer a lot of freedom and power, but with that comes a lot of responsibility and risk. You have to be very careful and disciplined when coding in C, which is why people often say it’s a language that “expects the programmer to know what they’re doing.” As a newcomer, you might find C and C++ syntax and rules a bit arcane or complex (pointers! header files! manual memory!), especially compared to more modern languages.

Because of these issues, there’s always been interest in newer languages that could do the same jobs as C/C++, but be easier to work with or safer by design. Over the years, many languages have been proposed for this. For example, Java (if you’ve heard of it) was one language people in the ’90s thought might replace C++ for a lot of work, because Java manages memory automatically (no manual malloc/free, it has a garbage collector) and it catches a lot of errors by not allowing things like pointer arithmetic. But Java turned out not to be a great fit for things like operating system parts or low-level device stuff, mainly because it’s not as efficient at that level and it requires a big runtime (the Java Virtual Machine) to be running. It became super popular for application development, but C/C++ kept their throne in system programming.

The meme is more specifically hinting at Rust, which is a much newer programming language (first released around 2010, but really gaining popularity in the last 5-6 years). Rust was created with the explicit goal of replacing C and C++ in the systems programming space, or at least giving an alternative. The big selling point of Rust is that it guarantees memory safety without having a garbage collector. Rust introduces the concept of ownership and borrowing: essentially, the language has rules that make sure only one piece of code “owns” a piece of memory at a time (or if it’s shared, it can’t be modified at the same time), and when that owner goes away, the memory is automatically freed. If you try to do something unsafe, like use memory after it’s freed or have two parts of the program modify the same data at once in an uncontrolled way, the Rust compiler will catch it and refuse to compile your program. These checks are strict — so strict that many newcomers to Rust find it challenging at first to get their programs to compile. You might hear jokes about fighting the Rust compiler’s borrow checker (it’s tough love, preventing you from making mistakes).

So when C (the smug frog) says “too hard for you?”, it could be seen as a jab at the complexity or difficulty of these new languages, and at the difficulty people face in actually replacing huge C codebases. Rust, for all its advantages, requires developers to learn a new mindset and often to rewrite existing code. That’s not easy when you have maybe millions of lines of working C/C++ code out there. Legacy code is a term we use for an old code that is still in use. There’s tons of legacy C and C++ code running mission-critical systems. Imagine trying to replace the engine of a flying airplane — that’s how it can feel to replace core low-level software in an operating system or a major database while it’s running the modern world. You have to either do it very gradually or build a whole new airplane (system) and convince everyone to switch, which can take years or decades, if it happens at all.

Let’s connect this to the text “I’ve noticed a certain interest in replacing me.” There is that interest! A lot of developers, especially those concerned with security and reliability, are very interested these days in using safer languages. Memory safety advocates are people who strongly support moving away from languages like C/C++ (which are not memory-safe by default) to languages like Rust, or even higher-level ones, to reduce bugs. They have good reasons: a huge percentage of security vulnerabilities in software, especially in things like operating systems and browsers, have been due to memory errors in C/C++ code (things like buffer overruns, use-after-free, etc.). For example, Microsoft reported that something like 70% of the security bugs they patch in Windows were memory safety issues in C/C++ code. That’s a big motivation to find a better solution. Even some governments and big companies are saying “maybe we should write new components in Rust to avoid these issues.”

Now, from a junior developer’s perspective, the meme is laugh-inducing because it’s like the old language (C) is a smug old-timer that refuses to retire. Picture a veteran engineer or an old machine that has been around forever – that’s C. New languages are like the young ambitious upstarts who keep saying “I can do it better!” Sometimes newbies fall in love with a new language and might wonder, “why are we even using C anymore if it has so many problems?” Then they learn the hard way that things aren’t so simple. Perhaps they tried to write a small operating system from scratch in Rust and discovered how much unsafe code and tricky bits they still had to deal with. Or they attempted to contribute to an open-source project and found the core was in C and rewriting it would be way above their pay grade. In any case, the meme highlights a real-world situation: language evolution is slow in areas where you have a lot of existing code and high performance needs. It’s comparatively easier to adopt a new language for a brand-new project (say a new web service might use Go or Rust), but replacing an existing system is a huge deal.

Some key terms in the meme and context:

  • C – A powerful low-level programming language used for system software. Think of it as a very fast car with no seatbelts: great in a race, but if you crash, you really crash.
  • C++ – An extension of C that adds more features (like classes, objects, and a lot of abstractions). It’s also widely used (in games, high-performance software, etc.). It’s like C’s bigger, more feature-packed sibling – still a fast car, but now with more knobs and buttons to tweak (and still potentially dangerous if misused).
  • Rust – A modern systems programming language aiming to offer the speed of C/C++ but with built-in safety checks to prevent the common bugs. If C is a race car with no seatbelts, Rust is like a race car with a smart safety system that won’t let you drive it in an unsafe way – although learning to drive it might feel like dealing with an overprotective driving instructor at first!
  • Memory safety – This means avoiding errors related to memory: no accessing memory out of bounds, no use-after-free, no double-free (freeing the same memory twice), etc. Languages like Python, Java, or C# achieve memory safety by having a runtime that manages memory for you (so you can’t, for example, accidentally free something manually — it’s taken care of, albeit with some performance cost). Rust achieves it with compile-time rules. C and C++ put the responsibility entirely on the programmer.
  • Legacy systems / Legacy code – This refers to old software that is still in use. For example, code written decades ago in C that still runs your operating system or your bank’s ATM software. Companies and developers often have to maintain this code because it works and is too expensive or risky to replace. It might not be pretty, and it might have quirks, but it’s trusted enough and thus stays around.
  • Language wars / Language comparison – Developers love to debate which language is better for a task. This has been going on forever (C vs C++, C++ vs Java, Java vs Python, and currently a hot topic is C++ vs Rust). Often these debates are good-natured, but sometimes they get heated, much like sports team rivalries. The meme is a lighthearted poke at that phenomenon.

So in summary, the meme’s joke is saying: C knows you want to replace it with a fancier, safer language, but C is smug because historically those attempts haven’t succeeded easily. It’s like the old champion telling the young challengers, “You’re not up to the task yet, kiddos.” For a junior dev, it’s a glimpse into the culture and history of programming – realizing that newer isn’t always instantly dominant, and that there are reasons old technologies stick around. And it’s okay to laugh at the absurdity that something from our grandparent’s era of computing is still a cornerstone of modern tech, with all its wrinkles, while each new generation learns why it’s hard to just drop it and move on.

Level 3: The Unkillable C

For seasoned developers, this meme hits on a familiar saga: the countless attempts to replace C (and its partner-in-crime, C++) with a “better” language, and how those attempts never fully pan out. The smug blue Pepe the Frog draped in the C language logo perfectly embodies how indestructible C feels in the face of these challenges. He lounges there with a knowing grin, saying “I've noticed a certain interest in replacing me… too hard for you?” — as if taunting a generation of programmers and language designers who have tried and failed to knock C/C++ off their throne. The humor here is a mix of frustration, respect, and resignation. It resonates especially with systems programmers who have lived through these so-called language wars. They’ve seen shiny new languages rise with promises to slay the C dragon: memory safety, easier concurrency, better tooling, you name it. Yet, decades later, C and C++ are still running the show in kernels, device drivers, high-performance libraries, and other critical low-level software. It’s the cocky endurance of a language from 1972 saying, “Oh, you thought I’d be retired by now? Think again.”

The meme specifically references the ongoing Rust vs. C debate, but it also implicitly nods to history. Seasoned devs remember earlier rounds of this fight. In the late ‘70s and ’80s, languages like Ada were introduced (in fact, mandated in some defense projects) to improve safety and reliability in systems programming. Ada brought strong typing and built-in concurrency, aiming to avoid the pitfalls of C, but outside of niche sectors it never displaced C broadly — partly because C was already everywhere, and Ada programs often couldn’t match C’s performance or ease of integration with existing code. Fast forward: Java arrived in the ’90s, championed as a memory-safe, “write once, run anywhere” solution. Some heralded it as the end of pointer bugs. And while Java took over many application domains, no one seriously rewrote operating system kernels or high-performance database engines in Java – its garbage-collected runtime and VM were deal-breakers for the lowest-level tasks. We saw D tout itself in the 2000s as “C++ done right” with modern features, and more recently Go (Golang) emerging from Google with a simplified model for concurrency and memory management. Each of these had their wins (Go, for instance, is popular for servers and cloud tools), but C/C++ barely flinched in their core domain of systems programming and performance-critical code.

Now enter Rust, the poster child of the current generation of memory_safety_advocates. Rust is probably the most serious contender C’s ever faced: it directly targets system-level development with the promise of eliminating entire classes of bugs (buffer overflows, null pointer dereferences, data races) that have plagued C and C++ for ages. The hype is substantial, and indeed Rust has been adopted in some projects that traditionally would be C/C++ – parts of browsers (like Mozilla’s own use of Rust in Firefox), new operating system experiments, and it’s even creeping into Linux in carefully controlled modules. For a moment, imagine that smug Pepe-frog C at a conference table watching Rust’s presentations: “Impressive theory. Compile-time guarantees. I see you’ve done your homework.” The meme text “too hard for you?” could double as C++/C’s jab at Rust’s complexity. It’s true that Rust’s learning curve is infamously steep for beginners (the borrow checker can feel like an inscrutable boss that won’t let your code pass). Seasoned C++ devs chuckle at that because they remember when C++ itself was considered overly complex, and here comes a language that might be even more mentally demanding in some ways. In other words, C is teasing: “So, you wanted safety and speed? Finding it a bit difficult to manage all those rules?

But the bigger meaning of “too hard for you?” is directed less at the Rust language and more at the entire effort of replacing C. It’s almost mocking the industry: “You wanna rewrite the world without me? Good luck, it’s too hard.” And that’s where reality backs up the smugness. Think of the massive legacy systems out there. The Linux kernel alone is over 30 million lines of C code that’s been tuned, battle-tested, and optimized for decades. Rewriting that from scratch in another language isn’t a task; it’s a tech fantasy. Even introducing a new safer component into Linux requires Herculean effort in testing and compatibility. The same goes for countless embedded systems running on C, or the CPython interpreter (written in C), or Git (C), or the cores of databases like MySQL and PostgreSQL (C/C++). These are critical pillars of technology; they weren’t built overnight, and they can’t be replaced overnight. There’s a darkly comic understanding among veteran developers: we’re kind of stuck with C/C++ not necessarily because we love every aspect of them, but because the cost and risk of replacing them wholesale is enormous. The meme winks at that shared pain point. We often gripe about C’s footguns — the segmentation faults, memory leaks, off-by-one buffer errors that have caused countless all-nighters and security patches — and we dream of something better. Yet when we try to implement “something better,” we slam into the walls of reality: performance regressions, integration headaches with existing code, lack of tooling, or simply the steep investment needed to train everyone and rewrite everything.

There’s also institutional momentum and familiarity. An old joke among cynical engineers is, “C is a dinosaur, but it’s a dinosaur with its claws in every piece of tech.” It’s not that people haven’t tried to drive it to extinction; it’s that it proved to be an extremely adaptable and resilient creature. Organizations have huge codebases in C/C++ and a deep pool of developer expertise. For many tasks, choosing C or C++ is the conservative, safe business decision — ironically, safe in terms of project risk, not in terms of memory safety. There’s a saying in IT, “No one ever got fired for choosing IBM.” In the programming world, no one gets fired for choosing C/C++ either, because it’s the devil we know. If you propose rewriting a perfectly functional (if crusty) C codebase in Rust, you’d better justify the cost and risk. What if the new code has subtle bugs or performance issues? Will the whole team need to be retrained? Who will maintain it ten years down the line? Often, the answer is: stick with the devil you know, maybe just apply some safer coding standards or add some tests. The result: C continues to run in production, warts and all, and the “Rust rewrite” or “Go rewrite” gets confined to a prototype or a small module.

From a senior engineer’s perspective, the meme is practically dripping with “I told you so.” Many have witnessed a scenario like: an enthusiastic team starts a project to replace a critical C/C++ component with a memory-safe language. Six months in, they’ve hit performance snags (“the garbage collector pauses are killing our latency”) or integration issues (“the new module can’t handle the weird shared-memory hack the old code did without unsafe blocks everywhere”) or just the realization that re-implementing 20 years of bug fixes and features is really hard. Eventually the project is scaled back or shelved, and the old C code gets a few band-aid fixes and lives on — with a few more smug comments in the commit log about how “C ain’t dead yet.” The frog with steepled fingers in the meme is basically every grizzled systems architect who has outlived the third or fourth “C/C++ killer” in their career. It’s the programming equivalent of “back in my day... we tried that, and the old ways still held.”

One more layer to the humor: The Pepe frog image itself is an internet icon often used for trolling or smug humor, so using it for the C language logo is a perfect match. It’s like C is trolling the entire community of modern programmers. Notice Pepe’s hip has two plus signs (++), representing C++ – so it’s not just C, it’s the whole C-family flexing here. C++ is also notoriously hard to “replace” even though many have tried to improve it (C++ itself evolves, but that’s another story). The meme is implicitly acknowledging that even within the C family, we tried “replacing C with C++” by adding more features and safety (like C++’s RAII and smart pointers to handle memory better), yet here we are in 2023, still writing new C code for certain domains and still trying to replace C++ with something like Rust. You can almost hear C++ joining C in taunting: “We’ve seen you try for decades. Still here, aren’t we?”

So, for those in the know, this meme is simultaneously a chuckle and a groan. Chuckling because, yes, the arrogance of that smug C/Pepé frog captures how it feels when you grudgingly admit that this 50-year-old language isn’t going anywhere soon. And groaning because it’s true — despite all our advancements, we’re often stuck maintaining or interfacing with C code that predates us, and we’ll probably be doing that for a long time. In the end, the meme’s message carries a ring of truth that senior devs have internalized: Replacing C++ (and C) in the systems programming world is a marathon, not a sprint — and the finish line is nowhere in sight. The venerable language simply laughs in the face of our best efforts as if to say, “I’ll be here long after your fancy new language du jour becomes passé.”

Level 4: Bare-Metal Realities

At the bare-metal level of computing, C endures because it operates just a whisker above actual machine code. It’s often called “portable assembly” – meaning a C program can be almost directly translated to the ones-and-zeroes instructions the CPU runs, but unlike pure assembly, the same C code can be compiled for different hardware. This proximity to the metal gives C extraordinary performance and control over system resources. However, it also means C offers only the thinnest safety net. When you manipulate memory in C (with raw pointers, pointer arithmetic, manual malloc and free calls), you’re juggling razor blades: incredibly precise tools that cut close to the hardware, but with nothing to prevent you from slicing your fingers. Undefined behavior in C (like reading memory you shouldn’t or overflowing an integer) is not just a quirky detail – it’s a design choice that allows compilers to optimize aggressively. The compiler can assume you won’t do illegal things; if you do, all bets are off. This absence of strict guarantees lets C leverage every trick the hardware and compiler theory allow, from out-of-order execution to loop vectorization, squeezing maximum speed. But it also means a small mistake can turn into a bizarre crash or security hole because the language won’t stop you – it’ll instead smirk and hand the issue off to the CPU, which might just execute nonsense or dangerous operations.

Crucially, any systems language aspiring to dethrone C must contend with these low-level realities. It has to match C’s ability to manipulate memory and registers with minimal overhead, while somehow preventing those fatal mistakes. This is a monumental juggling act that blends compiler theory, type systems, and even some formal methods from academic research. For example, Rust attacks this problem with an advanced borrow checker based on ownership types and lifetime analysis (concepts rooted in academic work on linear types and region-based memory management). Its compiler performs a form of lightweight theorem proving every time you build your code: it checks that references don’t outlive the data they point to (preventing dangling pointers, a notorious source of bugs in C) and that you don’t have two active mutable pointers to the same data (preventing data races in concurrency). These guarantees are profound — you get memory safety (both spatial and temporal safety) without a garbage collector, something theoretical computer science had pondered for decades. But achieving this comes at the cost of complexity in the language’s design and the compilation process. It’s as if Rust’s compile-time checks are solving constraints to ensure safety, effectively moving the complexity from runtime (where C might crash) to compile time (where Rust might refuse to compile until you fix potential safety issues). This is a classic space-time trade-off in computation, reminiscent of formal verification efforts: prove as much as possible about program correctness before the program even runs.

Another bare-metal reality is the application binary interface (ABI) and the ecosystem locked to it. Operating system kernels, device firmware, and low-level libraries expose C ABIs – a set of conventions for function calls, data layout, and binary interfaces. This has become the lingua franca of computing. For a new language to replace C in practice, it must either conform to these ABIs or successfully push a new standard. In reality, newcomers like Rust interoperate by providing easy FFI (Foreign Function Interface) to call C, essentially acknowledging C’s foundational role. Even the toolchains new languages rely on are often written in C or C++; for instance, Rust’s own rustc uses LLVM under the hood, a compiler infrastructure in C/C++ that handles the machine-code generation. This means the venerable toolchain that C established – highly optimizing compilers, linkers, and debuggers honed over decades – still underpins the “C replacements.” Any inefficiency or mismatch at this level, and the new language risks losing the performance game. Real-time systems are a prime example: if a language introduces even occasional unpredictable pauses (say, from garbage collection or runtime checks), it can’t be used for a hard real-time task like an interrupt handler or a motor controller. C, by design, has zero hidden runtime overhead; a new language must match that determinism to truly compete in kernel development or embedded control. In short, the laws of computing physics – CPU architecture, memory hierarchies (caches, RAM, registers), and the need for deterministic performance – all conspire to make system programming a high-wire act. C walks that wire without a safety harness, and any rival has to walk just as lightly, while somehow conjuring a harness that doesn’t add weight.

It’s no wonder that attempts to fully replace C often end up embracing aspects of C to get the job done, or limiting their own scope. Many “safer C” projects (from academic languages like Cyclone to modern contenders) found that to beat C at its game, you must confront the same fundamental trade-offs that C’s designers and systems programmers have wrangled with for ages: speed vs. safety, control vs. abstraction. The meme’s smug C logo Pepe effectively says: “Even with all your fancy type theory and safety guarantees, you still have to play by the hardware’s rules that I was built around.” It’s a reminder that in systems development, physics and decades of engineering optimizations form a nearly immovable foundation. Changing that foundation is possible (we do see gradual shifts, like Rust carefully being introduced into Linux), but it’s hard on a level that is both technical (how do you ensure absolute safety and performance?) and socio-technical (how do you rebuild or retrofit the world’s software infrastructure?).

Description

A screenshot of a tweet displaying a meme character that is a hybrid of Pepe the Frog and the C++ language logo. The frog is colored in shades of blue and white, incorporating the shapes from the C++ logo into its form. It has a smug, confident expression, sitting with its hands clasped. The text above the character reads, 'I've noticed a certain interest in replacing me'. Below the character, a taunting question asks, 'too hard for you?'. This meme personifies C++ as a powerful and enduring programming language that is aware of the constant industry discussion about replacing it with newer, supposedly safer or simpler languages like Rust or Go. The technical humor lies in the shared experience of developers who recognize the immense difficulty of migrating complex, high-performance systems away from C++. C++'s notorious complexity is also its strength, and the meme suggests that many who attempt to replace it ultimately find the task too challenging, reinforcing C++'s entrenched position in domains like game development, finance, and systems programming

Comments

14
Anonymous ★ Top Pick C++ is the original microservices monolith. Everyone agrees it should be broken down, but no one wants to be on-call for the performance regression when they rewrite the core trading engine in a language that garbage collects every nanosecond
  1. Anonymous ★ Top Pick

    C++ is the original microservices monolith. Everyone agrees it should be broken down, but no one wants to be on-call for the performance regression when they rewrite the core trading engine in a language that garbage collects every nanosecond

  2. Anonymous

    Every few years we schedule a rewrite to escape undefined behavior, and every few years we discover the rewrite’s garbage collector is itself written in… C

  3. Anonymous

    After 40 years of 'C++ killers', the only thing that successfully replaced C++ was... more C++ standards that nobody fully implements

  4. Anonymous

    The ultimate job security strategy: write everything in C++ with manual memory management, no comments, and liberal use of template metaprogramming. By the time they realize the 'certain interest in replacing you' means hiring three junior devs to maintain your code, you'll have already negotiated your retention bonus. Remember: RAII isn't just a pattern, it's a moat around your employment

  5. Anonymous

    C++ smirks at Rust: 'Borrow checker? I've been owning lifetimes since the '80s - your safety nets are my training wheels.'

  6. Anonymous

    Replace C/C++? Cool - now port the bootstrapping chain, a decade of vendor SDKs, and every ISR; we’ll review in 2035

  7. Anonymous

    Leadership: “Replace C++ with Rust by Q3.” Sure - right after the borrow checker marries our custom allocators, 300 C‑ABI plugins, and the template metaprogramming that thinks it’s a DSL

  8. @Vlasoov 2y

    B A S E D

  9. @Art3m_1502 2y

    WinForms💀💀💀

  10. @SomeWhereIBelong 2y

    Fax

  11. @qtsmolcat 2y

    C++ is a fucking nightmare to write. Useful, but a nightmare

    1. @Dark_Embrace 2y

      Do Zig 🤪

      1. @qtsmolcat 2y

        I prefer zag

    2. Spongey 2y

      >filtered

Use J and K for navigation