Programming languages!

This post is not very serious, and should not be taken as such. I'm jotting down notes about my 'relations' to several programming languages, and trying to give my impression of what sort of person they'd be. Whether I am talking about the standard, an interpreter or a compiler varies from point to point, but it should be pretty (un)clear from context. I also assign genders to them. This happens pretty randomly. Anyway, what I say about them is my opinion, and my opinion only. I am being pretty nonsensical, but I think, that for instance the paragraph about Haskell will convey that I am in awe of the language, and the paragraph about Java will convey a dislike. They are just general feelings and remarks, put forward in a strange way. I have written only about programming languages in which I have written a program that *does* something. Typically, I count programs that *does* something as small Unix shell tools, solutions to project euler problems > 30 and things like that. I have done many times that much in most of the languages mentioned here.

I'll start with C. C is a pretty good friend, we're on decent terms. It took me quite a while to get to that point though, C trusts me even when I screw up, so occasionally I hurt him and he hurts me back, even though neither of us meant it. He's generally a pretty careless guy, so I need to care all the more when I'm around him. C is a slim athlete, but it's still pretty much work to get him to do anything non-trivial. I still ask him for help when I need something done really quickly though.

C++ is Cs younger brother. He's pretty much insane. He is also anything but slim, but is still considered an athlete. Sometimes, when I say something wrong, C++ will yell gibberish for *ages*. It doesn't even have to be anything particularly wrong. I mean, I could say 1983 instead of 1982, and he'd yell for minutes about things that happened in 123981 BC. Then we both get confused. He also has all these weird things you have to remember when talking to him, like 'never say the word carrot on tuesdays and mondays, and always say car before boat' and things like that. It's pretty strange... I usually keep my distance to this guy.

I didn't talk much to D, but she seems like a much more sane sibling of C++. The little while I talked to her left me pretty impressed with her capabilities as an athlete, and as a friend.

Erlang is a pothead. Ever went to a party were they smoked pot, and there was this guy in a chair, having a gazillion thoughts in the air all at once? That's Erlang. I mean, I once told him to make dinner, breakfast, do my coursework and sing a song all at once. And he did! You know, I was pretty amazed... Erlang is nothing like the C family. He won't let you tell him two different things about the same thing twice, I mean if you say 'roses are red' he will scream at you if you later tell him that roses can in fact also be blue (Can roses be blue?). So you have to think about the things you tell him up front. If I ever want a bazillion things done at once, I know I should ask Erlang to do it.

Haskell is sort of a philosopher, but also sort of a pothead. But she's simultanously very pure. Did you ever see a person so pure, so good you thought they must be from some other planet or something? That's nothing. Haskell is so pure that pure sweetwater is to her like radiactive waste is to pure sweetwater. And that's saying something. She's still well able to do things out there in the real world though, she just has to wear a protective suit she calls 'Monad'. Which looks so unlikely that I didn't really believe it until I understood how *simple* it was. I mean, it was like... Yeah. I often can't really explain my dealings with Haskell. It's just too... Strange, and mindbending. "Do not try to bend the spoon." Right... Who wouldn't? Anyway, Haskell is sort of in the same family as Erlang, but then, sort of not. They're both pretty good at the doing-many-thing-at-once-and-it's-easy thing. And they both call you a liar when you tell them that you didn't really mean it when you said roses were red. And I wikied, and found out that yes, roses can be blue. So I guess that makes me a liar. Haskell is a very fast runner (But she's lazy, so sometimes she doesn't even bother starting), and what's more, the Monad suit thing gives her superpowers. And she has other superpowers too! You should definitely get to know her.

