June 8, 2014

Apple, Swift and the Whining (and oh, how they whine …)

I am not particularly fond of iOS developers who take potshots at Android as if to prove that Apple/iOS is somehow superior. (Or to prove their loyalty to the cause? :p) It feels unwarranted and somewhat cheap. Why argue about whether a hammer is better than a screwdriver or not? Just use the best tool for the job and be done with it! Live and let live.

That said, I also get annoyed when people start talking about Apple as if everything it does is negative just because it’s from Apple. I’ll probably tune out most of these comments most of the time because some of these people just can’t seem to help themselves (and some are simply trolling :p) but sometimes, the sheer amount of illogical commentary just gets me going enough to write about it. This is such an instance 🙂

This is all about Swift (and people’s reaction to Swift). And oh, do I have a lot to say!

To start with, soon after the WWDC keynote announcement for Swift, I started seeing comments along the following lines:

I don’t want to learn another programming language!
(I imagine this to be said in a whiny child’s voice – I think my imagination might be slightly mean …)

That is totally your prerogative, buddy. Nobody is forcing you to learn another language. If you want to develop for iOS, you can still use Objective-C. If you don’t want to develop for iOS, then why do you care?

Why do we need another programming language? Why can’t they have used <insert language of choice here> instead?

What I find interesting about this complaint is that nobody seemed to complain when Google introduced not one, but two new languages in the form of Go and Dart. Or when Facebook introduced Hack.

Of course, to be fair, maybe somebody did complain and I wasn’t paying attention. We pay attention to things we are interested in after all – and I’m very interested in Swift. I wasn’t as interested in the other languages I mention above but I did read about each one when it was introduced. So, to be fair, let’s say some people did complain at the time and that I just don’t remember it being so. But, I do see a lot of complaining about Swift.

When I mentioned that nobody was complaining about Go, Dart, Hack etc. somebody responded with “those languages weren’t developed in secret without an open spec”. Umm … what? Leaving aside the fact that that comment might be inaccurate (with regards to the “secrecy” bit), you can’t create a new language unless you do it in public? Who made this rule? And why wasn’t I informed of it? 😀

It’s simply amazing how people create new rules to justify their own complaints when they aren’t being consistent! Or is that just me being an Apple fanboy? That’s probably it, I’m a fanboy sheep who can’t understand the highly evolved reasoning behind the rules for creating a new language that obviously exist in the rarified circles of computer language designers/developers … or something 🙂

But it gets better. Oh yes, way, way better.

I also came across what purported to be a critique of the Swift language. The author claimed that Swift just didn’t go far enough in its changes. I was interested in reading the post because I wanted to know more about Swift. I wanted to see how it might be improved or to learn about features in other languages which were better/different/interesting.

The article started out well enough, but then we got to the author’s first point – he was not happy that Swift was mutable by default. He had some code to illustrate the point he was making, but the issue was, that that code was wrong. Disregarding the variable naming issues he had in his code, the code he provide just would not compile on Swift. Turns out that he just read the publicly available Swift book but did not actually try anything out on Swift to see if his assumptions were correct.

His justification? Apparently, he could not justify shelling out $99 to download the Xcode 6 beta. Fair enough. But then why talk as if you were an authority on a language that you’d actually not tried out? Why sow misinformation just because you assumed certain things but weren’t sure? If you are a scholar of languages, shouldn’t you know that assumptions land you in trouble? Or is it OK to just spread misinformation out there as long as you get to create another blog post?

I tweeted about the above blog post in general terms, commenting that if somebody were to do a critique of a language, shouldn’t they have at least tried it out first. The response I got to that from somebody else (not the author of the blog post) was to the effect that – “if a language is closed source or platform dependent one need not to (or cannot) try to critique”.

Huh? What? You need not critique a language if it is closed source or platform dependent? So nobody ever took a look at .NET to see how it could be improved? Nobody should examine Java more closely?

How does that compute? I asked this person that. His response? “if someone has to download an SDK of several gigs just to try a language it’s worrisome”.

Leaving aside the fact that it doesn’t even answer my original question, that makes no sense whatsoever, again. Why is it worrisome that you have to download an SDK of several gigs? If you don’t want to download the SDK, fine, don’t do it. But then don’t claim to know the language in the first place. Or, if you do want to critique the language, then shouldn’t you download the SDK and try out the language first?

Colour me confused.

But then I got more feedback/comments – “Languages should be developed independent of platforms. Otherwise there’s very little incentive for putting an effort to learn.”

Where do people come up with this stuff? Do they think that it’s somehow “noble” or “pure” to develop for open source or cross-platform languages? How does that work?

And did this person seriously believe that people don’t put in the effort to learn a language if it was platform dependent? Then how do you explain the popularity of .NET or Delphi or even Objective-C? (Of course, Objective-C is technically cross-platform and so might not qualify as a platform-dependent language …)

I asked him about the whole incentive thing and mentioned that there were lots of people making plenty of money developing for .NET, Delphi, Objective-C etc. Why were these people working with these dead-end (according to him) languages if there was no incentive for them to do so?

His response was “That’s the whole point. Closed-platforms allow select few to rake money on consulting, maintenance & training.”

Wha …….? Evil closed platforms rake in the money doing consultancy, maintenance, and training while nobody makes any money from open-platform products? How does that work? You mean nobody makes any money from open-platform, open-source languages? The poor dears. I feel so bad for these noble souls toiling away on these open languages at this point. I’m almost ready to give up raking in gobs of cash from working for the evil overlords and convert to the pure and noble cause of open languages …

Oh wait, that’s not true! None of the above is true!! What the hell? Open languages developers (probably, given that I don’t have actual figures) make as much money as developers working for closed-source, platform-dependent languages. There is no such divide as he seems to claim. In the old days, this used to be called FUD (fear, uncertainty, and doubt). Microsoft used to claim that you’d get some sort of cooties if you worked with Linux. Now apparently, the shoe is on the other foot and open-source, cross-platform developers are (or to be fair, this particular developer is) using FUD the same way that Microsoft used to. Oh, how things stay the same 🙂

I don’t even know who the “select few” he’s talking about are. Does he really think that there’s some shadowy mafia behind closed-source, platform-dependent language developers who go, “Hey, you, you can take this project and make this much money. But be sure to pay us our cut, capisce?”

And does that mean that I’ve been working for the IT mob all this time? How horrible! (Or how wonderful, if you’ve always loved Goodfellas :D)

Perhaps the person I talked to really believes that open-source, cross-platforms is an idyllic, Arthurian Camelot where everybody gets along and decisions are made democratically, and nobody has to bow down to a shadowy overlord. And maybe he’s right. But that’s not the reality I’ve seen myself and I’ve worked on both sides – I’ve worked on open-source, and closed source, cross-platform and platform-dependent languages. In the end, they are all just tools. (And whether I’m talking about the languages or the people, I’ll let you decide :p)

Yes, I’m straying away from the whole Swift topic. But the above conversations are real. And they illustrate the kind of logic I’ve been encountering and I guess I can either just shake my head and move on, or just jump into the fray. Or, I can blog about it 😀

I really wanted to talk about this article too, but this post is already too long as it is. So I’ll save that rant for another day …

Be Sociable, Share!
Tags: Opinion, Technology
Posted by Fahim at 7:26 am   Comments (2)