Programming industry continuously demands solving new problems by the languages intended to be widely used and relevant. We list some of the most notable past problems, which are (partly) solved today, and propose a list of three current challenges: proper multicore support, more powerful abstractions, compared to the classic object-oriented style (such as elements of functional and generic programming), and simultaneous high execution speed and low latency. The last requirement is caused by today’s proliferation of mobile and cloud computing.
Native and non-native (virtual machine-based) language implementation strategies are evaluated with respect to ability to support stated requirements. While the multicore and abstraction ones do not depend on execution mechanism of the language, high execution speed coupled with low latency rules out virtual machines as an acceptable solution. Moreover, benefits of virtual machines (such as security sandbox or OS abstraction) from 15 years ago are less relevant today. Based on this observation, we claim that native languages are better suited for the current challenges.
We evaluate several new native languages — C++11, D, Go and Rust — with respect to the level of support for the stated three main requirements: multicore, abstraction and execution ones. C++, despite its ubiquity, is definitely not the best, but, surprisingly, it is as relevant as ever — partly due to its continuous evolution, and partly due to the «zero overhead» principle. D seems uninteresting, compared to C++ — it does not bring much to the table, except improved immutability support. Newest two languages, Go and Rust, take very similar approaches to concurrency, based on lightweight threads. But, if Go’s innovations stop here, Rust (intended to be used as a language for the next generation browser engine) features strong immutability support and maximally reduced garbage collector usage — being very similar in this regard to C++.
While predicting the future (especially in programming language technology) is hard, we hope that this paper brings enough evidence to support its bold title.
Gregory Petrosyan
Researcher, Saint-Petersburg State Polytechnical University
Gregory Petrosyan is working on getting Ph.D. degree in the St.-Petersburg State Polytechnical University. His main research interests are programming language design and implementation. Currently he is working on a new native industrial-strength programming language, and also teaches students the basics of programming.