Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Lisp as an Alternative to Java

Posted by Hemos on Sat Sep 08, 2001 07:02 AM
from the dear-lord dept.
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."
This discussion has been archived. No new comments can be posted.
Lisp as an Alternative to Java | Log In/Create an Account | Top | 372 comments (Spill at 50!) | Index Only | Search Discussion
Display Options Threshold:
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • It's about the API (Score:4, Troll)

    by The Ultimate Badass (450974) on Saturday September 08 2001, @07:09AM (#2266805) Homepage
    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.
    • Re:It's about the API by Anonymous Coward (Score:1) Saturday September 08 2001, @07:13AM
      • 1 reply beneath your current threshold.
    • Re:It's about the API by lars_stefan_axelsson (Score:2) Saturday September 08 2001, @07:20AM
      • Re:It's about the API by jovlinger (Score:2) Saturday September 08 2001, @10:14AM
        • Re:It's about the API by andreas (Score:1) Saturday September 08 2001, @12:45PM
        • We do by Goonie (Score:2) Saturday September 08 2001, @06:48PM
          • Umm by sting3r (Score:1) Sunday September 09 2001, @01:50AM
            • Re:Umm by RossyB (Score:1) Sunday September 09 2001, @09:14AM
      • Re:It's about the API (Score:5, Insightful)

        by Wavicle (181176) on Saturday September 08 2001, @10:31AM (#2267384)
        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.

        [ Parent ]
    • Re:It's about the API by Anonymous Coward (Score:1) Saturday September 08 2001, @07:27AM
    • Re:It's about the API (Score:5, Informative)

      by redhog (15207) on Saturday September 08 2001, @07:29AM (#2266842) Homepage
      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).
      [ Parent ]
      • Re:It's about the API (Score:5, Informative)

        by gawi (123608) on Saturday September 08 2001, @08:58AM (#2267042) Homepage

        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.

        [ Parent ]
      • Re:It's about the API by reflective recursion (Score:1) Saturday September 08 2001, @04:02PM
      • Re:It's about the API by RevAaron (Score:2) Saturday September 08 2001, @07:48PM
    • Re:It's about the API by Compinche (Score:1) Saturday September 08 2001, @07:31AM
    • Re:It's about the API by reflective recursion (Score:2) Saturday September 08 2001, @03:58PM
    • Re:It's about the API by multicsfan (Score:2) Saturday September 08 2001, @04:49PM
    • REPOST:A classic /. posting on languages as fasion by Ars-Fartsica (Score:2) Saturday September 08 2001, @04:56PM
    • Re:It's about the API by smartfart (Score:1) Saturday September 08 2001, @07:07PM
    • Re:It's about the API by Goldhammer (Score:1) Sunday September 09 2001, @04:38PM
    • Re:It's about the API by mdalgarno (Score:1) Monday September 10 2001, @03:59AM
    • Re:It's about the API by gowen (Score:2) Saturday September 08 2001, @07:39AM
    • Re:It's about the API by Anonymous Coward (Score:1) Saturday September 08 2001, @08:49AM
    • 4 replies beneath your current threshold.
  • Statistically meaningless (Score:3, Insightful)

    by GruffDavies (257448) on Saturday September 08 2001, @07:16AM (#2266816)
    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.

  • Missing the point. (Score:3, Insightful)

    by ried (191480) on Saturday September 08 2001, @07:17AM (#2266818) Homepage
    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).

  • by Aaaaaargh! (466118) on Saturday September 08 2001, @07:17AM (#2266819) Homepage
    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.
  • I'm a professional who uses Java (Score:5, Informative)

    by under_score (65824) <mishkin-slashdot ... minus herbivore> on Saturday September 08 2001, @07:21AM (#2266825) Homepage
    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.
  • Important point: Functional orientation by JohnQPublic (Score:2) Saturday September 08 2001, @07:22AM
  • 1999 (Score:3, Insightful)

    by eye.likeJava() (266735) on Saturday September 08 2001, @07:23AM (#2266828)
    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..
    • Re:1999 by cmmike (Score:1) Saturday September 08 2001, @08:10AM
      • 1 reply beneath your current threshold.
    • Re:1999 by nels_tomlinson (Score:2) Saturday September 08 2001, @09:18AM
      • 1 reply beneath your current threshold.
    • Re:1999 by Goldhammer (Score:1) Sunday September 09 2001, @06:28PM
    • 2 replies beneath your current threshold.
  • Learning Lisp? by Omnivorous Cowbird (Score:1) Saturday September 08 2001, @07:29AM
  • Good LISP story by Jeppe Salvesen (Score:1) Saturday September 08 2001, @07:39AM
  • Interesting, but flawed? (Score:5, Insightful)

    by tkrotchko (124118) on Saturday September 08 2001, @07:41AM (#2266864) Homepage
    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.
  • Ocaml instead of Lisp by Ronniec95 (Score:2) Saturday September 08 2001, @07:50AM
  • Perhaps not quite as illuminating as it appears by ascholl (Score:1) Saturday September 08 2001, @07:53AM
  • by crealf (414283) on Saturday September 08 2001, @07:53AM (#2266890)
    The article about Lisp is a follow-up of an article by Lutz Prechelt in CACM99 (a draft [ira.uka.de] 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 [ira.uka.de] (a detailed technical report is here [ira.uka.de]).

    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 [ira.uka.de] are interesting too (as many other research papers ; found via citeseer [nec.com] for instance)

    • 1 reply beneath your current threshold.
  • The whole premise is wrong by Agave (Score:1) Saturday September 08 2001, @07:53AM
  • Lisp Redux by dgroskind (Score:1) Saturday September 08 2001, @08:15AM
    • Re:Lisp Redux by dalev321 (Score:1) Saturday September 08 2001, @08:52AM
  • Lisp (Score:3, Insightful)

    by DGolden (17848) on Saturday September 08 2001, @08:25AM (#2266962) Homepage Journal
    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.
  • Sure, JRE 1.2 was slow.... by Anonymous Coward (Score:1) Saturday September 08 2001, @08:32AM
  • Smalltalk a better alternative to Java by Anonymous Coward (Score:1) Saturday September 08 2001, @08:33AM
  • Yes but ... by Darth Paul (Score:1) Saturday September 08 2001, @08:51AM
  • XML and Scheme/LISP by DGolden (Score:1) Saturday September 08 2001, @08:54AM
  • Lisp is nice but Smalltalk is better (Score:3, Insightful)

    by crovira (10242) on Saturday September 08 2001, @08:59AM (#2267046) Homepage
    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.
  • This and much more has been done before ... by Galactic Avenger (Score:1) Saturday September 08 2001, @09:11AM
  • LispM and Java hardware by bubbaD (Score:1) Saturday September 08 2001, @09:17AM
  • I've written 2 Lisp and 4 Java books (Score:4, Informative)

    by MarkWatson (189759) on Saturday September 08 2001, @09:56AM (#2267225) Homepage
    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

  • The author of the article doesn't get it by njdj (Score:1) Saturday September 08 2001, @10:17AM
  • Huh...? The report date is November 1999! by frleong (Score:1) Saturday September 08 2001, @10:31AM
  • Other people have pointed this out, but... by Anonymous Coward (Score:1) Saturday September 08 2001, @10:34AM
  • by joneshenry (9497) on Saturday September 08 2001, @10:44AM (#2267438)
    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 [linuxworld.com] 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 [ddj.com] 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 [umn.edu] 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.

  • Of course. Don't you know God wrote in LISP? by elig (Score:1) Saturday September 08 2001, @10:55AM
  • Multithreaded Apps? by Max Entropy (Score:1) Saturday September 08 2001, @11:07AM
  • Well... by NewWazoo (Score:1) Saturday September 08 2001, @11:26AM
  • ada95 by zoftie (Score:1) Saturday September 08 2001, @11:38AM
  • Why Lisp is just academic by scruffy (Score:2) Saturday September 08 2001, @11:44AM
  • What about GUIs? by prizog (Score:2) Saturday September 08 2001, @12:00PM
  • A Disgruntled Lisp Professional Speaks by Courageous (Score:1) Saturday September 08 2001, @12:24PM
  • if anyone could halve the time for java ... by jpellino (Score:1) Saturday September 08 2001, @12:41PM
  • ASSEMBLY IS THE FASTEST by jfm3 (Score:1) Saturday September 08 2001, @12:51PM
  • LISP is first computer language at MIT by peter303 (Score:2) Saturday September 08 2001, @01:11PM
  • Java.Lisp.go(!) by Zard Biomatrix (Score:1) Saturday September 08 2001, @01:23PM
    • 1 reply beneath your current threshold.
  • news? by necrognome (Score:1) Saturday September 08 2001, @01:28PM
  • Old implementations by ArmorFiend (Score:1) Saturday September 08 2001, @01:51PM
  • Yarr! Parenthesis! by rebelcool (Score:1) Saturday September 08 2001, @01:52PM
    • 1 reply beneath your current threshold.
  • Some hopefully useful points by dlakelan (Score:2) Saturday September 08 2001, @02:20PM
  • Dylan: runner-up in ICFP contest by oodl (Score:1) Saturday September 08 2001, @02:49PM
  • Why Java's so popular by tony clifton (Score:1) Saturday September 08 2001, @03:07PM
  • What constitutes experience? by gh (Score:1) Saturday September 08 2001, @04:53PM
  • Why not FORTH by Skapare (Score:1) Saturday September 08 2001, @05:25PM
  • Learning Lisp/Scheme for real world apps by ljagged (Score:1) Saturday September 08 2001, @06:27PM
  • Functional vs. OO by sohp (Score:2) Saturday September 08 2001, @09:42PM
  • Having done some things in lisp by Owen Lynn (Score:1) Saturday September 08 2001, @09:44PM
  • you want high-profile applications in lisp? by e40 (Score:1) Saturday September 08 2001, @10:35PM
  • by dlw (449897) on Saturday September 08 2001, @10:50PM (#2269806)
    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
  • Alternative to Java? by shd99004 (Score:1) Sunday September 09 2001, @06:30PM
  • High-level language apps are more maintainable by dway (Score:1) Sunday September 09 2001, @10:07PM
  • This is an old article by srussell (Score:1) Monday September 10 2001, @01:17PM
  • Re:besides java and lisp, there is inferno by DGolden (Score:1) Saturday September 08 2001, @09:46AM
  • Re:A few good links by e40 (Score:1) Saturday September 08 2001, @01:01PM
  • Lisp + Linux + Windows + GUI by Crusty Oldman (Score:1) Saturday September 08 2001, @02:07PM
  • Re:Server Side Scripting by e40 (Score:1) Saturday September 08 2001, @03:58PM
    • 1 reply beneath your current threshold.
  • Re:LISP !? by cakoose (Score:1) Sunday September 09 2001, @02:11AM
  • Re:Server Side Scripting by brlewis (Score:2) Monday September 10 2001, @09:22AM
  • 20 replies beneath your current threshold.