The world of programming languages is vast. Languages that are tried and true often dominate the landscape (C, Java, PHP), with contenders stepping into the arena every so often (Scala, D). However, due to the nature of software development, it can be hard for new languages to gain traction. You generally need a strong reason to switch from a language you’re currently using: it requires time to practice and learn new languages, and you have to be confident that the language you’re considering switching to will be supported in the long term. Nobody wants to build software in a language that will be obsolete in five years’ time.
The purpose of this article is to cover three currently emerging languages. These are languages that are gaining traction within large companies, that are seeing more job opportunities, and that are slowly becoming more supported by programmers.
It was in 2007 when Robert Griesemer, Ken Thompson, and Robert Pike first started sketching out goals on a whiteboard for what a new “major systems language” would look like. Griesemer (who’d previously worked on Google’s networked file system), Thompson (co-creator of Unix), and Pike (co-creator of the UTF-8 standard, contributor to both the Sawzall and Limbo languages) were determined to build a language that they hated less than C++.
The big improvements these three were hoping to make over languages such as Java and C++? Simpler dependency management, quicker compilation of code, more dynamic language typing, and support for concurrency and garbage collection. None of these were necessarily “new” features, nor are they not included in C++ or Java, but more work is required to use these features in those languages than in the result of this intensive programming push, Go. The development of the new language continued through 2008, with a public release in 2009. Three years later, with the release of version 1.0, Go was finally out of beta.
At this point, Go has been used for many internal programs at Google, it’s now in version 1.4, and it’s seeing more and more job opportunity and support from developers. In fact, Go had 3,635 active repositories on GitHub in early 2012. In late 2014, that number is reported to be 22,264, making it more popular than languages such as Perl, CoffeeScript, and Scala. Of the top 15 languages used on GitHub, it is by far the newest, with C# and CSS first appearing in 2000 and 1996, respectively. The interest of programmers is clear, and even companies such as BBC, Dropbox, Mozilla, and Tumblr are now using it.
In July of 2014, Dropbox released an article saying that they had now ported large amounts of Python code to Go because of its better concurrency support and faster execution speed. They even started open-sourcing several Go libraries to help other developers with tasks such as caching, error handling, and database interaction. In mid-2013, Mozilla introduced Heka, a new “high performance data gathering, analysis, monitoring, and reporting” tool built with Go.
Go has been used for many internal programs at Google.
This support from both programmers and large companies has also created a demand for people well-versed in Go. On Stack Overflow Careers, one of the most popular job boards for programmers of all kinds, there were at the time of this writing 58 job listings for Go developers. Unfortunately, while this shows that jobs are available for people skilled in Go, it’s far behind languages such as PHP or C++, with 411 and 397 listed, respectively.
There’s a lot of optimism and hope for Go, though, as the language continues improving and more companies start adopting it.
Rust started out as a personal project of Mozilla employee Graydon Hoare, who also disliked C++. Confronted by security concerns with C++, the language that the company web browser, Firefox, is written in, Mozilla officially sponsored the project in 2009. Mozilla saw Rust as a way to fix these issues, initially dedicating a team of around six to work on and develop the language.
Mozilla’s primary concern was that C++ was not built to handle today’s multicore hardware and that it was therefore too unsafe for today’s world. Rust tries to increase safety with compile-time checks that will provide feedback about potentially unsafe code. The language also makes it easier to program for multicore hardware by providing simple language primitives, which give it a leg up on languages such as C++, when you’re writing for multicore hardware.
Development of the language has continued in the past few years, but unlike Go, Rust is in 1.0.0-beta3, meaning that it’s still in beta, and so not recommended for production work, although it is very close to its first post-beta release.
…the main focus of Rust is helping to handle multicore architectures safely and efficiently.
Due to this slower pace of development, Rust has not received quite as much support from open-source developers, and so it is not quite as popular. In 2012, the number of Rust repositories on GitHub was 148. It has since been trending upward, but still only claims 4,383 active repositories on GitHub.
Surprisingly, Rust has seen its largest support come from Samsung, who had reportedly dedicated around 20 employees to helping the folks at Mozilla build the language. This may be a particularly strategic move for Samsung, since the main focus of Rust is helping to handle multicore architectures safely and efficiently. If Rust succeeds in this goal, it could mean a lot for how software is built by Samsung for various hardware devices.
The job market for individuals specializing in Rust is also, not surprisingly, very small. At the time of writing, there were only two job listings on Stack Overflow Careers, while over on Mozilla’s own careers website, calls are out for people to help with development.
While the statistics for Rust seem underwhelming, support for Rust could start trending upward very fast after a version 1.0.0 release. Supporting the language is clearly a priority for Mozilla, as well as for Samsung, so once there’s a stable release, something that production-ready code can be written in, it is likely that many more individuals and companies will start to adopt the language.
Last, but certainly not least, is Apple’s own language, Swift. The development of Swift started in 2010 with Apple engineer Chris Lattner. Lattner, who joined Apple in 2005, worked on LLVM, a tool for generating and running new applications, as well as Clang, a program for compiling software. Lattner had worked on Swift for over a year before taking it to Apple, who turned it into a “major focus” for the company. However, Swift is dissimilar to the previously listed languages: it was not born out of dislike for C++, but rather to fix grievances with Objective-C, the current language used to build apps for Apple’s iOS and Mac devices.
One of the biggest hurdles people face when trying to learn Objective-C is its confusing syntax. Swift is designed to have a simpler syntax, in line with other modern programming languages. Swift also includes type inference, which means that programmers do not need to explicitly set variable types when writing code: the compiler handles that instead. These two features alone enable developers to be more productive when programming in Swift, taking away a lot of the pain points of writing in Objective-C.
Swift saw its first release in September of 2014, and it has received a massive amount of support ever since—which is why it has grown from 1,989 GitHub repositories to 11,138. Although it still trails behind languages like Go, Perl, and CoffeeScript, the fact that it cracked the top 20 languages on GitHub in only seven months is nothing short of astounding. Of the top 30 languages on GitHub, it is the newest, followed by Rust, which first appeared in 2010.
The rising success of Swift should come as a surprise to few people, however, as there are currently tens of thousands of app developers using Objective-C, and if these developers are offered a choice between Objective-C or Swift—the latter being faster, more stable, and easier to write in—it shouldn’t be a difficult choice to make. Apple has constructed the perfect environment for a new language to succeed in.
Swift is designed to have a simpler syntax, in line with other modern programming languages.
Similar to the open-source success of the language, there is also a growing job market for individuals specializing in Swift. On Stack Overflow Careers, there are currently 56 job listings for Swift developers, as well as a handful of listings on Apple’s own website. However, even though Swift’s success has been impressive, there are a number of companies and app developers still holding out on switching to it. While it may seem easy to “drink the Apple kool-aid” and start building every app with Swift, it can behoove companies to wait until the language has matured, until there is more support in the community for it as well, before dedicating resources to training.
That’s not to say that no companies are using Swift. It was recently reported that companies such as Getty Images, Duolingo, LinkedIn, and American Airlines are all using Swift, and it’s likely that we’ll soon see more joining the ranks.
Along with the open-source success of Swift and the rising job market, there are also a number of online tutorials and courses offering to teach the language to developers. A simple search for “learn swift programming language” yields tutorials and courses from many respected resources, including our own Nanodegree in iOS app development with Swift. This kind of support lowers the barrier of entry for individuals interested in learning the new language, which will also undoubtedly help in its adoption.
Swift has seen great success in the first seven months since its release, and with future improvements and with more companies using the language, it might just be the replacement to Objective-C that developers have been looking for.
The Bottom Line
At the end of the day, there are a number of great programming languages to choose from, both new and old. Each language offers its own benefits, its own drawbacks, and each is best-suited to specific tasks.
If you are an iOS developer currently writing in Objective-C, it could be well worth your while to try Swift. If you are building software that requires exceptional concurrency support, Go might be the answer to your problems. If you want to look at what the future of writing multithreaded applications for multicore architectures looks like, you should give Rust a try. Even if you don’t plan on using any one of these languages exclusively, it never hurts to be up-to-date with the latest technology.