InfoWorld’s Neil McAllister takes a look at 10 cutting-edge programming languages, “each of which approaches the art of software development from a fresh perspective, tackling a specific problem or a unique shortcoming of today’s more popular languages. Some are mature projects, while others are in the early stages of development. Some are likely to remain obscure, but any one of them could become the breakthrough tool that changes programming for years to come – at least, until the next batch of new languages arrives.”
I can’t believe they didn’t include Mozilla’s Rust! Although it’s not yet finished or usable for most projects, the design is far more well thought out than most other languages it competes with (Go, Zimbu, etc.).
I wish Google would drop Go (a well intentioned but stupid language) and just help Mozilla with Rust, but unfortunately that is unlikely to happen.
And why should it? Go is used in production and if they nail the garbage collection running on another CPU core they will have an amazing feature set.
Language I miss are CoffeeScript, Xtend, Gosu, Crack and a few others.
But lets face it, to push a language to mainstream you need killer features/frameworks, excellent tooling and deep pockets. Not sure most of the languages have it all.
I think any one out of the three you mention would suffice. The rest comes with time and popularity
kragil,
“But lets face it, to push a language to mainstream you need killer features/frameworks, excellent tooling and deep pockets.”
piotr.dobrogost,
“I think any one out of the three you mention would suffice. The rest comes with time and popularity ”
Isn’t that kind of like saying someone will become wealthier as they come across more money? “popularity” and “mainstream” are the same thing to me.
Anyways, I tend to agree with kragil: most of them will not make it if they don’t have the right backing and frameworks in place, regardless of their merits. Even with those things, they’re competing for a small piece of an already crowded market.
However, market skepticism aside, I find projects like Opa refreshing since I’m personally very tired of having to deal with so many different components in order to develop web sites.
I don’t know what sort of problems or experience you have with Go, that have caused you to deem it a “stupid language”, but I have been using it as my primary language for the past few months. I personally find it to be fantastic to work with. The expressiveness of its statements feel a lot more like python than c/c++. Another thing I particularly enjoy is how the language is tends to push you in the direction of writing good code (not compiling when there are unused variables, packages).
I could go on about why Go it is a good language, but that really isn’t the point. I don’t like reading unsupported blanket claims like far more well thought out than most other languages it competes with, without people going so far as to explain in what ways.
What about forgetting all the advances in language design from the last decades?
Go is basically C with interfaces and GC, but without:
– enumerations
– generic types
– dynamic loading
– exceptions
– classes
– no meta-programming support
– no operators definitions
In many scenarios the above list might not make sense, but still Go feels too minimalist.
Anyway if it succeeds in replacing C in the long term, it would be great, as we need better type safe languages for systems programming.
moondevil,
“What about forgetting all the advances in language design from the last decades?”
“Go is basically C with interfaces and GC, but without:”
Not sure what ‘go’ offers, but ‘C’ itself never had most of those things either. Even C++ lacks things like meta-programming which would make things like SOAP and object serialization much more natural.
I’d be open to a new champion as well, but the fragmentation is too great and there aren’t any clear winnners.
Sure C did not have most of those things.
Reading my post I do agree it is a bit misleading. I wanted to say that it is only C + interfaces + GC, but lacking a lot of stuff that has become mainstream in other languages.
As for C++, it does support meta-programming at compile time thanks to templates.
moondevil,
I did some reading about go, and it looks like there may be a lot of things I wouldn’t like about it (yet another syntax).
http://golang.org/doc/go_faq.html
http://juliobiason.net/2009/11/11/why-go-feels-like-a-balloon-boy/
Considering that go has dynamic objects, whereas C is limited to static structures, I think go might have some advantages.
“As for C++, it does support meta-programming at compile time thanks to templates.”
Ah, I thought you meant programming with meta-information like reflection (which it turns out go has). Yes, the C++ template system is supposed to be turing complete.
http://www.inf.ethz.ch/personal/ybrise/data/talks/MSEM20091103.pdf
I’m not sure this functionality would ever be missed in real work though?
Edit: All in all, I really haven’t seen anything I find extremely compelling compared to other modern languages, like you say.
Edited 2012-01-05 16:31 UTC
A friend who works for Cray tipped me off about Chapel ( http://chapel.cray.com/ ) a couple years ago. It’s amazing how little attention it has received, considering the collaborators and the amount of R&D behind it. I was able to download, compile and run demo code with minimal trouble, and it has some very interesting features.
One of the coolest things about Chapel is that it can be approached like a high-level language for prototyping, but is still capable of all the low-level tweaks and rewrites you want.
There is a nice blog entry by Bartosz Milewski about it,
http://bartoszmilewski.wordpress.com/2011/11/07/supercomputing-in-s…
http://www.infoworld.com/print/181548