Newsgroups: comp.lang.lisp
Path: cantaloupe.srv.cs.cmu.edu!bb3.andrew.cmu.edu!nntp.sei.cmu.edu!news.cis.ohio-state.edu!math.ohio-state.edu!uwm.edu!news-peer.gsl.net!news.gsl.net!news.mathworks.com!fu-berlin.de!zrz.TU-Berlin.DE!news.dfn.de!news.dkrz.de!news.rrz.uni-hamburg.de!news.Hanse.DE!wavehh.hanse.de!cracauer
From: cracauer@wavehh.hanse.de (Martin Cracauer)
Subject: Re: "report from the front": can we choose Lisp?
Message-ID: <1996Sep29.125754.10070@wavehh.hanse.de>
Organization: BSD User Group Hamburg
References: <jbrewer-1209961432200001@news.mcs.com> 	<wk91aajucz.fsf@laura.ilog.com> <842908513snz@wildcard.demon.co.uk> 	<323f7b48.3843721@news.primenet.com> <3052030527425472@naggum.no> 	<843073365snz@wildcard.demon.co.uk> <3052137838003931@naggum.no> <TMB.96Sep24192054@best.best.com>
Date: Sun, 29 Sep 96 12:57:54 GMT
Lines: 199

Thomas, while I think your description of the problem is correct, I
have a few remarks. 

1) MCL is a Common Lisp that is/has:
   - Threads
   - A price comarable to PC C++ environments
   - A useable runtime licence policy (pay once, ship as many as you
     want). I agree 100% that most other schemes are just inacceptable
     and that just free runtime licenses would be important to make
     a new language beeing accepted when comared to C++, Java etc.

The drawback is, of course, that it forces you to use/buy a Mac, which
is not the preferred Web server platform for most people. But maybe
the problem of getting some complicated application to run outwights
this.

2) There are a number of free Lisp implementations of a quality
comarable at least to perl.

3) perl has more disadvantages than just beeing unusable (for me) for
   sources with more than 100 lines.
   - No real debugger
   - No GUI-based environment of the quality like commercial CL
     implementations have.
   - Only one implementation. Trigger a bug and you'll be in
     problems. In CL, you'll have to change you FFI routines, but the
     complex program part will remain unchanged.
   - Cannot be compiled. For me and my customers, this is a
     requirement for many projects. We need to be able to move a
     project to Servers not under our control and the source should
     not be accessable there.

3) Isn't the FFI of perl very complicated and poorly documented, at
least compared to that of most Lisp systems? Or do you mean you don't
need an FFI in perl, since it has most Unix stuff build in (would be
reasonable)? 

4) Is there a cheap Smalltalk system? It is some time since I looked
into Smalltalk prices, but they were at least 3 times as high as
Borland/Visual C++. Really, let me know.

5) I don't think there actually is a book on perl for Web usage that
   covers more than the basics and a few gimmics. You are right that
   there is no Lisp book that covers what you describe here, but I
   don't think the availiable perl books are right to become a real
   hacker for dynamic, advanced Web applications.

6) There is at least one Scheme implementation specialized in beeing
   used in a Web environment. I forgot the name (SIOD?), but if I
   remember right, it covers most of what you want. It is probably slow,
   but it will include a tutorial and exaples, I assume. Combined with
   some Scheme-specific gimmics, that might look good.

7) Other things to look at: CL-httpd and scsh. Cl-httpd implements
   some nice ideas a Web-programmer should be interested in, whatever
   language he/she uses.

So, what do *I* use for my Web work? I use C, just for performance and
beeing portable across systems and implementations. What I miss most
is some OOP support and threads. Java provides these, beeing at least
portable where the JDK is availiable. Currently, I'm taking a deep
look into Java.

BUT,

my current language choice is influenced by some circumstances that
may change:
- Currently, my applications are not very complex.
- Currently, it is more important to be fast and reliable that to be
  complex. 
- I have no real competitor for the application area I'm currently in,
  at least none that can take more project and will try to take them
  over from me.

Currently, the customers for Web applications mostly try to "be in the
game", they need reliable, working projects that show their presence
in the market. Beeing more useful than desktop applications is mostly
not an issue. It it was, it couldn't be implemented now, because the
Web hype lead all people beeing capable of writing Web applications to
implement trivial things.

I expect the situation to change. Somewhere in the future, I will face
competitors who will provide application usefulness that I can't
provide with my current tools. 

Then, the complexity of applications on the Web will be what desktop
applications are today, but with some differences, when it comes to
tools coice:

- I can choose whatever platform I want for my server and therefore as
  platform for the programs I write.
- Since the Java hype, people are much more likely to accept a
  developer's language choice. Ever today, I see a lot of applications
  coming up developend in Modula-3, Scheme, python etc. in areas where
  everything else than C (not even C++) would have had a chance
  before.
