Need a rust version too.

MaliciousKebab@sh.itjust.works to Programmer Humor@programming.dev – 811 points –
92

Rust:

Cannot move princess out of castle which is behind a shared reference

It will also complain that trying to break into the castle is unsafe, so you have to tell it that you know.

"Alright, but you better be outside of a properly locked up and OSHA-compliant castle with the princess by the time I get back, or I'm not compiling"

And then you do that, but you miss a smoldering ember from one of the castles torches, and everything including the horse and princess catches fire. Next time, pick an escape plan that only requires unsafe for the drawbridge.

There's a totally safe way to do it too, I guess, but it involves building a series of replacement castles, and it's also totally ugly and sinfully slow.

1 more...

Just clone the princes and get on with your day.

1 more...

no python? how are normie programmers like me supposed to relate to this?

You have python. You import antigravity. The princess flies off into space. You monkey patch the princess so she has wings.

And this is how I learned about the antigravity module. Pretty cool!

Same! I also learned about

import this

import this

"In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch."

lol

The artist is still waiting for the python cells to render.

Python: You send someone else to rescue the princess on your behalf. That someone else is the C knight.

No perl either. Much like python you find a relevant library (in cpan), but unlike python there will be seven different implementations, and any four perl devs will come up with at least ten solutions, nine of which will successfully rescue the princess

Everything will seem to be be going great, but to actually gain access to the castle you'll have to compare your situation to successful rescues to find the undocumented drawbridge control

Python:

from Rescues import Princess
Princess.rescue()

map(lambda princess: princess.rescue(), [castle.get_princess() for castle in castles])

Don't forget to keep your return values...

rescued_princesses = [{"princess": princess, "rescued": princess.rescue()} for princess in [castle.get_princess() for castle in castles]]

Here is the original comic, it's got the word fuck in it! Direct link to higher-quality image.

NOOOOOOO NOT THE FUCK W*RD!

I can't fucking believe you've done this

Yeah. I thought we all agreed that we don't fucking swear here. What the fuck...Shit. Darn-it. /s

You seem very excited so now I have to check it out.

e: holy shit, it does

Swift: Apple releases a new version of the castle and deprecates the princess before you finish your implementation

You have Rust. (the knight in this panel looks very cool, wears sunglasses, and probably has a ponytail)

You've been told how easy it is to rescue the princess. Absolutely nothing will get in your way, they say; nobody can possibly get access to your plan, and you can even rescue multiple princesses simultaneously! (in this panel, the knight is imagining rescuing three princesses from three different castles at the same time)

You start working on your plan. It's elegant and beautiful. You write articles on Medium to tell other knights how to rescue their princess. You tell everyone who will listen about your plan. You become a Rust zealot. You never rescue the princess. (In this panel, the knight is nowhere to be seen, and the princess looks bored in her tower. The knight is across the field, at a festival with the banner "RUSTCONF" flying overhead)

Omg Lisp. I'm dying. Our object oriented programming class in college involved programming in Scheme. This was... a while ago.

Saving this forever.

Yup, Scheme was the only programming language taught in our comp-sci department so we could "learn how to learn." Two years and a broken parentheses button later, and I switched to being a theatre major.

Today, my legal career stands as a testament to the pointlessness of a declared major.

Always good to see Jon Skeet get some love. I'd love to know in terms of quantity just how many people he's helped over the last decade or so.

Literally every time I've ever posted a question on SO that's related to .NET, Skeet comes to my rescue.

I just wonder how many he would have saved if he didn't write the language in the first place

if we count the number of people who have used products with code helped by him; we're probably around 50% of all humanity by now. at least...

You have Rust.

Forget rescuing the princess, that's unsafe. Lock her down even more!

You use Assembly.

You describe each and every leg movement and each and every step to the castle and over the castle bridge and inside the castle.

You somehow end up in the castle kitchen.

Or more precisely. You end up in a dark room. You’re not sure it’s in the castle.

And the only way back is by counting every step you took on the way in, and if you miss one, the castle buries you.

But if you're right, you have the princess and return home before the guards are done drawing their swords.

You have rust.

You get a horse and arrive at the castle within seconds but the horse is too old and doesn't work with the castle.

You remove the horse, destructure the castle and rescue the princess within seconds, but now you have no horse.

While you're finding a compatible horse and thinking whether you should write your own horse, Bowser recaptures the princess and moves her to another castle.

Rust: You declare the castle type as unsafe and then search for a crate with a rescue_princess function. You discover the princess you rescued is a femboy wolfkin named Pawws. You now have pubic lice and an inexplicable smug sense of superiority.

PHP 8 makes it finally possible to rescue the princess, but you accidentally princess the rescue instead.

PHP 8 makes it possible to rescue the princess but your 83 legacy princesses are all still PHP 5.

I did not want to be reminded of that today 😡

The Patsy from Monty Python in the PHP section got me

1 more...

So let me summarise this:

Only C and Lisp actually completed the initial task of getting the princess free, and Author clearly favors C over the drooling and homeless lisp hacker. Also, turns out, C greatest weakness helped to save not only the princess but everything she ever possessed! How convenient!

Naah, C stabbed himself in both of his feet while planning. The rest of it is his dying mind hallucinating saving the princess.

Lisp is the true hero, but the author has parenthophobia

Rust:

You crushed the princess under the weight of all the crates you imported

C# is about right. LINQ was meant to make things easier, or at least the code easier to read. Instead, you gain this addiction to seeing how much functional logic you can fit into one line of code (or a single multi-line query) while still remaining readable.

You have rust, you decide to rewrite the C plan but the only library that supports it uses unsafe code so you go back and rewrite it. Wait what were you working on?

Why's this look so poo on my phone?

Might be the client. I use eternity and it looks OK on my phone.

Not the best quality, but still easily enjoyable on Eternity Nightly

1 more...

You have Perl.

%_=~aj/dy/hfiw8i/g;
$_/a(h0w8)y@;
FWA/E.*FW[tu29uy]/;
%(1)hjc/f4ifh38/y;

The princess is saved, but all you can think about is rescuing another, with an entirely different plan. Which is just as well because you have no fucking idea how to explain the one you just wrote and executed.

I'm going to have to print out the Go version for all future "it's idiomatic" and "but the community!" debates at work

I'm curious about this but I'm barely a programmer now, so if anyone is up to explain

The go community is strongly opinionated in unique ways. For example, using libraries is generally frowned upon. You either use something included in the language itself (standard library) or copy/paste the code you wrote in another project. There's also advocacy for shorter variable names which generally seems counter to the normal "write descriptive variable name" mantra.

All in all, I hope the ideas / opinions came from a good place and then some people took them as black & white rules. But they also come off as one or two people's pet peeves who got to build a language around them.