Last week I attended CocoaConf Austin. I had a really good time and they always put on a good show. This year was a little different because they set aside time in the schedule for attendees to give lightning talks: 5 minute talks on a particular subject. As soon as it was announced that you could sign up to give one, I instantly knew what topic I wanted to speak on: "Objective-C vs Swift: Why Can't We Be Friends". This is a blog post adaptation of that talk.


Swift is born

So last year Apple announced Swift, a so-called Objective-C without the C. It was pretty exciting and mind-blowing because nobody outside of Apple had any inkling of what they were announcing. But it didn't take too long for tweets like this to show up:

Ash Furrow hand grenade

Now, I like Ash. He's a smart guy, but holy smokes! What a hand grenade!

Aaron Hillegass, of the Big Nerd Ranch, had his own two cents:

Objective-C is easier to learn than Swift.

This statement, too, really caused an uproar from those who were really excited about Swift.

Inevitably, several commentators dredged up a Blub quote as a counter to those Objective-C diehards who thought that Objective-C was OK and didn't need anything new:

Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to…Blub is good enough for him, because he thinks in Blub.

What's the subtext?

In isolation, these are just people weighing in on their preference for one programming language or another, but when I start seeing things like this often enough, it causes me to wonder: Is there something more to these comments? Is the subtext that if you're still clinging to Objective-C you're just an old neck-beard and if you think that Swift is Hot Stuff you must be a punk kid?

This really got me thinking about the past and it got me thinking about the fact that I had seen this before. If you hop in the DeLorean and wind the flux capacitor back a decade, something eerily familiar was going on in the .Net space with C# and Visual Basic. The .Net framework was pretty new and Visual Basic graduated from a procedural to a true OO language. API-wise, C# and VB had complete 1:1 parity in being able to program to the same things, but for some goofy reason if you chose to do things in VB you were subhuman pond scum.

Let's Think Different

This kind of thinking is toxic to the platform and doesn't move us forward in any meaningful or positive way. We form these tribes around not just what platform we develop on, but also the language we use to talk to the computer. Isn't that just a little silly? It's just code, but behind that are real people. So, if we're developing for the platform that is supposed to Think Different, then why are we devolving to petty name calling and wasting energy tearing each other apart?

Someday, I will fully embrace Swift. Indisputably, it is the future. I just don't think it's ready for primetime, yet. In the meantime, I'm Wayne Hartman and I unabashedly love programming in Objective-C. If you feel the same way about Swift, let's be friends.