- Much of the machine load is on machines I'll have to provide. When I
  use a solution that takes up more resources, I can choose whether to
  buy a bigger machines or reimplement whatever is the problem. I will
  no longer have to program for the usual client machine.

What will I do when I have to write the most flexible solution for a
given problem?
- I'll seriously think over buying a Macintosh just to run MCL and
  another one to put outside my firewall. Well, even more I hope that
  MCL will be ported to some other platform or that a comparable Lisp
  for some other platform I like more shows up.
- I'll see whether some Scheme implementation is mature and offers the
  Web features I want. There's a good chance, couting the FSF Guile
  effort, Utexas' Rscheme and Olin Shivers work on scsh. That migh
  include to work such feature for an implementation I happen to
  like.
- I will certainly see what Harlequin's Dylanworks provides.
- Java is not bad, really. Especially, it might be the right choice if
  I will not longer be an individual that buys some amoung of
  additional programmer's time. I find it quite easy to look over Java
  modules to see whether to trust them. C is out of question when it
  comes to review other's code, and for Lisp I might find not enough
  people.
- I will - maybe - use some distributed OOP system like Xerox Parc's
  ILU and choose language on a per-module basis, not
  per-project. Then, I use Lisp for whatever module it needs it and
  let others use it from other languages.

I think choosing a language for Web projects in an environment with
competition will not depend on the positive sides of each language,
but on the negative sides. 


A quote of Thomas article follows. No more comments from me below.

tmb@intentionally.blank-see.headers writes:

>In article <3052137838003931@naggum.no> Erik Naggum <erik@naggum.no> writes:

>   |   They'll need a good reason to install and play with a Lisp.

>   that good reason is called "curiosity".

>Well, whenever I get involved in a new project, I give Lisp serious
>consideration.  My group is looking into building a bunch of dynamic
>Web services, so I just went through evaluating all of this again.

>People are willing to learn a new language, and they have a lot of
>choices.  Java, Perl, Python, Tcl, C++, etc.  They realize quickly
>that something dynamic would be nice.  The language needs to be fairly
>standard so that co-workers can pick up a book and learn about it.
>This also requires multithreading and database integration (hence an
>FFI).  It needs to run under UNIX and NT (since those are the
>platforms we deliver on).  We may also want a standard GUI toolkit.

>The only Lisp implementations that satisfy those constraints to my
>knowledge are Harlequin and Allegro.  They are both excellent
>products.  However to the tune of >$4000 (yes, that's right, that's
>how much those licenses cost for people outside academia), you can
>hardly just buy them "out of curiosity".  Now that the 80's are over,
>management actually wants some kind of concrete justification for
>this.  With non-trivial runtime licenses, there are serious concerns
>about whether we could ever use them in any product (mainly because of
>the legal and managerial hassles involved, not even so much because of
>the cost).  Long term product maintenance is also an issue (who in
>development/support is going to pick up maintenance of CL software)?
>And few of my coworkers are willing to invest much time learning a new
>language on the 30-60 day evaluation license you get with those
>implementations.  (Allegro's FreeLisp is a nice idea, but only runs on
>Windows.)

>The alternative is all too persuasive to people who weren't brought up
>on Lisp: go out, buy a few books on "Learning Perl in 48 Hours" and
>"Writing Dynamic Web Applications in Perl (CD with Perl and sample for
>Windows and major UNIX platforms included)", type "perl" at the
>prompt, and go.  No licensing hassles, no need for multithreading
>(small footprint), shallow learning curves (doing small things is easy
>in Perl--you only recognize the mess you got yourself into later),
>source level debugging, and complete cross platform availability.
>Despite all the bad things that can be said about Perl, it actually is
>a highly dynamic and expressive language (of course, it's also slow,
>not robust, and idiosyncratic), so people actually do get the same
>feeling of power they get with Lisp.

>I have found it difficult to argue or work against that.  I also find
>it difficult to put in an order for, say, $30000 in software licenses
>for something that neither is hyped up much these days nor for which I
>can make a reasonable business justification, in particular when systems
>that are hyped up much more (Java, Smalltalk, etc.) are either essentially
>free or a fraction of the cost.

>If I got my facts wrong and you know of a cheap, multithreaded
>CommonLisp and books like "Learning CommonLisp in 21 Days",
>"Practical String Processing in CommonLisp", and "Writing Web
>Applications in CommonLisp", do let me know (the last one may
>actually be in the works I hear).

>Thomas.
-- 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Martin Cracauer <cracauer@wavehh.hanse.de>  http://www.bik-gmbh.de/~cracauer
"As far as I'm concerned,  if something is so complicated that you can't ex-"
"plain it in 10 seconds, then it's probably not worth knowing anyway"- Calvin
