Matt's Blog: while { coding }

If Programming Languages Were Martial Arts

A few weeks ago I was thinking about how various programming languages compare with the different martial arts. I decided that was a silly topic for a blog post. Today my fried Matt sent me a link to a page titled “If Programming Languages Were Religions” (as though they aren’t). And so I figured silly or not, I’d do my martial arts version:

Fortran would be Greco-Roman wrestling. You have to wear tights and there are a lot of lame rules. But if you’re good at it you can certainly pin a dude.

Lisp would be Aikido. It is philosophical. It is elegant. It breaks things down to their essential components. It is dripping with the Tao. Unfortunately the schools are splintered and the focus seems to be more on finding The Way than kicking some dude’s ass in the parking lot.

C would be plain old Karate.

C++ is Judo. It looks a lot like Karate until it throws you over its shoulder onto your head and your arm pops out of its socket.

VB would be Western boxing. It can walk right up to a problem and punch it in the face. Of course there will be some mandatory bobbing and weaving and some fancy footwork for no apparent reason. And it’s all over if it gets taken to the ground.

Perl would be Jujitsu. It isn’t as clear-cut as Karate or as elegant as Aikido, but it’s good on a battlefield when you run out of ammo. And it isn’t opposed to you using a rifle butt instead of your fist.

Java would be Tai Chi. Everything is very slow and very formal and OMG after you’ve used it a little bit your muscles hurt like hell. So you’d never actually use it in a fight. But the payoff comes later with how light you feel when you’re kicking ass in any other language.

Javascript would be Krav Maga. It isn’t just going to fuck you up, it’s going to kill you. It isn’t too particular about how and it knows a lot of ways to do it. Unfortunately it can only fight within 50 yards of its house because it’s on probation and has an ankle monitor.

PHP would be Tae Kwon Do. It’s that shit you learn at the strip mall when you’re 6 years old. You know, the place that puts the flag on your gi and their dojo name in huge letters on your back? Sure, you can kick someone’s ass with it – if they hold still and don’t fight back too hard. It is not a deadly killing system – but you can do a spinning back-kick like no one’s business!

Ruby would be Brazillian Jujitsu. It acknowledges that most real fights are messy and end up going to the ground, so why not specialize in winning that way?

Erlang would be Wing Chun kung fu. It has a pragmatic fighting philosophy and is very effective, especially against multiple opponents. There are some restrictions on how you strike and move, and there are fewer moves than with other styles. Eventually you realize that is for the best.

Haskell would be White Crane kung fu. There’s a lot of weird shit going on and no one seems to know it, but you just know that dude can fucking kill you with his death touch or whatever.

That’s what I’ve got right now. There are still some major languages missing which I couldn’t find matches for. Also, I tried to resist drawing parallels between the functional/object world and the soft/hard styles. It doesn’t really seem to work, and it would try to make Lisp a kung fu, which didn’t make a lot of sense to me.

Please feel free to leave suggestions or to correct me in the comments.