[comp.lang.misc] The powerlessness of ad lingem arguments

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