Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!usc!cs.utexas.edu!yale!cmcl2!kramden.acf.nyu.edu!brnstnd From: brnstnd@kramden.acf.nyu.edu (Dan Bernstein) Newsgroups: comp.lang.misc Subject: Re: The powerlessness of Lisp Message-ID: <16521:Mar2516:10:0791@kramden.acf.nyu.edu> Date: 25 Mar 91 16:10:07 GMT References: <1991Mar21.155528.6068@linus.mitre.org> Organization: IR Lines: 62 In article <1991Mar21.155528.6068@linus.mitre.org> john@mingus.mitre.org (John D. Burger) writes: > brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: > [in response to my description of some complex and fast Lisp programs] > Wow. So you have a naturally complex but short-running program. I > admit such programs exist. They are not the mainstream, at least not > in systems programming and numerical programming. > What does "short-running" mean? What I meant was that the program doesn't run for a significant amount of time. (This obviously implies that the run time of the program doesn't matter, so inefficient code is reasonable.) ``Short'' and ``significant'' are subjective, of course, and depend on the situation at hand. I claim that run time is, overall, a significant percentage of turnaround time during the development and maintenance of most programs. Since programs in Lisp are often several times slower than the same programs in C, Lisp significantly slows down program development, all else being equal. So it's not worth programming in Lisp unless all else is not equal---i.e., unless Lisp significantly reduces the number of test runs, or the pain of maintenance. See below. > Be serious. Pointers (a.k.a. addresses) have been in every machine > language at least since 1960. > So have conditional jumps. What's the point? If you want to program > in machine language, do it. But almost everything that people do with jumps can be expressed with if/loop/break---and the exceptions or perceived exceptions have been enough to keep an unstructured jump in every popular language. In contrast, people want to do things with memory that they can't do in Lisp. C *is* more powerful than Lisp in this respect. > I don't want to have to know about the underlying architecture, and > you seem to want to program at that level, which explains why you like > Machine Independent Machine Language (aka C). I don't want to have to know about the underlying architecture either. I'm glad that C provides a powerful yet portable model of almost all existing hardware architectures. It's a shame that Lisp doesn't. [ returning to... ] > As someone who has worked in a C shop in another life, building > business applications, I can say that there's no comparison between > the two [C and Lisp] with respect to development time or > maintainability of code. That's not objective. Where are the examples? Where are the brilliant rewrites of statically typed code into dynamically typed code of a fraction of the length? Every example people give seems to depend almost entirely on the strength of available libraries. I'm all in favor of good libraries, but what does that have to do with dynamic typing? To return to my favorite example along these lines: Perhaps 1% of the GNU Emacs code is responsible for implementing dynamic typing in C; if it were all written in Lisp instead, it'd be about 99% of the original length. Where are the savings? ---Dan De syntactic gustibus non disputandum est.