home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #20 / NN_1992_20.iso / spool / comp / lang / modula2 / 1113 < prev    next >
Encoding:
Text File  |  1992-09-08  |  11.5 KB  |  273 lines

  1. Newsgroups: comp.lang.modula2
  2. Path: sparky!uunet!psgrain!randy
  3. From: randy@psg.com (Randy Bush)
  4. Subject: Nursery rhyme thyme
  5. Message-ID: <1992Sep7.062356.17167@psg.com>
  6. Organization: Pacific Systems Group, Portland Oregon, US
  7. Date: Mon, 7 Sep 1992 06:23:56 GMT
  8. Lines: 263
  9.  
  10. C.A.R. Hoar was amazingly correct, and the shadow of the Emperor's Clothes
  11. falls heavily on Modula-2.  But I thought you might be amused by a piece in
  12. a lighter vein, written for the Tuebingen WG13 meeting over a year ago by
  13. Modula-2's great friend Professor Terry.
  14.  
  15. Date: Wed, 26 Jun 91 22:47:53 PDT
  16. From: cspt@giraffe.ru.ac.za (Pat Terry)
  17. Subject: Nursery rhyme thyme
  18.  
  19.  
  20.                     And then there were ....
  21.                     ========================
  22.  
  23. We start our tale with some Poetry:
  24.  
  25.    "Ten little Modulans, keen to toe the line,
  26.     One went to Nottingham, and then there were nine.
  27.  
  28.     Nine little Modulans thought casting sounded great,
  29.     One pressed for cast, old style, and then there were eight.
  30.  
  31.     Eight little Modulans said "COMPLEX will be heaven".
  32.     One stayed with FORTRAN code, and then there were seven.
  33.  
  34.     Seven little Modulans the FOR loop tried to fix,
  35.     Sixteen pages VDM - and then there were six.
  36.  
  37.     Six little Modulans, exceptions felt should thrive.
  38.     One weakly RAISED a "no", and then there were five.
  39.  
  40.     Five little Modulans, keen to add yet more,
  41.     Built five I/O libraries and then there were four.
  42.  
  43.     Four little Modulans, on a formal spree,
  44.     Couldn't freeze the VDM, and then there were three.
  45.  
  46.     Three little Modulans, Strings libraries did view,
  47.     One cried "still not enough!" and then there were two.
  48.  
  49.     Two little Modulans said "Coroutines are fun"
  50.     HALT wouldn't terminate, and then there was one.
  51.  
  52.     One little Modulan, dreadfully alone,
  53.     Soon he discovered C, and then there were none."
  54.  
  55.     (Naughty Nineties Nursery Rhyme)
  56.  
  57. And follow with some Prose:
  58.  
  59. "We have erred and strayed from thy ways like lost sheep.  We have followed
  60. too much the devices and desires of our own hearts ... we have left undone
  61. those things which we ought to have done; and we have done those things
  62. which we ought not to have done"  (Cranmer, 1662)
  63.  
  64.  
  65. "Every one agrees that Modula-2 would be a great language if it had one
  66. more feature.  Trouble is, everyone has a different idea about what that
  67. one feature should be" (Attributed to Sue Eisenbach, 1985)
  68.  
  69.  
  70. And round it off with some History:
  71.  
  72. Way back in about 1979 there was this great idea for a new computer
  73. language.  It was called Modula-2.  Like all languages it grew, and
  74. breathed, and excited poets and scientists alike, and never really settled
  75. down.  By 1985 there was a little grey book describing what it had become.
  76. The book used 33 pages to describe the language in a strange
  77. incomprehensible language called English, and the language described had:
  78.  
  79.      40 reserved words
  80.      29 pervasive identifiers
  81.      1  system module with 2 types and 6 procedures
  82.      A  small library with
  83.           Terminal   with  6 procedures
  84.           InOut      with 15 procedures and 2 variables
  85.           RealInOut  with  3 procedures and 1 variable
  86.           FileSystem with  5 types, and 18 procedures
  87.           Storage    with  3 procedures
  88.           MathLib0   with  8 procedures
  89.           Processes  with  5 procedures and 1 type
  90.  
  91. Of course, vendors added a few more libraries.  Most had those mentioned plus
  92.  
  93.           Strings          with about 9 procedures
  94.           NumberConversion with about 6 procedures
  95.           RealConversions  with about 2 procedures
  96.  
  97. because by then there were ...
  98.  
  99.       Quite a number of implementations and compilers, and quite a number
  100.       of lines of production code, and even quite a number of places where
  101.       the language was used to teach students, and quite a few books that
  102.       tried to help do this.  All seemed to predict a rosy future.
  103.  
  104. And Real Historians will recall that the Little Book had some funny
  105. suggestions for other modules for a strange machine that they stopped
  106. making, so nobody noticed them.
  107.  
  108.  
  109.  
  110. But, in spite of this, by then there were ....
  111.  
  112.       A whole lot of knotty points that language lawyers started to argue
  113.       over.
  114.  
  115. They decided to try to untie the knots.  This was fun, and soon attracted
  116. support from various organizations who thought it would be a Good Idea to
  117. standardize the language at the same time.
  118.  
  119. And, mirabile dictu, then there were ....
  120.  
  121.       Other language lawyers who were invited to join in.
  122.  
  123. These language lawyers were real nice guys.  They travelled the world,
  124. visited exciting places like Nottingham, Nice, Portland, Linz, Milton
  125. Keynes and Tuebingen.  Everywhere they went they heard new languages, and
  126. nearly every one soon thought of a New Idea.  And another New Idea.  And
  127. another ...
  128.  
  129. But then, it must be remembered, there were ....
  130.  
  131.       No guidelines for Language Law, for those were thought to be a Bad
  132.       Idea.
  133.  
  134. This wasn't really noticed, because there were so many Good Ideas that the
  135. few bad ones went largely unnoticed.  Some of these Good Ideas arose from
  136. suggestions for tidying up the Small Book.  The Small Book had, you see,
  137. its own share of Bad Ideas.  Like, for example
  138.  
  139.       An idea that one could do type casting with syntax like Type(x)
  140.       An idea that one could do CARDINAL arithmetic on ADDRESS types
  141.       An idea that identifiers like LONGINT might be useful
  142.       An idea that SIZE(P^) was useful
  143.       A default BITSET type
  144.       The possibility of using HIGH(OrdinaryArray)
  145.  
  146. It was time, it was argued, that all these Bad Ideas should be purged, and
  147. in their place other Good Ideas should rise triumphant.  Of course, it was
  148. hard to distinguish the Good from the Bad.  Some things were obviously Bad,
  149. like
  150.  
  151.       A Really Simple way of defining IMPORT/EXPORT rules
  152.       A Really Simple I/O Library
  153.       A Really Useful STRING type
  154.       A Really Useful BCD type
  155.       A Really Useful way of introducing opaque types
  156.       A Validation Suite
  157.       Revision bars
  158.       A NULPROC type
  159.       Object oriented extensions
  160.       Module constants
  161.       Allowing inline assembly code
  162.       Constant parameters
  163.       Specifying a number of places for PI
  164.       Trojan Horses
  165.       Letting INTEGER and CARDINAL be compatible
  166.       Read-only limitations on exported variables
  167.       Specifying the order of evaluation
  168.       Requiring portability of SYSTEM on a single platform
  169.       Variable initialization
  170.       Variable number of parameters
  171.       Dereferencing or indexing the results of function calls
  172.       Operator overloading
  173.       Proper generics
  174.       Letting WITH apply to modules
  175. and
  176.       Keeping It Simple
  177.  
  178. Most other ideas were obviously Good.  There were a few, however, that took
  179. folk a long time to decide were actually Bad, like
  180.  
  181.       The first four I/O library proposals
  182.       Listening to the views of implementors as well as academics
  183.       Optional system modules
  184.  
  185. In fact, it all took a long time.  But in the stages near the end (or was
  186. it near the beginning?) a big party was planned in Germany to celebrate.
  187.  
  188. And then there were ...
  189.  
  190.      A few who looked at this language that some still called Modula-2, and
  191.      observed that the book that now described it had more than 570 pages,
  192.      and used an exciting language for this purpose called VDM that
  193.      everyone would understond very well because a new standard for VDM was 
  194.      being produced Real Soon Now.  Some, who still had the energy, counted:
  195.  
  196.      42 reserved words (or maybe 45)
  197.      43 pervasive identifiers (or maybe 46) or about 14-17 more than before
  198.         (11 procedures, 4 types and 2 constants)
  199.      A new possibility for Making_Pompous_Identifiers__Even____Longer
  200.      A new way of specifying compiler directives
  201.      A clever way of specifying initialization order
  202.      A whole new era of programming with recursive procedure types
  203.      A whole new coroutine model
  204.      A nice way of (! bracketing !!!!) for squares
  205.      A great new idea for string catenation
  206.      A special pervasive for finding the LENGTH of a piece of string
  207.      A valuable idea for value constructors
  208.      A new way of protecting modules from interrupts
  209.      A new and safer way of doing type casting
  210.      A lot of much nicer ways of doing type conversions
  211.      A long awaited method of handling multidimensional open arrays
  212.      A new way of doing whole number division
  213.      A new set of rules for FOR statements and their control variables
  214.      A new way of handling declarations of mutually recursive procedures
  215.      A new type for physicists and engineers who do COMPLEX things
  216.      A new and never-before-implemented way of handling exceptions
  217.      A highly intricate way of allowing programs to stop more than once
  218.      1 SYSTEM      system module with 7 types, 9 procedures, 3 constants
  219.      1 COROUTINES  system module with 1 type, 9 procedures
  220.      1 EXCEPTIONS  system module with 3 types, 10 procedures
  221.      1 Termination system module with 3 procedures
  222.      A Really Useful Library with
  223.           StdChans          with 10 procedures and 1 re-exported type
  224.           ProgramArgs       with  3 procedures and 1 re-exported type
  225.           TextIO            with  8 procedures and 1 re-exported type
  226.           WholeIO           with  4 procedures and 1 re-exported type
  227.           RealIO            with  5 procedures and 1 re-exported type
  228.           LongIO            with  5 procedures and 1 re-exported type
  229.           BinIO             with  2 procedures
  230.           IOConsts          with  1 type
  231.           IORes             with  1 procedure and 1 type
  232.           STextIO           with  8 procedures
  233.           SWholeIO          with  4 procedures
  234.           SRealIO           with  5 procedures
  235.           SLongIO           with  5 procedures
  236.           SBinIO            with  2 procedures
  237.           SIORes            with  1 procedure and 1 type
  238.           DevConsts         with  3 types and 7 constants
  239.           SeqStream         with  3 procedures, 3 types and 5 constants
  240.           RewFile           with  7 procedures, 3 types and 5 constants
  241.           RndFile           with 10 procedures, 5 types and 6 constants
  242.           Terminal          with  3 procedures, 3 types and 5 constants
  243.           IOChannel         with 17 procedures and 3 types
  244.           IOLink            with  7 procedures and 17 types
  245.           Storage           with  5 procedures, 1 type and 2 constants
  246.           Processes         with 16 procedures and 5 types
  247.           Semaphores        with  5 procedures and 1 type
  248.           Strings           with 21 procedures and 3 types
  249.           ConvTypes         with  2 types
  250.           WholeConv         with  4 procedures and 2 types
  251.           RealConv          with  5 procedures and 2 types
  252.           SysClock          with  5 procedures and 8 types
  253.           RealMath          with 12 procedures, 2 constants and 1 type
  254.           LongMath          with 12 procedures, 2 constants and 1 type
  255.           ComplexMath       with  7 (or maybe 15) procedures and 1 type
  256.                                     (and maybe 3 constants)
  257.           LongComplexMath   with  7 (or maybe 15) procedures and 1 type
  258.                                     (and maybe 3 constants)
  259.           LowReal           with  15 procedures and 15 constants
  260.           LowLong           with  15 procedures and 15 constants
  261.           CharClass         with  5 procedures
  262.  
  263. So, unhappily, then there were ...
  264.  
  265.      Those who thought that a some of this might have gone a little bit
  266.      beyond the pale.  They probably shouldn't have done all that counting,
  267.      because their opinions probably no longer counted.  Some even wondered
  268.      what old Nick would have thought, but his opinion had never been worth
  269.      much, had it?
  270.  
  271. -- 
  272. randy@psg.com   ...!uunet!m2xenix!randy
  273.