On the first day of NDC London 2013 there was a cage match between Gary Bernhardt of Destroy All Software – known for the WAT talk, and Useing You’re Type’s Good – and Jon Skeet of Google – known for his “C# in Depth” book, and his activity on Stack Overflow. They were discussing the topic of dynamic versus static typing.
Jon Skeet started by asking, what is it that Ruby can do and C# can’t. In response Gary tried to show stuff that seems idiomatic in Ruby, and relies heavily on the dynamic nature of Ruby. Where the discussion went a bit south was when Jon Skeet tried to do all that in C#, and did the ugliest hacks just to make it work, while relying on C# features that are explicitly there to make C# a bit more similar to dynamically typed languages. All that proves to me, is that C# is trying really hard to be Ruby, and sucks at it. So what? Besides, we all know that it’s not true at all.
I personally have changed back and forth between statically typed and dynamically typed languages quite a lot, and both hated and loved them every time I did. After a while I started to have very exciting discussions between the left and right side of my brain. (Rest assured: we are not schizophrenic, although the rest of this blog entry may suggest differently.) The odd thing is that both of me seem to have realized that the other has interesting points to support his beliefs, but neither of me is willing to give up any of it. Instead I kind of became the devil’s advocate on the matter. (And that’s really funny if you know what my last name – Ördög – means in Hungarian.) Whenever I meet anyone who seems to strongly believe in one or the other, I try my best to convince them that they are completely wrong and total idiots. So if you came here with the intention of finding out which one is better, here is a final clue: you won’t! However I promise there is an interesting conclusion at the end.
Let’s give a name to my brains, just to make the rest more fun: Steve is a firm believer in static typing, while Dan is this ruby / nodejs fan boy.