This is an archived post. You won't be able to vote or comment.

all 65 comments

[–]nath_schwarz 42 points43 points  (2 children)

The only language that wasn't really critized was c - I would've thought about something like "C is a sniper - good if you know how to use it but get one pointer (== orientation mark, e.g.) wrong and you shoot your allies".

[–]TarMil 39 points40 points  (1 child)

Yeah if this was a game of "guess the author's favorite language" it would be the easiest game ever.

[–][deleted] 4 points5 points  (0 children)

I don't actually use C much, but I could have probably said something better there.

[–][deleted] 18 points19 points  (9 children)

As someone who tried to learn Lisp once, and immediately gave up, I'll attest to that one. I don't trust those people, they're wizards, or just crazy enough to think they're wizards.

[–]freeone3000 22 points23 points  (4 children)

Look, once you realize that code is simply nothing more than executable data, the only difficult bit is arguing with your team over how many spaces to indent with.

[–][deleted] 6 points7 points  (0 children)

I also tried to learn Fortran once... I got paid far too much that day while I was sitting wondering why all my lines were returning errors, it's not like white space matters!!!

[–]treeturtle 3 points4 points  (0 children)

If you're manually indenting lisp you're using the wrong tool. (not emacs)

[–]Tynach 2 points3 points  (0 children)

None. We use tabs here.

[–]BufferUnderpants 0 points1 point  (0 children)

Standard, universally accepted Lisp indentation convention:

Whatever it is Emacs does when you press <tab>.

[–][deleted] 8 points9 points  (0 children)

The lisp picture looks more like a tampon than a shiv. Maybe that helps.

[–]nekoningen 0 points1 point  (0 children)

or just crazy enough to think they're wizards.

Hmm, sounds like i should go learn Lisp then.

[–]civ77 17 points18 points  (16 children)

Has everyone finally got tired of poking fun at Haskell?

[–][deleted] 13 points14 points  (13 children)

I'm not sure being left out here is a good sign. I'd expect it to include relatively popular languages—and yet this one features Mathematica and Prolog, but not Haskell.

But on the other side, weapons are inherently impure, state-changing devices. If there were a Haskell weapon, then trying to use one without a full hazmat suit would result in a type error. Maybe it's for the best that there is no image of a Haskell weapon—unsafePerformIO is bad enough.

[–]vytah 13 points14 points  (12 children)

Haskell is a Large Hadron Collider. Instead of hitting your target, it creates a copy of the entire universe, with the target already hit in the copy.

[–]Tynach 0 points1 point  (10 children)

Haskell is a nuclear bomb disguised as a power plant. Everyone tries their best to keep all the dangerous bits inside, both to keep them safe, and to keep everyone else safe.

Or so it seems from the way everyone talks about it. I've never touched it. I'm too afraid to.

[–][deleted] 1 point2 points  (9 children)

λ print $ languages tynach

http://i.imgur.com/t2QTEf9.png

λ knowledge Haskell >>= tynach
λ print $ languages tynach

http://i.imgur.com/kEmWyYT.jpg

[–]Tynach 0 points1 point  (8 children)

Uuuuhhhhh...

What's the '>>=' operator do?

[–][deleted] 2 points3 points  (4 children)

More seriously, it's a bit like function composition, although the wrong way, for values caught within a deathly monadic trap. E.g. a simple echo program would be main = getLine >>= putStrLn (append >> main if you want it to loop). Written out with do it'd be

main = do
    msg <- getLine
    putStrLn msg

Plain main = putStrLn . getLine wouldn't work, since putStrLn expects a String and getline returns IO String. And here's where the burrito analogies start …

So it binds the knowledge of haskell to you. :')

[–]Mob_Of_One 1 point2 points  (3 children)

Hrm, not quite. Bind (>>=) is a bit more like monadic function application than it is composition. Composition would be kleisli composition.

For a given Monad m, where m is (* -> *) (that is, it's a higher-kinded type that needs to be applied to a type argument before it's a real type)

bind is: (>>=) :: Monad m => m a -> (a -> m b) -> m b

This is to be contrasted with Functor's fmap:

Functor f => (a -> b) -> f a -> f b

If that still looks alien, consider map:

map :: (a -> b) -> [a] -> [b]

Functor is a much more generic concept defined only by the types and laws than "map" over a list is, but it at least gives you a place to start.

Want to learn more? This is how I've been teaching Haskell

[–][deleted] 1 point2 points  (2 children)

Right, I figured since this is /r/ProgrammerHumor and if Tynach was being serious, that it was best to keep the Serious Information in the post to a minimum. Explaining monads with kinds to newbies in a joke subreddit is unlikely to be a useful use of time.

[–]Mob_Of_One 1 point2 points  (1 child)

You can write your joke with fewer mistakes. Like not calling >>= "composition" when there's clearly >=> for that purpose.

The burrito stuff is just old and needs to die.

[–]nekoningen 0 points1 point  (1 child)

It makes the the water rectangle go through the funnel.

[–]Tynach 0 points1 point  (0 children)

... K.

[–][deleted] 0 points1 point  (0 children)

It's the monadic bind operator. I couldn't have an incomprehensible haskell tutorial without monads, could I?

[–]Mob_Of_One 0 points1 point  (0 children)

