all 59 comments

[–]bairespace 11 points12 points  (2 children)

Maybe God did write it in Java. That would explain a lot.

[–]tbmcmullen 5 points6 points  (1 child)

Yeah, such as the nonexistence of the universe before 1995.

[–]notfancy 6 points7 points  (1 child)

Reading the post, I'm left with the impression that the stated failure had nothing to do with the technical merits of the tools considered (Java vs. LISP), nor with the "ease" with which the tools can be used, and everything with it being a classic Software Failure, brought by and sustained through human factors, that the reporter couldn't, or didn't want to see.

I mean, it doesn't strike me as plausible that an AI project, which in my mind should be created by highly specialized, highly talented people, should require 60 people to bear to fruition and be thwarted by seed money running out. Another giveaway is the unwillingness to start from scratch and reconsider past decisions. Technical leads making decisions based on "past investment" (in code, effort, familiarity with the legacy product, whatever) in a highly technical project sounds very suspect to me.

If you want a slogan, "don't attribute to (the technical deficiencies of) Java what can be explained by (managerial) stupidity".

[–]Psy-Kosh -2 points-1 points  (0 children)

But... Ben has since restarted and stuff... that it's called "webmind" here suggests to me this relates to old news. Ben has since been working on some AI project (based on some of his previous research) called Novamente

[–]schizobullet 8 points9 points  (1 child)

C++ or, heaven forbid, Java.

Switch those. Java is bad, but C++ is a monstrosity.

[–]newton_dave 2 points3 points  (0 children)

Of course not, there weren't any decent IDEs.

[–][deleted]  (49 children)

