Slashdot Mirror


Lisp as an Alternative to Java

Joseph Dale writes "Lisp as an Alternative to Java is a detailed and well-reasoned study comparing Lisp to Java and C++ in terms of execution time, memory consumption, and developer effort. The author, Erann Gat, was the principal software architect for the Mars Science Microrover, the prototype for the Mars Pathfinder rover."

372 comments

  1. It's about the API by The+Ultimate+Badass · · Score: 4, Troll

    I don't care if LISP runs 500 times as fast as Java. It has a massively restricted API. People don't base their language choice on speed anymore. FORTRAN is still twice as fast as C, but everyone still uses C, for two reasons: FORTRAN is harder to learn, and C has more libraries.

    Java's great strength is that it has a huge set of APIs, all in a unified form, making programming a less repetitive and painful experience. Java is for people who understand that recoding the same search tree three hundred times is not going to make them richer, cooler or a better programmer. LISP is for people with time to waste.

    --

    Denial isn't just a river in Italy

    1. Re:It's about the API by Anonymous Coward · · Score: 1
      Java is for people who understand that recoding the same search tree three hundred times is not going to make them richer

      It's for people who don't care to write lean and fast code.

      I almost couldn't believe it when I got Matlab 6 at work and its GUI and API had been re-written in Java. Slow as shit until I disabled almost all of the GUI. I wonder who the moron who suggested Java for Matlab was? I'd sure like to kick his ass for almost ruining a great program.

    2. Re:It's about the API by Anonymous Coward · · Score: 0

      Utter complete hogwash. I've programmed in
      both FORTRAN and C, and FORTRAN is no more
      difficult or faster than C.

    3. Re:It's about the API by Anonymous Coward · · Score: 0
      Fortran is more difficult to read because the subroutine arguments are passed as pointers not by value.

      Any subroutine may change the value of an argument and you can't see it from the calling routine. Thus, you have to read the WHOLE program in depth in order to understand it.

      Passing arguments by value and returning them is much cleaner.

    4. Re:It's about the API by lars_stefan_axelsson · · Score: 2, Interesting
      Well, all that repetition that you claim one must do to program in Lisp (Scheme in my case) should translate to longer development times, shouldn't it?

      Then how do you explain that the development times reported for Lisp were about half those of Java, comparing the median?

      --
      Stefan Axelsson
    5. Re:It's about the API by Anonymous Coward · · Score: 1, Informative

      Lisp has libraries that implement calls to/from native code, OOP (with much more powerful overriding and multiple dispatch), database access, and GUIs. Data structures are its forté (as befits its AI origins). Java (which doesn't even have #'remove-if) is still a toy in comparison. Its only advantages are the sandbox (and I admit the world desperately needs safe mobile code) and a baroque syntax that doesn't hurt the poor C programmers' little heads.

    6. Re:It's about the API by redhog · · Score: 5, Informative

      Nahnah. You haven't touched a LISP the last 20 years or so, have you? There's a popular LISP dialect called Scheme. It has a huge function library called slib, and there are bindings for a hell lot of C libraries for Scheme (it is also very easy to create new such bindings for most implementations of scheme).

      --
      --The knowledge that you are an idiot, is what distinguishes you from one.
    7. Re:It's about the API by Anonymous Coward · · Score: 0
      that doesn't hurt the poor C programmers' little heads.

      You're right. LISP syntax hurts as does functional programming in general.

      You people should make reality checks more often. Yeah, perhaps functional programming is beautiful and more true to the form of the theory of computation. Still, you can use it effectively only for a few exotic applications.

    8. Re:It's about the API by Compinche · · Score: 1

      With Kawa, you can run Scheme programs in a Java Virtual Machine (just about any platform). It generates bytecodes from the Scheme source. And it allows you to use java classes, i.e., the java standard class libraries. This can help move people to Scheme, or, to at least give it a try.

    9. Re:It's about the API by gowen · · Score: 2
      Fortran is more difficult to read because the subroutine arguments are passed as pointers not by value.


      Thats true, but Fortran is mainly used in scientific computing, where arguments are often arrays, and frequently arrays of such size that passing them by anything other than reference is insane, not to mention undesirable.

      Well defined function names and documentation will tell a reader which functions modify which arguments, anyway.

      --
      Athletic Scholarships to universities make as much sense as academic scholarships to sports teams.
    10. Re:It's about the API by Anonymous Coward · · Score: 0

      Where *did* you get the idiot idea that Lisp == functional programming? Lisp isn't ML.

    11. Re:It's about the API by Anonymous Coward · · Score: 0
      You're the idiot.

      Common LISP is not a "pure" functional language, because it contains constructs such as SETQ, LET, and DOTIMES that mimic the assignment, local scope, and loop features found in procedural languages. However, LISP does contain a number of functionals and supports a functional style of programming.

      COSC 337: LISP Functional Programming Features

    12. Re:It's about the API by Anonymous Coward · · Score: 0

      I see. Lisp isn't functional, but you criticize because functional programming is useful only for a few exotic applications.

      In other words, your post was either offtopic or lying.

    13. Re:It's about the API by Anonymous Coward · · Score: 1, Insightful
      I agree that FORTRAN is hard to read, since everything ends up looking like a dog's breakfast, but it's certainly not hard to program.

      Nor is it faster than C.

    14. Re:It's about the API by gawi · · Score: 5, Informative

      From what I've seen of SLIB, it is not comparable with the Java 2 platform (standard edition) version 1.4. :

      Threads

      I/O (blocking or non)

      Reflection API

      Weak references (and the likes)

      Networking (including http client, ipv6 support, URLs, datagrams, network interface)

      RPC (RMI, CORBA)

      Security (permission, keys)

      Relational database API (implemented by MANY vendors, you can often *choose* your implementation...)

      Text formatting

      Data structures (OK, needs functional improvements, I agree)

      Useful classes: date, calendar, locale, time zones, currency, timer...

      Logging

      Regexp

      Zip

      Preferences

      Accessibility

      Imaging API

      Naming API (directories, ldap)

      Printing API

      GUI API (awt, Swing)

      XML parser + DOM + SAX

      XSLT

      Components (java beans)

      Sound

      Should I continue with enterprise edition?

      I think no langage can compete with Java in terms of API richness and uniformity.

      --
      All humans are mortal. Socrates is a human. Socrates is dead.
    15. Re:It's about the API by jovlinger · · Score: 2

      I would be interested in how LISP and Scheme work in a team programming environment. I definitely agree that they are great languages for my own hacking, but am not sure how the almost fanatical flexibility would interact with teams.

      Or to ask the question in reverse: why did Dylan choose to move to a pseudo OO paradigm with optional type checking?

      I suspect the answer is that for larger projects, the skeleton/framework provided by a more static system allows some bugs to caught early, and in general acts to guide development.

      Has anyone used LISP/Scheme in a larger project?

    16. Re:It's about the API by Wavicle · · Score: 5, Insightful
      He was comparing apples to oranges near as I can tell. I can't actually read the original paper so it is kind of hard to tell, but the Lisp group was all self selected experts. Read carefully the stated problem and explain to me how anyone could take 63 hours to complete it in Java? The average experience of their Java sample set was 7.7 years!?!!!!! Didn't Java come out in 1995? Where did they find a panel of OAK seed developers? After re-reading that section it looks like he interchanges "years of programming experience" with "years of experience in that language". So why weren't we given the average number of years with experience in that particular language?

      Secondly he was using a task which Lisp is very good at, and well optimized for - list processing. People working in Lisp tend to be well exposed to this kind of problem.

      --
      Education is a better safeguard of liberty than a standing army.
      Edward Everett (1794 - 1865)
    17. Re:It's about the API by GodSpiral · · Score: 1

      ... and finally, its a program with no UI.

    18. Re:It's about the API by andreas · · Score: 1

      The Dylan OO system was modelled after the Common Lisp Object System, so your point doesn't apply. Also the idea of optionally checking types at compile time was present in Common Lisp. Dylan just presents those features in a syntax more appealing to the general public (plus a lot of tweaking to make method dispatch faster, and function names nicer).

      And the OO system isn't "pseudo" either, the generic function model is a superset of the message-passing model known from other languages, and thus more powerful.

    19. Re:It's about the API by Andreas+Rueckert · · Score: 1

      Take a look at Silk, a Scheme interpreter as a jar, that you can use in your java apps. I used it for scripting in ArgoUML and liked it a lot.
      http://www.cs.brandeis.edu/silk/silkweb/index.html

    20. Re:It's about the API by reflective+recursion · · Score: 2, Informative
      It has a massively restricted API.
      Oh my god. Please. Get CMUCL or CLISP. These are Common Lisp implementations (not Scheme). I am simply amazed at the library features available that even C does not have. And they do have a FFI (foreign function interface) which allows you to call C functions (albeit, not portably).

      Do yourself a favor and learn about Common Lisp. Not all members of the LISP family are equal. You are most likely thinking of Scheme. Scheme is a reduced API (on purpose) used mostly for academic purposes. It is most likely what you are taught in CS at the University. Common Lisp is the API heavy LISP with everything (probably the kitchen sink too! though I haven't found it yet).

      Great place to start
      The Common Lisp HyperSpec (The ANSI CL standard reference) -- view this for the API features

      Java's great strength is that it has a huge set of APIs, all in a unified form, making programming a less repetitive and painful experience. Java is for people who understand that recoding the same search tree three hundred times is not going to make them richer, cooler or a better programmer. LISP is for people with time to waste.
      You obviously do not know or understand LISP (the entire family). Learn it (CL would be your best bet). Do not just trash it without understand what it is all about.
      --
      Dijkstra Considered Dead
    21. Re:It's about the API by reflective+recursion · · Score: 1

      You seem to have not touched LISP in the last 20 either. Please check out Common Lisp. Scheme is designed to be small (and slib is not what I would consider a language library.. it's more of an add-on).

      Common Lisp HyperSpec (ANSI standard)

      --
      Dijkstra Considered Dead
    22. Re:It's about the API by multicsfan · · Score: 2
      I found FORTRAN very easy to learn and use. I've found C/C++ very difficult. Actually, of all the languages I have used, C and C++ have been the two hardest to learn.

      I've worked in 10 different flavors of FORTRAN, several versions of PL/1, several versions of Basic, several assemblers including machines no one here has probably heard of (ITT ADX-9303, interrupt driven I/O only), SNOBOL, APL, LISP, PERL, and others I don't readily remember. I haven't looked at JAVA. C/C++/JAVA seem to be languages that need huge support libraries to overcome the lack of builtin features and capabilities.

      My use of C/C++ has always been frustrated by the lack of language features and abilities that make things easy.

    23. Re:It's about the API by Anonymous Coward · · Score: 1, Interesting
      probably the kitchen sink too!

      That would be #'format, CL's answer to printf which can produce two different flavors of Roman numerals. The ANSI committee did go a little over the top in places....

    24. Re:It's about the API by smartfart · · Score: 1
      Fortran hard to learn? you're kidding, right?

      I'll give you that there are more libs available for C, but fortran is the language of choice among engineers, physicists, and the like.

    25. Re:It's about the API by RevAaron · · Score: 2

      Common Lisp has a huge library as well.

      --

      Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
    26. Re:It's about the API by cakoose · · Score: 1
      I'll give you that there are more libs available for C, but fortran is the language of choice among engineers, physicists, and the like.

      If only physics was the major of choice among the mentally stable.

    27. Re:It's about the API by Goldhammer · · Score: 1


      I don't care if LISP runs 500 times as fast as Java.

      Well, then, you're a moron. I used to think nobody who spouts this sort of hyperbole was serious. But then, after using the Forte development environment for Java, I realized that yes, Java programmers really don't care if what they write is 500 times slower than it should be.

      It has a massively restricted API. People don't base their language choice on speed
      anymore.

      Obviously you have never done any scientific computing.

      FORTRAN is still twice as fast as C, but everyone still uses C,

      No, Fortran is at least as popular as C in the scientific programming scene.

      for two reasons: FORTRAN is harder to learn, and C has more libraries.

      Heh. C doesn't even have an exponentiation operator. Considering this small fact could give you a bit of insight as to why much scientific programming is still done in Fortran. No amount of C libraries can give the numerical programmer the expressive power of Fortran's whole-array syntax. E.g., to find the average of values greater than 500 in an array of any dimensions:

      avg = sum(a, mask = (a > 500))/ count(mask = (a > 500))

      initialize the array b element-by-element to the
      square root of corresponding elements of a:

      b = sqrt(a)

      etc., etc.

    28. Re:It's about the API by mdalgarno · · Score: 1

      As some of the other posters note Lisp has all the support you need for rapid development of large (or small) general purpose applications and with Common Lisp it's had the support for years.

      Check out The Association of Lisp Users for lists of companies using lisp commercially.

      Mark

  2. Statistically meaningless by GruffDavies · · Score: 3, Insightful
    There were only 14 participants in the study. The conclusions drawn are statistically meaningless. And without some kind of measure of the level of skill of the participants in each language prior to the experiment it's not possible to do weight the answers sensibly either.

    1. Re:Statistically meaningless by philipm · · Score: 0

      Statistically speaking it is impossible to draw conclusions about the validity of a statistical study without doing a *bigger* statistical study. So its very clear that you don't count.

    2. Re:Statistically meaningless by Anonymous Coward · · Score: 0

      The paper is written 1999, the purported *average* # of years experience for the java developers is 7.7.

      When did they start writing java, 1992?

      I like both languages, but the paper is not very useful.

  3. Missing the point. by ried · · Score: 3, Insightful
    The secret isn't getting a language/API to run faster than what's out there today. It's a matter of widespread adoption.

    Just like BeOS was fast as hell, it didn't matter much because 5 people used it (sorry, Be people).

    If you can create a language that will execute faster within the JVM, for example (hypothetical here), then you'd have something. Speed is relatively minor thing, and unless you code for compatibility, it won't matter how fast your stuff runs (or can be developed).

    1. Re:Missing the point. by Anonymous Coward · · Score: 0

      Speed is relatively minor thing, and unless you code for compatibility, it won't matter how fast your stuff runs (or can be developed). thank god you dont work with me or I would laugh at you all day long...ha ha ha!

    2. Re:Missing the point. by Anonymous Coward · · Score: 0

      what do you do?
      code 3D games?
      maybe you're writing a ray tracer?

      If you were doing any type of business application or dynamic web piece, even 5 year old hardware is more than fast enough for modern java VMs

      And thank god I don't work with you.
      I'd fire you for being so obviously ignorant and uneducated.

    3. Re:Missing the point. by Kalani · · Score: 1

      ... so obviously ignorant and uneducated.

      It's interesting how you seem to define those terms.

      --
      ___
      The ends are ape-chosen, only the means are man's. -- Aldous Huxley
  4. Writeability vs. Readability of LISP/JAVA by Aaaaaargh! · · Score: 3, Insightful

    Programming in LISP is a breeze, Java slightly less so (at least in my mind). But what about maintenance? Other people debugging your code? Have you ever had the misfortune of modifying a poorly documented LISP program? It's a good deal harder to do than for a poorly documented Java program.

    --
    Give them an inch and they'll take a foot. Much more than that, you won't have a leg to stand on.
    1. Re:Writeability vs. Readability of LISP/JAVA by philipm · · Score: 0

      You are comparing the wrong thing.
      A well documented lisp program is barely up to the standards of a poorly documented java program.

    2. Re:Writeability vs. Readability of LISP/JAVA by Anonymous Coward · · Score: 0
      Programming in LISP is a breeze

      That is, if you can get your head around functional programming.

      I never could and now I'm a Physicist instead of a CS graduate for which I enrolled in the first place.

      Recursion is evil and unnatural. I have even had a recursive, self-referential nightmare.

    3. Re:Writeability vs. Readability of LISP/JAVA by Anonymous Coward · · Score: 0

      Lisp is perfectly compatible with an imperative programming style. It's typically *taught* as if it were a functional language, but it isn't.

      Common Lisp was also the first standardized OO language.

    4. Re:Writeability vs. Readability of LISP/JAVA by jonathan_ingram · · Score: 3, Informative

      Recursion is neither evil nor unnatural. It's the natural way to define many things.

      For example, what's the natural way to define the factorial, n! ?

      0! = 1
      n! = n * (n-1)! if n > 0

      Clear and simple.

      Suppose I have to perform a function on every node of a rooted tree:

      starting with the root:

      walk through any children.
      process the current node.

      And that will translate directly into clear and easy to understand (and easy to debug) code.

      You think and use recursion every day, you just don't recognise it. That's not to say that recursion is the only thing that should be used, but when used correctly it makes code very easy to understand.

    5. Re:Writeability vs. Readability of LISP/JAVA by Anonymous Coward · · Score: 0
      And that will translate directly into clear and easy to understand (and easy to debug) code

      Based on that comment I take it you have never had to analyze the complexity of a recursive function...

    6. Re:Writeability vs. Readability of LISP/JAVA by jonathan_ingram · · Score: 1

      Why should analysing complexity have anything to do with readability or easy of debugging?

      I've not have to analyse complexity for a while, but I'd be happier to do it with clear recursive functions and a handy copy of Concrete Mathematics by my side than some god-awful iterative mess that hides the whole point of the function.

    7. Re:Writeability vs. Readability of LISP/JAVA by Anonymous Coward · · Score: 0

      > Recursion is neither evil nor unnatural. It's
      > the natural way to define many things.
      The person you replied to didn't even mention recursion.... (You CAN use recursion in java, you know) Man, if you think lisp is easier to read than java... Then you must be one of those people who thinks linux is easy enough for the masses to set up and maintain

    8. Re:Writeability vs. Readability of LISP/JAVA by Pseudonym · · Score: 2

      You're an experimentalist, right? :-)

      Seriously, LISP is to functional programming what Fortran is to imperative programming, or what Simula is to object-oriented programming. Modern functional programming is pure algebra.

      Try out Haskell, Clean, or ML. You might be pleasantly surprised.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    9. Re:Writeability vs. Readability of LISP/JAVA by Anonymous Coward · · Score: 0
      Actually I'm a computational Physicist gone bad and turned into an experimentalist. ;-)

      During my brief sting as a comp. phys. researcher I didn't see much functional programming, though. Tight, fast imperative loops.

    10. Re:Writeability vs. Readability of LISP/JAVA by Anonymous Coward · · Score: 0

      Yes, but recursing in Java will often eat stack. Properly tail-recursive LISP (i.e. all modern lisps (er... CL and Scheme :-)) will recurse without eating all available memory.

    11. Re:Writeability vs. Readability of LISP/JAVA by djmurdoch · · Score: 1
      One of the main reasons LISP is unreadable to outsiders is because of their choice to stick with such bizarre syntax. All of the nice features of LISP could exist in a language with a more standard (i.e. Algol-like) syntax, but the LISPers insist on sticking with their lambda's and defun's and car's and cdr's.


      I know there have been more standard syntaxes put on top of LISP (e.g. muSimp), but LISPers have rejected them, making all of their programs completely unreadable to outsiders.


      I don't program in C, but I can read C programs. I can't read LISP, even though at various times in the past I've learned its simple syntax.

    12. Re:Writeability vs. Readability of LISP/JAVA by uriyan · · Score: 1

      Two words: stack overflow. Of course recursion is an elegant technique, but it's hardly a way to program. Let's look, for example, at Fibonacci numbers example (factorial grows far too quickly). Fib(n) = Fib(n - 2) + Fib(n - 1). That means that using recursion, Fib(n) belongs to O(n ^ 2). To get a Fib(1000), not an unreasonable number, you'll have to wait a few weeks.

      Now if you will use plain old-school itteration, the algorithm will belong to O(n) and space requirements will also diminish - rather than the - minimal - 8 bytes for return address and return value for each of the n ^ 2 recursive instances you'll have 4 bytes for each of the n - 1 previous numbers.

      Now I'm not saying that recursion is forbidden, or that there aren't places where it can be used safely and elegantly, but doing everything with it is bad. I once had to write an strcmp() in Prolog, and I do not wish that even my worst foe to do it again.

    13. Re:Writeability vs. Readability of LISP/JAVA by DGolden · · Score: 1

      Naah - it's that outsiders learned other language's bizarre syntaxes first.

      I find LISP easier to read than most other languages (but I'm an irish speaker (verbs come first in sentences), and there's a theory that programming language comprehension depends on natural language comprehension), and the purity of the syntax means that writing programs that operate on programs is very easy (hence its popularity with AI researchers).

      Then again, it could just that I'm wierd. I like APL and Forth too....

      --
      Choice of masters is not freedom.
    14. Re:Writeability vs. Readability of LISP/JAVA by jonathan_ingram · · Score: 1

      I *think* I replied to an anonymous coward, who must subsequently have been moderated down to -1.

      Lisp is easier to read than Java in a couple of ways. Mainly because the brackets tell you all you need to know about the program structure. no need to look for semi-colons, or braces, or line breaks, or whatever. This makes lisp incredibly easy to parse and manipulate... particularly if you use a decent editor.

      But yes, prefix notation is not what we are conditioned to read these days -- infix is the way. That's why I tend to use Python.

    15. Re:Writeability vs. Readability of LISP/JAVA by Anonymous Coward · · Score: 0

      Um... that's why Scheme and common lisp are "properly tail recursive" - you can write recursive routines without ever-increasing stack.

    16. Re:Writeability vs. Readability of LISP/JAVA by Anonymous Coward · · Score: 0

      Any tail recursion can be translated into a loop. No need for "smart" tail-recursive languages.

    17. Re:Writeability vs. Readability of LISP/JAVA by Anonymous Coward · · Score: 0

      Now if you will use plain old-school itteration, the algorithm will belong to O(n) and space requirements will also diminish - rather than the - minimal - 8 bytes for return address and return value for each of the n ^ 2 recursive instances you'll have 4 bytes for each of the n - 1 previous numbers.

      Or, you can solve the formal power series for Fibonacci numbers and find the equation that gives you any Fibonacci number in O(1)

    18. Re:Writeability vs. Readability of LISP/JAVA by Anonymous Coward · · Score: 0

      Conversely, any loop can be translated into tail-recursion. No need for "stupid" languages with specialised iteration...

    19. Re:Writeability vs. Readability of LISP/JAVA by SuperKendall · · Score: 2

      I have to say that I'm a huge fan of Scheme (a lot like Lisp) and did a lot with that in school, but now I'm a corperate Java programmer...

      I'm not sure I agreee with your argument though - Yes, with a good editor (defined as Emacs, I'm not sure how well Vim would take on Lisp code [I'm probably maligning it unfairly here]) Lisp code is fairly easy to follow - though the old joke of someone having hacked in to get the Lisp code for SDI and printing out the last page as proof (4000 ')' in a row) has a ring of truth to it.

      Similarily though, loading any Java code into emacs and just running "indent-region" over the whole document will give my easily readable code even over poorly formatted and undocumented stuff. I've never run into any Java code taht wasn't easy to understand after one pass with a reformatter, and I think that would be true of almost any language now.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    20. Re:Writeability vs. Readability of LISP/JAVA by e40 · · Score: 1

      So, you think java is easier to read than lisp. Are you a java programmer by any chance, or do you know both languages equally well (or not)?

    21. Re:Writeability vs. Readability of LISP/JAVA by e40 · · Score: 2, Insightful
      One of the main reasons LISP is unreadable to outsiders is because of their choice to stick with such bizarre syntax...

      First, you obviously haven't used lisp. Second, you have missed the entire point of the syntax of lisp. The syntax of lisp is the same as data in lisp, s-expressions. The function read can be used to read a piece of code or a data. If you don't see the utility of this, god help you.

    22. Re:Writeability vs. Readability of LISP/JAVA by Anonymous Coward · · Score: 0

      " The function read can be used to read a piece of code or a data. If you don't see the utility of this, god help you."

      Yep, it enables easily-written self-modifying code.

      If you can't see the futility of this in most non-AI environments, god help you.

    23. Re:Writeability vs. Readability of LISP/JAVA by jonathan_ingram · · Score: 1

      The problem I find with Java (and C++, it's cousin), is the sheer amount of verbiage you need to write anything. For example - both Lisp and Python are strongly typed, but not statically typed, which means you don't have to declare the types of variables... which cuts down on clutter. After a couple of hours of apprehension, I've also grown to love Python's semantic spacing - I've always indended code to indicate nesting, and now I don't have to indicate it in a second, redundant fashion.

      Whenever I try to read Java, I find it very hard to see the wood for the trees -- it's the same problem people have with the parentheses in Lisp, I suppose.

    24. Re:Writeability vs. Readability of LISP/JAVA by hding · · Score: 2

      Actually, it turns out to be incredibly useful for reading and writing any sort of data - not just code.

    25. Re:Writeability vs. Readability of LISP/JAVA by e40 · · Score: 2, Informative

      Yep, it enables easily-written self-modifying code.

      If you can't see the futility of this in most non-AI environments, god help you.

      Huh?? I've never written a single AI program in my life. Program and data being the same are good for far more than self-modifying programs. To name some uses: program analysis, program configuration (read and eval the data), and macros. The latter is probably the single most important thing in lisp. Unlike pattern substitution in most other languages, macros in lisp are really powerful. See this for more info on macros.

    26. Re:Writeability vs. Readability of LISP/JAVA by andreas · · Score: 1

      If you don't like Lisp or Scheme because of the syntax, give Dylan a try. It inherited all the good things from this world, but has a Algol-style infix syntax.

    27. Re:Writeability vs. Readability of LISP/JAVA by TWR · · Score: 2
      Tail recursion (which is what most recursive calls are) is trivial to optimize out and turn into a loop behind the scenes. That's what most LISP environments do.


      -jon

      --

      Remember Amalek.

    28. Re:Writeability vs. Readability of LISP/JAVA by hding · · Score: 2

      Actually the standard doesn't require Common Lisp to be tail recursive. A decent implementation should be, however, at least at appropriate optimization settings.

    29. Re:Writeability vs. Readability of LISP/JAVA by hding · · Score: 3, Informative

      Why is it relevant how readable a program written in some language one doesn't know is? I don't think there's anything wrong with Russian because I can't gain any understanding from looking at a Russian text. I think people who know (i.e. use regularly, not studied for two weeks one semester in school) Lisp find it perfectly readable.

    30. Re:Writeability vs. Readability of LISP/JAVA by djmurdoch · · Score: 1

      The original article was wondering why LISP hasn't caught on. That's why readability to outsiders is relevant.

      LISP hasn't caught on because non-LISP-users can't see that it provides good solutions to problems that interest them. If a language is going to become popular, then it has to appeal to non-users somehow, not just people who already know it.

      Russian and English provide essentially the same expressiveness, so the only real arguments to learn one or the other are based on the existing base of literature and speakers. That's not true of C and LISP: they are very different languages underneath.

      But LISP need not be so different on the surface. There are languages with Algol-like notation when written as text, but internal representations that are essentially the same as LISP. The one I've used is muSimp, someone else mentioned that Dylan has lots of the nice things from LISP. (I've never even read any Dylan, so I might have misinterpreted that comment.)

      Someone else seemed to think you'd have to lose the ability to have programs write programs if they were presented in Algol-like syntax. That's nonsense: most LISP programs don't work on the text representation of the code, they work on the internal representation as lists. Why would that have to break?

      It's a mechanical transformation to convert from one form to the other. Even if you did want your program to work on source code, you'd just make use of a parser to convert the standard-looking code into the internal representation. You have a pretty-printer routine to convert back (or save a copy of the source text if you wanted to preserve non-syntactical things like whitespace). Those sorts of things are not hard to write. LISP already makes use of translators: all those silly parentheses don't need to be stored, they're just there to allow linear text to represent non-linear lists.

      All I'm suggesting is that the language would have been much more popular if around 1980, when just about everyone else in the world had settled on Algol-like syntax, LISP had adopted something similar.

    31. Re:Writeability vs. Readability of LISP/JAVA by SuperKendall · · Score: 1

      I don't have problems with parens in lisp, or really any langauge - I've had a lot of Scheme (and also some elisp) experience and find the syntax not bad at all...

      I hate semantic spacing though. To me the whitespace in a program can be altered to make a particular section more readable - anything that demands an exact spacing or your program will not run correctly to me seems folly, and exactly the wrong way to drive things. Instead I think trying to reach a system where different representations of a language (for different audiences) would be a much better approach to take.

      As for the verbosity of Java, I have to say that given proper editor support I don't consider verbosity in any langauge to be a problem. Also, given fiarly powerful libraries the overall amount of code to be written is reduced.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    32. Re:Writeability vs. Readability of LISP/JAVA by Aaaaaargh! · · Score: 1
      I wasn't really commenting on its readability to outsiders (those who don't program regularly in LISP), but on people who do regularly program in LISP.

      Readability and writeability are two of the criteria used when evaluating a language (usually within the context of a particular problem domain). In general, LISP has good writeability, i.e. - a programmer can express their intent easily in code. However, LISP has fair to poor readability, in that a programmer (many times the same one) cannot easily discern what the code does once it has been written.

      --
      Give them an inch and they'll take a foot. Much more than that, you won't have a leg to stand on.
    33. Re:Writeability vs. Readability of LISP/JAVA by Aaaaaargh! · · Score: 1
      Oops, long day:

      I wasn't really commenting on its readability to outsiders (those who don't program regularly in LISP), but on people who do regularly program in LISP.

      Replace bold text with: on its readability to people who do

      --
      Give them an inch and they'll take a foot. Much more than that, you won't have a leg to stand on.
    34. Re:Writeability vs. Readability of LISP/JAVA by djmurdoch · · Score: 1

      I suspect if an effort were made to make it readable to either insiders or outsiders it would end up a lot more readable to the other group, too.

    35. Re:Writeability vs. Readability of LISP/JAVA by Anonymous Coward · · Score: 0

      Heh heh, true. But then I might find the wolves at my door one day if that happened...

    36. Re:Writeability vs. Readability of LISP/JAVA by cakoose · · Score: 1

      Um... that's why Scheme and common lisp are "properly tail recursive" - you can write recursive routines without ever-increasing stack.

      Um... the fibbonacci algorithm the parent post provided wasn't tail-recursive. Only tail-recursive functions are optimized by "properly tail recursive" compilers.

    37. Re:Writeability vs. Readability of LISP/JAVA by jsse · · Score: 1

      I think people who know (i.e. use regularly, not studied for two weeks one semester in school) Lisp find it perfectly readable.

      Hey, by coincidence, a perl guy find a piece of perl code, which looks like an ciphered text to me, perfectly readable!

    38. Re:Writeability vs. Readability of LISP/JAVA by mdalgarno · · Score: 2, Informative

      It may be worth mentioning that much Lisp code is automatically generated using Lisp's macro mechanism. Lisp's simple syntax makes this possible.

      Another point is that Lisp programs tend to be much shorter than programs in languages like Java / C++ for the equivalent functionality. See the figures in the study for example.

      This makes them significantly easier to modify and maintain.

      Mark

  5. I'm a professional who uses Java by under_score · · Score: 5, Informative

    This is quite an interesting study. I use java professionally for most things that I do (I have also used C, Objective-C and a few others in the past). I have had to work with lisp a bit. Of course I took a lisp oriented AI class in school, but since then I have also had to do some porting from lisp to Java! Perhaps it was just a factor of the people who developed the lisp code, but I found it incredibly difficult to read - and my complaint wasn't with the nesting of parentheses. It wasn't strongly typed (is there such a lisp?) and the singular type of syntax (lists) make many aspects of the code difficult to unravel. That said, there are some things I really like about lisp, in particular its dynamic nature where you can build lisp functions at runtime and execute them at runtime. Sometimes I really wish I could do this easily with Java (its possible to do, just a huge pain in the butt). I think the real issue right now is that Java (and C++) are used in the "real world", whereas lisp is mostly isolated to academia. The article point this out. I've used Java for huge projects because it is no longer considered a risky language by large organizations. For whatever reason, lisp has not developed such a reputation. Does lisp have application servers? Does lisp has db connectivity? Does lisp have CORBA bindings? Does lisp have asynchronous messaging? Does lisp have naming and directory bindings? Does lisp have web page templating functionality? I'm sure all that stuff could be built, but I doubt most of it exists right now. Therefore, lisp is not acceptable for corporate use at this time.

    1. Re:I'm a professional who uses Java by Anonymous Coward · · Score: 0

      Most or all of those things have been built in Lisp, and many are available for free or bundled with commercial Lisps.

      BTW, my group uses Lisp in a corporate setting. For what we do Java would be a very inferior replacement.

    2. Re:I'm a professional who uses Java by Lambdaknight · · Score: 5, Informative

      > Does lisp have application servers?

      Yes

      > Does lisp has db connectivity?

      Yes

      > Does lisp have CORBA bindings?

      Yes

      > Does lisp have asynchronous messaging?

      Yes

      > Does lisp have naming and directory bindings?

      Yes

      > Does lisp have web page templating functionality?

      Yes.

      Two points more:

      1. Doubt is not knowledge. Many people THINK they know about the popularity of Lisp because they don't hear as much about it as they hear from the hype languages (which is quite logical).

      There are far more Lisp projects going on than people imagine, only people don't scream out "HEY! COOL! I'M DOING IT WITH LISP!" they go "Yepp, I'm using Lisp." the Yahoo Store engine for instance. Microsoft's Bob. Many industrial applications (not only the academia!).

      2. The syntax isn't hard to read, it's just hard for people not used to it. This is, of course, true for every language.

      Besides: Common Lisp is not strongly typed but you can strongly type a specific function by declaring what types the arguments will have. That makes Lisp a "strong typing on demand"-language in my point of view.

      --
      -- Beware the Jabberwock, my son!
    3. Re:I'm a professional who uses Java by under_score · · Score: 2

      Most or all of those things have been built in Lisp, and many are available for free or bundled with commercial Lisps. BTW, my group uses Lisp in a corporate setting. For what we do Java would be a very inferior replacement. Okay I'll grant you that I am not very familiar with the commercial lisp vendors and what they offer. But then the question remains: why is lisp not used more in a corporate setting? Probably the real reason is based on marketing and promotion. Java has a single organization which sets/guides the development of the whole platform. Sun has spend a lot of time and money promoting and branding Java. There is one standard way of binding Java to all those different enterprise modules. Is this so in lisp? Again, I don't know, but I doubt it. Is there an enterprise standard (de facto or de jure) for lisp? Is there one organization with lots of money to promote lisp into corporations? These are probably the real reasons. My other comment just reflects my own ignorance, but that ignorance is due to the lack of unified promotion and standards for lisp.

    4. Re:I'm a professional who uses Java by under_score · · Score: 2, Informative

      Ah. Well, I do appologize for my ignorance. As I mention in another comment, then perhaps unity of promotion and standards might be other issues. The question remains: why is lisp not used more in enterprise settings while Java is rapidly overtaking c++?

    5. Re:I'm a professional who uses Java by Anonymous Coward · · Score: 0

      Because Java is just old-fashioned and brain-damaged enough (come on, int vs. Integer?) to appeal to the same people who decided writing end-user apps in a crufty minefield of a language like C++ was a good idea, when Smalltalk and Eiffel were already known to be far easier and more robust.

    6. Re:I'm a professional who uses Java by Lambdaknight · · Score: 5, Insightful

      Well, people don't know it or have prejudices against it like you. And there's noone hyping it to the end.

      The reason why it's not hyped is because Lisp HAD a hype in its history whose decline happened to the same time (and was mostly induced by) the AI winter.

      Most Lisp programmers from that time have still a bad taste in their mouths because of that hype (mind, that the hype was over was not because Lisp is a bad language but because the AI winter) so they won't start another.

      Younger Lisp programmers (like myself) are both happy and unhappy about the lack of a hype.

      Happy because that means you have a much more undisturbed basis on which you can settle your community. The community efforts and activities are easily overseeable and you always know what's going on.

      Unhappy because the community isn't very large and so activities DO happen, but more slowly than in the Java or Perl community because we have fewer people.

      As an example: that article is from 1999 and is widely known in the Lisp community... but only today it has been published on Slashdot.

      If someone writes an article about Perl, it is released immediately here.

      Keep in mind that 2 years are an eternity in computer terms.

      --
      -- Beware the Jabberwock, my son!
    7. Re:I'm a professional who uses Java by under_score · · Score: 2

      Don't get me wrong. I don't think I said anywhere that Java was a good language. In fact you are right - there are many things that suck about it. I loved Objective-C and wished for 6 years that NextStep/OpenStep/WebObjects would catch on so that I could be one of the good-old-boys from the early days. Objective-C was a great language compared to Java. Mind you, Smalltalk and Eiffel are even better, and I know it.

    8. Re:I'm a professional who uses Java by under_score · · Score: 2

      You are right: I did and probably still do have lots of prejudices about many other computer languages including lisp. My experience with lisp is deeper than my experience with say Perl, so I thought I could offer at least a small comment. As well, I did phrase most of my comment as questions - does lisp have bindings to XXXXXX? There were two or three years when Java was really struggling to find itself: applets, gui apps, etc. That time was when I was transitioning from Objective-C to Java, mostly due to market demands and job opportunities. I'm very lucky that my enterprise development background in Objective-C is the same space that Java eventually moved into. The Java community is big and hard to get into. If I was younger and with fewer responsibilities, I would definitely be involved in something more radical and more interesting... and when I was younger, I was involved in such a thing. I have a strong interest in AI, particularly the work of Douglas Hofstadter and his compatriots. I love the CopyCat stuff done by Melanie Mitchell. Since I have this interest, I wish that I could spend more time with lisp.

    9. Re:I'm a professional who uses Java by Anonymous Coward · · Score: 0

      Well, GNUStep's still going strong, as is Mac OS X.

    10. Re:I'm a professional who uses Java by Lambdaknight · · Score: 1

      You're welcome to do so :)

      But keep in mind that Lisp is NOT a specific AI language.

      It's just so commonly used in the AI scene because it allows powerful abstraction layers while still allowing tweaking of the underlying algorithms.

      --
      -- Beware the Jabberwock, my son!
    11. Re:I'm a professional who uses Java by yoghurt · · Score: 2, Insightful

      lisp *is* strongly typed. every item in lisp has a type and it is easy find its type. lisp is not statically typed. the type is associated with the data item not the variable name. this is different from how static languages like C do it. but it is strong nevertheless. btw you can always explicitly declare types and turn up the compile options to increase speed.

      second, you complain about the simple syntax. this is perhaps lisp's greatest feature. lisp supports macros like no other language. it is easy to make a program which generates code if the target has a simple syntax. why do you think gcc converts C into a lisp like language for processing? programming in the simple syntax of lisp allows you the programmer to program the language to suit your problem. alas, the power of such abstraction is sometimes not appreciated.

      database access exists for lisp. corba exists for lisp. i've seen lisp to html generators. why don't you come to comp.lang.lisp and post this. between the flames you may be enlightened.

      --
      Yoghurt
    12. Re:I'm a professional who uses Java by yoghurt · · Score: 1

      Lisp does have a body which guides the development. There is an ANSI Common Lisp standard. It is even readily available on the web.

      --
      Yoghurt
    13. Re:I'm a professional who uses Java by Hop-Frog · · Score: 1

      Where are all of these things? Do you have links for them? If it's true, great, provide the links. Otherwise, it looks quite dodgy.

      --Kevin

    14. Re:I'm a professional who uses Java by stevew · · Score: 1

      I'm not a professional who uses either Java or Scheme..

      For me it's so much simpler - To many parens makes brain hurt.

      I'll just crawl into my corner and use C now (note not even C++...)

      --
      Have you compiled your kernel today??
    15. Re:I'm a professional who uses Java by Anonymous Coward · · Score: 0

      For every Yes in your post, could you please provide a link to a commercial or free implementation, if it's not too much trouble?

    16. Re:I'm a professional who uses Java by AtomicBomb · · Score: 1
      In general, LISP is a good language. But, good lang does not necessary be the successful one. IMO, the functional programming nature of the language is itself a big barrier to the learners. To a procedural programmer (or vice versa), Java or C++ sounds like different dialects of a spoken language. But, for functional language, it is completely foreign... One must sit down and learn.

      Yes, yes... I know most CS courses cover LISP in their AI courses. Not all students will take it. More importantly, a large chuck of programmers are not from CS (eg from EEE, or technical college that gives shorter courses), the likelihood to find sufficiently trained LISP programmer will just be increasingly hard...

    17. Re:I'm a professional who uses Java by sammy+baby · · Score: 2
      There are far more Lisp projects going on than people imagine, only people don't scream out "HEY! COOL! I'M DOING IT WITH LISP!" they go "Yepp, I'm using Lisp." the Yahoo Store engine for instance. Microsoft's Bob. Many industrial applications (not only the academia!).


      Thank god the Microsoft Bob team didn't trumpet its use of LISP. LISP has a hard enough time getting good press as it is - why throw a poisoned pill like that in?
    18. Re:I'm a professional who uses Java by Anonymous Coward · · Score: 0

      Haskell:
      is a purely functional langauge that has about as strict a typing system as you can have.
      (It's generally compiled rather than interpreted).

      In fact there it has a nice typing metalangauage that allows you to do polymorpic typing
      (equations over classes of types - works a bit similar to C++ templates).

      I like functional programming, but then I'm really a mathematician more than a computer scientist.

      I think the problem with the adoption of functional languages is the predopminently
      procerdural mindset of most developers. After all, one methodology is enough for most
      people/projects...

    19. Re:I'm a professional who uses Java by aerique · · Score: 2, Informative
      The homepages of some Lisp vendors will get you most of the things in the list. Handy link with a lot of information http://ww.telent.net/cliki/

      More Lisp vendors:

      'Free' (whatever the current definition of that is nowadays) Lisps:

    20. Re:I'm a professional who uses Java by Anonymous Coward · · Score: 0

      (((((((lisp)oh)my)god)!)))

    21. Re:I'm a professional who uses Java by Anonymous Coward · · Score: 0

      > they don't hear as much about it as they hear
      > from the hype languages (which is quite logical).

      "hype languages"

      One of the reasons LISP isn't more adopted is the arrogance of Common Lisp usrs

    22. Re:I'm a professional who uses Java by Blackheart2 · · Score: 1

      It wasn't strongly typed (is there such a lisp?)

      Yes, it's called ML. See Ocaml or Standard ML (this link is to Moscow ML, an SML implementation), for example.

      and the singular type of syntax (lists) make many aspects of the code difficult to unravel.

      ML has algebraic datatypes, which might be regarded as a cross between unions and structures in C.

      --

      BH
      Fools! They laughed at me at the Sorbonne...!

    23. Re:I'm a professional who uses Java by openbear · · Score: 1

      Not to sound like a troll, but can you back up your answers with more than just a "yes"? Give me some examples of Lisp Application Servers. Is this one a good example or are there better? Yes, I could spend the next half hour looking through Google, but I would rather hear the word from the mouth of someone who knows what they are talking about.

    24. Re:I'm a professional who uses Java by e40 · · Score: 1

      The most interesting thing about your ignorant reply is that lisp is most often used by HUGE projects. The teams that build these programs invariably say they couldn't have done it without lisp.

      The first such example of this was Macsyma, built in the 70's on Mac Lisp, ported to the Vax on top of Franz Lisp (from UCB). Macsyma was an incredible large program for that day and time. It took hours to compile on a Vax. It was also considered an incredible advanced program for the time.

      DEC even used Macsyma to validate new Vax hardware (like the MicroVax), because it was, simply, the most complex program that ran an a Vax.

      Lastly, there are lots of corporate success stories. Check out http://www.franz.com/success/ for data points on this.

    25. Re:I'm a professional who uses Java by e40 · · Score: 1

      Don't forget Allegro CL Trial Edition, which is also "free".

    26. Re:I'm a professional who uses Java by bnenning · · Score: 2
      Objective-C was a great language compared to Java.


      No need for the "was". Objective C is the primary development language for Mac OS X, which probably already has a larger installed base than NextStep/OpenStep ever did. And GNUStep is steadily coming along.

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    27. Re:I'm a professional who uses Java by uid8472 · · Score: 1

      Lisp most certainly is strongly typed: you can't violate the typing system and access the internal representation of data the way you can in C or FORTH. What Lisp is not is manifestly typed (a.k.a. statically typed): that is, you don't explicitly declare the types of variables and function arguments, the way you do in C and Java, so the compiler can check them instead of having them verified at runtime (latent or dynamic typing).

    28. Re:I'm a professional who uses Java by scrytch · · Score: 1

      Thank god the Microsoft Bob team didn't trumpet its use of LISP

      Bob, which became MS Agents, which when you take away the paperclip front end, became one of the better help systems out there ... a help system with a search engine, speech recognition, an API ridiculously easy to extend, and so on... But you just had to get your stupid little jab against Microsoft in there, didn't you. Not a slashdot article without one.

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    29. Re:I'm a professional who uses Java by nhavar · · Score: 1

      "Java has a single organization which sets/guides the development of the whole platform."----- you mean OWN don't you, or is it CONTROL? Let's remember that Sun could have allowed the language to become a standard but refused to give up control by turning the language over to either ANSI or IETF. In the end you have to question the motivation that decided upon that course of action. What do they stand to gain by keeping control of the language?

      --
      "Do not be swept up in the momentum of mediocrity." - anon
    30. Re:I'm a professional who uses Java by Anonymous Coward · · Score: 0

      Java isn't rapidly overtaking C++. Its rapidly overtaking visualbasic.

      The VAST majority of Java programmers are ex VBers. There are far fewer ex C++ers, and they are more likely to use both languages (since Java is clearly not useful for large classes of problems, despite people repeatedly trying to use it for them).

    31. Re:I'm a professional who uses Java by Anonymous Coward · · Score: 0

      snicker. are you trying to imply that there is anything to Java beyond hype?

    32. Re:I'm a professional who uses Java by Ryan+Amos · · Score: 1

      Lisp is also one of the oldest computer languages still in relatively wide use. The only one I can think of from the same era (1950s) is Fortran. I'm currently taking an intro to CS course which is taught in Scheme (there are two major Lisp dialects: Scheme and Common Lisp. Common Lisp is much more complex than Scheme but also more easily controlled.) It really is an eye-opener as to the resistance my classmates have to using anything but C++ or Java. The language really isn't important in an introductory CS class, it's the concepts that are being taught. Learning Lisp in addition to C++ increases your job opportunities over knowing strictly C++ or Java.

      Also, the Lisp interpreters out there are so freaking efficient I'm continually amazed. They know when I'm never going to use a variable again, so it is automatically free()'d or deleted or what have you. The interpreter removes a lot of the tedious things (i.e. memory management and typecasting) you have to do in C++/Java that most people just accept and do, while the language is flexible enough to allow you to do those things should you so desire. This comes with the added bonus of the code being almost 100% compatible across operating systems. This is more or less what Java set out to do in the beginning, only Lisp did it 40 years prior.

    33. Re:I'm a professional who uses Java by multicsfan · · Score: 1

      I know several people who use LISP. I can't tell you much more as I don't know much more as the use is for classified government projects.

    34. Re:I'm a professional who uses Java by kubalaa · · Score: 1

      "The syntax isn't hard to read, it's just hard for people not used to it. This is, of course, true for every language."

      To be fair, this isn't quite true. Some languages are able to borrow more from english syntax to the point where reading the source code out loud almost makes sense; there is also a sort of common denominator understood by all programmers ("pseudocode") which languages benefit from approximating.

      That's not to say that LISP isn't understandable to those with experience, just that you can learn to understand some languages more quickly.

      --

      "If you look 'round the table and can't tell who the sucker is, it's you." -- Quiz Show

    35. Re:I'm a professional who uses Java by Anonymous Coward · · Score: 0

      Yes, how dare he be angry at Microsoft after how good they've treated us...

    36. Re:I'm a professional who uses Java by Eccles · · Score: 1

      Objective C is the primary development language for Mac OS X

      That's as maybe, but I work on one a reasonably well-known Mac program, and we're sticking with C++ and the Carbon interface. Anyone who has a cross-platform app almost certainly isn't switching, and I suspect the rest aren't particularly hankering for a major rewrite.

      --
      Ooh, a sarcasm detector. Oh, that's a real useful invention.
    37. Re:I'm a professional who uses Java by duplicateAccount · · Score: 1
      Does lisp have application servers? Does lisp has db connectivity? ... Does lisp have web page templating functionality?

      Yes. See Askemos

    38. Re:I'm a professional who uses Java by sammy+baby · · Score: 1

      I wasn't knocking Microsoft, although I'd be happy to do so if you like. I was knocking Microsoft Bob. Assuming you ever tried it, how long did it stay on your hard drive?

    39. Re:I'm a professional who uses Java by sigue · · Score: 1

      Yes, Common Lisp has application servers (at least private ones like the one I work with). Yes, Common Lisp has DB connectivity. Yes, it has CORBA bindings. Dunno about asynchronous messaging, but I suspect it's a buzzword for something that we Lispers don't even glorify with a name because it's so easy to implement. I personally wrote a web page template system in about a day in Dylan, a Lisp descendant. No biggy. And it's much easier to use than JSP.

    40. Re:I'm a professional who uses Java by sigue · · Score: 2, Interesting

      Right on the money, honey. I work at a company that has an e-commerce web site written in Common Lisp. When we got VC funding one of the requirements was that we eventually rewrite the whole thing in Java. Not for technical reasons, but because of their fear that we wouldn't be able to find enough good Lisp programmers. Well, we hired a boatload of Java programmers. They got approximately nothing done in about a year. We four Lisp hackers kept the site from grinding to a halt while they spent our money on Java dreams. VCs pulled out, we got rid of the Java programmers (and marketing spend-thrifts), we decided to continue with the conversion to Java, we generated 50K lines of Java code from the Lisp introspection facilities, we found that we had 10x code bloat in Java, dumped java, yay, back where we started, actually improving the site now!

      One striking thing was the complete lack of interest most of the Java programmers seemed to have in learning anything about the Lisp code. I guess they thought "how is this going to help my career"?

      Lisp is perfectly suited to web applications. Since it's mostly just application logic and sending bits out the wire, Lisp's ability to change code on the fly without restarting app servers and such is a huge win, especially since a web site often requires frequent, small updates.

    41. Re:I'm a professional who uses Java by hding · · Score: 2

      When we got VC funding one of the requirements was that we eventually rewrite the whole thing in Java. Not for technical reasons, but because of their fear that we wouldn't be able to find enough good Lisp programmers. Well, we hired a boatload of Java programmers.

      Seeing stories like this (and having the relatively sheltered career, such as it is, that I've had), I've often wondered why management worries about finding (insert language) programmers rather than just finding good programmers (with the assumption that a truly good programmer will be able to relatively rapidly acquire whatever skill set is necessary). I don't dispute that one can probably find more Java programmers than Lisp programmers, but can one find significantly more truly good Java programmers than good Lisp programmers?

      To the untrained eye (like mine), it's also always mysterious why, when your team was able to build everything necessary with four programmers, a good management would want to a) take on a lot of extra people (and salary, no doubt) and b) take on the risk associated with a transition rather than c) just make sure that you four remained sufficiently well compensated that you'd want to stay on and continue meeting their needs. It'd seem to me that c) would be not only less risky, but less expensive.

    42. Re:I'm a professional who uses Java by sigue · · Score: 1

      I completely agree with everything you've said. I wish I had a clue how management made their decisions.

    43. Re:I'm a professional who uses Java by sigue · · Score: 1
      [Sorry if someone said this already. Slashdot organization seems pretty unintuitive to me.]

      I just want to point out that almost all modern Common Lisp systems are fully compiled. Even the code you type into the listener on the fly gets compiled to core. Lisp interpreters are relatively rare. (Maybe Scheme interpreters are more common though.)

  6. Important point: Functional orientation by JohnQPublic · · Score: 2, Insightful

    The second performance result is the low development time. This can be accounted for by the fact that Lisp has a much faster debug cycle than C, C++ or Java. The compilation model for most languages is based on the idea of a compilation unit, usually a file.

    More importantly, Lisp is not "file oriented". In Lisp, a function is a function is a function - you don't have the complex mess of static/public/private/whatever.

    Of course, Lisp is also write-only, like Forth and APL.

    1. Re:Important point: Functional orientation by aerique · · Score: 1
      Of course, Lisp is also write-only, like Forth and APL.

      Aw, come on. This is so very much a personal thing, it isn't even funny anymore.

      For most languages, except those that have been made intentionaly difficult to read, it is just a matter of experience whether the language is easy to read or not. (And now I probably get jumped by a Brainfuck supporter.)

      Besides, I think it is a good thing to get exposed to some radically different things now and then. It keeps your brain in shape.

    2. Re:Important point: Functional orientation by rreyelts · · Score: 1
      JohnQPublic wrote: More importantly, Lisp is not "file oriented". In Lisp, a function is a function is a function - you don't have the complex mess of static/public/private/whatever.

      I'd like to note a couple of things here.

      • First, the compilation unit of Java is not a file. It's a class. It can be easily demonstrated that Java classes and files don't have to have any relationship to one another as evidenced by tools like Visual Age for Java.
      • Second, except for deprecated use, static has nothing to do with files - in C++ or Java.
      • Third, the lack of access specifiers in Lisp contributes not only to its simplicity, but also its lack of scalability. The ability to define public interfaces and private implementations is key for large projects.
      Having said all of that, Lisp is not a bad language. It's just one more tool in my toolbox.

      God bless,
      -Toby Reyelts

    3. Re:Important point: Functional orientation by Anonymous Coward · · Score: 0, Insightful

      More importantly, Lisp is not "file oriented". In Lisp, a function is a function is a function - you don't have the complex mess of static/public/private/whatever.

      But if you need to partition your software into pieces, you use packages. Then you have imports/exports/shadowing/whatever.:-)

      Seriously, once software gets big, you'll want a mechanism do breaking into modules or something, and a certain amount of complexity is involved in controlling that mechanism. Common Lisp's package mechanism seems OK to me.

      Of course, Lisp is also write-only, like Forth and APL.

      I'm sorry, I've written and maintained both Forth and Lisp, and I have to disagree.

      "Lisp" is an old family of languages, going back to 1962 or so. If you mean old-style Lisp, then there's some truth to this, but that's like criticizing "C/C++" because BCPL was hard to maintain.

      Common Lisp (standardized a decade or so ago) is IMHO about the same as Java or C++ for maintainability. On the minus side, it gives you more rope to hang yourself: you can express some very weird concepts using macros and lexical closures. On the plus side, having information stored in more than one place is one of the biggest problems for maintainability, and Common Lisp makes it easier to avoid that than C++ or (especially) Java does (in large part because of those same macros and lexical closures).

      Forth, Perl, assembly language, FORTRAN 77 with hacks to use one big array for mocked up dynamic memory allocation, and all sorts of other things can be made maintainable by using restraint and doing extra work, sticking to a standard set of idioms and writing appropriate internal documentation for things like the calling convention of each function. Common Lisp and various other modern languages are significantly friendlier than that.

      For a comparison, see GCC (a C/C++ compiler implemented mostly in C), CLISP (a Common Lisp system implemented mostly in C), and SBCL (a Common Lisp system implemented in Common Lisp). All of them have some nasty parts, but it's not clear to me that any one is qualitatively more obfuscated, the way that an optimizing compiler written in Forth would tend to be.

    4. Re:Important point: Functional orientation by e40 · · Score: 1
      Of course, Lisp is also write-only, like Forth and APL.

      It's really helpful when you add this flag to the end of your posts. It tells everyone you are narrow minded and should be ignored.

      I learned lisp in a few days. I don't think I'm a genius, either. One prerequisite to learning anything is that you have to have an open mind.

    5. Re:Important point: Functional orientation by Eccles · · Score: 1

      For most languages, except those that have been made intentionaly difficult to read, it is just a matter of experience whether the language is easy to read or not.

      Having written plenty of shell scripts, I can assure you this is not the case. I'd rather read C++ code I wrote four years ago than a shell script I wrote yesterday.

      But to add a little more content, one thing I'd like to see in an editor is syntax-coloring of *matching* parentheses. I think that could help C++ and Lisp code reading.

      --
      Ooh, a sarcasm detector. Oh, that's a real useful invention.
    6. Re:Important point: Functional orientation by ttfkam · · Score: 1

      Would you be more specific? I haven't personally had the pleasure of writing Lisp and therefore can't say one way or another whether it is good or bad.

      On the other hand, the "complex mess" to which you refer is a necessary component of modern software development. I am not saying that those particular keywords or that their implementation in specific languages such as Java and C++ are the best that will ever come to be. However the ability to say "You may not call this function. This function was not meant for you," is very necessary in order to keep careless keystrokes (and careless coworkers) away from important data structures.

      Do I read you correctly that Lisp cannot enforce private members? I certainly hope I misunderstood. And if so, could someone please tell me what was intended?

      --

      - I don't need to go outside, my CRT tan'll do me just fine.
    7. Re:Important point: Functional orientation by sigue · · Score: 1
      Lisp does not have the concept of public/private/protected access to code. It does have packages, however, and you can use them to modularize your code. You explicitly export the API from a package. There is a "back door" for programs to use code in other packages even if it's not exported, but code that does that is easy to spot.

      Dylan is a descendant of Common Lisp and Scheme that has cleaned up some of the warts in CL and uses a C/Pascal-like syntax. Dylan enforces encapsulation via modules. Note that these languages have no such thing as "class scope", and that is a Good Thing, in my opinion.

    8. Re:Important point: Functional orientation by hding · · Score: 2

      Plus, if you really want to close this back door, you can start uninterning symbols. I can't think offhand of any way someone could get their hands on something that that's been done to.

  7. 1999 by eye.likeJava() · · Score: 3, Insightful

    That was written in 1999...

    One would be able to suggest that things have changed a little since then..

    Although java does use lots of memory..

    But it is no longer as slow..

    --
    ... although I also like C#..
    1. Re:1999 by cmmike · · Score: 1

      what is insightful about this post? the ellipses?

      --
      -- LIVE FATS DIE YO GNU
    2. Re:1999 by nels_tomlinson · · Score: 2

      has the development time and the code size also fallen along with the run time?

    3. Re:1999 by Anonymous Coward · · Score: 0

      Presumably the development tools for Java have improved in the past two years. There are certainly a greater range of tools available than there are for Lisp. Also, I wouldn't rate code size as that important. If you want something extremely tiny you should look at colorForth, one of the densest languages I've ever seen, and also one of the most opaque. You could always code hexadecimal opcodes directly if you wanted. Finally, I think that both of these languages have a major flaw which has been corrected in others: a runtime type system which both eats up memory and wastes cycles. I suggest looking at Standard ML as an alternative language which is both functional like Lisp but statically typed like machine language. Much more than Lisp or Java, this language has the potential to be very efficient.

    4. Re:1999 by Anonymous Coward · · Score: 0

      No longer slow? How do you explain the warning in the installation of the JDK that goes like this, "not to be used for real-time applications?" Why is java no good for real-time apps, for airport controllers etc...? Or, you mean it's no longer slow as it was, but still slow?

    5. Re:1999 by Anonymous Coward · · Score: 0

      "Realtime" doesn't mean fast, it means every synchronous operation is guaranteed to complete in a bounded amount of time. You generally can't use preemptive threads or garbage collection (both of which Java relies on) in a realtime system--or for that matter, dynamically-sized data structures (put in too many elements and you'll miss a deadline) or virtual memory.

    6. Re:1999 by Goldhammer · · Score: 1

      You generally can't use preemptive threads or garbage collection (both of which Java relies on) in a realtime system--or for that matter, dynamically-sized data structures (put in too many elements and you'll miss a deadline) or virtual memory.

      The Erlang real-time development platform uses all of these.

    7. Re:1999 by Anonymous Coward · · Score: 0

      the ellipses?

      You mean the oval things? Didn't see any of those...

  8. Re:LISP !? by Anonymous Coward · · Score: 0
    You, Sir, are absolutely right.

    LISP weenies are like those "algebrawookies" who rant and rave how fundamental THEIR field is to everything. Yet, when asked, they can't provide a single example of an application that was borne directly out of their work.

  9. Learning Lisp? by Omnivorous+Cowbird · · Score: 1

    Anyone who already knows Lisp have any suggestions on a good place to start?

    --
    ______________________________________
    Ever notice how fast Windows runs? Neither did I...
    1. Re:Learning Lisp? by Lambdaknight · · Score: 3, Informative

      Yes.

      Read "Structure and Interpretation of Computer Programs" by Abelson and Sussman.

      It is a fabulous book for introduction into functional thinking and shows many enlightening things about what you can do with Lisp in general and in this case Scheme.

      Your next step might be "ANSI Common Lisp" by Paul Graham, giving an introduction into the Lisp dialect with which major applications in the industry are done (REALLY done, Franz Inc. and Xanalys, both commercial Lisp implementors and vendors have increasing sales over the years) - also a very clear and easy to follow book with lots of examples and exercises and a very cool reference which I tend to use a lot while Lisp coding.

      If you prefer online information, you can find many links and pointers to Lisp on the webpage of the Association of Lisp Users (ALU, http://www.alu.org).

      (Yes, I'm paid to code in Lisp)
      (Yes, it's a lot of fun)

      --
      -- Beware the Jabberwock, my son!
    2. Re:Learning Lisp? by Anonymous Coward · · Score: 0

      Do not confuse Lisp and Scheme! Scheme encourages some bad programming styles in the interest of having a small language. Common Lisp is much more programmer friendly, at the cost of a larger (but standardized) API.

    3. Re:Learning Lisp? by Lambdaknight · · Score: 1

      As you might know, Scheme is a Lisp-1. It is a very proper dialect of Lisp, even if many followers of the Common Lisp path like to ignore that.

      (I myself am more a Common Lisper).

      The "bad programming styles" you're speaking of are the dominance of recursion over simple iteration, I presume?

      Please tend not to speak humble in these posts because people's opinion will be influenced by that.

      Have you read "Structure and Interpretation of Computer Programs", btw?

      --
      -- Beware the Jabberwock, my son!
    4. Re:Learning Lisp? by jonathan_ingram · · Score: 1

      At the risk of sounding faecetious: Yes - learn Python instead. A lot of people describe aspects of Python as 'Lisp without the parentheses'... it's certainly easier than Lisp for someone coming from C or Basic to understand. Once you're happy with things like list comprehensions and lambda functions, Lisp will make a lot more sense (and you can appreciate it's power and beauty).

      Once more suggestion : never ever write Lisp without a decent editor (Emacs comes to mind). Backeting hell awaits.

    5. Re:Learning Lisp? by budgenator · · Score: 1

      Thanks for the link, I originaly got slackware 2.2 w/kernal 1.2 dated 1995, because I knew it had this lisp language that I was intrested. Well I never got arround to doing anything with it over the years. I guess that it time to get started. I think that lisp is a lot better at more things than people would imagine, it innate use of linked-lists make a lot of SQL look like a kludge.
      As far as dificult to learn I remember read a Byte article about elementry students writing lisp-ish programs using turtle graphics.

      --
      Apocalypse Cancelled, Sorry, No Ticket Refunds
    6. Re:Learning Lisp? by Anonymous Coward · · Score: 0

      Get your hands on the books:

      - Little Lisper
      - COMMON LISP: A Gentle Introduction to Symbolic Computation (great book for beginners and it is available online
      http://www.cs.cmu.edu/~dst/LispBook/index.html)
      - ANSI Lisp
      - OnLisp

      Also, check out the following websites,

      http://www.alu.org
      http://ww.telent.net/cliki/index
      http://www.apl.jhu.edu/~hall/lisp.html
      http://www.cs.cmu.edu/Web/Groups/AI/html/cltl/cl tl 2.html
      http://burks.bton.ac.uk/burks/language/lisp/inde x. htm
      http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai- re pository/ai/lang/lisp/0.html
      http://www.franz.com
      http://clisp.sourceforge.net/
      http://www.digitool.com

    7. Re:Learning Lisp? by James+Nolan · · Score: 1

      SICP online at:

      http://mitpress.mit.edu/sicp/full-text/book/book .h tml

    8. Re:Learning Lisp? by Anonymous Coward · · Score: 0

      "Structure and Interpretation," which has been mentioned, is an excellent textbook, but it does not teach Scheme. Instead, it uses Scheme to teach programming.

      Try "The Little Lisper". It is silly, unconventional and effective.

    9. Re:Learning Lisp? by aerique · · Score: 1
      Peter Norvig, the writer of a very good on Lisp: PAIP, is also very supportive of Python: http://www.norvig.com/python-lisp.html

      To the parent of previous poster, try http://ww.telent.net/cliki/ for a starting point or http://clisp.sourceforge.net/

      The point about a decent editor is very true. I'm still suprised seeing people use Notepad or an old-skool vi (Vim, however, is very decent).

    10. Re:Learning Lisp? by andreas · · Score: 1

      Python's performance is very poor, it's just not in the same league as C++, Lisp, Dylan, OCaml and a number of other languages that generate fast code.

    11. Re:Learning Lisp? by rama · · Score: 1

      Yes. In addition, did you know that it was converted to HTML from tex using a Lisp program?

      Better than Latex2HTML program, I say.

    12. Re:Learning Lisp? by Fredflintston47 · · Score: 1

      My earlier impressions of scheme being amazingly complex, opaque and hard to learn were formed as a result of the book "Structure and Interpretation of Computer Programs".

      I still have this book from Uni. After reading your post, I pulled it down from the shelf to take a look at it.

      I'm sure the authors are really nice, but my earlier impresion still holds: it's too complex, and makes what should be a really simple language very hard to understand. I was always scared off within the first 50 pages. (And barely made it through that class...certainly not having learned anything useful.)

      The authors got so excited about mathematical research they forgot they were trying to teach a programming language.

      It wasn't until I tried to program a regular program in TCL that I understood how flexible and desirable scripting languages can be (and why that's a good thing).

      This is hardly the book to offer to newbies interested in tasting the language.

      --
      Go, Springboard, Go!
    13. Re:Learning Lisp? by hding · · Score: 2

      The authors got so excited about mathematical research they forgot they were trying to teach a programming language.

      You may have missed the point. The authors of SICP aren't trying to teach a programming language. They're trying to teach how to program, and, in the opinion of many (myself included), do a very good job. Scheme is incidental to their actual task (although it does suit it well).

  10. Re:LISP !? by Anonymous Coward · · Score: 0

    Learning to read Lisp is much easier than learning to read C++ or Java, it's just that nobody thinks so because they personally don't remember all the time they wasted learning the harder languages. Lisp's simple syntax makes it extensible--parsing is so easy you can create just the language you need for the code you're writing. Those other languages are so hairy that hardly anything other than a compiler understands them even incompletely, ruling out any tools more powerful than pretty-printers.

  11. Good LISP story by Jeppe+Salvesen · · Score: 1

    I was interviewing for a job, and they asked me how my LISP skills were. They are pretty shady, and I told them so. Then I started to inquire about why they needed LISP. Back in the day, they hired a guy to write their core system. He got full freedoms, and chose to implement it in LISP since that was something he was good at and few people knew.

    After implementing it, he started to basically blackmail his employer for more money. The "You can't replace me" sort of attitude we all fear to encounter and sometimes love to give. His employer just told him to get lost, and hired three of the best LISP programmers in the country.

    I just thought this was a really good story, and very pertinent in this context. If you consider learning to LISP, don't soil the reputation of LISP programmers with this kind of attitude! (And that goes any other obscure implementation as well)

    --

    Stop the brainwash

  12. Interesting, but flawed? by tkrotchko · · Score: 5, Insightful

    Its interesting to see the results of a short study, even though the author admits to the flaw in his methodolody (primarily the subjects were self-chosen). Still, I don't think that's a fatal flaw, and I think his results do have some validity.

    However, I think the author misses a more important issue: development involving a single programmer for a relatively small task isn't the point for most organizations. Maintainability and a large pool of potential developers (for example) are a significant factor in deciding what language to use. LISP is a fabulous language, but try to find 10 programmers at a reasonable price in the next 2 weeks. Good luck.

    Also, while initial development time is important, typically testing/debug cycles are the costly part of implementation, so that's what should weigh on your mind as the area that the most gains can be made. Further, large projects are collaborative efforts, so the objects and libraries available for a particular language plays a role in how quickly you can produce quality code.

    As an aside, it would've been interesting to see the same development done with experienced Visual Basic programmer. My guess is he/she would have the lowest development cycle, and yet it wouldn't be my first choice for a large scale development project (although at the risk of being flamed, its not a bad language for just banging out a quick set of tools for my own use).

    Some of thing things I believe are more important when thinking about a programming language:

    1) Amenable to use by team of programmers
    2) Viability over a period of time (5-10 years).
    3) Large developer base
    4) Cross platform - not because I think cross-platform is a good thing by itself; rather, I think its important to avoid being locked-in to a single hardware or Operating System vendor.
    5) Mature IDE, debugging tools, and compilers.
    6) Wide applicability

    Computer languages tend to develop in response to specific needs, and most programmers will probably end up learning 5-10 languages over the course of their career. It would be helpful to have a discussion of the appropriate roles for certain computer languages, since I'm not sure any computer languages is better than any other.

    --
    You were mistaken. Which is odd, since memory shouldn't be a problem for you
    1. Re:Interesting, but flawed? by Anonymous Coward · · Score: 0
      5) Mature IDE, debugging tools, and compilers.

      I agree with every other point you give except this one.

      I don't see what IDE has got to do with a good language.

      Keep the compilers, debugging tools and editors as separate beings. Otherwise you get locked in in a specific environment.

    2. Re:Interesting, but flawed? by tkrotchko · · Score: 1

      I would only point out a mature IDE is not only proof that the language has widespread adoption and is a tremendous productivity aid.

      But in principle I can't disagree with you. The goodness of the IDE has nothing to do with the goodness of the language (although I can't imagine programming in C++ without a class browser built into the IDE, but maybe I'm just getting old). My preference is to let coders use whatever IDE they like.

      I'll be the 1st to admit that when I'm putting together a quick and dirty C program in windows I'll use Notepad as my "IDE", but then, I don't get to do as much programming as I'd like anymore .

      --
      You were mistaken. Which is odd, since memory shouldn't be a problem for you
    3. Re:Interesting, but flawed? by nels_tomlinson · · Score: 3, Interesting
      Some of thing things I believe are more important when thinking about a programming language:


      1) Amenable to use by team of programmers
      2) Viability over a period of time (5-10 years).
      3) Large developer base
      4) Cross platform - not because I think cross-platform is a good thing by itself; rather, I think its important to avoid being locked-in to a single hardware or Operating System vendor.
      5) Mature IDE, debugging tools, and compilers.
      6) Wide applicability



      1) Is lisp less amenable to use by a team? Can't you implement one object while I implement another? I'm asking because I don't know; all my programming has been for my own research.

      2) Lisp has been around since the 1950's, in one form or another. I find that I can read lisp code from the Lisp 1.5 programmer's manual, which originated in 1965. Our kids will probably still be able to in another 30 years.

      3) How large is large enough? Is: "language of choice for 10^7 illiterate script-kiddies" a stronger recommendation than: "there are a sufficient number of competent programmers who are proficient in the language and familiar with the problem domain"? Notice that second statement is probably not true for any of the languages discussed, for most problem domains.

      4) Except for the Microsoft offerings, pretty much everything is cross platform. Think gcc and cmucl, for easy examples.

      5) I really don't know what an IDE is. I gather it is something other than emacs, since emacs supports nearly every language, some wonderfully well (try ESS for R). I really can't comment on this one at all; perhaps someone else could?
      As for mature compilers, again, I think all of the languages mentioned so far are in fair shape there. Java and c can both use the same back end in gcc, and so does gcl.

      6) Technically, all the languages mentioned are Turing-complete ... But wide applicability means being suitable, instead of merely capable. I am not familiar with java and c++, but lisp and c (and Fortran) seem to be equally capable for the bits of number crunching I do. Lisp is wonderfully more flexible, and the debug/wish-i'd-done-it-differently/change it/debug/repeat cycle seems a good deal shorter in Lisp than the other two, for me at least.

      After going over the above, it looks to me as if personal choice and the resources immediately at hand are really the only reasons to pick lisp over c over c++ over java over lisp.

    4. Re:Interesting, but flawed? by blamanj · · Score: 2, Insightful

      I don't think that's a fatal flaw

      Well, it is, assuming you're trying to make the kind of generalization that the original paper was trying to make. The original author took a randomly selected bunch of programmers who claimed to know either Java, C, or C++ and assigned them the task. In comparison, Mr. Gat's paper was based on a call to a bunch of dedicated LISPers. whose expertise one could reasonably expect to be much higher than someone who might have taken a LISP programming class N years ago.

      You really can't compare the two papers. Either you get "experts" on both sides, or you get randomly chosen programmers on both sides, but not a mix.

    5. Re:Interesting, but flawed? by Doctor+Faustus · · Score: 1

      As an aside, it would've been interesting to see the same development done with experienced Visual Basic programmer.

      If you're just trying to compare languages, VB has a huge unfair advantage in its development environment. The IDE makes VB practical to use, despite the language being completely pathetic.

      VB.Net seems to be fixing most of what's wrong with the language, but they're basically starting over, and have lost some of the debugging abilities that were previously VB's strong point. VB.Net will no longer run interpreted, at all, so you can't edit the code and continue where you left off, and you can't go to an immediate window and execute code directly, while something is running.

    6. Re:Interesting, but flawed? by sigue · · Score: 1
      1) Is lisp less amenable to use by a team? Can't you implement one object while I implement another? I'm asking because I don't know; all my programming has been for my own research.
      If anything I think Lisp is more amenable to teamwork, if only because it doesn't dictate file/directory organization. I use Lisp in a small team (4 people) environment every day. On the other hand, it doesn't enforce quite as clearly defined APIs as does Java (with interfaces and public/private modifiers) so your team needs to be a bit more disciplined.

      Actually, if Lisp has one major flaw it's that it allows too much flexibility. That, combined with the fact that a lot of Lisp hackers (I've worked with a lot) are extremely bright, can make it hard for us mere mortals to grok their code.

      5) I really don't know what an IDE is. I gather it is something other than emacs, since emacs supports nearly every language, some wonderfully well (try ESS for R). I really can't comment on this one at all; perhaps someone else could?
      Lisp certainly has mature IDEs. The debugging environments in LispWorks, Macintosh Common Lisp, and Dylan are leaps and bounds above anything I've seen for Java or C. However, they do not tend to be so great at stepping through compiled code at the source level. (Dylan does not share this problem. Also I think this is less necessary in Lisp due to other debugger features.) They also tend to lack decent GUI builders though there might be something out there I'm not aware of.
  13. Ocaml instead of Lisp by Ronniec95 · · Score: 2, Informative

    For max performance and easy integration with C-APIs try this language at http://www.ocaml.org. I only heard about it from the ICFP contest but it is a very cool language IMHO.

    1. Re:Ocaml instead of Lisp by Sarunas · · Score: 2, Informative

      http://www.bagley.org/~doug/shootout/editorial.sht ml The programming language shootout gives some more reasons why ocaml is good.

    2. Re:Ocaml instead of Lisp by Sarunas · · Score: 1

      Oh yea, and ocaml also has bytecode, and has an extention that let's it run in the java vm.

  14. Richard Stallman says "Lisp everywhere!" by Anonymous Coward · · Score: 0
    Dick Stallman sez:
    Yes, we have to have Lisp in bash, Lisp in gcc, Lisp in Emacs, Lisp in guile, Lisp Lsp Lisp!
  15. This reminds me of my project for my degree... by DeepFyre · · Score: 0

    ...I developed a scheduler using JESS, which is a Lisp like language written in Java, which integrates with Java. I did look at Lisp as a candidate solution, but a lot of compilers support the CommonLisp standard to varying levels, which caused some headaches.

    The performance using JESS was quite incredible given that it was a language within Java.

    I also agree that Lisp is an absolute pig when it comes to readibility, you just get brackets everywhere, and you end up adding more and more.

  16. Re:GWB will take $10 BILLION from the social secur by Anonymous Coward · · Score: 0
    What do you think the function of a society is?

    It's to guarantee the safety and well-being of its members. It's plain greed if you rather neglect people who've hit hard times than give a bit out of your own wealth.

  17. Perhaps not quite as illuminating as it appears by ascholl · · Score: 1

    The study does show an advantage of lisp over java/c/c++ -- but only for small problems which depend heavily on the types of tasks lisp was designed for. The author recognizes the second problem ("It might be because the benchmark task involved search and managing a complex linked data structure, two jobs for which Lisp happens to be specifically designed and particularly well suited.") but doesn't even mention the first.
    While I haven't seen the example programs, I suspect that the reason the java versions performed poorly time-wise was probably directly related to object instantiation. Instantiating an object is a pretty expensive task in java; typical 'by the book' methods would involve instantiating new numbers for every collection of digits, word, digit/character set representation, etc. The performance cut due to instantiation can be minimized dramatically by re-using program wide collections of commonly used objects, but the effect would only be seen on large inputs. Since the example input was much smaller than the actual test case, it seems likely that the programmers may have neglected to include this functianality.
    Hypothising about implementation aside, the larger question is one of problem scope. If you're going to claim that language A is better than language B, you probably aren't concerned about tiny (albeit non-trivial) problems like the example. Now, I don't know whether this is true, but it seems possible that a large project implemented in java or c/c++ might be built quicker, be easier to maintain, and be less fragile than its equivilent in lisp. It may even perform better. It's not fair to assume blindly that the advantages of lisp seen in this study will scale up. I'm not claiming that they don't ... but still. If we're choosing a language for a task, this should be a primary consideration.

    1. Re:Perhaps not quite as illuminating as it appears by Wavicle · · Score: 2
      I agree with your first and second points... And your third... aww heck, I agree with all your points.

      This sort of thing is an annoying recurring theme in our industry. The fastest G4 based Macs may or may not be faster than the fastest P4 based PCs. But it's impossible to get a good comparison because the Mac addicts keep pointing at photoshop and the PC addicts keep pointing at Quake.

      According to the two economists who determined that the Dvorak keyboard is better than the Qwerty keyboard without the burden of scientific research: Java, C and C++ *must* be better than Lisp; or Lisp does not provide significant advantages over Java, C and C++ because if Lisp did, then businesses would adopt it in order to save money.

      Just once I'd like to see a really fair comparison based on rigorous effort.

      --
      Education is a better safeguard of liberty than a standing army.
      Edward Everett (1794 - 1865)
  18. There is more data available for other languages.. by crealf · · Score: 5, Informative
    The article about Lisp is a follow-up of an article by Lutz Prechelt in CACM99 (a draft is available on his page along with other articles).

    However there is more data now, as, Prechelt itself widdened the study, and published in 2000 An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl (a detailed technical report is here).

    If you look, from the developer point of view, Python and Perl work times are similar to those of Lisp, along with program sizes.
    Of course, from the speed point of view, in the test, none of the scripting language could compete with Lisp.

    Anyway some articles by Prechelt are interesting too (as many other research papers ; found via citeseer for instance)

  19. Re:LISP !? by Anonymous Coward · · Score: 0

    To whom are you referring? I'm curious. Philosophers? MIT graduates?

  20. The whole premise is wrong by Agave · · Score: 1

    I'm not a big fan of Java or C++ but the premise that because Lisp performs better it is a viable alternative to either language is flawed. Performance is not usually a factor in most development.

    They go one to say that the Lisp programmers were more productive as well. Lisp is a functional language and as such requires a different way of thinking than a Java or C++ programmer is used to. An object-oriented programmer is not going to be more productive by switching to a functional environment. Not in the short term anyway.

    1. Re:The whole premise is wrong by Lambdaknight · · Score: 1

      Besides Brett's mentioning of CLOS and GOOPS...

      Common Lisp (and Scheme too, although the Schemers usually a) don't like to hear that and b) don't tend to program that way) is a hybrid language. That means, it isn't "just" functional, you can program imperatively as well.

      Object systems exists for both Lisp "paths", so object-orientedly as well, and, as in CL you usually program a programming language suiting your task, you can use whatever programming paradigm comes to your mind.

      It's different to program in Lisp not because Lisp restricts you to some phony paradigms, it's different because Lisp doesn't restrict you at all. And the (at first glance) strange syntax is a small price to pay for that.

      --
      -- Beware the Jabberwock, my son!
    2. Re:The whole premise is wrong by DroningDromedary · · Score: 1

      > the premise that because Lisp performs better it
      > is a viable alternative to either language is
      > flawed. Performance is not usually a factor in
      > most development

      This is not the only premise, as you go on to point out. I agree that it's probably the least relevant premise, but the fact that Lisp offers an improvement in programmer productivity means that getting a performance increase into the bargain is a win win situation.

      > Lisp is a functional language

      It is not. Functional programming is just one of the paradigms supported by Common Lisp. You can also write procedural and/or object-oriented programs if you like. In fact, Common Lisp was actually the *first* programming language to have an ANSI standard object system (CLOS).

  21. CLOS by Brett+Viren · · Score: 1
    Functional programming is orthogonal to OOP.


    You can do OO style programming in Lisp and Scheme. Lisp has Common Lisp Object System (CLOS). In Guile Scheme, there is GOOPS which closely resembles CLOS.

  22. Lisp Redux by dgroskind · · Score: 1

    It seems Slashdot hosted an almost identical discusion back in May.

    As before, the discussion founders on variable definitions of what makes one language better than another and the fact the skill of the programmer is more important than the features of the language.

    The usefulness of a programming language is partially determined by non-technical issues. From the corporate point of view, the issue is the availability of qualified programmers. From the programmer point of view, it's the demand for people with that programming skill. These two complimentary forces tend to concentrate skills in a narrow range.

    Typically, what broadens the playing field is a killer app. Does List have such an application?

    1. Re:Lisp Redux by dalev321 · · Score: 1

      Sure, LISP has killer applications. Check out http://www.paulgraham.com/avg.html

  23. I Beg Your Pardon by Taco+Cowboy · · Score: 0, Flamebait



    You were overheard of saying the following:

    "People don't base their language choice on
    speed anymore."

    If that is the case, sir, then, why don't we see people stampeding to port all their code to LOGO, huh?!

    --
    Muchas Gracias, Señor Edward Snowden !
  24. Lisp by DGolden · · Score: 3, Insightful

    Personally, I love LISP and Scheme. Their simple syntax makes far more sense to me than other languages.

    I think it's a classic cognitive dissonance effect that causes programmers of other languages to complain - they've spent so much time learning their pet language's wierd syntax that to admit that lisp is easier is to devalue all that effort - and no-one likes to admit they've been wasting their own time, just like windows programmers who've wasted 2 years of thier life learning the intricacies of win32, or x86 asm coders who can't admit how awful x86 asm is compared to PPC or m68k asm.

    Then again, there's a theory somewhere on the net that programming language preferences are influenced by the programmer's native natural language - I was raised partly in an Irish-speaking environment, so lisp may just naturally make more sense to me, due to the different structure of irish sentences.

    --
    Choice of masters is not freedom.
    1. Re:Lisp by scrytch · · Score: 2

      I think it's a classic cognitive dissonance effect that causes programmers of other languages to complain

      This couldn't possibly be true with :MY-PET-LANGUAGE, could it? No, must be that you're the only objective one in this universe...

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    2. Re:Lisp by DGolden · · Score: 1

      Hey, I never claimed to be objective. But cognitive dissonance effects are common, and people who haven't studied psychology often aren't aware of the phenomenon (or at least don't know there's a name for it). I've caught myself exhibiting such behaviour - but I'm aware of it, and can therefore attempt to self-correct.

      Lisp syntax is, pretty obviously, simple - one only needs to look at it compared to the huge BNF grammars for some other languages to illustrate this.

      --
      Choice of masters is not freedom.
    3. Re:Lisp by Anonymous Coward · · Score: 0
      Interesting, since my main reason for disliking the LISP syntax is also psychological - the uniformity of the syntax makes it difficult to differentiate atoms which are semantically very different. From a psychological standpoint I find LISP very badly designed indeed.


      You know, people didn't invent awkward syntaxs just for fun. They invented them because they made more sense. LISP's syntax is designed to make it easy to write a compiler and that's it. If some people think they find it easier, that's an unexpected side effect. Every LISP programmer knows just what proportion of the programmer population shares their opinion of the syntax - i.e. not very many.

  25. Sure, JRE 1.2 was slow.... by Anonymous Coward · · Score: 1

    Well, the article is alreay totally outdated... It compares lisp execution time to java's 1.2 runtime environment.... Which didn't include the hotspot compiler. You would have to re-run this test using a more modern JRE to get any results that are meaningful in today's world...

    Aside from the statistical meaninglessness of this article that others have pointed out, I'm also not impressed by the trivial nature of the problem they tackled. 600 lines of code? Well sure, if you're writing baby programs, lisp may very well be they way to go! If you're going to get into more serious projects, however, I'm doubtful that it's still more useful. Lisp is simply less readable than C/++ or Java. Its compactness simply makes it harder for humans to decipher... When it comes to bug fixing in a big project, you don't just tool around, debugging stuff in real time (Which, btw, you can do easily with java and beanshell).... You look through the code to understand *why* something isn't working they way you thought it would work...

    All in all, I remain unimpressed.

    1. Re:Sure, JRE 1.2 was slow.... by ArmorFiend · · Score: 1

      > When it comes to bug fixing in a big project, you
      > don't just tool around, debugging stuff in real time
      > .... You look through the code to understand *why*
      something isn't working they way you thought it
      > would work..

      Actually, this approach works pretty well in Mirai, a HUGE lisp program. Of course having source is essential too. Hyperlinked source, with the ability to talk to the interpreter, is a very sharp sword...

  26. Smalltalk a better alternative to Java by Anonymous Coward · · Score: 1, Interesting

    In my opinion Smalltalk makes a much better alternative to Java.

    Smalltalk has all the trappings--a very rich set of base classes, byte-coded, garbage collected, etc.

    There are many Smalltalks out there...Smalltalk/X is quite good, and even has a Smalltalk-to-C compiler to boot. It's not totally free, but pretty cheap (and I believe for non-commercial use everything works but the S-to-C compiler).

    Squeak is an even better place to start...it is highly portable (moreso than Java), very extensible (thanks to VM plugins) and has as very active community that includes Alan Kay, the man who INVENTED the term "object-oriented programming". Squeak has a just-in-time compiler (JITTER), support for multiple front-ends, and can be tied to any kind of external libraries and DLL's. It's not GPL'd, but it is free under an old Apple license (I believe the only issue is with the fonts..they are still Apple fonts). It's already been ported to every platform I've ever seen, including the iPaq (both WinCE and Linux). It runs even on STOCK iPaqs (ie 32m) without any expansion...Java, from what I understand, still has big problems just running on the iPaq, not to mention unexpanded iPaqs.

    And of course, we can't forget about old GNU Smalltalk, which is still seeing development.

    Smalltalk is quite easy to learn--you can just pick up the old "Smalltalk-80: The Language" (Goldberg) and work right from there. Squeak already has two really good books that have just come into print (go to Amazon and search for Mark Guzdial).

    (this is not meant as a language flame...I'm just throwing this out on the table, since we're discussing alternatives to Java. Scheme/LISP is a cool idea as well, but I think Smalltalk deserves some mention.)

    1. Re:Smalltalk a better alternative to Java by The+Other+White+Meat · · Score: 1

      It would have been nice if you had included a few links to these great sounding tools...

      --

      --- Generation X: The first generation to have SIG lines inferior to their parents... ---
    2. Re:Smalltalk a better alternative to Java by horse · · Score: 1

      Having been involved in decisions to use Java over Smalltalk (and I agree that Smalltalk is the better language), I would say that
      1) The fact that there is one standard Java vs. many dialects of Smalltalk works to Java's advantage. Companies fear being "stuck" with a particular Smalltalk vendor.

      2) Java covers such a broad range of technologies that it makes the suits more comfortable. Sure, you can find app servers for Smalltalk -- but nothing like the level of vendor support that exists for Java. And, of course, there isn't any common standard like J2EE (see point 1).

      3) Java is more C-like. Lots of folks know a C-like language. This makes Java easier to learn, and a more comfortable fit. (Sure, it would be better to learn Smalltalk -- but a surprising number of programmers don't seem to want to learn new languages.)

      Sad to say, but I think the Smalltalk vendors had their chance and dropped the ball. The current explosion of Java tools and libraries is amazing.

    3. Re:Smalltalk a better alternative to Java by Anonymous Coward · · Score: 0

      But but... we all know Smalltalk stinks!

      (Sorry.)

  27. Re:GWB will take $10 BILLION from the social secur by Anonymous Coward · · Score: 0
    The goal of society is to encourage the talents of each member and push them towards what's best for them.

    Yeah, but you can do that in many different ways.

    You can be humane and support the people who have, for some reason, failed in their lives so that they can get back on their feet.

    Or then you can kick them while they're on the ground and hope that the "losers" will die soon so that they'd stop bothering you while you're ripping off your fellow human beings.

  28. I like Lisp but this data seems bogus by Anonymous Coward · · Score: 0

    This was published in 1999 and states an average of 7.7 years programming experience with Java for the the test subjects. Since Java was released by Sun in mid 1995 this number is obviously wrong! What about the other numbers they give? Are they just trash too?

  29. Re:GWB will take $10 BILLION from the social secur by Anonymous Coward · · Score: 0

    Your imagery is misplaced. The purpose of the lesser people is to provide support for the myths carved by the supermen, such as myself. We can't be supermen if we're cleaning crap off the streets. I recommend that you and your kind learn your place. There are two kinds of people in the world, Great Men, and lowly men. You are not a Napoleon.

  30. Yes but ... by Darth+Paul · · Score: 1

    Can you do a "shock the monkey" banner in lisp?

  31. XML and Scheme/LISP by DGolden · · Score: 1

    One thing worth noting is that XML is just an annoyingly verbose way of writing LISP.

    While the world seems to have standardised on Java for XML work, the most clear, easy and natural way I have seen to process XML is in Scheme. This site has the details, defining an equivalent representation of everything XMLy in Scheme, and providing a cool parser implementation.

    The fabled "scripting language in XML" could turn out to be pretty-printed scheme s-expressions...

    Remember - when you're downloading XML, you're downloading communism^H^H^H^H^H^H^H^H^HLISP !

    --
    Choice of masters is not freedom.
    1. Re:XML and Scheme/LISP by DGolden · · Score: 1

      gaah... I mean this site, ssax.sourceforge.net

      this is the master site, and also contains lots of other cool stuff.

      --
      Choice of masters is not freedom.
  32. Lisp is nice but Smalltalk is better by crovira · · Score: 3, Insightful

    Lisp is okay. The syntax is trivial but over the years it has evolved some good libraries and it is reflexive.

    You can use lisp to write/generate lisp code which you can then interpret/compile and execute. The problem comes from the architecture of the VM. It was not fundamentally designed with objects and message passing in mind.

    Prolog has a similar simple syntax but its VM is designed completely differently.

    From that respect, the Smalltalk VM is closer to the paradigm.

    While all three have had time to mature and evolve over the decades of their existence, Smalltalk has the most usable and extensive libraries to date.

    Smalltalkers find Java class libraries "quaint."

    That said, Smalltalk is still flawed because it is container based and the contained don't know they are contained unless explicitely made aware of the fact.

    This is its major flaw, as a brick in a wall can make amply clear, its in a wall and its held there. The wall is the aggregate of the relationships between the bricks.

    --
    MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
    1. Re:Lisp is nice but Smalltalk is better by Furry+Ice · · Score: 1
      The VM was not fundamentally design with objects and message passing in mind? For one, I don't know what you mean by VM. I'm guessing "virtual machine," but if you knew anything about LISP, you'd know that there's no requirement of a virtual machine. Some LISP's use them, but most don't. Many are fully compiled.

      Your point that the "VM" wasn't designed with message passing in mind is completely correct. However, it's pretty easy to write message passing objects in LISP. The CLOS is written in LISP and is a more general object model than that possessed by Smalltalk. LISP isn't fundamentally designed with objects in mind--it's designed around more general principles in which many other paradigms can be implemented.

  33. Yeah, but just like zsnes and xmame by uchian · · Score: 0, Troll

    It's still an emulator.

    1. Re:Yeah, but just like zsnes and xmame by Anonymous Coward · · Score: 0

      emulator? or do you mean interpreter?

      And it hasn't been a simple interpreter for a while. Not since JIT and Hot Spot more than 3 years ago
      VMs can compile bytecode to machine language at the time of class loading.

    2. Re:Yeah, but just like zsnes and xmame by Anonymous Coward · · Score: 0

      Riddle me this:

      What would fundamentally change if we replaced the Java bytecode with the x86 ISA, and the Java libraries with Win32?

      Now say we wrote a dynamic JIT for x86 for all the platforms Java supports (like FX!32 for example). And we linked in WINE, suitably enhanced.

      What would fundamentally change here? Besides our software and library base growing by several orders of magniture.

      And don't forget, there were efforts to build CPUs that execute Java bytecode as their instruction set, with varying degrees of success. Now how is Java different from x86/Win32?

      An interpreter traditionally interprets source at a high level, like BASH. If you compile to a non-existant machine, then emulate that machine (perhaps using techniques like JIT compilation for speed) you're not interpreting.

    3. Re:Yeah, but just like zsnes and xmame by Anonymous Coward · · Score: 1, Insightful

      We'd lose most security. Java bytecode is carefully designed so you can verify that it doesn't violate the semantic rules of the platform (no calls to inaccessible methods, coercions to the wrong type, or using arbitrary bits as object references) before you execute it. Without the sandbox, we'd again be limited to the underlying operating systems' laughably crude and ineffective measures of per-user access control, with no way to delegate some of my privileges to code I don't entirely trust.

    4. Re:Yeah, but just like zsnes and xmame by uchian · · Score: 1

      emulator? or do you mean interpreter?

      And it hasn't been a simple interpreter for a while. Not since JIT and Hot Spot more than 3 years ago

      VMs can compile bytecode to machine language at the time of class loading.</i>

      No, it's an emulator.

      It takes "byte code" (a machine code for a different machine - if that machine exists or not) and translates it into native machine code at run time.

      You speak of JIT, but this was used in the ULTRA 64 emulator (dynamic recompilation) about a year after the N64 came out. (perhaps before, I haven't checked my dates).

      Java doesn't know about specific machine abilities - hence it uses a subset of them, or emulates those not available. Exactly what a Spectrum emulator does (no mouse-wheel), or xmame does (PC's don;t come with coin-slots).

      I don't understand why you don't see this as emulation.

    5. Re:Yeah, but just like zsnes and xmame by Olaf+Klischat · · Score: 1

      We'd lose meta information. (Java) bytecode contains a lot more than just executable code. It contains information about which classes there are, what methods they contain, and what the exact signatures of these methods are. This gives the compiler and run-time linker enough information to link different class libraries distributed in binary format against each other, and to make such class libraries available to self-written code without having to manually write "glue code" that does that job.

      Raw x86 code only contains the naked machine instructions plus (if you take a traditional library format like, say, ELF) primitive named symbols. This makes kludges like "scripting language x to toolkit y bindings" necessary, which serve the purpose to convey some higher-ordered pieces of information (like class hierachies or the like) over a lower-ordered bridge (shared objects).

    6. Re:Yeah, but just like zsnes and xmame by cakoose · · Score: 1

      I accept that the JVM fits the description of an emulator, but why do you decisively state that it isn't an interpreter? It seems that those terms can be used interchangably.

    7. Re:Yeah, but just like zsnes and xmame by uchian · · Score: 1

      I accept that the JVM fits the description of an emulator, but why do you decisively state that it isn't an interpreter? It seems that those terms can be used interchangably.

      Hmm... Just my own interpretaion of what an emulator and an interpreter are, I suppose. I consider an interpreter to be something that takes a high level language, and understands what to do with it (for instance, regular expressions in Perl).

      I see an emulator more as a "I don't know what this program does, but I can follow this set of instructions and see what happens".

      And I see a native program as just "follow rules"

  34. And what of the professional's using LISP? by Galactic+Avenger · · Score: 1

    You might like to look at the following links before you conclude that Lisp is not usable in the real world:

    http://www.paulgraham.com/paulgraham/avg.html

  35. This and much more has been done before ... by Galactic+Avenger · · Score: 1

    See:

    http://www.bagley.org/~doug/shootout/

  36. besides java and lisp, there is inferno by ppetrakis · · Score: 0, Offtopic

    By far the FASTEST VM I've ever seen, especially when it comes to graphics. The limbo language is exceptionally clean. For those who don't know what inferno is it's closly related to the plan 9
    OS by bell labs. More information on inferno can be found here. http://www.vitanuova.com/inferno/concepts.html .
    Those of you running windows, check out the plug-in demos. While they are running take note that when it's running graphics the cpu usage on your system should be no more than 5-7%. On the otherhand, equivilent java programs like to peg your CPU whenever you try and do some mediocre graphics.

    Peter

    --
    www.alphalinux.org
    1. Re:besides java and lisp, there is inferno by DGolden · · Score: 1

      Fastest Java-like VM I've seen is the Tao/ Amiga one. It's an interesting architecture, since the virtual CPU has no particular upper limit on the number of registers you use, rather than the stack-machine approach used by most VMs.

      --
      Choice of masters is not freedom.
  37. LispM and Java hardware by bubbaD · · Score: 1

    Lets' avoid the "Different languages are good for different types of projects" conclusions. Boring!
    Is either language good when implemented directly on a chip?
    Lisp implemented in hardware turned out to be a distaster in the eighties. Symbolics, Lisp Machines International, the Texas Instruments TI Explorer, the Xerox's Lisp Machines all came to a dead end. Symbolics lasted long enough to emulate their machines on Alpha(Open Genera), and now Alpha's are probably going to be phased out, too. :(
    I have seen lots of attempts to put Java on a chip, but I'm unaware of any real successes.
    Is there a reason to think that Java will do better in the embedded field than Lisp did on workstations?

    1. Re:LispM and Java hardware by Anonymous Coward · · Score: 1, Interesting

      Hardware lisp machines worked very well. It was over-pricing, marketing, not technological factors, that caused their failure.

      Thing is, a hardware design that runs lisp well also runs forth and Java well, anwyay -

      Java's already doing very well in the embedded field, largely because existing embedded forth controllers are good at executing java VM code - they're all just stack machines.

    2. Re:LispM and Java hardware by Anonymous Coward · · Score: 0

      Java is doing a great job in embedded systems.
      Funny, you don't see too many lisp cellphones coming out these days.

      Here is a development environment for java on embedded hardware.
      Maybe the faq on the site can help to enlightlen you a little.

  38. "not comparable"??? by Anonymous Coward · · Score: 0

    Why do you do a comparison then?

    1. Re:"not comparable"??? by gawi · · Score: 1

      well... it was a figure of speech.

      one does not need to perform a complex comparative analysis to see the huge functional differences between those standard libraries.

      --
      All humans are mortal. Socrates is a human. Socrates is dead.
  39. Memory management argument by Anonymous Coward · · Score: 0

    Memory consumption for Lisp was significantly higher than for C/C++ and roughly comparable to Java. However, this result is somewhat misleading for two reasons. First, Lisp and Java both do internal memory management using garbage collection, so it is often the case that the Lisp and Java runtimes will allocate memory from the operating system this is not actually being used by the application program.

    If your tests concluded that Lisp was allocating memory for the same task, why would you conclude that just because it uses garbage collection the results were misleading. If my peak memory utilization for Lisp is A, and peak memory utilization for C++ is B, if A > B it's pretty much cut and dry.

    In the real world we shouldn't care about garbage collection, if your app looks like a memory hog, chances are that's the way it'll be preceived by the general user.

    1. Re:Memory management argument by Anonymous Coward · · Score: 0
      Memory that hasn't yet been reclaimed has a cost.

      Synchronous bookkeeping every time a reference is acquired or destroyed also has a cost. As do program failures from dangling references to released objects, and getting skilled software engineers to do the mind-numbing chore of verifying that all objects are released and none are used afterwards.

      Extra memory has the virtue of being cheap and easy to obtain.

  40. It can be solved with dotNet by Anonymous Coward · · Score: 0

    The problems with the API can be solved by porting a LISP to the dotNet framework.

    MS Empire minion

  41. The main reason I won't touch LISP is .. by Anonymous Coward · · Score: 0

    I am afraid of a bearded weirdo running after me screaming "it's GNU/LISP!", "it's GNU/LISP!"

    1. Re:The main reason I won't touch LISP is .. by Anonymous Coward · · Score: 0

      You can rest easy. Since Lisp is a programming language while GNU is a Unix-like operating system composed of copylefted Free Software, there's no danger that people are trying to hide from you the fact your Lisp compiler is actually just a tweaked version of the GNU System.

  42. I've written 2 Lisp and 4 Java books by MarkWatson · · Score: 4, Informative
    First, great topic!

    I have written 2 Lisp books for Springer-Verlag and 4 Java books, so you bet that I have an opinion on my two favorite languages.

    First, given free choice, I would use Common LISP for most of my devlopment work. Common LISP has a huge library and is a very stable language. Although I prefer Xanalys LispWorks, there are also good free Common LISP systems.

    Java is also a great language, mainly because of the awesome class libraries and the J2EE framework (I am biased here because I am just finishing up writing a J2EE book).

    Peter Norvig once made a great comment on Java and Lisp (roughly quoting him): Java is only half as good as Lisp for AI but that is good enough.

    Anyway, I find that both Java and Common LISP are very efficient environments to code in. I only use Java for my work because that is what my customers want.

    BTW, I have a new free web book on Java and AI on my web site - help yourself!

    Best regards,

    Mark

    -- www.markwatson.com -- Open Source and Content

    1. Re:I've written 2 Lisp and 4 Java books by Rinikusu · · Score: 1

      Would you mind sharing where to get "free" lisp interpretors? Common or Ansi? I can only seem to find the free trials of Xanalys and Allegro CL they want like $1400 for theirs!! gah!) How standard or whatever is the LISP in EMACS? I'm just trying to learn LISP for the hell of it but can't find the functional equivalent of gcc...

      Thanks in advance.

      --
      If you were me, you'd be good lookin'. - six string samurai
    2. Re:I've written 2 Lisp and 4 Java books by hding · · Score: 2

      Two good choices are CMUCL and CLisp. Information for both of these may be found at www.cons.org. (Warning-there have been some problems with the site lately. Be patient or try again if there is a problem. :-) Emacs Lisp is mostly suited for writing Emacs and extensions thereof; it differs from more modern Lisps in some important ways. Of course, one should still know it to facilitate customization of Emacs. :-)

    3. Re:I've written 2 Lisp and 4 Java books by MarkWatson · · Score: 2, Informative
      Hello Rinikusu,

      The Xananlys free educational system is very usable as-is. The only real constraints on the free personal version is that it will only run for 5 hours (then you simple have to restart the IDE) and that you can not save small stand-alone executables.

      That said, try the free personal version, and if later you need to distribute small compiled applications for Linux or Windows, then buy the Pro version.

      Under Linux, CMU Common LISP is free and generates very fast compiled code. Under Windows, Linux, etc., CLisp is free and although uses compiled pseudo-code, it is fairly fast, and uses very little memory so it is very appropriate for writing small scripts and utility programs.

      -Mark

  43. Its not the languages, its the compilers! by Anonymous Coward · · Score: 0

    Is it just me or is this whole study flawed because its not the languages per se that he is testing, but the compilers for those languages.

  44. The author of the article doesn't get it by njdj · · Score: 1

    The only criteria considered in the article (development speed, execution speed, memory usage) are of secondary importance. Most of the money spent on software development is spent on maintenance. Maintenance is what most programmers do.

    The most important criterion for language choice in the real world is: how easy is it for someone to understand a program written in this language?
    That's why Lisp is, and deserves to be, a loser.

  45. Huh...? The report date is November 1999! by frleong · · Score: 1
    1. So this is news... The Y2K bug resurfaced at slashdot.org after the recent db crash? Java at that time was slow as hell.
    2. Can someone tell me what the problem domain was? If the problem was something that Lisp deals excellently, then it would be unfair to other general purpose languages. What about real world stuff like network programming, GUIs, remote objects calling, etc.?
    --
    ¦ ©® ±
  46. Re:LISP !? by Anonymous Coward · · Score: 0
    Gee, for me it was all those spurious {, }, ;, $, % and whatever more that made learning other languages annoying.


    "Syntactic sugar causes cancer of the semi-colon." -- Alan Perlis

  47. Other people have pointed this out, but... by Anonymous Coward · · Score: 1

    ...let's emphasize that the date of the article makes it completely irrelevant. Java near the beginning of its life was not just slow, nor sloooow, but it was SLOOOO-OOOOO-OOOOW. We tried to use it for some things at the Human Genome Project, and gave up. I don't know what version of Java he was referencing, but it certainly wasn't Java 1.3, which has turned in some pretty major improvements.

  48. IDE can be a great training tool... by SuperKendall · · Score: 2

    I myself pretty much just Emacs for all my Java programming.

    However, I have to say that an IDE can be useful for two things - The first is helping novice programmers understand the language better and develop within your application faster (here I speak primarily of code completion). The second is debugging... I know there are many debates on weither or not debuggers are really useful and I try not to rely on them much, but sometimes when you have a really nasty multithreading issue there's nothing more valuable than being able to scan system memory during runtime.

    I know many would argue against using code completeion - I myself am not sure yet weither to see it as a crutch or not (I figure it's probably better to have a solid understanding of what you're trying to call). However, cruch or no it does make it possible for lower level programmers to work more effectivley in a system and sometimes you have tasks that don't require a lot of design, just a lot of work that can be done (with supervision) by entry level people.

    So even though the presence of good IDE's may not make a language "good", I think it helps determines if a language is viable for corperate programming.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:IDE can be a great training tool... by Anonymous Coward · · Score: 0

      You mean people actually hire programmers that can't pickup a new language in a couple days? That can't work without an IDE?

      And people won't hire me because I don't have experience...

      This industry is pathetic. Fuck it. I'm going to be a drug-dealer instead.

    2. Re:IDE can be a great training tool... by SuperKendall · · Score: 1

      More along the lines of being wary of hiring programmers that claim they can pick up a language in "a couple of days"... sure, the mechanics you could grasp but that's not the same as understanding the underlying philosophy of the language in depth. Sure I can understand python and debug and enhance some things, but by no means do I consider myself a python programmer.

      On not being able to work without an IDE, I don't really look down on people that like to use them - some people are more graphically inclined, and often they can be fairly productive and even good desingers. Just because I prefer an IDE approach does not mean it works for everyone.

      As for experience, have you worked on an OS projects? I think having a good period of time on any project, with a company or not, can be a good inroad. Even if it was your own project, if it was generally accessible it would be enough to see you were a good programmer.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
  49. Why Java succeeded, LISP can't make headway now by joneshenry · · Score: 5, Informative
    Java was never marketted as the ultimate fast language to do searching or to manipulate large data structures. What Java was marketted as was a language that was good enough for programming paradigms popular at the time such as object orientation and automatic garbage collection while providing the most comprehensive APIs under the control of one entity who would continue to push the extension of those APIs.

    In this LinuxWorld interview look what Stroustrup is hoping to someday have in the C++ standard for libraries. It's a joke, almost all of those features are already in Java. As Stroustrup says, a standard GUI framework is not "politically feasible".

    Now go listen to what Linux Torvalds is saying about what he finds to be the most exciting thing to happen to Linux the past year. Hint, it's not the completion of the kernel 2.4.x, it's KDE. The foundation of KDE's success is the triumph of Qt as the de facto standard that a large community has embraced to build an entire reimplementation of end user applications.

    To fill the void of a standard GUI framework for C++, Microsoft has dictated a set of de facto standards for Windows, and Trolltech has successfully pushed Qt as the de facto standard for Linux.

    I claim that as a whole the programming community doesn't care whether a standard is de jure or de facto, but they do care that SOME standard exists. When it comes to talking people into making the investment of time and money to learn a platform on which to base their careers, a multitude of incompatible choices is NOT the way to market.

    I find talking about LISP as one language compared to Java to be a complete joke. Whose LISP? Scheme? Whose version of Scheme, GNU's Guile? Is the Elisp in Emacs the most widely distributed implementation of LISP? Can Emacs be rewritten using Guile? What is the GUI framework for all of LISP? Anyone come up with a set of LISP APIs that are the equivalent of J2EE or Jini?

    I find it extremely disheartening that the same people who can grasp the argument that the value of networks lies in the communication people can do are incapable of applying the same reasoning to programming languages. Is it that hard to read Odlyzko and not see that people just want to do the same thing with programming languages--talk among themselves. The modern paradigm for software where the money is being made is getting things to work with each other. Dinosaur languages that wait around for decades while slow bureaucratic committees create nonsolutions are going to get stomped by faster moving mammals such as Java pushed by single-decision vendors. And so are fragmented languages with a multitude of incompatible and incomplete implementations such as LISP.

  50. So then by Anonymous Coward · · Score: 0
    The author, Erann Gat, was the principal software architect for the Mars Science Microrover, the prototype for the Mars Pathfinder rover."
    So he's the one responsible for failing to convert English (US) measurements to metric...cool.
  51. Of course. Don't you know God wrote in LISP? by elig · · Score: 1
  52. I've been working in a Lispish language for a year by Anonymous Coward · · Score: 0

    It's called Monk by the vendor. I've kind of learned to like it. It's easy to work with linked lists.

    But I've been paid well to use it.

    The vendor has a new version that uses Monk and/or Java. So who knows.

    Please don't waste moderator points on this.

  53. Not really by SuperKendall · · Score: 2

    I spent a lot of time with scheme in school - I took a number of classes that used scheme and was also a scheme labby (where I helped students in scheme classes and also led sessions to try and help people explore concepts presented in class in more depth). Even now I personally think Scheme is the best language in the world to teach programming.

    However, I'm also a corperate Java programmer. Thus I have no congnitive dissidence at all, I'm really comfortable in both lnaguges, in fact I use a lot of techniques I learned in Scheme in Java. I have to say that for corperate programming, Java is simply a better choice at the moment.

    There are a lot of reasons why I think that, mostly boiling down to a rich set of tools, corperate system API's, and a lot of programmers with a wide range of experience. But I don't think cognitive dissonance is the problem - if Scheme became viable you'd see a lot of programmers head that way just like they've headed to Java from other languages.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  54. Multithreaded Apps? by Max+Entropy · · Score: 1

    Lisp is all well-and-good...Until you try to build a multithreaded app.

    1. Re:Multithreaded Apps? by MarkWatson · · Score: 1
      Greetings Max,

      Try the free personal version of LispWorks at http://www.xanalys.com/software_tools/downloads/lw -personal-edition.html.

      It has great multithreading support under Windows and Linux.

      -Mark

    2. Re:Multithreaded Apps? by hding · · Score: 2

      Specifically what features do you feel that a Lisp such as Lispworks (as Mark mentioned) or Allegro do you feel are missing that makes building multi-threaded applications a problem? For your reference, the chapter of the Lispworks Reference manual describing the MP package is here

  55. Its a plot by Anonymous Coward · · Score: 0

    First they make you a UNIX,
    Then they make you LISP.

  56. Lisp urges by Anonymous Coward · · Score: 0

    Every once in a while, I get the urge to write programs in Lisp. It usually happens late at night when, presumably, the satellites are overhead. This is unusual in that, while I consider myself a competent programmer, my Lisp skills hover around the HelloWorld level.

    My current working explanation for these urges is that Lisp was the native language of the inhabitants of Ancient Mars, mankind's ancestral homeworld. I'm not talking programming languages here, but rather that the syntax of the spoken Martian language was lisp-like.

  57. Well... by NewWazoo · · Score: 1

    I've tried to uthe lithpe, but I find it jutht doethn't have the thtrong typing of java, or the eathe of creating eathily extenthible uther-defined typeth.

    that and there'th thothe thtupid pronunthiation problemth.

    TheNewWazoo

  58. Smalltalk links by Anonymous Coward · · Score: 0

    Smalltalk.ORG has links to all the versions of Smalltalk plus more.

    1. Re:Smalltalk links by Anonymous Coward · · Score: 0

      Woops. That link should be Smalltalk.ORG.

  59. ada95 by zoftie · · Score: 1

    How about ada? Ada95 is one of the most efficent
    languages to program for, assuming you will be
    doing object oriented design or embedded apps.
    Java isn't doing all that well in embedded world
    and C++ is a joke when it comes to cost of the
    production. Not many people look into ada,
    but they should. It is a baby of DOD, to cut
    costs on development of software. Last time
    DOD ventured into computers they made internet.
    I think we should listen to them on this one
    closely, because what they say may have alot of
    merit, unlike that of a Java promoting drone and
    LISP huddling professor.
    p.

    http://perlpimp.com for few links.

  60. Why Lisp is just academic by scruffy · · Score: 2

    One reason Lisp has fallen because the Lisp community could not resist the temptation of feature creep. Common Lisp is a huge language with all sorts of cruft and a difficult to understand packaging system. Java, on the other hand, is a much smaller language, but with a huge API. It is much easier to learn Java and then to pick and choose what parts of the API you need to know. Lisp should have standardized and modularized the API rather than bloating the language.

    1. Re:Why Lisp is just academic by Anonymous Coward · · Score: 1, Informative
      I just can't resist this one.

      Lisp blurs the lines between library and language. Much of its advantage comes from crafting the tool to fit the problem. It's a change in thinking. MS is re-innovating it in Intentional Programming (honestly taking it in some new directions), and many tricks in C++ try to emulate this power.

      Perhaps you consider it academic because it requires thinking?

    2. Re:Why Lisp is just academic by e40 · · Score: 1

      I can't resist either. The core lisp language could be defined in a less than 100 pages. The rest is library. If you had ever used the thing you feel so qualified to bash, you might have known this!

      How does your foot taste?

    3. Re:Why Lisp is just academic by Anonymous Coward · · Score: 0

      Scheme is small and simple at its core, as is Java. This falls into principles of language design as seen through one of their designers, which they happen to share. Guy Steele, Jr.

    4. Re:Why Lisp is just academic by ep385 · · Score: 1

      Having written a Common Lisp compiler (to machine code) and a Java compiler (to Java class files) I can say that Java is by far the more complex language.

      Common Lisp looks like a huge language because when it was made an ANSI standard it wasn't made clear which parts comprised the language itself and which parts were just the APIs for library functions. This was a mistake made by the Common Lisp standards committee. They wanted to make sure that every Common Lisp implementation contained a rich set of library functions.

      This mistake in the ANSI spec doesn't change the fact that Common Lisp is a simple regular language.

    5. Re:Why Lisp is just academic by Anonymous Coward · · Score: 0

      I thought it was obvious that the syntax "(fn arg arg...)" and every special form make up the language, and everything else is the standard library.

    6. Re:Why Lisp is just academic by MarkWatson · · Score: 1
      OK scruffy, I'll bite on this,

      I earn my living as a Java developer (with little paid work with Lisp in the last 10 years) and I am finishing my 5th book on Java (J2EE stuff).

      My one big gripe about Java is the same feature creep that you complain about in Common LISP. For me, following the latest Java APIs is a lot of fun, but I believe that it would benefit the use of Java to more or less do a freeze on the language and the APIs.

      One good example: while the new JAXM APIs look good, why not keep higher level tools and APIs in the hands of independent developers? Compare, for example, using JAXM to the free version of GLUE. We should keep space open for small companies to inovate.

      BTW, Common LISP is very stable. Sometimes this is a hassle: earlier this year, it took a while just to get a good XML parser that handled namespaces. Also, I want to use SOAP with Common LISP, and I find myself hacking something together because there is no standard SOAP support at this time in Common LISP.

      -Mark

    7. Re:Why Lisp is just academic by Anonymous Coward · · Score: 0

      I won't try and argue this point but let me just say that it hasn't stopped C++ from becoming popular. Don't forget that C++ is far worse than ANSI Common Lisp when it comes to feature creep.

  61. Another simply factual reply goes under the radar by Anonymous Coward · · Score: 0
    The mention of Stroustrup is interesting. Stroustrup has a very clear opinion of Java. http://www.research.att.com/~bs/bs_faq.html#Java shows this opinion.

    BTW, there is a link within that, which talks about how Java's handling of floating point is terrible and even sets back technology if fully endorsed by the industry and academia.

    Java is a very young language. It is easy for me to predict that in 30 years from now, that Java's library will be a mess. For instance, Sun will have theirs along with GNU's and also don't forget other meanfully re-implemented libraries by other communities (AI, Graphics, Scientic Computation, Multimedia, etc). Java is just beginning on a long trip through computer science.
    What has happened to Lisp? Algol? Smalltalk? Ada? Even C? Huge changes. That last paragraph talks about fragmentation? Let's see how Java (and C#)stand up to reality. BTW, Gosling has already said that many features should be added to Java. Read the link above for full details.
    This is not flamebait. This article should be modded up to a positive number. Act like an adult and do it.

  62. A few questions about Smalltalk by Anonymous Coward · · Score: 0

    I just started learning Smalltalk in school this semester, and one thing that struck me as interesting is how flexible it is. However, this flexibility also introduces some problems: security. While Java sacrifices some flexibility from C/C++ to implement a (theoretically) secure environment, Smalltalk doesn't seem make any concern in this area. For example, you can redefine the class Object and basically change the behavior of all your programs. There are no access specifiers (like protected/private) for the methods. My question is, with this weakness, what mechanism is there to make Smalltalk suitable for a large project, when a big team of people are working together?

    Another question: since everything in Smalltalk is implemented as objects and message sending, wouldn't that introduce a huge overhead? It's nice from a academic point of view, but is it practical in reality?

    1. Re:A few questions about Smalltalk by churchr · · Score: 1

      Does private/protected _really_ help for large programs with lots of team members? I know that conventional wisdom says it does, but I've seen no real evidence, and my experience, working on some medium-sized Perl projects, suggests that the absence of access control is no problem at all.

      As for the overhead of message sends, it turns out that Smalltalk VMs are pretty smart and are able to eliminate most of that overhead. A good Smalltalk system generally matches or exceeds the speed of Java VMs.

  63. [The Great Anonymous French Calembour] by Anonymous Coward · · Score: 0

    Lisp: Ton lit c'pas une trampoline.

  64. Another factual reply goes under the radar by Anonymous Coward · · Score: 1, Interesting
    The mention of Stroustrup is interesting. Stroustrup has a very clear opinion of Java. http://www.research.att.com/~bs/bs_faq.html#Java shows this opinion.

    BTW, there is a link within that, which talks about how Java's handling of floating point is terrible and even sets back technology if fully endorsed by the industry and academia.

    Java is a very young language. It is easy for me to predict that in 30 years from now, that Java's library will be a mess. For instance, Sun will have theirs along with GNU's and also don't forget other meaningful re-implemented libraries by other communities (AI, Graphics, Scientic Computation, Multimedia, etc). Java is just beginning on a long trip through computer science.

    What has happened to Lisp? Algol? Smalltalk? Ada? Even C? Huge changes. That last paragraph talks about fragmentation? Let's see how Java (and C#)stand up to reality. BTW, Gosling has already said that many features should be added to Java. Read the link above for full details.

    This is not flamebait. This article should be modded up to a positive number. Act like an adult and do it.

    1. Re:Another factual reply goes under the radar by SuperKendall · · Score: 1

      Why respond as an AC? You weaken your own argument by doing so - how sure are you really if you aren't willing to go on record as saying that in 30 years Java will be a mess.

      I don't see it turning out like that. Java the language will probably have some enhancements but not many - they happen through the JCP but even so most people are very reluctant to add any language syntax (witnesss how long it takes to get simple generics support in).

      The library sets of Java will also grow, but if a package grows too messy I think they'll just split off a new package and grow from there - witness the java.io and java.nio packages in the 1.4 JDK.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    2. Re:Another factual reply goes under the radar by Anonymous Coward · · Score: 0

      The logic or facts behind an argument are independent of who's speaking it (or even whether they believe it). Identity is only good for prejudice; it enables you to dismiss an idea without actually evaluating it simply because you don't like who it came from.

    3. Re:Another factual reply goes under the radar by Anonymous Coward · · Score: 0
      Java is Sun's language. Sun will have to extend their language. It might not be called Java in 30 years. But everyone knows that there will no a language backed by Sun which will have some of the syntax and/or ideas. In essence, Java will change in major ways. Java will be messy from this point of view.

      Every major language (that I know) has started out nice (layed out in a logical format). But in time the bad ideas are ferreted out. Then new ideas are shoved in. Does anyone think that Java won't have aspect orientation in the future? Sun would be crazy not to because a version of Java with aspect oriented feature will be produced by somebody (and I think it is called AspectJ).

      Since Sun owns Java they might control how "standard" libraries are organized. But this is not the same thing as how the Java community will use Java. Saying that some decoupling of libraries will keep Java's libraries organized is foolish. Some messes can't be solved by moving code.

      For instance, what will happen if the Java community wants the VM to be updated in a complex manner? Many functional languages cannot be run on the Java VM (in a serious fashion) without a whole lot of renovations. What about if the Java community wanted a better implementation of floating point (I mentioned this in the last post)? This involves changes to how floats and doubles are used. This also involves what exceptions Java reports. This is not simple.

      The rest of this is offtopic...
      I respond as an AC because identities are evil on Slashdot. Rarely do people actually back up their claims. They just want to say so made up crap AND be the first to do it.

      I don't want people to say John McCabe (that is my real name) says "blah blah". I have about 7 accounts but I forgot the passwords after a week of not using them. I don't need a identity to have a valid point. This is something that I believe in. If the Slashdot community allows AC's then AC's should be treated equally as long as they're not trolling.

    4. Re:Another factual reply goes under the radar by SuperKendall · · Score: 1

      Nonsense. Ideas might be good or bad on thier own, but additionbal weight is gained when someone stands up for the idea, promotes it, says that they as a person with such a background support that idea - it gives you more of a context to understand why the idea might be good or bad.

      Similarily if an idea is whispered by people afriad to come forth, to promote an idea then it is just rumor-mongering and can be considered but the very inability of someone to come forth with support makes one wonder why they should even bother to conisder the idea.

      I think you're just afraid that come thirty years hence, you don't want to be identified with a staement eqivilent to "640k is enough for anyone". I never post AC and am more than happy to have people look over what I've written - perhaps some of it is in error, perhaps some of my predicitons will turn out wrong but at least I had the courage to say I believed in them and not drift through life unsure of anything.

      Either that, or you're just a troll which is probably a lot more likley. Ah well!

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    5. Re:Another factual reply goes under the radar by SuperKendall · · Score: 1

      To address the AC issue first, I agree with you to a point about AC's having equal say on /., I always try and be fair when moderating and have modded up many AC's in the past.

      I'll also totally agree that a lot of people here just want to post made-up crap. That's a pretty good point. One problem I've seen though is that a lot of people also use the AC shield to do exactly that, so one tends to become a bit dubious of an AC post after a while.

      I think that in an argument like this (over languages) it does add a little more credibility to have a history that others can review of what you posted, as I said in a previous message it can help give context to your arguments and also provide insights into thoughts presented. You raise some good issues though so I'll cease going on and on over the AC issue.

      Now, on to the other points.

      I don't think really any of those changes (improved FP capability like the missing flags, functional support) will make Java ugly in any way. In fact most will probably not even be noticable.

      I say that because it seems the top priority of all changes to Java (the VM or language) have been to keep the changes small and not have to revise older programs. The generics support is a prime example of this - it's backwards and forwards compatible (at least syntax wise), and you can use older pacakges as though they supported generics.

      Possibly, the VM might get a bit messy - that I could see. But I'm also not sure that even 30 years hence any functional features will make it into the VM as it's not a top priority for the community as a whole, which drives what will get included.

      As for better FP support, I've read that paper a few times and it raises some good points, which will probably be addressed over time - but I expect to see those changes made in such a way that there will be no impact to the programmer if they don't care about them.

      Finally, to address the point about Sun's libraries and the way the community uses them diverging - I really don't see that happening as it's the JCP (Java Community Process) that controls all changes to the language and VM! By definition they will evolve according to the wishes of the community. You might ask if the JCP will still be around in 30 years, but I think it's a really well thought out structure for evolving the language and will probably stick around.

      I'm not so sure myself about Java having to have aspect support as part of the standard - it seems like a nice idea but enough of a niche concept that I am not certain at all that within thirty years it would become popular enough to become a standard part of Java.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    6. Re:Another factual reply goes under the radar by Anonymous Coward · · Score: 0
      additionbal weight is gained when someone stands up for the idea

      Ideas don't have "weight". They either accurately describe some aspect of the universe or they don't, and nobody else's mental state affects that one iota. The search for truth is not a popularity contest; there are no bonus points for coming to believe the same things other people believe.

      makes one wonder why they should even bother to conisder the idea

      We are sentient beings. Creating and judging ideas is the reason for our existence. If you meekly await others' judgment instead of applying your own, you are a waste of nitrogen.

      I must post anonymously because I want a civilization in which ego-free debate is the norm, where unpopular ideas can easily be voiced and judged because nobody is punished for having held them.

    7. Re:Another factual reply goes under the radar by SuperKendall · · Score: 1

      Ideas have no substance without people to implement them. Thus, if no-one believes in an idea it has no "weight" where a generally accepted idea is unstoppable. An idea might be true but if without humans accepting it you face the classic tree falling alone in a forest. It may make a sound, but the sound does not matter. Similarily, while an idea might be true to have any point it needs someone to believe in it, to act on it. Think of weight as some sort of meta-property of an idea, not part of the original idea perhaps but important in human-idea interactions.

      We are sentient beings. Creating and judging ideas is the reason for our existence. If you meekly await others' judgment instead of applying your own, you are a waste of nitrogen.

      But without weight attached to an idea, how are we to ever get beyond simply sorting bad ideas from good?

      In other words, would you waste your time evaluating an idea like "we should all use peanut butter as a replacement for clothing" as equal to other more important ideas? Furthermore, the more time you spend evaluating ideas the less time you have to create your own - which is why idea sorting mechanisms are important, to minimize the time spent analysing other ideas for viability and maximising the time spent on your own.

      If you really believe our point here is to evaluate and generate ideas, then you have to accept the importance of quickness in evaluating fit ideas to incorperate into new ones. That implies some sort of ordering and thus "weight".

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
  65. What about GUIs? by prizog · · Score: 2

    Where are the good, cross-platform GUI toolkits for Lisp?

    1. Re:What about GUIs? by e40 · · Score: 1

      There doesn't need to be. You can write all your your GUI's in Java and use them from lisp with jLinker (in Allegro CL).

    2. Re:What about GUIs? by hding · · Score: 2

      There's always CLIM for such things.

    3. Re:What about GUIs? by scrytch · · Score: 2

      Where are the good, cross-platform GUI toolkits for Lisp?

      Hm, I'm still looking for a *good* GUI toolkit for Java, preferably something with nice functional constraints instead of the overarchitected event framework of awt and swing. About the only GUI framework that I really liked was FranTk in Haskell, which sadly was a ferocious pain to compile. I'm not a functional nazi, I just don't like doing everything "by hand", which is what it feels like in Java. Last I looked there wasn't even a packing layout manager in Java like Tcl/Tk has, I had to get it third-party.

      Anyway, I plugged your question verbatim (minus the question mark at the end) into Google, and came up with a gigantic list of toolkits, including a standard API for GUIs in common lisp called CLIM.

      Any toolkit is going to be limited to the platforms it's been ported to -- it's not as if Swing magically works when the core JVM is ported after all.

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    4. Re:What about GUIs? by prizog · · Score: 2, Interesting

      Java's event-driven GUI system is easy to code for, but is limited by the simplistic event model. Still, it does not make much totally impossible, so in my book, it is decent.

      I am not sure what you mean by a packing layout manager (but you can tell me next time you see me on IRC).

      I do see a list of toolkits, but they all seem to be based on terrible base toolkits, like Tk or WxWindows, or are not portable at all.

      CLIM is a good idea, but I cannot find any free (beer) implementations, which seriously limits its usefulness.

      Swing has the property that, since it is written almost entirely in Java, it can be ported with little effort. Bindings need not be written for each component, but only for windows (Xlib meaning) and a few other things. Unfortunately, this tends to make it a bit slow, but that's not a concern for me.

    5. Re:What about GUIs? by prizog · · Score: 1

      Your reply to my question would be acceptable, except in a Lisp v. Java discussion. Your answer to my implied question of "what can Lisp offer to in this arena to compete with Java" is "use Java". Well, OK....

    6. Re:What about GUIs? by hding · · Score: 2

      There is a Free-CLIM project, although I don't know its status

      It's unclear, though, how the lack of free CLIM implementations makes any statements about its usefulness. It merely indicates that you are either unable or unwilling to use a commercial implementation, which is fine, but really only makes a very local statement about it's usefulness (viz. that it's not useful to you in particular).

    7. Re:What about GUIs? by e40 · · Score: 1

      No, I said use java for the GUI. Use lisp for everything else.

    8. Re:What about GUIs? by prizog · · Score: 2

      Well, it means that few people will use it, so there will be a small library of pre-made components to work from, and a small set of work to learn from. It means that employers will have to work hard to find employees who know it, rather than being able to hire from a large base of people who already know it.

    9. Re:What about GUIs? by Anonymous Coward · · Score: 0

      Something that hasn't been mentioned yet is CAPI. A decent cross-platform (Linux and Windows) toolking from Xanalys. Available from http://www.xanalys.com/

      Before anyone asks, it is not Free. However it does come as part of the personal edition of Xanalys LispWorks.

  66. A few good links by Anonymous Coward · · Score: 0
    Teach yourself scheme in fixnum days.

    Lisp: Good news Bad news How to win big also known as "Worse is Better"

    Lisp on your Palm!

    Lisp/Scheme is pretty cool, but depending on the implementation you choose, you usually get little or no support for making GUI applications. So if its going to be used anywhere, I'm guessing CGI scripts and such on the web. Using it with SVG might be a pretty good option.

    ------
    bleh

    1. Re:A few good links by e40 · · Score: 1

      Let's not forget: AllegroServe, a kickass web server for lispers.

  67. Read the history of LISP Was Re:Lisp by joneshenry · · Score: 2
    The final form of LISP notation occurred because of accident and the prejudices of the LISP community, exactly the factors you disparage. From McCarthy's recollections "The unexpected appearance of an interpreter tended to freeze the form of the language...Another reason for the initial acceptance of awkwardnesses in the internal form of LISP is that we still expected to switch to writing programs as M-expressions...It just receded into the indefinite future, and a new
    generation of programmers appeared who preferred internal notation to any FORTRAN-like or ALGOL-like notation that could be devised." LISP was started as an extension of Fortran. The M-notation could not be used directly because of the character limitations of the IBM 026 key punch. S. R. Russell's observation about eval led to the implementation of an actual interpreter for LISP, this is what froze the language. This resistance to change was so great that it was impossible for McCarthy to even change 'car' and 'cdr' to names that had sense.

    It is also good to read the history of LISP because we need to remember that LISP was developed specifically for the killer application of artificial intelligence. Unfortunately looking back we can now see that artificial intelligence stagnated for decades. What happened? The field was caught in an unhealthy fascination with exactitude, theorem-proving, logic. While these mathematical ideas are beautiful and engrossing, we have to keep in mind we are dealing with a problem area of artificial intelligence that is supposed to work in the real world. The right way to progress in artificial intelligence was to embrace statistical, evolutionary approaches.

    Of course LISP is Turing-complete (provably), so in theory anything can be programmed in it. But we have to understand from reading the history the mindset associated with its origins, origins that are linked to an attempt to subsume artificial intelligence as a subset of mathematical logic. In this context, LISP can be argued to be computer science's greatest catastrophe. If great programs to finally succeed in conquering artificial intelligence are only now being written in LISP, it is just evidence that, academically speaking, the previous generation needed to die off to let progress resume.

  68. The link should be... by Futurepower(tm) · · Score: 2


    The link should be Kawa.



    ____________

    Something should be done about this:

    Post Comment
    Lameness filter encountered.
    Your comment violated the postercomment compression filter. Comment aborted

    --
    Bush's education improvements were
  69. Re:There is more data available for other language by Anonymous Coward · · Score: 0

    Thanks for ruining a Tclers day;-).

  70. A Disgruntled Lisp Professional Speaks by Courageous · · Score: 1


    I've used Lisp professionally for about 18 months. Two major complaints will cause me to never go back:

    1. Do a search on the web for various kinds of components, free source, and other third party stuff written in Lisp. The resources are very, very scarce.

    2. Emacs. Lisp and emacs are close friends. I don't like emacs. I hate emacs. Any development environment which REQUIRES you to use a particular editor (and many Lisps come perilously close to doing just that) is not for me.

    I'll never willingly use Lisp again.

    C//

  71. if anyone could halve the time for java ... by jpellino · · Score: 1

    ...i'd be ecstatic.
    if this keeps up can we look forward to LOGO APIs?
    ;-)

    --
    "Win treats sysadmins better than users. Mac treats users better than sysadmins. Linux treats everyone like sysadmins."
  72. ASSEMBLY IS THE FASTEST by jfm3 · · Score: 1

    Lisp may be fast, but assembly is the fASTeST.

    1. Re:ASSEMBLY IS THE FASTEST by Mike+Buddha · · Score: 1, Troll

      Lisp may be fast, but assembly is the fASTeST.

      Not to develop, not by several magnitudes, you l33t h4x0r, you.

      --
      by Mike Buddha -- Someday the mountain might get him, but the law never will.
  73. Yahoo Store Engine by Anonymous Coward · · Score: 0

    And let me tell you that having the yahoo store engine in lisp has been one incredibly lovely pain in the ass for the developers who inherited it.

  74. LISP is first computer language at MIT by peter303 · · Score: 2

    MITs Computer Science 101 (6.001) is based a the
    LISP variant called SCHEME. About half of the
    MIT students take this course required for all
    computer science majors and electrical engineeers.
    This course has used LISP for most of its 30 year
    history except one term when it tried Java.
    It is presumed the most MIT students have programmed
    extensively in high school one of the more practical language like C or JAVA.
    This purpose of this course is to teach fundamental
    program constructs and not how to get a job.

    1. Re:LISP is first computer language at MIT by e40 · · Score: 1

      Why did they try java, and why'd they stop using it? Just curious...

  75. Python = Lisp without parentheses by bugbear · · Score: 1

    It's interesting to hear that lots of people describe Python as Lisp without parentheses. That's exactly what I thought when I, as a long-time Lisp hacker, first looked at Python. Python even duplicates accidental historical features of Lisp that many Lisp hackers now consider a bad idea. They did not get there by accident.

    The problem is, what "Lisp without parentheses" means is a dumbed-down Lisp. There is a reason for those parentheses. Lisp without parentheses means Lisp without the core idea of Lisp: that the programs are made out of Lisp data structures. Lisp without parentheses means Lisp without macros, and that means a Lisp that is no longer (as John Foderaro famously called it) the "programmable programming language."

  76. Java.Lisp.go(!) by Zard+Biomatrix · · Score: 1

    i think it would be cool to integrate Lisp into
    your Java VM and then use Lisp to perform recursive functions and AI operations and such.

    of course, you could use a pre-processor for that instead.

    on second though, maybe that's a stupid idea.
    nevermind.

    /zard

    1. Re:Java.Lisp.go(!) by Anonymous Coward · · Score: 0

      You should have a look at Kawa. It currently supports Scheme (which some people don't consider to be a Lisp.) Support for Common Lisp is being worked on though.

      It is available from http://www.gnu.org/software/kawa/

  77. news? by necrognome · · Score: 1

    The date on the report is from two years ago, and the JDK used was 1.2?!

    --


    Let's get drunk and delete production data!
  78. Lisp is standarized. by ArmorFiend · · Score: 2, Informative

    Moderators, if you're still here: please mod this up.

    > I find talking about LISP as one language compared
    > to Java to be a complete joke. Whose LISP? Scheme?
    > Whose version of Scheme, GNU's Guile? Is the Elisp
    > in Emacs the most widely distributed
    > implementation of LISP? Can Emacs be rewritten
    > using Guile? What is the GUI framework for all of
    > LISP? Anyone come up with a set of LISP APIs that
    > are the equivalent of J2EE or Jini?

    There are exactly two dialects of Lisp that have relevance to this discussion.

    ANSI COMMON LISP is designed for large application development by a large team of programmers. It is the first object oriented langauge to have an ANSI standard. (circa 1990).

    Scheme is a minimalist language designed for ease of learning. It is specified by R5RS.

  79. Common Lisp vs. Lisp by bugbear · · Score: 3, Insightful

    You make a good point when you ask "Whose Lisp?" Lisp is a family of languages. Common Lisp, which is arguably the leading dialect now, has major flaws. It was designed by a committee, and not especially liked even by them. Common Lisp is like a big ugly old wrestler: powerful but lumpy and ill-mannered (i.e. impolite to the OS and other applications).

    Disputes about Lisp are often about two different things. Those who attack Lisp are usually attacking Common Lisp. Those who defend Lisp are usually defending Lisp, the family.

    Lisp the family sounds like a vague concept, but there is a solid core there. You could approximate it as either Common Lisp minus the crap, or as Scheme (another family member) plus more data structures and libraries.

    Lisp would certainly look better if it had a better representative to send to the Language Beauty Contest than the lumpy old wrestler. It is about time someone made a nice new dialect. In the meantime I'll still take the wrestler over the alternatives, but the price I have to pay is using a language that is considered unfashionable.

    1. Re:Common Lisp vs. Lisp by Goldhammer · · Score: 2, Insightful

      Those who attack Lisp are usually attacking Common Lisp.

      In my experience, most people who "attack Lisp" direct their tirades against Lisp 1 - 1.5, or the all-caps Lisp which appears in, say, Tanimoto's Elements of Artificial Intelligence (1987). Analogous are those clever critics who blast Fortran. Only after you inquire deeper, it becomes clear they are talking about Fortran-77, Fortan-66, Fortran-IV, or even Fortran-II.

  80. Old implementations by ArmorFiend · · Score: 1

    I wonder what would happen if the code were re-run with modern implementations of those languages? Allegro Common Lisp 4.3 is about two major releases old. And the CMU CL x86 compiler totally 0wnz it anyway, especially on numeric code.

    I'm sure Java's gotten better too.

  81. Yarr! Parenthesis! by rebelcool · · Score: 1, Redundant
    LISP - Lots of Increasingly Stupid Parenthesis

    Heh, seriously though, lisp is nice if you're into functional programming and need the easy morphism that it allows. I prefer java, but thats because I learned that kind of programming before functional, and never quite got the hang of it.

    --

    -

    1. Re:Yarr! Parenthesis! by Anonymous Coward · · Score: 0

      FUD ALERT

      Lisp is not a functional programming language. In fact it supports a number of paradigms including imperative and object-oriented. Please stop spreading lies like this one.

  82. Here is the answer. by Crusty+Oldman · · Score: 1

    http://www.newlisp.org/

    Lost in the noise.

    1. Re:Here is the answer. by Anonymous Coward · · Score: 0

      Tk is *not* a good GUI toolkit.

    2. Re:Here is the answer. by Crusty+Oldman · · Score: 1

      You apparently didn't notice the win32 API, or is that good enough for you?

    3. Re:Here is the answer. by Anonymous Coward · · Score: 0

      Right, so on Windows, I get a decent (but not great) GUI toolkit, and on Unix, I get a shitty toolkit. Then on the Mac, I get nothing. That's not cross-platform support, even if Tk and Win32 are munged to use the same interface.

      Oh well. Maybe some day someone will come up with a decent cross-platform toolkit for a decent language.

  83. Lisp + Linux + Windows + GUI by Crusty+Oldman · · Score: 1

    http://www.newlisp.org/

    Lost in the noise.

  84. Some hopefully useful points by dlakelan · · Score: 2, Informative

    First off, one of the best spokespersons for Lisp is Paul Graham, author of "On Lisp" and "ANSI Common Lisp". His web site is Here.

    Reading through his articles will give you a better sense of what lisp is about. One that I'd like to see people comment on is: java's cover ... It resonates with my experience as well. Also This response to his java's cover article succinctly makes a good point that covers most of the bickering found here...

    I personally think that the argument that Lisp is not widely known, and therefore not enough programmers exist to support corporate projects is bogus. The fact that you can hire someone who claims to know C++ does NOT in any way shape or form mean that you can hire someone who will solve your C++ programming problem! See my own web site for more on that.

    I personally believe that if you have a large C++ program you're working on and need to hire a new person or a replacement who already claims to know C++, the start up cost for that person is the same as if you have a Lisp program doing the same thing, and need to hire someone AND train them to use Lisp. Why? the training more than pays for itself because it gives the new person a formal introduction to your project, and Lisp is a more productive system than C++ for most tasks. Furthermore, it's quite likely that the person who claims to know C++ doesn't know it as well as you would like, and therefore the fact that you haven't formally trained them on your project is a cost you aren't considering.

    One of the points that the original article by the fellow at NASA makes is that Lisp turned out to have a very low standard deviation of run-time and development time. What this basically says is that the lisp programs were more consistent. This is a very good thing as anyone who has ever had deadlines knows.

    Yes, the JVM version used in this study is old, but lets face it that would affect the average, but wouldn't affect the standard deviation much. Java programs are more likely to be slow, as are C++ programs!

    The point about lisp being a memory hog that a few people have made here is invalid as well. The NASA article states:

    Memory consumption for Lisp was significantly higher than for C/C++ and roughly comparable to Java. However, this result is somewhat misleading for two reasons. First, Lisp and Java both do internal memory management using garbage collection, so it is often the case that the Lisp and Java runtimes will allocate memory from the operating system this is not actually being used by the application program.

    People here have interpreted this to mean that the system is a memory hog anyway. In fact many lisp systems reserve a large chunk of their address space, which makes it look like a large amount of memory is in use. However the operating system has really just reserved it, not allocated it. When you touch one of the pages it does get allocated. So it LOOKS like you're using a LOT of memory, but in fact because of the VM system, you are NOT using very much memory at all.

    The biggest reasons people don't use Lisp are they either don't understand Lisp, or have been forced by clients or supervisors to use something else.

    --
    ((lambda (x) (x x)) (lambda (x) (x x))) http://www.endpointcomputing.com a scientific approach to custom computing.
  85. it's in the name by dalinian · · Score: 1

    Lisp. Java. Which one sounds sexier? :-)

    1. Re:it's in the name by RevAaron · · Score: 2

      Definately Lisp. Lisp conjures up visions of hippy coders, drugs, sex, and rock & roll. Late nights at Berkeley, coding in Lisp fueled by LSD. Java evokes a vision of a stereotypical nerd, with no life or social skills, who code in Java because it means a job- and that job means money, which could possibly buy him friends and or a whore, to give him some hollow sense of identify or life enjoyment. Java brings to mind the image of a IT manage sucking off the collective cock of Sun for the sake of a greasy buck.

      --

      Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
    2. Re:it's in the name by dalinian · · Score: 1

      Yeah, but you think of the languages themselves, not the names. Think of the words: Java is a place famous for its coffee and tea, and lisp is a speech impediment.

      If you were to decide whether you called a new programming language Java or Lisp, which one would you choose? :-)

    3. Re:it's in the name by RevAaron · · Score: 2

      If you put it that way, it's harder. Java, just as a word leads to coffee, which leads me to think about yuppies that are agressive because they have no self-worth. Lisp makes me think of... well, a little kid with a lisp, but at least that's cute.

      --

      Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
    4. Re:it's in the name by Cro+Magnon · · Score: 1

      What'th wrong with Lithp?

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
  86. Dylan: runner-up in ICFP contest by oodl · · Score: 1

    No doubt that Lisp is one of the great programming languages of all time. But still it wasn't designed for systems programming and commercial software development. Dylan is basically a cleaned-up, fully object-oriented descendant of Lisp that has infix syntax and a powerful module and exception system. A Dylan entry won second place in the ICFP 2001 Contest. (See the page http://www.hoult.org/~bruce/dylan-hackers.html for more info about the Dylan entry.)

    The ICFP entry was written with the open source version of Dylan for unix, Gwydion Dylan. http://www.gwydiondylan.org. For people that want to help improving the compiler, there are plenty of opportunities. It's a great compiler already, but there are still plenty of advanced optimizations that one could implement. Both major Dylan compiler implementations are written in Dylan themselves so the code is easy to understand.

    Another implementation of Dylan for Windows by Functional Objects has an advanced IDE, and supports the Win32 API, COM, Corba, etc. Like Gwydion Dylan, it produces very fast code.

  87. Why Java's so popular by tony+clifton · · Score: 1

    .. Because it's possible for person of average intelligence (IQ = 100) to write passable code in it.

    LISP and to a lesser extent Smalltalk are power tools. If you're good and smart, you'll write something which is really beautiful, elegant and fast. But most people aren't that good, and they produce crap.

    And crap in Java is still more maintainable (I should know, I'm untangling a 700+ class ball of spaghetti as we speak) than crap in LISP or Smalltalk.

    The fact that MIT and Berkeley (I think) and other schools with great CS programs start with Scheme illustrates the point -- it's not for well... the dumbass in the other cube.

    1. Re:Why Java's so popular by DroningDromedary · · Score: 1

      > LISP and to a lesser extent Smalltalk are power
      > tools. If you're good and smart, you'll write
      > something which is really beautiful, elegant and
      > fast. But most people aren't that good, and they
      > produce crap.

      What a completely absurd statement. I've seen poorly written Lisp code that would have been hard to maintain, and I've seen an awful lot of unmaintainable Java code, but to say that Smalltalk is a 'power users only' language is the exact opposite of the truth. It was designed from scratch to be easy for beginners to use and understand

      > And crap in Java is still more maintainable (I
      > should know, I'm untangling a 700+ class ball of
      > spaghetti as we speak) than crap in LISP or
      > Smalltalk.

      Utter, utter nonsense. You might have untangled reams and reams of Java code for all I care, but asserting that it is easier to untangle than either Lisp or Smalltalk merely indicates to me your ignorance of both languages.

      > The fact that MIT and Berkeley (I think) and
      > other schools with great CS programs start with
      > Scheme illustrates the point -- it's not for
      > well... the dumbass in the other cube.

      Neither is Java for that matter. There may be fewer traps with Java than with, say, C++, but they still exist. I'd rather fire the dumbass in the next cube than have him write crap code in *any* language... And the reason Scheme is taught at any school is because, once again, it's designed from scratch to be an easy to learn language. This allows the teacher to concentrate on the *real* issues instead of having to teach students how to overcome idiotic language limitations.

    2. Re:Why Java's so popular by e40 · · Score: 1

      This is FUD, plain and simple.

      How much time did you spend trying to learn lisp? Which dialect and which year?

  88. Re:Dylan: runner-up in ICFP contest by DroningDromedary · · Score: 1

    > No doubt that Lisp is one of the great
    > programming languages of all time. But still it
    > wasn't designed for systems programming and
    > commercial software development.

    Don't be silly. This is *exactly* what Common Lisp was designed for. Have you actually *looked* at a commercial Common Lisp implementation? Perhaps you are thinking Lisp is restricted only Scheme?

  89. Server Side Scripting by Anonymous Coward · · Score: 0

    I wanta liskp or scheme base scripting language! When is it going to happen??

    1. Re:Server Side Scripting by e40 · · Score: 1

      For server side scripting use AllegroServe, an opensource web server for Common Lisp. It's been ported to lisps other than ACL, too. (I don't have the links to those URLs handy. Can someone please post them?)

    2. Re:Server Side Scripting by Anonymous Coward · · Score: 0
      Try http://ww.telent.net/cliki/index for many useful links to Lisp webservers, HTML in Lisp tools and server-side scripting tools. There is even a mailing list for those interested in using Lisp for web site projects.


      Portable AllegroServe can be found here http://sourceforge.net/projects/portableaserve

    3. Re:Server Side Scripting by brlewis · · Score: 2

      BRL is a Scheme-based language for server-side web programming. It uses a JVM-based Scheme underneath called Kawa, so all the Java class libraries are available as well.

  90. As soon as i saw it.... by Anonymous Coward · · Score: 0

    List as an Alternative to Java is like "Linux as an Alternative to Windows"

    Technically, +nix is superior to windows, but Java/*nix lack the mainsteam support and will struggle to wrestle it outta Gates's hands for reasons such as [home / small business ] PC makers support, peoples familiarity, ease of use, and the marketing/P.R./Legal budjet of MS, etc...

    Java is already supported on 99% of people's browsers, has Sun behind it, and has more people with the knowhow to program it.

    Unfourtunateley.

    Ali

  91. What constitutes experience? by gh · · Score: 1

    The biggest flaw in the paper is "experience"...

    First off, most people over judge themselves.

    If you ask them, "Do you consider yourself below avg, avg, above avg, expert, 31337?", most will respond with atleast one level higher.

    If you ask people how many years, they tend to tack on some years or include years of experience done in another language.

    I've seen this many times while interviewing potential consultants and it has never ceased to amaze me. I would wager that only 1 out 5 people are at the level they say they are at. That's probably being a bit kind.

    Point from the article: Who the hell has 7 years of experience in Java by 1999? (This still happens with resumes and interviews. Gotta laugh when I see it. And, yes, I interview Java applicants.)

  92. REPOST:A classic /. posting on languages as fasion by Ars-Fartsica · · Score: 2

    Don't know who posted this a while back, or on what topic: but it makes sense when these args come up:

    --------------------
    You Work in a Fashion Industry

    I've spent the last several years trying to explain to colleagues why
    they should start using another obscure-but-good language, Eiffel, to no avail.
    Here is what I have learned. Note that this is not about the pros and cons of
    particular languages or paradigms, its about the way the programming language
    industry actually works.

    The language industry is dominated by network effects. There are major
    costs with using a minority language, and for an individual project these
    completely outweigh the benefits, even when the benefits are very large. Hence
    it is generally far better to stay with a majority language. The costs of a
    minority language include:

    Support. Sure, you can get a GPL compiler for most languages, but on a project
    you don't want to have your coders digging into the code trying to
    fix a bug, you want them writing code. Support is something you outsource.

    Performance. Every minority language claims to be faster than C, but often
    isn't in practice. Whatever the truth, C and C++ are at least known
    quantities. Maybe the minority language will be faster, maybe slower. If its
    faster, well gee so what. If its slower then you have a major problem.

    Tool support. These days even small projects start by drawing UML diagrams and
    then converting these automatically into class templates. CASE
    tool vendors don't support minority languages. Ditto for testing and
    documentation tools. Little things like tying your compiler to your
    configuration control manager might potentially be major headaches. Again, its
    more risk that the PM can do without.

    Nobody ever got fired for buying C/C++/Java. If you are a PM this is a major
    issue. Every language is going to bring some headaches, but if you have chosen
    a minority language then these headaches can be turned into an excuse for
    project failure, and hence for hanging you out to dry.

    Trained staff in a minority language are going to be rare. This does not
    necessarily make them more expensive (nobody else wants them), but it
    does make recruitment much harder and more uncertain. Alternatively you have to
    train all your existing people in the new language. And for Functional
    Languages its not just another syntax, its a whole new way of thinking. The
    industry went through this with OO languages, and many PMs have vivid memories
    of reams of non-OO obfuscated C++ written by a bunch of C hackers who had been
    sent on a one week C++ course. Getting your head around a new paradigm can take
    months, and this is time that the project just does not have.

    So, overall the PMs want to go with popular languages, not for PHM
    reasons, but for entirely rational local reasons. But rational local decisions
    turn into globally arbitrary decisions, as the entire herd gallops off in a
    random direction chosen only because most of the herd thought that most of the
    herd were headed that way.

    The lesson of this is that if you want to introduce a language, you don't
    concentrate on making it a good language, you try to persuade the herd of
    programmers, PMs and tool vendors that your language is the Next Big Thing. The
    important point here is not how much the language will do for productivity,
    quality and cost, it is to create the perception that everyone else thinks that
    this language will be the next big thing.

    There are two ways to do this. One way is to tackle the whole industry at once.
    For an object lesson in how to do this, see Java. For an object lesson
    in how not to do it, see Eiffel. Believe me, I know all about this. I have
    spent a long time giving presentations extolling the technical virtues of
    Eiffel, only to have my audience say "Yes, but in the Real World....". In the
    Real World what counts is the network effects. And you know what? My audiences
    were right. It has taken me a long time to realise this.

    The other more interesting and more promising way to introduce a new
    language is to identify a niche market and attack that. Once you have taken
    over your niche you can expand to nearby niches and start to build momentum.
    Python is doing exactly this in web serving, for example. Web serving is a good
    niche because lots of people do it, and productivity and quality generally
    count for more than raw performance. Projects also tend to be small, so
    experiments are not the Career Limiting Moves they are for large projects.
    Education can also be a useful niche if you can afford to take the long view,
    which is how Pascal, Basic and Unix got started.

  93. Why not FORTH by Skapare · · Score: 1

    Why not FORTH? This can be implemented much more efficiently than either Java or LISP. Are people just afraid of stacks?

    --
    now we need to go OSS in diesel cars
    1. Re:Why not FORTH by Crusty+Oldman · · Score: 1

      Yes.

    2. Re:Why not FORTH by Bob+Uhl · · Score: 2
      One of the neatest Forth dialects I eve rplayed with was MOPS, a really cool little tool for the Mac. Unfortunately, it appears that development on it has stalled, which is indeed a pity--it deserved far more press than ever it got. Nicely OOP, interfaced with the OS properly &c. In every way an excellent tool.

      I wish it had a Linux port, since that's what I use exclusively these days.

  94. I've been coding lisp for a few years. by Convergence · · Score: 2

    And I have to say that I don't think I ever use lists... Usually, I use arrays, structures, objects and hash tables. Lisp has support for multidimensional arrays and you can define your own structures or classes.

    And, I'll say that with CMUCL, it compiles down to the same assembly as C does.

    Try a modern lisp, say, one written in the last 10 years.. Or, read `Common Lisp the Language', which dates back to the early 80's.

  95. Learning Lisp/Scheme for real world apps by ljagged · · Score: 1
    First, let me say that I'm a professional Java programmer who spends a lot of time with the J2EE class libraries. I've done a number of projects that use app servers, messaging, database access, etc. However, while in school I took a couple AI courses where we used Lisp and I liked it a lot. So, here's my question -- how does someone with a fair amount of programming/software development under his/her belt learn how to do enterprise computing with Scheme or Lisp?

    My bookshelf has about thirty books on J2EE programming, alone. It also has SICP, The Little Schemer, The Seasoned Schemer, Common Lisp (Steele), Lisp (Winston & Horn), and my old AI texts. The Little Schemer and the Seasoned Schemer are great for learning about functional programming, but they don't say anything about using slib. It would take me a year to work through SICP (and I don't doubt I'd be a much better programmer) but I don't have a year, and it still (after a quick browse through the TOC) doesn't say anything about the things I have to do every day (say, yank data out of a database, turn it into an XML document, run it through an XSLT engine, and send the result back to a web browser).

    This isn't a troll. It's a plea for help. What's a fast and efficient way to start developing apps in scheme or lisp?

    --
    Ceci n'est pas une .signature
    1. Re:Learning Lisp/Scheme for real world apps by Anonymous Coward · · Score: 0

      You obviously recognize the fact that there are different philosophies of programming, which to some extent are associated with different programming languages. But the only reason that the Java(/C/C++) mentality seems so natural to you is that it was probably what you originally learned, and the world of programming is infested with it. Unfortunately, the only way to start doing real work in Lisp or Scheme is to invest the time that it takes to understand and internalize their philosophy, their world view. If you can understand the philosophy of the language, the details of any given library or tool should be trivial; the same is absolutely true for Java as well. It may not seem like a "fast and efficient" way in the short term, but in the long term, you effort will be repaid many times over.

    2. Re:Learning Lisp/Scheme for real world apps by ljagged · · Score: 1
      Actually, lisp is the language I first did non-trivial programming in. In school we primarily used Turbo Pascal. My emphasis was in AI, so my advanced classes were lisp heavy. But that's not the point I'm trying to make. As has been mentioned before, one of the barriers to entry that lisp/scheme suffers from is the perceived inability to write enterprise applications (and I use this term to refer to any application that relies on one or more of database access, distributed components, asynchronous messaging, persistance, etc.) in these languages. As I said before, there's nothing I'd like better to do than to sit down with Structure and Interpretation of Computer Programs and do every single exercise. However, I'm constantly playing catch-up as it is.


      A few months ago, there was an article on the guys who built the Yahoo! Store system (I believe it was posted here on Slashdot). They talked about how they wrote it in Lisp and development time was very fast and the system was extremely robust. It sounds fascinating, and I'm sure that it's the sort of success story that others would like to emulate -- I certainly would! What would be nice is a HOWTO for setting up an environment on a machine that would permit this.

      I. Getting and installing the software
      A. Get this package
      B. Get this package
      C. Get this package, too.
      II. Setting up the environment
      A. Get this IDE
      B. Set up your directory structure
      C. Test with "Hello World"
      III. Setting up a Database
      A. ...
      B. ...
      IV. Resources
      A. Books
      B. Sample Code
      C. Articles
      V. Etc. Etc.

      See what I'm getting at? Yes, I realise that there's no quick way to shift from an imperative/oo programming style to a functional one. On the other hand, if I could spend six hours getting a full development environment for scheme and be able to read and write from databases and do network programming, even if it is just a 'hello world', I'll be much more likely to invest the time to develop my mad lisp skills. I'd be curious to see how many people get excited about scheme, download scheme48, and then drop it just because they can't figure out how to modify their .emacs file to spawn a scheme subshell.

      --
      Ceci n'est pas une .signature
    3. Re:Learning Lisp/Scheme for real world apps by Anonymous Coward · · Score: 0

      Well, the obvious answer, though perhaps not the one you're looking for, is to get one of several serious commercial, enterprise quality Common Lisp implementations. (Don't bother with Scheme.) But if you're feeling cheap or you're into "freedom" and such, you might find some answers at CLiki.

    4. Re:Learning Lisp/Scheme for real world apps by brlewis · · Score: 2

      If you're already using JDBC, seems like BRL would be an obvious choice for the database-to-XML part. With Kawa Scheme underneath, you can continue to use whatever Java objects you're already using.

  96. We do by Goonie · · Score: 2
    GnuCash uses guile scheme extensively.

    Good things about using guile scheme:

    • Functional programming (map, lambda etc.) is a nice way to work, most of the time. You can often write less code to do the same thing than you would in other languages, and the workings are often clearer.
    • Scheme makes translating data into an externally writable format, and reading back in again, trivial. It's kinda like instant XML :)
    • Mixing C and scheme is easy, particularly with the nifty tool g-wrap one of the other GnuCash developer maintains :)
    • Guile is getting better with every release.

    Major downsides to scheme

    • There's a lot fewer programmers out there who know scheme than, say, Perl. This puts up a bit of a barrier to participation for some people.
    • The language is sometimes almost too flexible, allowing people to write scheme in idiosyncratic style that's a little hard to read. There's less agreement on the "right way to do things" that you might find in, say, C.

      However, it's not an insuperable barrier. Provided people use a bit of common sense and design clean interfaces (and document them) it's generally not too much of a problem.

    • Guile is constantly being improved :) Seriously, the improvements are all good and necessary, but dealing with version clashes is perhaps more of an issue than with other languages at this stage.

    In any case, I'm convinced that using guile has been a big net win for the project.The scope that scheme is used in just keeps growing, because it's just so damn convenient.

    Disclaimer: speaking for me, not my employer.

    --

    Any sufficiently advanced technology is indistinguishable from a rigged demo
    --Andy Finkel (J. Klass?)
  97. matlab by Anonymous Coward · · Score: 0

    I almost couldn't believe it when I got Matlab 6 at work and its GUI and API had been re-written in Java. Slow as shit until I disabled almost all of the GUI. I wonder who the moron who suggested Java for Matlab was? I'd sure like to kick his ass for almost ruining a great program.



    ain't that the truth...

  98. Linux Torvalds? by inri · · Score: 1

    Now go listen to what Linux Torvalds is saying

    Er, Linux Torvalds?

  99. Re:Dylan: runner-up in ICFP contest by oodl · · Score: 1

    >
    >Don't be silly. This is *exactly* what Common >Lisp was designed for.
    >

    I stand by my original assertion. You might want to read this paper which describes the early history of Lisp:
    http://www8.informatik.uni-erlangen.de/html/lisp /h istlit1.html

    You also might want to read the Purpose page of the book "Common Lisp the Language":
    http://www.math.uio.no/cltl/clm/node6.html

  100. Functional vs. OO by sohp · · Score: 2, Insightful

    Face it, functional program languages do not represent real-world processes in ways that non-technical (particularly non-mathematical) people think, object-oriented languages do. Now any programmer worth his salt can, given sufficient resources, do the mapping of user requirements to functional constructs just fine, but for business application programming, it's just much more effective to say "the Ledger object sums all the values in the Activity column" to a business user than "the accumulate function is mapped over the list of transaction elements"

    1. Re:Functional vs. OO by e40 · · Score: 1

      Dude! Common Lisp was the first ANSI standard programming language (circa 1994, I think).

      STOP THE FUD, PLEASE!

    2. Re:Functional vs. OO by oodl · · Score: 1

      It's not "Functional vs. OO". Object-orientied and functional programming paradigms co-exist together happily. They are not mutually exclusive at all. Dylan, a descendant of Lisp, is object-oriented from the ground up... much more so than Java. In Dylan, primitive types are objects, methods are objects, even classes are objects. But Dylan still supports lambda functions, map, curry, etc. for functional programming.

    3. Re:Functional vs. OO by Anonymous Coward · · Score: 0

      I think you meant to say that Common Lisp was the first ANSI standard Object-oriented programming language.

  101. Having done some things in lisp by Owen+Lynn · · Score: 1

    It's a nice language and a different way of thinking about things, and it has certain charm to it.

    But you can't get down and dirty to the bare metal with it. It's hard to do bit twiddling in lisp, for instance. Or pointer arithmetic.

    But for high level application development, where you don't need to access the low level, it's perfectly fine. I think the big argument you'll have againt using lisp is that few really know the language.

    My personal suggestions to lisp afficionados:

    1. Be more polite and less snobbish. When someone wants to learn your language, welcome them in, and forgive them their faults as they learn.

    2. Put together a free win32-based lisp dev environment. For unix, it's pretty easy to get a free lisp environment, but for the microsoft world, the only real dev environment is Franz, and they want mucho $$$$$ for their package. And Franz is like killing a mosquito with a sledgehammer. Something a little lighter and more accessible would do nicely.

    1. Re:Having done some things in lisp by hding · · Score: 2

      Agreed that Lisp won't put you close to the hardware (in most cases - there are always the Lisp machines :-). Disagreed that it's hard to do bit twiddling. In fact, there are two different good ways to do bit twiddling: bit-arrays and their associated functions, and ordinary integers together with the logwhatever, dpb, ldb etc. functions.

      I can't really address suggestion 1, though I can't ever remember being particularly ill-treated by anyone. As for 2.:

      • Lispworks is a real development environment too (it's the one I use) which is less expensive than ACL
      • Corman Lisp is a real development environment too (though I admit to not fancying it that much) which is much less expensive than ACL or even Lispworks
      • If a truly free solution is desired, what's wrong with CLisp + (X)emacs, which I've also used under Windows?
    2. Re:Having done some things in lisp by e40 · · Score: 1

      re: no bit twiddling. You can. See the log* functions in Common Lisp.

      re: pointer arithmetic. You don't need this. Why on earth do you think you do? Automatic memory management, and the rest of the language make this unnecessary.

      re: being impolite and snobbish. You'll run into people that have those "qualities" in all programming camps. Why do you think they are singularly attributes of lisp programmers? Perhaps lisp programmers are a bit defensive about all the FUD non-lisp programmers spew. Ever thought of that?

      re: free win32-based lisp. There are lots. See www.lisp.org.

    3. Re:Having done some things in lisp by Anonymous Coward · · Score: 0

      Try writing a value into a hardware register without a pointer to it ... and then tell me you "don't need" pointers.

  102. Re:REPOST:A classic /. posting on languages as fas by Eccles · · Score: 1

    There are two ways to do this. One way is to tackle the whole industry at once.

    Another way is to build on the industry's current state, rather than change it whole-hog. C++ was essentially a superset of C, and Java didn't stray that far from C++.

    --
    Ooh, a sarcasm detector. Oh, that's a real useful invention.
  103. you want high-profile applications in lisp? by e40 · · Score: 1

    OK. www.orbitz.com, then new travel site that's spending lots of cash advertising on TeeVee. Implemented in Lisp.

  104. Lisp and Java are both good langauges by dlw · · Score: 3, Insightful

    In response to the discussion of the paper "Lisp as an Alternative To
    Java" by Erran Gat, 1999:

    I have a lot of experience with both Common Lisp and Java. I like
    both langauges. Although I spent many years of my life as an
    enthusiastic Lisp booster, if I were to start a new project now, under
    most circumstances that I can imagine, I would select Java. But the
    reasons don't have that much to do with deep programming language
    concepts. (More about my credentials later.)

    In the following, when I say "Lisp" I mean "contemporary Common Lisp
    including CLOS" if I don't say otherwise. I talk about Lisp as it is
    now. Lisp's history is an interesting subject but quite irrelevant to
    the questions brought up by the paper.

    >> The Erran Gat paper of 1999

    The experiment and results in this paper don't persuade me of
    anything. The programmers were self-selected; the Java programmers
    were apparently quite inexperienced; the sample size is just too
    small; judging a whole langauge based on a single programming problem
    is too narrow. A small programming exercise like this tests only a
    small fraction of the interesting aspects of programming.

    The paper is valuable in that it makes you think harder about the
    "which langauge is faster" question. Remember, langauages don't have
    speeds; langauge implementations have speeds. And what you have heard
    may not be true. Be skeptical of "common wisdom" about what's slow
    and what's fast; such "common wisdom" is often outdated, limited to
    particular contexts, or just plain wrong.

    >> Why isn't Lisp more popular?

    A language's popularity is strongly influenced by "network effects":
    that is, as more people use a language, it becomes more desirable to
    use. It is hard for a new language to "break through", and once it
    does there is a strong positive-feedback effect. Breaking through is
    very difficult and depends a lot on timing, luck, and often on
    forceful publicity and marketing.

    Java managed to do it, due to a confluence of many factors. It was in
    the right place at the right time. Java's early success had a lot to
    do with the rise of the World Wide Web, the decision of Netscape to
    incorporate Java into their browser, the politics of Microsoft's entry
    into the Internet area, the use of Sun's marketing resources, Sun's
    decision to give out the implementation for free, and many other
    factors on top of the technical merits (and demerits) of the language
    and its then-available implementation.

    Lisp's attempts to break through didn't succeed because the right
    confluence didn't happen, partly due to luck and partly due to
    ineptness of all of us who were hoping to promote it. It did not help
    that Lisp was marketed primarily on the coat-tails of the "AI
    industry" of the 1980's, which did not succeed as an industry
    (although many parts of the AI technology are alive, well, and making
    money today). It was also hurt by claims that Lisp could only run
    well on special-purpose hardware, by its unusual syntax that puts off
    so many people initially, by the lack of good free implementations (at
    the time); I could go on and on.

    It has helped Java's cause that there is one organization promoting
    and defining the langauge and establishing standard API's in so many
    areas. Many Lisp enthusiasts put their energy into refining and
    improving the language (resulting in excellent technology such as
    Scheme and Dylan) rather than all concentrating on stabilizing and
    developing one standard.

    The extensive set of standard API's created by Sun and the Java
    Community Process is very valuable. There just isn't any Lisp
    equivalent standard API for JMS, JDBC, Enterprise JavaBeans, and so on.

    The positive-feedback "network" effects is extremely valuable to
    Java's cause. It's much easier to find trained Java programmers than
    trained Lisp programmers. All kinds of tools and libraries are
    available (many free), many more than for Lisp. There are lots of
    books available about Java, so many that even the subset that are
    *good* books is pretty large, and not just the core Java language but
    facilities such as RMI, Enterprise JavaBeans, JDBC, JMS, and on and
    on.

    For example, there are many commercial producers of messaging
    subsystems that implement the JMS specification, and competition
    between them is driving higher functionality and lower prices.
    There's nothing like that going on for messaging subsystems and Lisp.
    This has nothing to do with any technical features of Java and Lisp as
    languages.

    >> Lisp as a General-Purpose Language -- Lisp is not "exotic"

    "Lisp" means different things to different people. If you read "The
    Structure and Interpretation of Programming Langauages", you're going
    to see Scheme code that is fundamentally different from the way code
    looks in most langauges. I think this is all extremely interesting
    and valuable, but it's not what I have spent my time on.

    To me, Lisp is general-purpose programming language in which I have
    done all kinds of system programming. In my experience, Lisp is a lot
    less "exotic" than some people might expect. For example, the whole
    "Lisp is functional, not procedural" business is largely irrelevant.
    The control structure and overall organization of a program in Common
    Lisp is extremely similar to that of a Java or C++ program. All these
    languages have subroutine calling, object-oriented programming,
    iteration, recursion, data structures, structured programming,
    exceptions, multithreading, etc.

    Any claims that groups can't program in Lisp, or that Lisp programs
    are inherently unmaintainable, are nonsense. There is nothing about
    writing a program in Lisp that makes it harder to maintain than a
    program in C++ or Java.

    >> Static Typing

    Static typing is one of the biggest differences. I agree that Common
    Lisp basically does not have static typing (yes, I know about
    "declare"). Some languages have static typing that is so restrictive
    that it seriously gets in the way of getting useful work done, and in
    the Old Days we of the Lisp world were very much reacting to
    constricting type systems. I am pretty happy with the Java concept of
    types, which I feel provides useful expression of intent in the code,
    and useful compile-time error checking, and doesn't get in your way
    very much. The parameterized typing coming to Java (in JDK 1.5, last
    I heard) should improve the situation further. Still in all, it's not
    that big of a deal, and if I went back to using Lisp without static
    typing I don't thihk my life would be all that different.

    >> Parentheses and Macros

    Lisp's unusual syntax, with the parentheses and what used to be called
    "Polish notation" (i.e. no infix operators), bothers some people. It
    looks unusual and unwieldy to those who are unaccustomed to it.
    However, once you get used to it, and if you use a decent programming
    environment (particularly a text editor that can "indent for Lisp" and
    otherwise knows Lisp syntax, such as but not necessarily Emacs), you
    quickly get used to it and it seems perfectly normal. (It is also
    possible to make a Lisp-family langauge with a more conventional
    syntax, as the Dylan designers decided to do.)

    Lisp's ayntax allow programmers to see programs in the form of a
    simple data structure, which is the basis upon which is built the Lisp
    "macro" facility, one of the truly different and powerful features of
    Lisp. Lisp macros make Lisp an extensible language, in profound sense
    of the word "extensible". They are a form of programming abstraction
    that, properly used, can help make complex systems more simple and
    understandable. Now that I used Java, I do miss Lisp macros. On the
    other hand, it turns out it's not such a big deal, and if I had the
    power of Lisp macros in Java it would not really change my life all
    that much.

    >> My Experience

    Lisp: I wrote the first Emacs-written-in-Lisp (known variously as
    EINE, ZWEI, and Zmacs). It was in fact the second Emacs ever,
    developed concurrently with the original Emacs (written in TECO). I
    have also written in Lisp an interactive debugger, a local area
    network control program, a compiler, and an object-oriented database
    management system. I worked with small and medium-sized groups. I
    maintained lots of code written by people other than myself. I was
    one of the five co-authors of "Common Lisp: The Language". I used
    Lisp, in an implementation that eventually evolved into Common Lisp,
    between 1976 and 1988.

    Java: I was one of the reviewers of "The Java Language Specification".
    I edited early drafts for Bill Joy and Guy Steele Jr. I co-wrote the
    Java part of the ObjectStore database management system, and a
    transactional data manager called "PSE Pro for Java", both from Object
    Design. Currently I am developing business-to-business integration
    software in Java at the same company, now known as eXcelon. I have
    been using Java since early 1996. (In between I did C++.)

    I'd like to go into the question of development environments but this
    is long enough as it is. In a nutshell, I really wish I had my good
    old Lisp Machine development environment again; what I'm using for
    Java nowadays is stone knives and bearskins.

    -- Daniel Weinreb
    dlw@exceloncorp.com

    1. Re:Lisp and Java are both good langauges by horse · · Score: 1

      Somebody please mod this up. This is one of most interesting posts I've ever seen on slashdot.

    2. Re:Lisp and Java are both good langauges by e40 · · Score: 1

      I second the request!

  105. Re:Statistically meaningless and incomplete by |deity| · · Score: 2

    Beyond this, all of the results are based on one programming problem. I'm quite sure that I could choose a programming problem that C would be faster for then Lisp, java, and even Fortran.

    Lisp is faster then C/C++ for many tasks, however there are many tasks that Lisp is slower or completely unsuited for.

    You can't base the decision to replace a language, on the languages ability to solve one problem. C is a very general purpose language, while lisp is much better at certain tasks and is less of a general purpose language.

    The researcher was obviously looking for the result he got.

    If the research were to be unbiased, they should choose several common computer algorithms, and have each implemented by a large number of programmers in the languages to be studied. If in the end lisp outperfomed java and C/C++ in a majority of cases that would be a good argument for doing more lisp programming.

    --
    Environmentalists are their own worst enemy. ~tricklenews.com
  106. Umm by sting3r · · Score: 1
    GNUcash is a flaming pile of crap. Why don't you examine this list of dependencies for me:
    • gdk-imlib1 (>= 1.9.8-4)
    • libart2 (>= 1.0.56-3)
    • libaudiofile0
    • libc6 (>= 2.1.2)
    • libdb2 (>= 1:2.4.14-7)
    • libesd0 (>= 0.2.16) | libesd-alsa0 (>= 0.2.16)
    • libglib1.2 (>= 1.2.0)
    • libgnome32 (>= 1.0.56-3)
    • libgnomesupport0 (>= 1.0.56-3)
    • libgnomeui32 (>= 1.0.56-3)
    • libgtk1.2 (>= 1.2.7-1)
    • libgtkxmhtml1 (>= 1.0.56-3)
    • libguile6 (>= 1:1.3.4-2)
    • libjpeg62
    • libncurses5
    • libpng2
    • libreadline4 (>= 4.1)
    • libxpm4
    • libz1
    • xlib6g (>= 3.3.6)
    • libwww-perl
    • slib
    • scm
    • guile1.3
    • libguile6-slib
    • perl-5.005
    • eperl

    and give me the names of a couple of libraries that GNUcash does not require?

    The point is that the GNUcash developers see a neat feature in some esoteric library, decide to use it once or twice, rinse, and repeat. They couldn't design a decent product if their lives depended on it. It's a big bloated collection of about 3000 "cool hacks". I think I'll be sticking with Quicken, thank you.

    -sting3r

    1. Re:Umm by RossyB · · Score: 1

      If you accept that GNUCash is a GNOME application and therefore requires all of the dependancies of GNOME, this list reduces down to:

      * GNOME/GTK libraries
      * scheme (guile/scm/slib)
      * perl (perl/eperl)

      Oh No. The Bloat. Woes Is Me.

      The majority of the packages listed are the core GNOME packages. I guess that dependancy list is from Debian as they like splitting core packages into smaller bits for easier upgrade. However, this does lead to long deps.

  107. Re:LISP !? by cakoose · · Score: 1

    Extra delimiters help convey the nature of code. Most of the time, you don't need the flexibility of every single entity being equivalent/interchangeable with every other one. The extra delimiters act as implicit, concise documentation.

  108. "Pornographic Programming" coined by McCarthy! by SimHacker · · Score: 1
    That's a great reference to McCarthy's recollections, thanks! I learned a new term: "pornographic programming".

    "The unexpected appearance of an interpreter tended to freeze the form of the language, and some of the decisions made rather lightheartedly for the ``Recursive functions ...'' paper later proved unfortunate. These included the COND notation for conditional expressions which leads to an unnecessary depth of parentheses, and the use of the number zero to denote the empty list NIL and the truth value false. Besides encouraging pornographic programming, giving a special interpretation to the address 0 has caused difficulties in all subsequent implementations."

    -John McCarthy, http://www-formal.stanford.edu/jmc/history/lisp/no de3.html

    --
    Take a look and feel free: http://www.PieMenu.com
  109. OO hype crap by Tablizer · · Score: 0

    >> Face it, functional program languages do not represent real-world processes in ways that non-technical (particularly non-mathematical) people think, object-oriented languages do. <<

    That is hogwash. You are not an expert on how poeple think. And get this news: PEOPLE THINK DIFFERENTLY.

    oop.ismad.com

  110. Alternative to Java? by shd99004 · · Score: 1

    That would be quite a lot of languages. And yes, even LISP!

    --
    Will work for bandwidth
  111. Lisp: OO or functional? by sigue · · Score: 2, Informative

    One of the beauties of Common Lisp is precisely that it supports both OO and functional (in the loose sense) styles of programming well. It supports each better than Java does. Common Lisp is Object Oriented, while Java is Object Obsessed. Common Lisp's object system is basically a superset of Java's. You could limit yourself to programming in a Java style in CL, but why would you want to?

    Almost any language with functions/methods can support functional programming (in the loose sense) to some degree. Some encourage it more than others. Java discourages it by, for example, not allowing true first class functions/methods, by having many constructs such as IF that don't return values, by insisting that every single bit of code must belong to a single class, etc.

    I agree to some extent that the set of available libraries is often the most important thing when deciding on a language for a project. Many of the Java APIs are made unnecessarily complex due to limitations of the language. But there sure are a lot of them.

    It's a desert topping AND a floor wax.

  112. High-level language apps are more maintainable by dway · · Score: 1
    I've seen a few posts on this topic implying that "well sure, maybe you can write an app in Lisp in less time and with similar performance, but it's not going to be as maintainable as a Java/etc app."

    There is zero evidence to back up the notion that a Lisp (e.g. CLOS) app would be less maintainable. Of course, there's not a lot of evidence either way, but there's at least a little evidence that it might be more maintainable:

    http://www.spr.com/library/0langtbl.htm

    This table shows that CLOS requires fewer lines of code (LOC) per function point than Java, in other words a typical CLOS app will require fewer LOC than an equivalent Java app. This data roughly jibes with the LOC results from the NASA/JPL study. This makes CLOS a "higher-level" language than Java.

    Anyway, apps written in higher-level languages are easier to maintain than apps written in lower-level languages, simply because there is less code to worry about. Less code to do the same task also usually means that there is less code duplication, which is a common source of bugs. Thus, we would expect that a CLOS app, on average, would probably be easier to maintain than a Java app. (Yes, there are other factors in what makes a language more or less maintainable, but high-levelness is one of the few that is actually measurable.)

    Granted, the SPR languages table is rather coarse-grained... apparently a lot of the levels for languages were extrapolated from other languages based on language features. (e.g. I think Java probably deserves a slightly higher language-level rating than C++, but then again Java lacks some things like genericity which might partly offset its LOC gains from automatic memory management/etc versus C++. Same goes for Scheme deserving a higher level.) But still, the table seems to be roughly accurate from my experience with programming various languages, and it's the best data we've got. It would be great if better and more detailed studies could be done comparing languages for developing (and maintaining!) larger, real-world apps, but this type of research is difficult and expensive, so it never seems to get done. :-(

    Regarding complaints about the NASA study again... same goes for tiny apps versus huge apps. The jury is still out on whether statically-typed (Java/C++/Fortran) or dynamically-typed (Lisp/Smalltalk/Python/Ruby) languages scale better to huge apps. My personal feeling is that dynamically-typed languages scale better, but I don't think there's any real data proving either case. (Something like CLOS in particular with its powerful meta-programming capabilities I think would start to seriously crush Java in terms of maintainability for enormous apps.)

    (By the way, I'm mostly a big Smalltalk fan, but I have a lot of respect for Lisp and its variants. I do work with Java too, but I don't find it particularly inspiring. ;-) See http://squeak.org for a cool, free, open-source (including the VM!) Smalltalk that runs on most any platform.)

    As for a prediction of where Java will be in 30 years... my guess is it'll probably be around quite awhile, having a life-cycle similar to COBOL. Java and COBOL are similar in a lot of ways... neither language is revolutionary in terms of fundamental language features (as opposed to Lisp or Smalltalk), but both had good support for development of business-related apps, and gained a lot of momentum as a "standard"...

    1. Re:High-level language apps are more maintainable by ahde · · Score: 1

      does 'lines of code' mean 80 column lines? If so, I can definitely see where any language would beat Java handily, thanks mainly to the hard-coded minimum 16 character naming convention built-into a 100% True Java (TM) bytecode compiler.

  113. Re:Dylan: runner-up in ICFP contest by DroningDromedary · · Score: 1

    > http://www.math.uio.no/cltl/clm/node6.html

    Efficiency, Power and Stability all sound like good attributes for commercial software to me. You're right that it's probably not the best language for systems programming though.

  114. Does Java have web page templating? by brlewis · · Score: 2
    Does lisp have web page templating functionality?

    Does Java? The typical Java-fan critique of JSP acknowledges that Java is a lousy language to embed in web templates. There's a plethora of templating systems out there that implement various non-java syntax to embed in web pages -- webmacro, XMLC, etc. Is there one of them that could legitimately be called the "Java" web page templating system?

    JSP taglibs are a kit to build your own non-Java language to embed in HTML.

    Why not use a well-designed language that lends itself well to embedding in HTML and other markup, the Scheme-based BRL. I'm using it very successfully at work. Compare its code for sending e-mail or dealing with a database with any other language or system. I'm biased, but the code isn't. For rapid development of database-driven web apps, it cranks.

    1. Re:Does Java have web page templating? by sigue · · Score: 1
      While I would prefer something like BRL over JSP simply because it's Scheme, I have to say that it seems to emulate one of JSPs worst traits: embedding program code in HTML. This is super convenient, and if used sparingly can be fine, but it'll be a pain when you start hiring content editors who don't have a clue about programming. (I know, in a perfect world we wouldn't hire such losers, but...) Mixing program logic and HTML seems to be strongly encouraged in BRL.

      I prefer keeping the logic separate and using tags (e.g., <jsp:show-user-name/>) to call program code. It's a bit more hassle for the app programmer, but a lot easier for content editors to deal with. (And how many programmers do you know that want to also be content editors on a production web site?)

  115. Scheme code easier to move out by brlewis · · Score: 1

    This is where the "everything is an expression" model of Scheme wins out over the package/class/method/statement/expression hierarchy of Java. If Java statements in a JSP get unwieldy, you need to come up with a package, class and method to put them in. With Scheme/BRL, you just wrap a function definition around the code in question (define (show-user-name) ...) and toss it in sitedefs.scm.

    How much harder is [(show-user-name)] than <jsp:show-user-name/>? In either case, the content editor is just treating it as a black box. They need to understand what goes in and comes out, but don't otherwise care how it works. The logic hasn't really been separated, just abstracted.

    There are varying degrees of abstraction. For example, conditionals would be less abstracted. The content editor needs to understand the logic in order to have control over what is shown to the user, e.g. "If this and that form field are blank, then show this message, otherwise do that." This is the beginning of programming. The more ambitious the content editor, the more "programming" gets involved.

    BRL gives you complete choice to vary the amount of abstraction according to the ambition and ability of the content editor. And you're not stuck if you change your mind later.

    When debugging, I find it handy to have the HTML and code mixed in front of me. I'm looking at actual HTML generated, and I want to find the code responsible. With little abstraction, it's one-stop shopping. Forcing an n-tier architecture from the start would be cumbersome. It's unnecessary. BRL is not like JSP, where once code goes into a page it's unlikely to ever come out.

    1. Re:Scheme code easier to move out by sigue · · Score: 1
      I was wondering how you would do the equivalent of tags in BRL and it should have been totally obvious. Neat.


      My only complaint now would be that BRL probably won't play well with other tools like XML translators, etc. But it looks pretty cool.

  116. This is an old article by srussell · · Score: 1

    In the field of computer science, this is practically ancient, having been written in late 1999. It may be interesting as a historical perspective, but the article has little or no value as a modern comparative evaluation.

  117. Hackers by Anonymous Coward · · Score: 0

    After reading this book, I always get a woody whenever I hear of LISP. Just because of the history, it's what the grandaddy hackers hacked with.

  118. Beyond Java? by Anonymous Coward · · Score: 0

    Or there's Dylan as an alternative to Java:

    http://www.fun-o.com/resources/beyond-java.phtml

  119. Efficiency, Power and Stability all sound like by ahde · · Score: 1

    goals maybe, but not attributes