Java used to be my babysitter, but I got rid of her for a while now. I mean, our relationship is one of mutual distrust. It's like Java says "You're trying to do this because you hate me and it's illegal and I won't allow it hah!" and I think "You won't let me do this because you hate me so you made it illegal and oh god why don't I kill myself". We occasionally get along well, but that's easily forgotten during the times we didn't get along well and wrecked my entire house before my parents got home. Well, I did. Java didn't really go out of line, but I was like "GRAAAHHH DIE DIE DIE!" occasionally. She's a member of the C family, but she's a lot less flexible than her family members, because she insists on saying things like ThisIsAnObject.withAReallyLongName().reallyIAmNotJoki
ngDude() all the time. I mean, occasionally it feels better to yell "run(hills)!" than "moveToPointIn3dSpace(hills.getLocation())". Occasionally. We once played a mathematical game with big numbers, and she made me say things like one.add(three.multiply( AND I CAN'T TAKE THIS ANYMORE!!

Lisp is a very simple guy. He has a magnificent white beard, and he speaks in very simple terms, though often like Yoda speaks he does. He's very meta, I mean, he's the sort of guy who can reproduce without a female. He can literally change himself. He's like "Hrm, I sort of want another ear" and then he makes himself another ear and suddenly he can hear better. But he doesn't *look* any different (So where the fuck did that ear go, eh??). There used to be disturbances on the line when we spoke, but I can hear him pretty clearly these days. In the past, it was like there were some seagulls between us, constantly squawking around. Come to think of it, they are still there (He lives under a pier. Not the most popular of these guys) but I don't notice them anymore. Not unless I'm looking anyway. We don't talk together very often, but the talks we do have are usually very pleasant. Sort of like:
me: Give me a beer
Lisp: Tell me how to make a beer, then.
me: Wait, give me a brewery instead.
Lisp: Alright, this is an awesome-beer-brewery-for-you.
Very convenient in other words. But you can literally hear the hyphens when he speaks. Which bothers me sometimes.

Matlab is very single-minded. I heard tales that he can actually do many things, but after having spoken with him, I think that I have been lied to. He also looks weird. He's rich though, but he doesn't have a family. Well, actually I lie, Octave is sort of like a bastard son to him, but no one wants to admit that. Matlab thinks he coded the Matrix.

Ocaml is another crazy fellow. I don't know him well, I started talking with him, but I decided that I liked Haskell better. But Ocaml has a reputation for being very strange, and I am somehow attracted to strangeness so I may give it another go. He's also rumored to be a fast runner, and a powerful lifter.

Python is the person in this bunch whom I have known the longest time. We get along very well, we actually speak pretty much every day. The coolest thing about Python is that he pretty much understands everything I say (As long as I start some sentences with INDENT!! and some with DEDENT!!, that is). He's a pretty awesome fellow. Java would kill me for many of the things that Python says is entirely okay with him. I mean, I can even tell Python what + means when the left hand side of it is something that I made up. I mean, I could say 1 Hobbit + 13 Dwarves + 1 Dragon = 1 DeadDragon, and Python is fine with that. Python is also very clear when he has something to tell me. It's like:
Python: Dude, you ran over a squirrel.
Python: Turn to the left, about 20 meters back.
Python: In the middle of the road.
Python: It's dead.
I mean, don't shoot the messenger. That's a pretty good way to give out messages, even if they're as sad as this one (On the plus side, no squirrels were killed in the making of this blog post (We used a stunt squirrel (It knew how to get away in time))). Java would tell me something like:
OhMyGodYouRanOverASquirrelException("Long text"):
InTheLeftForkOfTheRoad20MetersBack("Even longer text!"):
And then never really getting to the point (The fact that the squirrel is actually almost certainly dead!)

Ruby isn't quite the brother of Python. They're more like cousins. Ruby mother is probably Smalltalk, but I don't know for sure. Ruby is awesome in the sense that I can say anything to him and he will do it, unfortunately sometimes I say things I don't really mean. Python will often protest and say like "Wait, you wanted to *kill* the dead squirrel?" and Ruby will say "Alright" if he can make sense of it somehow. Ruby is very understanding, so most of the time, he can. Ruby is also in close family with Perl, but fortunately he made off with the weird looks. I mean, who wants a green beard and tattoos all over anyway. Some say that Ruby is the best of the young programming languages. I say he's one of the most easygoing ones, and a good alternative for the younger programmers to get to know. I think me and Ruby will become good friends in time.

Smalltalk is sort of like Lisp. She's very meta. I mean, most languages have been told my some outsider that 'True and False are different things and this is what they mean' and so on, but Smalltalk figured that out by herself. She's so clever that she bred a dog that breeds squirrels that she can ask about things like ifTrue and such. Smalltalk is also like lisp in the sense that she can add bodyparts and still not look different! Very remarkable indeed. She doesn't live under a pier like lisp, she's even less known. So no one really knows where she lives. She hasn't decided if she likes it this way yet. We don't know each other very well at all.

Right, I don't *think* I have forgotten any languages that I have actually used. Scheme falls under the Lisp umbrella.

What programming languages do you have good relations with?

1 comment

On 3 July, 2008 - 12:14, Andreas wrote:

I always figured Perl was something of a crustypunk anarchist.