Recently i have looked at the “timeline” of Programming Languages and while a lot has changed in the past 5-10 years, there are a lot of languages that have pretty much “stayed” the same in their niche/use.
For example, let’s take C language. We don’t really ever see much languages being developed (correct me if i’m wrong) to try to Unseat C. However, there are a lot of languages that try to do similar things (look at all the SQL/No-SQL languages) Scripting Languages, etc…
Is there a reason for this trend?
Or is it just because C was designed very well ? and there isn’t really any need for new once?
5
There are lots of languages trying to replace C
First there was C++, and then Java and C# trying to replace that.
Recently Go is trying to replace C directly.
But there is a lot of legacy code and much more legacy experience in C so you can’t do things too different and hope to be an instant sucess
5
I would not expect any dramatic changes. Only minor improvements might be seen toward the problems that frameworks try to solve gracefully with less line of code.
Thus, there are more and more abstractions and tools to automate process of template-ing certain code to achieve CRUD code generation. In another word, tools/frameworks are created to sustain fast phase development methodologies and productivity demands. However, fundamental concepts of languages (loops, exception handling, etc.) are remaining almost un-changed.
For example, take T4-code generation in C#. It is another powerful add-on to deal with routine code generation like it is done with text generation in this example code – Code Generation and T4 Text Templates.
It would be very hard to “unseat” C: it combines the performance of an assembly language with the expressive power of an assembly language, while offering a decent degree of portability. If you desire raw execution speed, would prefer not to code in assembly, and do not care for additional abstraction layers, C perfectly fits the bill. Some development has been going on on the standards side of C, bit it was mostly for minor features.
In contrast, C++ has evolved a lot, adding lambdas and significantly improving the template mechanism. However, the goal was to make C++ more suitable for higher-level tasks, not to improve its speed – it can be as fast as C already, because it’s very close to being a proper super set of C (there are semantic incompatibilities between the two languages).
4
As languages are used, it will become clear that certain things are missing from the language, and such things will be added. In hindsight, it will be clear that some things could have been done better, but language designers are generally very hesitant to break backwards compatibility and thus large languages are likely to stay with these details (think C++).
Every so often, people will look at these languages, groan at all the flaws that they find, and decide they can definitely do better from scratch. Every once in a while, such a language will get a larger audience and perhaps replace an existing language as “the hip thing”. (The old language will still be used in legacy code, of course.)
These changes are going to be slow; language adoption is hard, companies don’t want to risk using an untested platform, but changes have happened up to now, and there’s no reason to believe they won’t continue to happen in the future.