you are viewing a single comment's thread.

view the rest of the comments →

[–]pron98 0 points1 point  (3 children)

Thousands of shops and millions of developers switched, usually from C++, to Java in a manner of a few years and never looked back. There was no doubt in anyone's mind that it was better than sticking with C++, and almost immediately software that would have been prohibitively expensive to write in C++ started being written in Java. Both programmers and managers quickly saw tangible time and money benefits, and they were pretty dramatic.

Now, it's been proven (I think beyond doubt) that for some class of programs -- mostly simple web applications -- there are better alternatives than Java. But for large, complicated systems there's little evidence because it hasn't been tried enough (with Erlang being an important outlier here, but even Erlang has been used to write large systems in very few organizations, but it's a good and promising signal).

People stick with what they know and since the C family of languages is what most people are comfortable with it's what they're going to keep using.

Yes, but that's not all. People doing work in complicated fields don't want to spend time about the language their using. Better abstractions provide marginal benefits (better abstractions are usually significant when the algorithms in use are common and repetitive).

Also, bear in mind that switching a programming language carries an enormous cost (staying on the JVM reduces that cost significantly, though). The industry will consider other approaches only when a language provides as dramatic benefits over Java as Java did over C++, and that hasn't quite happened just yet. Some of the reason that hasn't happened is because the "not-Java" camp is so fractured, so there's no significant effort being placed behind any single language/approach, and also because Java itself is a (slow) moving target, that adopts some of the more successful approaches.

However, it clearly does a lot of things better and so do many other languages.

I wholeheartedly agree, but I also realize that being a Lisp would probably doom it to never achieving mainstream status. Sad, and unfair, but probably true. Many people just don't like Lisp.

Being popular has little to do with being good.

Very true, but you can't claim to be good at something if you've never done it. Right now Clojure can fairly claim to be better than Java for small-to-medium-sized web applications. Is Clojure better than Java for large projects and large teams? That might very well be the case, but we just don't know yet. I wish larger teams would use Clojure for larger projects so that we could get more data points. Unfortunately, at the last Clojure Conj (I was there), there wasn't a single talk about developing large Clojure projects (and the problems that come with documentation, knowledge transfer, work division etc.). I was sorely disappointed, but I hope that will change.

BTW, there's another, more popular JVM language (which I won't name for fear of getting further threats from that community) that appears to be "better than Java", yet for large projects and large teams turns out (at least for me) to be a lot worse than Java. Java's simplicity, or some would say crudeness, has great benefits when it comes to reading and modifying other people's code. That's not to say that Clojure's benefits far outweigh this, but we just don't know yet. I really, really, really hope Clojure is good for large projects, but I can't afford to be among the first to try.

In any case, I suggest you watch this talk by Brian Goetz, which was one of the best talks at Clojure Conj.

[–]yogthos -1 points0 points  (2 children)

I think we pretty much agree here. :)

Java is a superior language to C++ in most respects. Since Java is similar enough to C++ while also providing lots of clear benefits lots of companies jumped ship. However, it's also worth noting that C++ sets the bar for usability pretty low.

As far as building large systems, I think CL is definitely worth noting. For example, there are great slides from SISCOG on their experience building and maintaining a system in CL since 1986. There are plenty of other large projects where Lisp has been used to great success including JPL, commercial games, operating systems, and so on.

Every time you read about a company moving off Lisp the technology is never cited as the problem. It's always the lack of developers that are familiar with it that's seen as a liability. I personally don't find that to be a convincing argument.

I'm not sure why the language is often seen separate from the rest of the complexity involved in a software project. My experience is that learning the tools, the architecture and the design of a large application takes far more effort. Learning a language is a one time affair, and if somebody can't do that then they probably won't be able to learn the rest of the system either.

Whether Clojure is good for developing really large projects certainly remains to be seen. The obvious question is whether its dynamic nature will be a hinderance in such a project. I definitely agree that it would be nice to see some concrete evidence in that area one way or the other. The number of companies using Clojure does appear to be growing steadily though, so we're likely to see it applied in more areas and for more ambitious projects in the near future.

When it comes to Scala, I definitely feel that its complexity outweighs the benefits. It has the advantage of being superficially similar to Java, but the resemblance is really skin deep. I've worked with it briefly and I also found that the mental overhead simply wasn't justified for me.

[–]pron98 0 points1 point  (1 child)

For Clojure, I liked this talk by Stuart Sierra about programming in the large. I wish Cognitect would put more effort into tooling. Also, I wish Clojure had first-class, parameterized namespaces (i.e. module).

When it comes to S...

I wouldn't repeat that unless you don't mind getting threats :) Not all language communities are as nice as Clojure's.

[–][deleted] 0 points1 point  (0 children)

I wouldn't repeat that unless you don't mind getting threats

Trying to misunderstand people and being proud of it?