For all its surface frenzy, 2014 was a year in which the biggest news stories in the programming language community were about acknowledging reality and bowing to the inevitable.
First, there was Java 8. For Java developers, this release is the most important since before the turn of the century—probably the most important release since Java 2. I know there are many companies that, in the face of finicky compatibility issues, have stuck with older versions. The truth is that the improvements in Java 7 or even Java 6 were incremental enough that this may have been a reasonable response. Not with Java 8.
The introduction of lambdas to the Java language will cause a sea change in the way that Java programs are written. The structure of libraries will change dramatically. Codebases will be instantly identifiable as “pre-” or “post-lambda.” Organizations that don’t modernize are essentially dooming themselves to the “maintenance mode” death spiral of neglect and inattentive developers.
Yet Java 8 is really just a “catch up” release. Every mainstream language has lambdas now. Heck, C++ even got lambdas before Java! The great excitement in Java 8 is not so much what it is as the prospect that the evolution of Java language is back on track.
Similarly, Microsoft’s decision to make .NET open source and to evolve the runtime around a cross-platform core is a huge deal, not so much for any immediate benefits, but because Microsoft is finally acknowledging that “cross-platform” does not mean “runs on multiple versions of Windows,” and that “open source” does not mean “commie hippies stealing software.”
The open-sourcing of .NET is especially epochal in light of famous comments from Microsoft CEOs. Bill Gates’ 1976 “Open Letter to Hobbyists” established the company’s antagonism to the “sharing culture.” The evolution of Microsoft’s programming languages and Visual Studio made it clear that Microsoft understood the importance of programmers even before Steve Ballmer’s exhorted the company’s focus on “Developers! Developers! Developers!”
It is very exciting that one of Satya Nadella’s first major course changes involves elements so central to the company’s identity. But again, while this is breaking ground for Microsoft, it’s hardly news to anyone else in the world that iOS and Android dominate mobile development, that fast deployment of Linux servers in the cloud is attractive, and that there are plenty of ways to make money even when portions of your code are open for inspection. (Better still when your company is open to accepting patches!)
Finally we come to Apple’s release of Swift, a new programming language for Mac and iOS developers. Swift is a hybrid object/functional language (like the other cool kids on the block: Scala and F#). It has some bold design decisions, with no exceptions or concurrency semantics, but is nicely expressive and has gotten an enthusiastic welcome from the Macintosh developer community.