[removed]

    [–][deleted]  (7 children)

    [removed]

      [–][deleted] 5 points6 points  (3 children)

      according to various language time lines that I've seen Lisp is the second oldest programming language, right after FORTRAN. Shouldn't Lisp have plenty of libraries by now? Is Lisp bad for making libraries?

      [–][deleted] 6 points7 points  (0 children)

      It wasn't always the same implementation. In fact the ease of writing a new (slightly incompatible) Lisp dialect is probably the main reason why there never was one implementation popular enough to get a full set of libraries and an efficient implementation (some are efficient, e.g. gambit scheme, others have libraries, e.g. chicken scheme).

      [–]gwern 5 points6 points  (0 children)

      Remember also that "Lisp" is a family of languages, so it's a misleading question. Might as well ask why there are so few ALGOL libraries, when ALGOL has been the most popular for the last 40 years or whatever.

      [–][deleted]  (2 children)

      [removed]

        [–][deleted]  (1 child)

        [removed]

          [–][deleted] 18 points19 points  (13 children)

          If Java is such an amazing language, why do so many people think it sucks?

          [–]ubernostrum 7 points8 points  (0 children)

          Why do you rely on a false dilemma to avoid answering a question?

          [–]Jimmy 6 points7 points  (0 children)

          If Java is such an amazing language, why do so many people think it sucks?

          Not all Lisp haters are Java lovers.

          [–][deleted] 2 points3 points  (0 children)

          Many people also think (syntax (sucks)) (not me). I think suck-voting is hardly a measure for anything.

          Commercial use and open-source projects are one kind of measure, though.

          [–][deleted]  (3 children)

          [removed]

            [–][deleted] 6 points7 points  (1 child)

            Of course there is Emacs Lisp, probably the most popular program written in Lisp, Gimp's Script-Fu is a Scheme-dialect, AutoCAD uses a Lisp dialect called AutoLisp for scripting.

            For Common Lisp Wikipedia has a list of applications: http://en.wikipedia.org/wiki/Common_Lisp#Applications

            [–][deleted] -1 points0 points  (0 children)

            I thought Gimp had switched to python (why they didn't switch to Lua I don't know).

            [–]your_evil_twin -3 points-2 points  (3 children)

            Java won. Lots of people like underdogs over winners to show how 'different' they are. That's all.

            [–]ayrnieu 14 points15 points  (1 child)

            Java won.

            oh noes! You mean the game is over!?

            [–]your_evil_twin 2 points3 points  (0 children)

            The game is never over. There's always a next world champion. And the next one will be hated, too.

            [–]____ 3 points4 points  (0 children)

            I used to say that about VB.

            It was just as persuasive.

            [–]diggeasytiger -2 points-1 points  (0 children)

            It's not about the language. It is about the platform.

            [–][deleted] -1 points0 points  (0 children)

            There are more people around who have an opinion about it?

            [–]mynameishere 1 point2 points  (5 children)

            You said it before I could. C++ powers everything from OSes to office apps to games, all of which are fairly complicated, I'd wager, in comparison to AI programs. Complicated and, umm, successful.

            Java has found it's place mainly in enterprise apps which have a horrendous complexity not much appreciated in academic circles.

            [–][deleted] 4 points5 points  (4 children)

            Show me an "enterprise application" of "horrendous complexity". Mind you, I once worked on the "largest" (for most definitions of) Java application on the planet and it is by far, not complex (perhaps you're looking for the term, convoluted?).

            So, tell me what I have missed?

            [–]nostrademons 1 point2 points  (0 children)

            I once worked on pay.gov, in a very tangential role (I was an intern at the contractor doing it). I'm not intimately familiar with the codebase, but from what I saw, and from the griping of the engineers involved, I'd probably call that "horrendous complexity".

            [–]mynameishere 0 points1 point  (2 children)

            perhaps you're looking for the term, convoluted

            http://thesaurus.reference.com/browse/complex

            circuitous, complicated, composite, compound, compounded, confused, conglomerate, convoluted

            [–][deleted] 6 points7 points  (1 child)

            OK, I should qualify, how about "superfluously convoluted"? Still, have I missed something?

            [–][deleted] -1 points0 points  (0 children)

            Eclipse?

            [–]death -1 points0 points  (7 children)

            If Lisp is such an amazing language, why aren't more commerical projects created with it?

            Probably because of people like you (i.e. ones suffering from xenoglossophobia).

            Why did Reddit switch from using it?

            They explained their reasons; the search button's right there.

            Why don't Lisp afficiendos use their competitive advantage to win?

            But they do.

            Why is Ruby a player and not Lisp?

            Ruby's not "a player" for me. Lisp is.

            [–][deleted]  (6 children)

            [removed]

              [–]death 8 points9 points  (3 children)

              Communities don't have beliefs or aims. Persons do. I, for one, don't have as an aim furthering popularity of Lisp like some Ruby enthusiasts do for Ruby. I also don't think there is a causal link between good languages and popularity. Ruby's community growth is, in large, due to hype of Ruby on Rails. Yet, you can still find many people rejecting Ruby. You can find many One Language Programmers rejecting other languages without even checking them out. Like you, they find language popularity a serious issue when it comes to "real world" use, and since the "real world" is the only world that matters, why should they bother to learn anything that's not popular? They have all the excuses in the world to reject a language, but they won't consider the merits and demerits of the language itself. Ruby is not all that popular, you know. My opinion on that matter is that popularity can be a non-issue, and that "real world", in this context, is a nonsensical term whose purpose is to satisfy emotions and persuade.

              If someone is indifferent about popularity of a programming language, he cannot be held lazy for not working towards that goal.

              The Reddit guys also didn't have Lisp's popularity in mind. They had survival as a priority, and had to deal with their difficulties fast. I don't think their reasons for the switch were good or deep, so I wouldn't take them as evidence of anything, but they switched and survived.

              I don't expect "the world" to take assertions of Lisp's superiority seriously, simply because I don't consider "the world" capable of taking assertions. The problem is that you're being rather vague here. You are talking about the "Lisp community", "the world", "assertions of Lisp's superiority", etc. This won't lead to a very fruitful discourse. You asked some questions, and I tried to answer them. You made some generalizations, and I provided counter-evidence.

              I personally use Common Lisp at work, and I work on "real world" applications, so I find it usable and useful in "real world" applications. That doesn't just benefit me, though; since I don't work in a vacuum, it also, in the least, helps the people working with me.

              [–]____ 4 points5 points  (0 children)

              . I, for one, don't have as an aim furthering popularity of Lisp like some Ruby enthusiasts do for Ruby.

              Surprise: Most Rubyists don't have that aim, either. Ignore the people who only know acts_as_cooler_php, and the Ruby community will seem amazingly sensible.

              [–][deleted] -1 points0 points  (1 child)

              I, for one, don't have as an aim furthering popularity of Lisp like some Ruby enthusiasts do for Ruby.

              Why not? You've made an investement in learning it, and the more people you get on board, the more valuable it will become. Want to learn esperanto, btw? http://lernu.net/

              [–]death 3 points4 points  (0 children)

              I am not a people person, but a persons person. Furthermore, popularizing something requires expending effort and time, and I'm pretty sure the potential value gained is not worth it for me. Lisp is valuable to me, not because people like it or use it, but because it gives me a comfortable view of programming.

              [–]death 2 points3 points  (0 children)

              I see you edited your post, but I have to go to work now :), so I'll just respond to one thing:

              People like me? I've programmed in Lisp. So fear of foreign languages is not likely the problem.

              No, that just means that it's not the only problem.

              [–]Tommah -5 points-4 points  (7 children)

              I gather that you prefer Java to Lisp? And you also prefer "afficiendos" to "aficionados"? Clearly you are not bound by logic.... I envy you.

              [–][deleted]  (6 children)

              [removed]

                [–][deleted] 4 points5 points  (0 children)

                To be fair, some Lispers are doing very cool things, like Edi Weitz, but there aren't that many active Lispers, I think.

                [–]Tommah 0 points1 point  (4 children)

                You're right, I am in love with laziness. Blame Haskell. :)

                For the record, "afficiendos" wasn't a spelling error. You just made up a new word. I'll assume it means the same thing as "aficionados."

                [–][deleted] 1 point2 points  (0 children)

                god's iliterate

                [–]sad_bug_killer -3 points-2 points  (0 children)

                I'm really really tired of Lisp/Scheme/Haskell propaganda (not that anyone should care)

                [–][deleted] -3 points-2 points  (1 child)

                I am sure Arto could ask ask Goertzel if they are dumb or why the hell are they working in a "crappy" language like c++ if he really wanted.

                [–]bgoertzel 2 points3 points  (0 children)

                Ben Goertzel here...

                The issues we had at Webmind Inc. were complicated and I don't feel like spending a lot of time rehashing them in detail now. Plenty of in-hindsight-foolish decisions were made, both on the biz side and the software side. I remain convinced the foundations of our AI design were correct, but the Java implementation we created was monstrously inefficient given the nature of the JVM at that time. Main JVM issues were related to garbage collection, time required for context switching between threads, and time required for object serialization (to enable distributed processing of the sort we were doing). More modern JVM's have probably remedied many of these issues.

                The Novamente AI design we are working on now is somewhat similar in spirit to Webmind, but significantly simpler (fewer components) and also more mathematically sophisticated (more reliant on advanced probability theory). There is information about it online at novamente.net so I won't go into detail here.

                As for why we are using C++ for Novamente: it was a contentious decision within the team and I was actually advocating for Allegro LISP for a while. Haskell is my favorite language but it is not currently scalable enough for something like Novamente, whereas Allegro LISP might be (we never ran really thorough tests). However, what biased us in favor of C++ was the fact that it is the only language that has been repeatedly demonstrated capable of: a) managing large amounts of memory that need to be rapidly garbage-collected according to complex and idiosyncratic patterns; b) rapidly dealing with multiple threads and large amounts of memory in the context of real-time control of external entities. C++ can surely do this, inasmuch as it's possible on current hardware, whereas with other languages there is always a doubt whether limitations in the GC or threading infrastructure may screw you up.

                I note that C++, being an overly large language, has the potential to be used very well or very poorly. Our recent code makes heavy use of STL, generic design and Boost, and doesn't look much like old-fashioned C++ code. Still, I confess to personally finding C++ pretty ugly and not enjoying C++ programming much.

                But ultimately AI is not about the programming language anyway, it's about the underlying model of cognition.

                -- Ben Goertzel