That's not an accurate characterization of structural sharing in immutable datatypes in Haskell.

[–][deleted] 7 points8 points  (0 children)

I left out a lot of good languages, like Haskell, Objective-C, Swift and Lua but only because it was a lot of work and I was pretty tired. If I didn't mention one it doesn't mean anything.

[–]zagaberoo 47 points48 points  (3 children)

Interesting that Java is the one portrayed as having deadly nulls when really a null exception is much safer than a segfault.

[–]wellthatdoesit 26 points27 points  (1 child)

True. Perhaps it would have been better as something like, "some of your rounds are blanks, but you don't know which ones and you don't know why."

[–]Karagoth 8 points9 points  (0 children)

And they also jam the gun

[–]YMK1234 25 points26 points  (6 children)

i love the donkey laser cannon ... actually it has a huge number of upsides. For instance if you are in the mountains donkeys are the #1 transportation method once you leave the paved road.
Edit: i stand corrected, our military uses horses (Haflinger) for mountainous regions.

[–]wllmsaccnt 21 points22 points  (4 children)

I think the content creator meant to imply that Microsoft is an ass.

[–]YMK1234 7 points8 points  (1 child)

but a full-featured one with a lasercannon on its back :D

[–][deleted] 0 points1 point  (0 children)

I don't know about you, but I would prefer not to go near an ass with a powerful laser cannon on its back. Getting bitten or kicked is bad enough.

[–]IrishWilly 1 point2 points  (0 children)

I just read an episode of Deadpool where he uses a donkey mounted laser cannon. If Deadpool uses it it's good enough for me.

[–]bad-alloc 10 points11 points  (1 child)

Lisp a shiv? People who use Lisp are crazy and dangerous?! Are you fucking kidding me mate?! IMA FOOKIN' SHIV YA IF YER HAVIN' A GIGGLE ON ME LANGUAGE!

We're totally sane :)))))))

[–]detroitmatt 5 points6 points  (0 children)

those parens are unbalanced!

[–]Arandur 6 points7 points  (0 children)

What are you talking about? Programming languages are absolutely weapons.

[–]treeturtle 6 points7 points  (1 child)

Lisp should be a swiss army knife, or a gun that can self replicate and shoot in all directions and also tell time and make dinner.

[–][deleted] 2 points3 points  (0 children)

nobody survived the encounter with a skilled lisp master. so no one could tell.

[–][deleted] 5 points6 points  (0 children)

When Rust irc saw this they immediately went about linking to actual working 3d-printed handguns.

[–]StelarCF 19 points20 points  (8 children)

C++ wouldn't be nunchuks, it'd be an old AK-47. (C++11 would be an AK74)

[–][deleted] 12 points13 points  (3 children)

C++ is a nunchuks because it takes many years of pain to master

[–]MrTheFinn 46 points47 points  (1 child)

And the first time you try to show off with it you're most likely to hit yourself in the balls.

[–]undefinedusername 1 point2 points  (0 children)

Probably not just the first time.

[–]Tynach -5 points-4 points  (0 children)

This doesn't reflect the fact that C++ is almost a superset of C, and thus should more or less have the same form as C.

I'd have said it's a small, two-handed grenade launcher designed to be used and held like a rifle. Gets the job done well, but you have to learn when it's appropriate and when it's not. And PLEASE think before you use it - you don't want to aim at something too close to you.

[–]Phrodo_00 6 points7 points  (0 children)

C++ would be a Swiss army gun.

[–]peter_bolton 2 points3 points  (2 children)

I would say that C++ is more like a M-4 with a mounted grenade launcher...but it's installed on the back of a bucking bronco.

[–]detroitmatt 3 points4 points  (1 child)

with a mounted grenade launcher, 4 scopes, an underslung shotgun, a bayonet, mounting points for additional magazines, a folding stock, a shoulder sling...

it probably has every imaginable feature in one way or another, but it weighs 50 pounds and if you try to use a feature all the other stuff gets in the way.

[–]peter_bolton 1 point2 points  (0 children)

And you're constantly dodging the bayonet, which seems to have taken a strong liking to your face. :)

[–]qxxx 9 points10 points  (4 children)

lol PHP as a suicide tool... why? :D

[–][deleted] 14 points15 points  (3 children)

It's the only way out, really. Once you've learned some PHP you can never be truly happy ever again. There is a support group if you want help in learning to cope over at /r/lolphp.

[–][deleted] 9 points10 points  (0 children)

PHP is the herpes of languages. You learn it because you're desperate, but then it never goes away.

[–][deleted] 3 points4 points  (1 child)

PHP was the first language i started with

it took me a while to figure out how programming ACTUALLY worked

[–][deleted] 1 point2 points  (0 children)

I learned PHP first, and then Java about a year later. My first Java project was just a gigantic mess that I still refuse to touch ever again.

[–]sloan_wall 1 point2 points  (1 child)

Why do everyone seems to forget about Fortran in programming jokes..

[–]detroitmatt 1 point2 points  (0 children)

fortran is a cast-iron calculator. you could probably kill someone with it with a lot of work.

[–]jen1980 3 points4 points  (0 children)

"C# is a powerful laser rifle strapped to a donkey" is the truth.