views:

1567

answers:

8

Given that it's impossible to see into the future, what factors related to Clojure, Scala or Haskell are likely to determine whether one of them catches on?

Are there cultural or economic issues that could give one of these languages an advantage over the others?

Or are none of these languages likely to gain traction because of their conceptual complexity?

+12  A: 

On the top of my head:

  • good IDE support (with refactoring)
  • stable enough specifications
  • clear policy about backward compatibility (in term of sources, binaries and behavior)
  • frameworks and tools around the language (like code static analysis, code coverage, ...)

Scala, for instance, is still evolving and moving "too fast" to be "largely" used even though some big projects have already adopted it.


Edit: November 2009

See Refactoring to Scala DSLs and LiftOff 2009 Recap presentation, Slide 10 and 11:

Martin definitively "gets it" about the importance of having high quality Scala tool support

VonC
Ability to easily interoperate with other languages (C FFI in general, and COM and .NET interop on Windows) is also rather important for adoption.
Pavel Minaev
@Pavel So any language that doesn't have .NET interop is a failure? Do you have any basis for this logic?
Rayne
Though I obviously can't speak for him, I think Pavel is not saying inter-language use is a requirement. It is "rather important", as he says, not "required". I am inclined to agree with him: Python's success (whether you think it large or small) is partly attributed to its friendliness with C, for example.
Agor
+8  A: 

From the Haskell world, I see the main things to continue to push on as:

Besides this, it is hard to say. Some random thoughts: Haskell's been around for 20 years, has a very large user base, and plenty of commercial support. Clojure is tiny in comparison. Scala and Clojure get "free points" by running on .NET or JVM. Does that matter? How much does the runtime matter? GHC has a very fast custom parallel runtime, because it isn't the JVM, but people like to use the JVM. Same for .NET. Does maturity/stability matter?

And on top of all of this, who is doing the best outreach?

Oh, and we have The Industrial Haskell Group.

Don Stewart
Clojure is also new. Another thing that Clojure and Scala have going for it, is the fact that people can learn them without blowing their brains up. Haskell has a lot of "OMG ITZ SO HARD" behind it, and I believe that always has, and always will hinder it's popularity.
Rayne
http://learnyouahaskell.com/ can really help beginners to learn Haskell. Any other good Haskell references for beginners?
Derek Mahar
Running on the JVM and .NET is attractive because it enables easy and deep integration with existing codebases on those runtimes.
nohat
Actually, the verification *process* for the seL4 microkernel used Haskell. The kernel itself is mostly C and a little assembly language.
Artelius
Haskell will not gain traction as long as Haskellers practically ooze pride in just how unapproachable their language is.I love Haskell, but I doubt it will ever be much more than a toy I tinker with in terms of programming. (I say this despite being one of the twenty or so reviewers singled out for thanks in the Real World Haskell book.)
JUST MY correct OPINION
"practically ooze pride in just how unapproachable their language is" -- I don't know what motivates that comment. Much of the community is working very hard to develop tutorials, online demos http://tryhaskell.org , libraries, easy installers http://haskell.org/platform -- all to make it easier to get going.
Don Stewart
A: 

OK, I'll take a wild guess. I think the factor needed for success is "can it do Java's job?".

The real thing that Java does is static typing. While this is annoying for small programs it allows the construction of large stable systems. It allows refactoring with confidence.

Think about it: every language has kind of a maximum size program that it supports. To go over that size requires increasingly above-average design and implementation.

As a secondary consideration, Java is quite fast and has a rather complete library.

So, I'm guessing those are the criteria, and so Scala has a chance.

The only negative is the difficulty of running cheap shared server web hosts with the JVM.

DigitalRoss
+5  A: 

I think that to break into the big league (i.e. C, C#, C++, Java) they need widespread acceptance from a few large companies which do in-house development but are not themselves software houses. I'm think of large banks, insurance companies, service-companies, management consultancies etc.

However, there is a big barrier to this acceptance these days; namely support, market and stability. Without a large company like Sun, IBM or Microsoft providing support it's going to be very difficult to persuade companies like these that any new language is a safe bet.

Without persuading these companies, the market for developers familiar with the languages will be small. As long as there is a small base of users, the language can afford to make backwards-incompatible changes requested by the community. Hence a vicious cycle of non-mainstream-adoption.

oxbow_lakes
I'm curious about why you think your first statement must be true. When I think of large financial institutions or large medical enterprises, or whatever, I think of all kinds of softwares that are the "norm" in those environments but that most folks don't know anything about. A prime example of this is ANSI M (MUMPS). Its widely used in both finance and medicine, but it pratically unheard of anywhere else. By your reasoning, you'd think _everyone_ would have adopted it....Or am I misunderstanding your point?
Shaun
I think you are mistaking *"X is a necessary condition for Y"* with *"X implies Y"*. It is in fact equivalent to *"not X implies not Y"*. Also MUMPS has nowhere near the takeup of C/C++/Java in my experience: I've been working in investment banks and the finance industry for 12 years and the first time I heard of it was on TheDailyWTF :-)
oxbow_lakes
+2  A: 

Some of these languages may easily gain acceptance first in non-commercial and open source environment. More or less what happened to Perl, Python, Ruby (and some other languages).

Ease of deployment of the software (think apt-get) and freedom of the programmer promotes language diversity in the open source world. Once some of the software becomes sufficiently important, the language becomes immortal in terms of support. Once its immortal, it is a safe bet for everyone. Small developers will be first, and if they gain some advantages from using the language, big companies will follow.

So, it's a matter of which community is more friendly to open source (teaching, documentation, infrastructure) and which language allows a programmer to be more productive.

jetxee
A: 

Backing by a large software development company. Look at what it took Java and C# to get where they are. That is what it will take for others to get there as well.

stonemetal
A: 

One cultural factor is how similar a language is to existing popular languages. For example, the evolution of C -> C++ -> Java -> C#.

Haskell has the largest gap from the mainstream, with an unfamiliar syntax, runtime stack, programming paradigm and a community oriented much more towards academia than industry.

Matt R
A: 

In my humble opinion, the main factor regards the outcome of the research aiming at providing implicit parallelism in purely functional languages. If/when this will work, then Haskell is likely to become the mainstream.

As for Scala and Clojure... Scala has the historically more acceptable syntax. That's an overkill. Some can argue that Clojure has a macro system, but macros are expressively equivalent to clojures, so this is not a real advantage.

Anyway, I believe that statically-typed languages are not appropriate for all the areas, namely Web Development. And curiously nowadays there's a tendency to make everything web-based. I do not think that Ruby was a hype: It is maturing very fast.

Pedro Morte Rolo
"Some can argue that Clojugre has a macro system"? No, it *definitely* has a macro system. And macros are not equivalent to functions, thus not equivalent to closures.
_expressively_ equivalent
Pedro Morte Rolo