So, Apple has a new dynamic programming language, confusingly given the same name as an existing programming language. Let’s look at some of Apple’s past experiments in programming language development, to see how this might turn out.
1987: Apple launches HyperTalk, a dynamic object-oriented programming language for rapid application development. After HyperCard’s inventor left Apple, the company lost interest, and eventually Steve Jobs killed the project in 1998, so it never made it to OS X.
1990: Apple launches a joint venture with IBM to develop a next-generation OS called Taligent, then later Kaleida. It comes with a new dynamic programming language called ScriptX. It’s briefly available for Mac OS 7, then left to die.
Early 1990s: Apple develops a new dynamic programming language called Dylan. It’s intended to be the new language for Apple’s handheld platform, Newton. Apple would develop a development environment for MacOS and Newton, and a company called Harlequin would develop the Windows IDE. Apple’s Dylan was slowly killed around 1995.
1993: Apple launches NewtonScript, a new dynamic programming language for their handheld platform, the Newton. Steve Jobs kills the Newton in a fit of pique in 1998, killing NewtonScript.
2008: Apple launches MacRuby, a new version of the Ruby dynamic programming language, but built on the LLVM infrastructure and Cocoa. In 2012, RubyMotion is introduced as a development language for iOS, just as MacRuby development turns out to be dead.
OK, maybe you think I’m being unfair here. What about Objective-C?
Well, Apple didn’t invent Objective-C. It was NeXT who popularized it, and they didn’t invent it either, they bought it from Stepstone (later called PPI). But let’s go through some language projects not originated by Apple anyway.
Objective-C was licensed by NeXT in 1988 from Stepstone, and later Apple hired one of the inventors. NeXT supported NeXTStep/OpenStep and Objective-C on Windows, Solaris, and NeXT hardware. For a while after the NeXT acquisition Apple encouraged developers to use Objective-C and OpenStep for their cross-platform development. Then in the late 90s, Apple summarily killed OpenStep for Windows, making the environment Mac-only.
In 1984, Apple licensed Smalltalk to provide a dynamic object-oriented programming environment for the Mac. It was sold for just $50. By 1996 this had become Squeak, which was put out to pasture around 2006 and now lives as an open source community project.
When OS X was launched, it was promised to be a first class Java development environment. Accordingly, bindings were created to allow desktop Cocoa applications to be developed in Java, or for Mac applications to call Java libraries. The Java bindings were used for applications such as Adium, CyberDuck, and so on. Development of Java bindings for Cocoa was killed in 2004. Then in 2010, Java itself was deprecated on the Mac after years of neglect.
Apple licensed Macintosh Common Lisp from Franz around 1988, to provide a new dynamic object-oriented programming environment for the Mac. Apple sold Macintosh Common Lisp to Digitool in 1995.
Now in fairness, Apple have originated and continued to support one programming language that I can think of. They’ve not killed any platform it runs on or deprecating its functionality. I speak, of course, of AppleScript. So let’s all golf clap Apple for their lasting achievements in AppleScript.
Oh, one more thing. When the Mac launched, its programming language was Pascal. This was extended to provide object-oriented programming for Mac development, in the form of Object Pascal for MPW. I hold Apple blameless for Pascal’s death, though. Truth is, almost no developers wanted to write Pascal, particularly not a variant of Pascal that meant they could never run their code anywhere but on a Mac.
Which brings me back to Apple Swift. Finally iOS has its HyperCard. Or maybe its Dylan. Or perhaps its MacRuby? Maybe I’m being too cynical, maybe I’m too focused on the past, maybe this time it’ll work. I’m sure Gruber will love it. But even if it lasts, it’s a closed-source single-vendor programming language designed to lock you in to a particular platform. Right now it seems you can’t even call C code from it. Do you really want to jump on that bandwagon? I don’t, and I’m a Mac user. I’ve been burned too many times that way.