Originally published on the App Dynamics engineering blog.
It’s hard to believe that it’s already 2017. But with the new year comes new challenges, new opportunities—and, of course—new software projects. One of the most important questions beginner, intermediate, and advanced coders all have to answer before they begin their next project is which programming language to use. Instead of reaching for an old favorite, pause for a moment to consider the options.
There are no perfect languages, so it’s important to take the time to understand the tradeoffs. When you decide on a language, you also determine what libraries and tools youwhich-programming-language-will-reign-in-2017-header have at your disposal, the pool of candidates you can hire, the availability of documentation, and much more. In this article, we examine the top programming languages from leading industry sources to help you make an informed decision that best suits your needs.
There are languages, like Java and the C-family (C, C++, and C#), that have dominated the programming language charts for years, and won’t be obsolete anytime soon. (Check out Github’s 2016 programming language rankings chart to see where the top 21 languages fell last year.) They may not be trendy, but they are battle tested, well understood, have active communities, and continue to evolve in response to new contenders, with features such as lambda expressions for Java 8 and coroutines for C++17.
Dynamic languages still going strong
Python, PHP, and Ruby continue to rank among the most popular programming languages due to their newcomer user friendliness , suitability for rapid prototyping, availability of libraries to solve almost any problem, and vibrant developer communities. While less performant than their compiled and statically typed predecessors, dynamic languages remain the perfect choice for business applications where time to market is critical.
The rapid rise of Go
Open sourced in 2009, Go (or golang) quickly became one of the most popular programming languages. Designed by Google engineers as a practical replacement for large-scale systems development (where traditional languages including Java or C++ still reign supreme), Go has found a strong, emerging following among all kinds of developers.
Most notable for its simple syntax, built-in concurrency support, and feature-rich standard library (which includes a production-ready HTTP server), Go stirred up controversy over its deliberate omission of features, especially inheritance and generics. Despite its relative simplicity, people already use Go to ship popular, cutting-edge technologies such as Docker and Kubernetes.
Developing for mobile
Apple introduced Swift in 2014, and the language is already climbing the popularity charts. Objective-C still ranks higher, but Swift is rapidly replacing it as the preferred language for both beginners and pros to build iOS apps. The streamlined syntax, gentle learning curve, and powerful abstractions all contribute to Swift’s popularity. While Swift is open source and theoretically could be ported to other platforms, developers still need to rewrite mobile applications in Java or C# in order to run on Android or Windows phones.
Functional programming languages entering the mainstream
Functional programming languages such as Scala, Clojure, and Haskell are quietly growing in popularity. These languages offer expressive and concise syntax, exceptional compile-time error checking (meaning fewer bugs in production), and strong support for parallel operations. These benefits come at the cost of a comparatively steep learning curve and small hiring pool. However, as more developers explore functional programming in response to the unique demands of modern computing, functional languages will become more common for real-world projects.
With so many great programming languages at your disposal, it can be difficult to decide on one. Fortunately, you do not have to decide on your own. Talk to your developers—they have well-informed opinions about the best language for your next project. Go to local tech meetups to discover what other companies choose and for what types of projects. Hit online job boards to see which languages and skills are in high demand. Ultimately, it’s up to you to choose which language features take top priority for each project you work on.