2016 in review: A look at the year's top programming trends
Hot programming trends in 2016
Take a look at the year's hottest languages for AI projects and containers, new languages, and more programming trends.
Technology is constantly moving forward—well, maybe not always forward, but always moving. Even for someone who keeps an eye on the trends and their effect on programmers, discerning exactly where things are headed can be a challenge. My clearest glimpse into open source programming trends always comes in the fall when I work with my fellow chairs, Kelsey Hightower and Scott Hanselman, and our fantastic programming committee to sculpt the coming year's OSCON (O'Reilly Open Source Convention). The proposals that we get and the number focused on specific topics turn out to be good indicators of hot trends in the open source world. What follows is an overview of the top programming trends we saw in 2016.
Languages powering AI
Out of the AI winter of the 1990s, artificial intelligence has reemerged with the computing power that it always needed to influence how we are building software. Machine learning, deep learning, natural language processing, and auto speech recognition blanket the world—from GitHub projects and job posts, to the reason behind the formation of new companies, and clearing space on our cluttered counter tops (Hey, Alexa!). And yes, even events such as OSCON are teeming with the mention of all things AI. Although the availability of computing power has paved the way, open sourcing of all things AI has thrown the industry wide open to innovation and competition. Google's TensorFlow, OpenAI, and Apache Spark lead the way with powerful frameworks, but there are smaller players, such as Nervana's Neon and Theano.
How has the rise in AI affected the software developer's landscape? Well, now is a good time to know Python—its agility and popularity with data engineers and scientists makes it the go-to AI programming language, followed by R, Java, and Scala.
Containers and Go go together like peanut butter and jelly
Go 1.0 was released in March 2012. Docker followed a year later, and Kubernetes a year after that. In short, Go wasn't built exclusively for the future of infrastructure as we know it, but that seems to be one major hole Go is filling in the programming world. Go is specifically written in a way that Java or C++ could never have been—for a highly networked world, a world in which first-class concurrency is a necessity. If you are in or near the operations side of things, you should at the very least dip a toe into the world of Go because it is gaining steam, will be used for years to come, and will be in the backbone of many applications.
Swift transcends the Apple ecosystem
Java 8 vs. the functionality of JVM languages
The advent of Java 8's functional capability—namely the introduction of Lambdas—has put JVM languages like Scala and Clojure on notice. Recently, due in large part to the growth of Apache Spark, Scala was having a bit of a growth spurt. Now both Scala and Clojure are seeming to be set aside, at least for the moment, as long-time and new developers alike take a hard look at what Java 8 brings to the table. Java is now able to address concurrency and big data concerns that other programming languages specifically built to address these requirements have been doing for years. In 2017, OSCON is nearly devoid of both Scala and Clojure, not by design, but by seemingly little interest from potential speakers who submitted proposals.
Up and coming languages
And as usual, there are always more up and coming languages on the horizon intended to do something better than those that came before them, that can answer needs that weren't around when previous languages were born, or that simply start out as a crazy idea and end up changing how we think about programming. This year five languages are on the verge of making it into the big time: Rust, Elixir, Elm, Kotlin, and Perl 6.
What do the hot five bring to the industry?
- Rust: Systems programming at speed and more than a modicum of safety.
- Elixir: Functional, dynamic, and fault-tolerant for those larger and larger-scale apps.
- Kotlin: This one is for the Java and JVM folks—statically typed, safe, and did I mention Java compatible?
- Perl 6: It lives! Perl 6 happens to be a new language that is expressive and feature-rich for the win.
Time will tell whether they deliver on their promises. Try them out, contribute to them, be a part of the future!