I believe the rise of so many new programming languages in the past few years is in response to a reconsideration and reflection of what people like and dislike about current programming languages and not yet finding a language that is as great as they imagine a language could be. I suspect someone could write a book on this topic but I just wanted to document a few thoughts and notes.
- There is a renewed interest in performance (execution speed) and memory conservation. See: Rust, Go, Julia, Nim, Swift.
- Focus on safety and concurrency. See Rust, Swift, Go.
- More features from functional programming languages are being adopted to reduce side-effects such as immutable variables (at least optionally or by default as in Rust).
- “Composition over inheritance” – See Rust (no inheritance, all composition), Go (no inheritance, all composition), Julia
The languages being explored, not all are new:
- Rust
- Go
- Julia
- Nim
- Swift
- Elixer (purely functional)
- Clojure (purely functional)
The only thing I find missing is a focus on expressiveness. I would like to see some benchmarks that includes expressiveness as a metric. I really like Ruby because of it’s expressiveness. I am not a fan of purely functional languages but I like the idea of making functional concepts the default with optional ways to override when necessary, as Rust uses. I may try to come up with a benchmark to illustrate this issue. Mostly I think of this as a problem with large (think approximately 1GB in size) immutable arrays undergoing calculations. Plus, for loops with a variable for the current index or value is a pretty handy feature. I don’t prefer recursion as an alternative.
Links
- Some benchmarks of different languages
- The most promising languages of 2016
- The most promising languages of 2015 – Part 1 (Note: this is quite a similar list of changes in these new languages that I read after writing the above. I could have saved time just pointing to this.)