this post was submitted on 16 Mar 2025
798 points (98.2% liked)

Programmer Humor

21874 readers
420 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
798
C++ (ani.social)
submitted 1 week ago* (last edited 1 week ago) by kiri@ani.social to c/programmer_humor@programming.dev
 
top 50 comments
sorted by: hot top controversial new old
[–] brucethemoose@lemmy.world 142 points 1 week ago* (last edited 1 week ago) (2 children)

Meanwhile, Rust punches you in the face for the mere suggestion. Again. And again.

Python happily nods, runs it one page at a time, very slowly, randomly handing things off to a C person standing to the side, then returns a long poem. You wanted a number.

Assembly does no checking, and reality around you tears from an access violation.

EDIT: Oh, and the CUDA/PyTorch person is holding a vacuum sucking money from your wallet, with a long hose running to Jensen Huang's kitchen.

[–] caseyweederman@lemmy.ca 41 points 1 week ago (1 children)

Rust just keeps telling me "you didn't actually learn how references work" over and over

[–] SatouKazuma@programming.dev 15 points 1 week ago

Lifetime annotations go brr

[–] stingpie@lemmy.world 11 points 1 week ago (4 children)

I refuse to believe the python one ever happens. Unless you are importing libraries you don't understand, and refuse to read the documentation for, I don't see how a string could magically appear from numeric types.

load more comments (4 replies)
[–] riodoro1@lemmy.world 87 points 1 week ago (3 children)

Am I bad at programming?

No, it’s the language thats wrong.

[–] RoyaltyInTraining@lemmy.world 95 points 1 week ago (11 children)

Except that many other languages have proven that C++ is simply terrible at providing meaningful errors.

load more comments (11 replies)
[–] asdfasdfasdf@lemmy.world 21 points 1 week ago (5 children)

I mean, this is correct in many cases, unironically.

It should be one of the core purposes of a programming language to help humans to write the code they intend. If a language doesnt do that then it's bad.

load more comments (5 replies)
[–] pimento64@sopuli.xyz 19 points 1 week ago (1 children)

Valid languages:

  1. HolyC

That's it

[–] ICastFist@programming.dev 6 points 1 week ago

Brainfuck has entered the chat

[–] henfredemars@infosec.pub 71 points 1 week ago (2 children)

Ah, C++. An endless supply of footguns where the difference between a junior and a senior dev is knowing what parts of the language to never use.

[–] xmunk@sh.itjust.works 28 points 1 week ago (2 children)

Real C++ programmers pass by const ref and tell pointers to fuck off.

[–] henfredemars@infosec.pub 17 points 1 week ago* (last edited 1 week ago) (4 children)

You can also make everything a smart pointer and be done with it.

I can count on more than one hand the number of large scale projects where converting everything to smart pointers fixed major memory issues. Even if smart pointers can’t handle circular references, the number of projects that just don’t manage their memory correctly at all and were fixed by introducing these tools is way too high.

load more comments (4 replies)
load more comments (1 replies)
[–] bleistift2@sopuli.xyz 7 points 1 week ago (2 children)

I thought C++ was meant to get rid of C’s footguns?

[–] henfredemars@infosec.pub 56 points 1 week ago (1 children)

It’s almost backwards compatible. You can use old or new foot guns.

[–] dvlsg@lemmy.world 21 points 1 week ago

Hooray, choice!

[–] bitcrafter@programming.dev 21 points 1 week ago

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

[–] count_dongulus@lemmy.world 67 points 1 week ago (4 children)

This is why I will never touch Javascript again. Long ago when I worked on web stuff, half my workflow was spent in the debugger tracing garbage to find where a typo was. The industry moved to Typescript, and now assuming the strictness checks are enabled, if some Typescript transpiles successfully, I can be 95% sure whatever fuckup I observe at runtime is a logic problem.

Weakly typed languages were an awful idea. But in general, if the compiler isn't able to detect most runtime issues (like with C++ here), it's not going to be the most productive language to use for building solutions compared to smarter alternatives.

[–] CosmicTurtle0@lemmy.dbzer0.com 9 points 1 week ago (3 children)

I've thought about moving to typescript. Do you have suggestions for a 20+ year JavaScript dev?

[–] count_dongulus@lemmy.world 16 points 1 week ago

