home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #3 / NN_1993_3.iso / spool / comp / lang / lisp / 3345 < prev    next >
Encoding:
Text File  |  1993-01-23  |  8.0 KB  |  156 lines

  1. Newsgroups: comp.lang.lisp
  2. Path: sparky!uunet!cs.utexas.edu!sun-barr!ames!agate!linus!linus.mitre.org!boole.mitre.org!crawford
  3. From: crawford@boole.mitre.org (Randy Crawford)
  4. Subject: Re: Why Isn't Lisp a Mainstream Language?
  5. Message-ID: <1993Jan23.073029.29713@linus.mitre.org>
  6. Sender: news@linus.mitre.org (News Service)
  7. Nntp-Posting-Host: boole.mitre.org
  8. Organization: The MITRE Corporation, McLean, VA
  9. References: <1993Jan21.230642.18561@netlabs.com> <19930122162651.0.SWM@SUMMER.SCRC.Symbolics.COM>
  10. Date: Sat, 23 Jan 1993 07:30:29 GMT
  11. Lines: 143
  12.  
  13.  
  14. Far be it for me to speak for Larry, but I've been reading this thread
  15. long enough to see that the other side of the story isn't being told.
  16. So here's my tuppence.
  17.  
  18. In article <19930122162651.0.SWM@SUMMER.SCRC.Symbolics.COM> SWM@stony-brook.scrc.symbolics.com (Scott McKay) writes:
  19. >    Date: Thu, 21 Jan 1993 18:06 EST
  20. >    From: Larry Wall <lwall@netlabs.com>
  21. >
  22. >    : In what way is Lisp "bland ... all the way through"?
  23. >
  24. >    There's little visual distinctiveness to distinguish mentally
  25. >    distinctive constructs.
  26. >
  27. >This is simply not a valid criticism.  There is little visual
  28. >distinctiveness in English to distinguish mentally distinctive
  29. >constructs, and yet you do not fault English.  In fact, one could argue
  30. >that "visual distinctiveness" is a principally a matter of typography.
  31.  
  32. Not a good analogy.  Not only is english an unstructured language (as 
  33. compared with programming languages) but parsing english is legendary 
  34. for its difficulty.  Without punctuation and semantic context, it's 
  35. trivial to write correct english which is effectively illegible; that's 
  36. illegible to man _or_ machine.  The same is not true even of obfuscated 
  37. C; compilers handle it nicely.  So legibility in english is _not_ a 
  38. simple matter of typography.
  39.  
  40. Likewise context free languages can be difficult to read for more reasons 
  41. than just syntactic sugar.  There's little debate that unindented Lisp is 
  42. just as hard to read as unindented C, but few of us write unindented C, 
  43. and ALL Lisp is partly unindented any time two parens are adjacent.
  44.  
  45. However I think the real case to be made for Lisp's relative illegibility 
  46. is one of procedural languages vs. functional languages.  When a process is
  47. decomposed into separate tasks which are presented sequentially, the reader
  48. has the least work to do in understanding the intent of the programmer.
  49. Whenever processes are nested and one process generates temporary values
  50. which are then fed directly into other processes, as in Lisp, the delineation
  51. between tasks (prior vs. successor) is less clear.  Certainly we don't write 
  52. english sentences from the inside out, why should we expect programmers to 
  53. read source code which is written that way?
  54.  
  55. >
  56. >    : Are you saying that you think that the true challenge in programming
  57. >    : is the actual struggling with the language, rather than the addressing
  58. >    : the deeper issues (such as, what it is you are trying to do)?
  59. >
  60. >    I haven't noticed people struggling that much less with Lisp than with
  61. >    most other languages.  Admittedly, nroff is a bit tougher, unless
  62. >    you're just trying to do text processing...  :-)
  63. >
  64. >Perhaps it is the sort of software I do, but I emphatically do notice
  65. >people struggling more with most other languages than with Lisp.  Let's
  66. >look at memory management, for instance.  In most other languages, such
  67. >as C, programmers must confront the issue of memory management head on,
  68. >[...]  The point is that, in most other
  69. >languages, programmers must immediately tackle programming tasks that
  70. >are only incidentally related to the problem at hand.
  71.  
  72. I see two ways to interpret what Larry said.  One is to state that Lisp's 
  73. bag of tricks is no bigger than that of other languages.  How readily does 
  74. a language protect the programmer from having to consider implementation
  75. details like precision loss or the free use of memory?  Does it provide 
  76. sufficient resources to off-load the myriad system support details which 
  77. are tangential to implementing an algorithm?  I'd say that any language 
  78. as large as CL probably _is_ going to serve a programmer's every need,
  79. albeit one-size-fits-all.  But I don't think that's the better case that 
  80. can be made against Lisp, although that seems like what you defended.
  81.  
  82. The other perspective is one of general expressibility:  does Lisp succeed
  83. where other languages fail in producing readable source code and efficient 
  84. executables, leading to maintainability, modularity, and extensibility?
  85. To answer this, Lisp must be compared on its own merits, without CLOS or
  86. Genera.  When stripped of its extensions and superb development environment,
  87. Lisp doesn't appear to me to have a clear upper hand over a language like
  88. Modula 2 or even Ada, not in any general sense.  It's not more legible,
  89. more intuitive, more efficient in execution.  Lisp fares most poorly (IMHO) 
  90. when compared like this with newer languages like Modula 3, which were 
  91. designed largely for their legibility and modularity.
  92.  
  93. It's from this point of view that I too would say that I've seen few people 
  94. struggling more with Ada or Modula 3 than with Lisp.  Compare the mysteries
  95. of writing in Motif or Wcl with writing in CLIM or Clu.  Not so different.
  96.  
  97. >
  98. >    : In what way does Lisp "push down so hard" on morphology?
  99. >
  100. >    Essentially, Lisp assumes that humans like to write programs the same
  101. >    way the machines like to execute them, and so conflates the human
  102. >    representation with the machine representation.  True, there are Lisp
  103. >    compilers, but the "ideal" is still that the machine and the programmer
  104. >    are interpreting the exact, same, one-size-fits-all data structure.
  105. >
  106. >I fail to see that Lisp makes any such assumption.  What machines
  107. >directly execute mapping operators?  Reduction operators?  What machines
  108. >directly execute generic arithmetic, including integers, large integers,
  109. >floating point, and ratios?  Hash tables?  Sequences and collections?
  110. >This claim just cannot be made to stick.
  111.  
  112. Prefix notation and functional expressions are two `gotos considered good'
  113. in Lisp.  Violating either of these will either shut down your equations
  114. or excommunicate yourself from the Brotherhood.  They're both proscriptive.
  115.  
  116. >
  117. >I also think you have confused what you call "machine representation"
  118. >with "parsed representation".  The fact that the human-readable
  119. >representation is the same as the basic parsed representation is one of
  120. >the great sources of Lisp's power -- it allows Lisp programs to
  121. >effortlessly talk about Lisp programs.
  122.  
  123. Sort of the effortless way that Forth programs read?
  124.  
  125. >
  126. >    That said, I should back off a little and admit that there are a few
  127. >    things that are easier in Lisp than in other languages.  But your
  128. >    assumption seems to be that it's better to use an all-around mediocre
  129. >    language for most everything than to use each language for what it does
  130. >    best.  [...]
  131. >
  132. >I don't claim that Lisp is an all-around mediocre language.  It's an
  133. >all-around excellent language.  Sure, there are some languages that have
  134. >a few features that are better than what I can find in Lisp, but so what?
  135. >  [...]
  136. >For general programming, I'll take Lisp nearly every time.  Moral: use the
  137. >right tool for the job.
  138.  
  139. Perhaps by choosing an all-around excellent language?  :-)
  140.  
  141. Lisp isn't the most legible language, nor the fastest in execution, nor the
  142. smallest in executables, nor the most portable among OSes, nor the easiest 
  143. to integrate with 3rd party applications.  These are all excellent reasons 
  144. to prefer other languages when these considerations outweigh Lisp's
  145. comparative strengths in rapid prototyping, implementation sbstraction, 
  146. flexible data structures, and run-time flexibility.  In the PC applications 
  147. arena or systems or networking or communications or accounting or number-
  148. crunching or distributed software, Lisp isn't even in the running.
  149.  
  150. THAT'S why Lisp isn't a mainstream language.
  151. -- 
  152.  
  153. | Randy Crawford        crawford@mitre.org        The MITRE Corporation
  154. |                                                 7525 Colshire Dr., MS Z421
  155. | N=1 -> P=NP           703 883-7940              McLean, VA  22102
  156.