The Unfamiliar

Matthew Baxter-Reynolds has a piece for The Guardian attempting to paint an overview of the near-future landscapes for developing apps for Mac, iOS, Windows, and Android:

The fact is that if your day job involves sitting in Visual Studio writing C# applications, or building Java applications in Eclipse (which will be most of you — albeit not necessarily in Eclipse), when you fire up Apple’s Xcode and start building CocoaTouch applications in Objective-C you’re going to come face-to-face with a toolset that has not had the sort of love put into it that the open source community has put into the Java toolset and associate platforms, or that Microsoft has put into VS and .NET over the past 10 years.

Objective-C is different than C++ or Java. Xcode is different than Visual Studio or Eclipse, and Xcode 4 is very different from previous versions of Xcode. Baxter-Reynolds certainly wouldn’t be alone in saying that he doesn’t like these differences. But it’s curious to argue Apple developer tools and frameworks are deficient due to a lack of time put into them. In numerous ways, both linguistically and tools-wise, Xcode, Objective-C, and Cocoa/Cocoa Touch are the evolutionary descendants of the NeXT developer platform from 1989.

Apple has been caught on the back foot by the popularity of its tools and is at least one, if not two, generations behind. For example, the iOS version of Objective-C does not have garbage collection.

This shows that Baxter-Reynolds is not familiar with the state of memory management in Cocoa. He’s right that iOS doesn’t have garbage collection, but it’s not because it doesn’t have garbage collection yet. It’s because it never will — and if anything, the smart money is on garbage collection eventually being deprecated in Cocoa on Mac OS X. Automatic Reference Counting (ARC) is Apple’s new answer to the problem garbage collection solves: manual memory management.

The enormousness of the developer base for Windows and Java is such that many developers feel that those environments are “normal”, and anything different is by nature inferior simply because it’s unfamiliar. They’re offended by Xcode/Cocoa/Objective-C, in some way, because they feel entitled to their familiar languages and tools.

Monday, 19 September 2011