Try porting a very small bit of behavior into a new tiny library or module that is Typescript based and independently published. Enable the strictness checks in tsconfig - really, really resist the urge to use any, and enforce that any is disallowed in tsconfig. Familiarize yourself with its utility types that really trip new authors up. "Record" comes to mind here, and others that involve generics if you haven't before worked with generics. Some of the type error messaging can be pretty obtuse - don't be afraid to paste them into an LLM (or use Copilot enhanced Intellisense) to explain what it actually means. IMO the type violation messaging is a weak dev experience point for new authors, so don't sweat it if you occasionally "struggle to make the squiggles go away".

[–] Lifter@discuss.tchncs.de 7 points 1 week ago

Just try it. You can usually convert a single file at a time. Start small (or even with a pet project)

load more comments (1 replies)
load more comments (3 replies)
[–] Lemmist@lemm.ee 48 points 1 week ago (3 children)

So? Do you really expect the compiler to UNDERSTAND the code?

Here is a grammatically correct phrase for you to think:

Compilers don't paint tangential apostrophes unless the storm value is deeper than radish. Fraggles love radish.

[–] LaggyKar@programming.dev 44 points 1 week ago (10 children)

This is something that Rust is specifically designed to prevent.

[–] CanadaPlus@lemmy.sdf.org 9 points 1 week ago

C/C++ is mildly obsolete now, basically. Breaking the memory model is not really a small defect that's a matter of taste.

load more comments (9 replies)
[–] aliceblossom@lemmy.world 40 points 1 week ago (3 children)

Man, fraggles really do love radish though.

load more comments (3 replies)
[–] LPThinker@lemmy.world 21 points 1 week ago (1 children)

Congratulations, you've illustrated the difference between syntax and semantics. But any competent compiler also handles semantics (just in a separate phase of compilation), because that's necessary for any useful conversion to machine code, not to mention optimizations.

load more comments (1 replies)
[–] Thorry84@feddit.nl 36 points 1 week ago

Typescript on the other hand: Exwuse me sir, you seem to have a little oopsie right here. Oh right! Let me just fix that right up.

HERE ARE TWO THOUSAND ERRORS! YOUR PUNY LITTLE BUFFER CAN'T EVEN SCROLL BACK TO READ THEM ALL! AND YOU CALL YOURSELF A PROGRAMMER?

[–] zero_spelled_with_an_ecks@programming.dev 28 points 1 week ago (2 children)

Just me or is the single speech bubble loop in the 4th panel weird?

[–] can@sh.itjust.works 22 points 1 week ago

Very. It's like they're both saying it in unison.

[–] Jyek@sh.itjust.works 9 points 1 week ago (1 children)

It makes sense to me. You start in the top left like how you read and then you get a direction for the order of the conversation. I read it naturally at intended the first time through.

[–] can@sh.itjust.works 17 points 1 week ago (3 children)

It reads fine. It's the connection between the bubbles that's incorrect.

load more comments (3 replies)
[–] ICastFist@programming.dev 25 points 1 week ago (4 children)

What surprised me the most was the speed of the compilation, must be a very small program. I tried to compile Godot from source once. Force-stopped it after 3 hours

[–] scholar@lemmy.world 42 points 1 week ago

There's a reason the play is called waiting for Godot

[–] Sylvartas@lemmy.dbzer0.com 10 points 1 week ago (1 children)

How many cores do you have and what compiler was it ? Also RAM can help with huge codebases iirc. When I was working with UE5 I had the best Ryzen available with 128 Go of RAM, could compile the engine (which is much bigger than Godot) from source in less than 2 hours iirc (yes that is a full clean+rebuild, not just compiling recent changes)

[–] ICastFist@programming.dev 6 points 1 week ago (3 children)

i7-7700 with 16GB of RAM :/

load more comments (3 replies)
load more comments (2 replies)
[–] abcd@feddit.org 23 points 1 week ago

Is C++ the first enemy that managed to win against one punch man?

[–] heavy@sh.itjust.works 16 points 1 week ago (3 children)

I mean, the comic is fine I guess, but if it implies the Cpp lady is hitting you, it's not. That would be the kernel, the lady did what you told her to do.

[–] senkora@lemmy.zip 13 points 1 week ago

If undefined behavior is triggered anywhere in the program, then it is allowed by the standard for the process to ask the anthropomorphized compiler to punch you.

100% based and standards-compliant comic

load more comments (2 replies)
[–] recursive_recursion@lemmy.ca 11 points 1 week ago
load more comments
view more: next ›