5 programming language trends to look for in the next 10 years:
1. Moving (back) from developer comfort to code efficiency. We've created an insane amount of unnecessary abstractions in the name of "making developer's life easier". So much so that only a fraction of total computing power is spent to do the actual work in traditional software systems, the rest is simply wasted to deal with abstractions. With the current generation of computer hardware reaching to its maximum potential, the only real way to improve performance is gonna be making the software more efficient by chopping of as much unnecessary layers as possible, unless a breakthrough happens in hardware industry.
2. Immutability and statelessness. As they say, "Shared state is the root of all evil". Search the phrase and you'll find way more information than I could ever write here. My point is, even systems engineers (who usually loves to deal with nasty stuff) are getting tired of shared state shenanigans and I think they are gonna be the ones that will convert much of existing infrastructure to immutable.
3. Moving stuff from runtime to compile time as much as possible. With ideas coming from fields like Type Theory and Abstract Algebra in general, now we can predict a reasonably wide domain of "bad" program behaviours before actually running it. The best part is, we can completely eliminate most of them in compile time by adding new rules which we can guarantee that won't lead to such "bad" states. Current implementation of memory management in Rust is a great example of this approach.
4. New approach to concurrency and parallelism. Although general-purpose operating systems are fairly good at performing various kind of tasks, fairly good is not good enough for specific applications. A classic example is concurrency and parallelism. Although OS-level active units like processes and threads are good for average OS-level tasks, they are too heavy and not flexible enough to be directly used in modern languages with very dynamic behaviour. So, more and more languages are coming up with their own solutions often in the form of language-level units that are very light and flexible alternative of OS-level threads. Also it's worth mentioning that this kind of approach often involves some sort of tricks to make resources like CPU time and memory pages more predictable, which the underlying OS developers wouldn't appreciate. After all, language developers want their program to perform better, where OS developers want the whole system to perform better.
5. Rise of multi-mode languages. Compilers can do hell lot of optimization for you, but it usually makes compiling process much longer. On the other hand, you only need such fine-tuned software in production environments. Unoptimized and rough version of the same software (which can be compiled much faster) is usually good enough for various kinds of testing and debugging purposes. So, why not give developers an option to chooses how much optimized result they want? Of course, both compiled and interpreted languages are doing a bunch of tricks to achieve something similar, but I think solutions in the next 10 years is gonna be more fundamental. Maybe, a language that is normally interpreted, but can compile the code to executable when it's ready for production.
Post #730
3.05K
- 👍 14