Programming language innovation - Is it dying?
All the new programming languages I hear recently does not seem to be innovative. They are just mixing and matching old language features borrowed from dynamic/functional programming languages.
Is there any new programming language which brought any new feature/concept which is not available in languages like Lisp, Haskell, Python etc?
12 comments
[ 3.7 ms ] story [ 36.9 ms ] threadactor model (erlang,mozart/oz)
More generally, see peter norvig's talks on youtube where he talks about data being more agile than programming. The new frontier in computing is using data to get things done. Programming language researchers, bless their hearts, are nice people, but won't add to much computing in the future.
Even if the research doesn't affect a completely new programming language, it could very likely have a strong hand in updating old ones. See programming language memory models for instance.
For examples of a recent-ish language that was developed by a professor at UIUC, see http://maude.cs.uiuc.edu/, which is based on rewriting logic and is currently still being developed/refined. But even that has strong ties to a previous language OBJ by the same creator.
If you're interested in learning something really different but a bit easier/more fun, I would strongly recommend Prolog. Schapiro has a great book (http://www.amazon.com/Art-Prolog-Second-Programming-Techniqu...).
http://code.google.com/p/pure-lang/
it's almost formal math, quite cool
It's easy to forget that Lisp, Haskell, Python, etc, didn't just spring forth fully formed. I read a great history of Lisp recently: http://www.dreamsongs.com/NewFiles/Hopl2.pdf. A lot of the features in Common Lisp we take for granted today were the product of various dialects and splinters of Lisp over the years.
Also, something you see quite a lot is innovative concepts built onto existing languages via libraries that then get integrated into new languages.
A programming language is not just a means to formulate instructions for a computer to execute. It is also a way for programmers to communicate with each other and, taken further, a way for customer desires to translate into computer actions. I would agree that, viewed as instructions for a computer, not much new has come about in the last 10-15 years.
What has developed more recently are all the new ways that programmers are discovering or creating to communicate via code. TDD/BDD/RDD, literate programming, module systems baked into the language, optional typing, parameterized types, etc. are all features that, while not necessarily entirely new from a theory standpoint, are creating new ways for programmers to signal intent.
A good example of this at work is the recent resurgence in functional languages. These have, literally, been around since the very first programming languages were created, but they have never really "caught on" (for some value of "caught on"). I would suspect that part of the problem is that it has traditionally been more than a little difficult for someone not used to functional programming to approach the code. So, I would argue that the most important recent advances in the FP space have less to do with type inference, lazy evaluation, or correctness provability, and more to do with clearly communicating intent.
And note the human reaction to yet another language like Dart. Many of the programming languages they've tried promised the moon, but turned out didn't have huge effects on general productivity. Libs, frameworks, idioms, testing approaches etc, have a bigger impact.
As an example: the open type system allows developers to mix various resources (xml files, wsdl files, json/jschema files, etc.) along side the gosu code, and access it all in a type-safe, easy-to-tool manner. This isn't particularly innovative from an academic perspective: there are no theories at work here, just some practitioners trying to make our lives easier. On the other hand, it is a very nice advancement for day-to-day coding.
As a broad generalization, I think that the technology community over-prioritizes innovation: I believe it would be more productive for most people to take the best ideas of the past and get on with the laborious task of sanding down and perfecting the implementations.