About that programming language tweet
More thoughts on Swift, etc.
3 min readJun 3, 2014
Yesterday I tweeted this:
Next-gen programming languages:
Mozilla: Rust
Google: Dart, Go
Facebook: Hack
Apple: Swift
Only Rust was developed in the open.
This was retweeted more than 400 times, which is more attention than any of my tweets has ever gotten, so I figure I ought to be a little less glib and respond to the many thoughtful comments I’ve received. In no particular order, here are some more thoughts about this:
- I didn’t mean anything in particular by “next-gen” other than language with cool modern features like type inference.
- I was limiting the list to languages developed by a corporation (or in the case of Rust, with primary backing from a corporation). Languages like Scala, D, and many others aren’t on the list because they don’t have the corporate connection. Languages like Java and C# aren’t on the list because they aren’t “next-gen”.
- I didn’t put TypeScript and F# on the list for Microsoft because I’d forgotten about them (or maybe never heard about F#)
- I didn’t put ES6 (the next version of JavaScript) on the list because it is being developed cooperatively and is not owned by any one tech company. And, as much as I love the new features that browser vendors are adding, it doesn’t feel like ES6 has enough of those new features to meet my vague “next-gen” criterion. Maybe we’ll get there with ES7.
- One of the points of my tweet was basically “hey isn’t it weird how all these tech companies are developing their own programming languages?”. It occurred to me later that of course C was the same way: the research arm of a big tech company saw the need for a new programming language so they created one. Go and Rust seem like they’re following that venerable model and are breaking important new ground by targeting the challenges of concurrent programming. I’m not sure about Dart, Hack, and Swift, however. Do we really need all these new languages? Are these indeed “vanity languages”? Or worse, (in the case of Swift) are they tools for developer/ecosystem lock in?
- One of my other points, not really expressed, but responsible for any snarky tone that came through in the tweet, is that WWDC is a conference where you expect new hardware surprises to be announced, and we’re used to secrecy surrounding new hardware. The fact that Apple treats a new programming language as a WWDC surprise, says a lot about Apple’s culture, I guess. If I wrote software targeting Apple hardware (or managed people who did) I don’t think I’d be happy at all about having a new language dropped on me from the blue—here’s the new language you’ll be using from now on… go learn it right away!
- The main point behind my “developed in the open” comment is that Apple’s developer community has no way to assess the maturity of Swift. There aren’t public mailing lists and bug trackers showing the evolution of the language. There is not an existing code base showing examples of the language in use. Languages usually start with a small community and then grow. Apple is throwing this new language at the world and seems to expect developers to abandon Objective C and start using Swift at scale. But developers don’t have any reason to believe that the compiler isn’t still riddled with bugs!
- And yes, I know that the Rust project has been going on forever and hasn’t even reached 1.0 yet. Its kind of like an academic language in that way. But they’re getting close to 1.0, and when they do get there, I will know that lots of smart people have thought really hard about the final syntax and semantics of the language, and that those features have been tried out on a large project (the Servo rendering engine).