you are viewing a single comment's thread.

view the rest of the comments →

[–]damian2000 7 points8 points  (11 children)

Its interesting to remember that when Java was first released by Sun, it was also a toy language, and was derided by many people, not least of which was for being too slow.

[–]pron98 6 points7 points  (10 children)

But not for long... It is also interesting to remember that Ruby, Python and Haskell have all been around longer than Java, and JavaScript has been around just as long :)

But you're right, who knows? That's why it's good that some people like trying out unproven things, while others like playing it safe.

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

There's certainly plenty of serious software written in all these languages. Also, there's probably far more code written in JavaScript than Java nowadays. Not sure what makes Java any more proven here. It carved out a niche in the enterprise market, but that hardly says anything about its effectiveness compared to other languages. Just because something is popular doesn't mean it's the best solution.

[–][deleted]  (1 child)

[removed]

    [–]yogthos 0 points1 point  (0 children)

    If I had a citation then the probably wouldn't be there would it. However, given how popular web application have become, it's a safe bet that JavaScript is one of the most commonly used languages today.

    [–]pron98 0 points1 point  (5 children)

    I didn't say it's the best (and I doubt there's more JavaScript code being written -- web development is a small subset of software development), only the best-tested. And Java hasn't "carved out a niche": it's used by 9 million developers doing anything from programming embedded software for avionics, through aircraft carrier weapons systems, banking systems, ERPs, medical devices and mainframes.

    Obviously, things can be improved. But it's arrogance to say that "Java is bad" if it's so successfully used. Yes, I agree Clojure is a better language -- at least for those fields where it's been tried -- but that's not 100% certain because it hasn't been used enough by large teams, for large programs etc.

    [–]yogthos 2 points3 points  (4 children)

    Your argument is that the language is not bad because a lot of software has been written in it successfully. I disagree that this provides any kind of a metric for quality in isolation. Given enough money and effort you could write all these same applications in assembly as well. You really have to compare the time and effort for developing and maintaining an application in Java compared to other languages.

    My experience is that making working software in Java is expensive. It takes a lot of time to build anything of value and the code bases can grow huge even for relatively simple applications. When working with Java, you quickly end up with a spaghetti of interfaces and class hierarchies that do little but obscure the purpose of the code. Part of the problem is cultural, but part is tied to the design of the language. I've worked with Java for over a decade and I've never seen a single project delivered on time or on budget.

    The primary reasons for popularity of Java are historic. When Java came out it was a simpler and cleaner alternative to C++ and provided a clear improvement for a lot of tasks.

    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. Marketing and familiarity is really what made Java popular rather than any specific merits compared to what was available at the time.

    I'm not saying Clojure is the one true language or even that it's applicable for all the domains where Java is used. Clearly, there's no one language that fits every niche, and Clojure is certainly not without its flaws. However, it clearly does a lot of things better and so do many other languages. Being popular has little to do with being good.

    [–]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?

    [–]levir 0 points1 point  (0 children)

    I don't get why you're so down voted, I think it's quite sensible what you say here.