john@clouseau.mitre.org (John D. Burger) (03/26/91)
I asked: What does "short-running" mean? brnstnd@kramden.acf.nyu.edu (Dan Bernstein) replied: 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. Huh? I don't understand this at all; your implication is not obvious to me. Anyway, as I said, the Lisp programs I'm referring to run for hours/days at a time. Is that long enough to be significant? 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. All else isn't equal, as is usually the case when people say that. Lisp gives you heterogenous collections, incremental compilation, a REAL source level debugger, and lots more. That's why development in Lisp IS significantly faster. ... people want to do things with memory that they can't do in Lisp. The opposite is certainly true. ... e.g., byte-copying into a character buffer, which can then be written portably to disk and read back later ... This can be done in Lisp. 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. It's not clear to me that it doesn't, but anyway, I don't want to model hardware, I want to model the problems I need to solve. It's fairly clear that our world views have unreconcilable differences in this area. [on dynamic typing] Where are the examples? Where are the brilliant rewrites of statically typed code into dynamically typed code of a fraction of the length? ... 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? I find your example, and others like it, much more compelling than any rewrite examples. Why do you think it was deemed necessary to implement dynamic typing in C for GNU Emacs? Why do you think X Windows effectively implements dynamic typing for interface entities, not to mention a run time interpreter? Why do you think many (most?) people who want to use C++ use the NIH Class Library, which effectively implements a new (dynamically-typed) language on top of C++? Why does the Saber C development environment implement dynamic typing and an interpreter? Why do many Macintosh development tools implement dynamic typing? There are clearly situations where speed is of the essence, or where the memory-footprint must be a size 2. Dynamically-typed languages may not cut it in these case, although I maintain that they can come close. But there's a reason why dynamic typing has been added in the above situations. -- John Burger john@mitre.org "You ever think about .signature files? I mean, do we really need them?" - alt.andy.rooney