Thursday, June 5, 2014

Apple Swift language increases separation of tech tribes

A surprising announcement at the recent Apple WWDC was the support of the Swift programming language for iOS and MacOS. It is surprising because counter to all of the predictions, a new language was not among them.

The advantages of Swift are significant: cleaner syntax and memory management.

Yet there is a downside to this choice: more separation of technology tribes.

The Apple tribe uses iOS and MacOS, with languages Swift, Objective-C, C, and C++. I expect Swift to soon become the preferred language for apps (preferred by Apple, that is).

The Microsoft tribe uses Windows "Intel" and Windows RT, with languages C# and C++, with C# being the preferred (by Microsoft) language. Other languages (C, F#, IronPython, IronRuby, etc.) form a small asteroid belt around the primaries.

The Google tribe uses Chrome and Android, with the language Java and Javascript.

There is little in common among these technology tribes. Apple's selection of Swift does nothing to bring them together; instead, it widens the distance.

To some extent, the technology tribes have always been separate. People argued about processors and operating systems (and still do). People argued about languages (and still do). People argued about programming languages (and still do). People even argued about character sets (and some may still argue, but we've pretty much all moved to UNICODE). Despite the differences, there were always elements that spanned platforms, often in programming languages.

Languages, while debated, could bring us together. The big, popular languages (COBOL, FORTRAN, BASIC, C, and C++) were developed under standards committees specifically formed to address the needs of multiple platforms. Some popular languages extended standards (Turbo Pascal, Microsoft BASIC) and some popular languages were new constructs (Visual Basic, Java). Visual Basic was limited to Windows, but Java ran everywhere.

Now we are entering an age with distinct platforms and distinct languages. Your platform defines your language -- or your language defines your platform. The overlap between tribes shrinks, and we have less in common.

This may be caused by vendors, but it also may be caused by developers. There are cross-platform languages (Java is still supported on lots of platforms, COBOL is still with us) but we as developers seem to identify with platforms. ("I'm a Windows developer." "I'm an iPhone developer.") We're not pushing for cross-platform tools.

The future may see more specialization and more tribal separation. I see nothing to pull the tribes together, no central mass to exert a gravitational pull to a center.

No comments: