home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / lang / eiffel / 981 < prev    next >
Encoding:
Text File  |  1992-07-24  |  26.9 KB  |  665 lines

  1. Newsgroups: comp.lang.eiffel
  2. Path: sparky!uunet!mcsun!sunic!psinntp!psinntp!merlin.hgc.edu!jcm
  3. From: jcm@hgc.edu (James McKim)
  4. Subject: FAQ
  5. Message-ID: <1992Jul23.124931.1768@merlin.hgc.edu>
  6. Keywords: FAQ, Eiffel
  7. Sender: usenet@merlin.hgc.edu (Action News Central)
  8. Organization: The Hartford Graduate Center
  9. Distribution: comp.lang.eiffel
  10. Date: Thu, 23 Jul 1992 12:49:31 GMT
  11. Lines: 652
  12.  
  13. Rock Howard was keeping the FAQ file, but I think he's lost
  14. access (temporarily, I hope) to the net. Here's the most up to date 
  15. version that I kept.
  16.  
  17. Hope this helps,
  18. -- Jim
  19.  
  20.  
  21.  
  22.     This is the FAQ list for comp.lang.eiffel.
  23. Please email me any improvements, additions, updates, or corrections.
  24. Also send me other frequently asked questions ( preferably with answers )
  25. and I'll gladly incorporate them into the list. email: howard@ses.com
  26.  
  27. **************************************************************************
  28.  
  29. SPECIAL NOTE: I may be hard to reach via email during the holidays as
  30. I set up operations in my new offices. My email address will be
  31. changing as well although my email should be forwarded to me. You can also
  32. contact via phone or snail mail as listed in my signature below.
  33.  
  34. I'll present a new FAQ early in January, as things are
  35. changing quite rapidly in the Eiffel world at the moment. - Rock Howard
  36.  
  37. **************************************************************************
  38.  
  39. The information contained in these posts are a compilation of answers to
  40. questions posted by participants in the comp.lang.eiffel USENET group.
  41. No guarantees are made regarding the correctness of these responses.
  42. This will get posted to comp.lang.eiffel about every other month or so
  43. as traffic in comp.lang.eiffel warrants. There is currently no particular
  44. order to this list, items will get added and removed over time.
  45.  
  46. Note:
  47. This file was originated by Robert (Rock) Howard.
  48. Mr. Howard is affiliated with Rock Solid Software ( a distributor of
  49. Eiffel, Sather, and related products ) and is editor/publisher of the
  50. Eiffel Outlook newsletter. I can take no responsibility for the correctness
  51. of the information, but will gladly correct any mistakes you might point out.
  52.  
  53. **************************************************************************
  54.  
  55. Questions marked with 1 asterisk have a new or modified response.
  56. Questions marked with 2 asterisks are new.
  57. Questions marked with 3 asterisks are currently unanswered. Please help.
  58.  
  59. **************************************************************************
  60.  
  61. General:
  62.  
  63. G01)    What is Eiffel?
  64. G02)    Where did Eiffel come from?
  65. G03)*    Is Eiffel available in the public domain?
  66. G04)*    How can I obtain Eiffel? Are their any school or student discounts?
  67. G05)    What is Sather? How does it compare to Eiffel?
  68. G06)    What books are available for learning about Eiffel?
  69. G07)    Are any magazines or newsletters available concerning Eiffel?
  70. G08)*    Is Eiffel available on PC, Mac, NeXT, Amiga, Atari, ...?
  71. G09)    Is there an archive of the comp.lang.eiffel newsgroup?
  72. G10)*    How much memory and disk space does Eiffel development require?
  73. G11)*    How large are typical Eiffel executables?
  74.  
  75. Language:
  76.  
  77. L01)    What features does Eiffel have?
  78. L02)    Is it true that Eiffel is too slow?
  79. L03)*    Please explain and discuss covariance vs. contravariance.
  80. L04)    Is it true that there are "holes" in the Eiffel type system?
  81. L05)    What's the big deal about preconditions and postconditions?
  82. L06)*    What libraries come with Eiffel?
  83.  
  84. **************************************************************************
  85.  
  86. G01)    What is Eiffel?
  87. Eiffel is an object-oriented language that emphasizes the construction
  88. of high-quality software. Eiffel is typically implemented by compilation to
  89. C, ensuring wide portability. The ISE Eiffel compiler can generate stand-alone
  90. C packages including makefiles to aid in porting finished applications.
  91.  
  92. Eiffel is a complete language definition unto itself. It is not a superset
  93. or extension of any other language. The language syntax resembles Pascal.
  94. See the language questions below for more explanation of Eiffel features.
  95.  
  96. G02)    Where did Eiffel come from?
  97. Eiffel was created by Bertrand Meyer and developed by his company,
  98. Interactive Software Engineering (ISE) of Goleta, CA. Dr. Meyer borrowed on
  99. his extensive experience with OOP, particularly with Simula. He also added in
  100. important concepts from his academic work on software verification and
  101. computer language definition. Eiffel has evolved continually since its
  102. first introduction in 1986.
  103.  
  104. G03)    Is Eiffel available in the public domain?
  105. Eiffel is not currently available as a public domain product. ISE has
  106. expressed willingness to support the serious efforts of those who wish
  107. to create a PD Eiffel, but so far no such effort has succeeded.
  108.  
  109. The definition of the Eiffel language is in the public domain. This
  110. definition is controlled by NICE, the Non-profit International Consortium
  111. for Eiffel. This means that anyone or any company may create a compiler,
  112. interpreter, or whatever having to do with Eiffel. NICE reserves the
  113. right to validate that any such tool conforms to the current definition
  114. of the Eiffel language before it can be distributed with the Eiffel trademark.
  115. ( i.e. advertised as an "Eiffel" compiler. )
  116. The Eiffel trademark is owned and controlled by NICE. It received it from
  117. ISE in the 1st quarter of 1991. NICE is using Dr. Meyer's new book,
  118. `Eiffel: The Language Version 3', as the initial definition of the language.
  119. NICE is working on obtaining a validation suite for conformance checking.
  120.  
  121. Sather, a recent subset/offshoot language is available for free. It has a
  122. very unrestrictive license aimed at encouraging contribution to the public
  123. library without precluding the use of Sather for proprietary projects.
  124. In the United States, you may obtain the distribution by anonymous ftp
  125. on the internet from <icsi-ftp.berkeley.edu>.
  126. Use "ftp" as follows:
  127.  
  128. % ftp icsi-ftp.berkeley.edu
  129. Connected to icsic.Berkeley.EDU.
  130. 220 icsi-ftp (icsic.berkeley.edu) FTP server (Version 5.60.l) ready.
  131. Name (icsi-ftp:username): ftp
  132. 331 Guest login ok, send ident as password.
  133. Password:
  134. 230 Guest login Ok, access restrictions apply.
  135. ftp> cd pub/sather
  136. 250 CWD command successful.
  137. ftp> binary
  138. 200 Type set to I.
  139. ftp> get sather-0.01.beta.tar.Z
  140. 200 PORT command successful.
  141. 150 Opening BINARY mode data connection for sather-0.01.beta.tar.Z
  142. (3035453 byte
  143. s).226 Transfer complete.
  144. local: sather-0.01.beta.tar.Z remote: sather-0.01.beta.tar.Z
  145. 3556225 bytes received in 18 seconds (1.6e+02 Kbytes/s)
  146. ftp> quit
  147. 221 Goodbye.
  148.  
  149. Uncompress and unpack using:
  150. % zcat sather-0.01.beta.tar.Z | tar xf -
  151.  
  152. Each directory has a README file describing its contents. Installation
  153. instructions are in the file "INSTALL" in the "doc" directory.
  154. In Europe Sather is available from: gmdzi.gmd.de
  155. (currently: 129.26.1.90) in pub/Sather.
  156.  
  157. Sather is also distributed on electronic media by Rock Solid Software.
  158. ( 1/4" Cartridge tape only, media costs are $70 per tape (includes shipping
  159.   in North America, add $10 for shipping elsewhere. )
  160.  
  161. The 0.01.beta release of Sather described above is completely unsupported
  162. by anyone, although a mailing list exists that may be able to help with
  163. questions. ( To join, send mail to sather-request@ICSI.Berkeley.EDU ). As
  164. distributed, Sather has only been tested on SunOs 4.1. Some other ports
  165. have taken place, including Sony News, DEC MIPS, and Unix System V Release 3.
  166. Try the mailing list for details on these and other possibly ports.
  167.  
  168. ( See more on the Sather language in question G05. )
  169.  
  170. G04)    How can I obtain Eiffel? Are their any school or student discounts?
  171. Eiffel is a commercially supported product available from Interactive
  172. Software Engineering. There is a world-wide distribution channel for the
  173. sale and support of this implementation. A new version of Eiffel from
  174. SiG Computer GmbH called Eiffel/S is now available. It is available
  175. through roughly the same distribution channels as ISE's Eiffel.
  176.  
  177. Both products include aggressive site-licensing and discount licenses for
  178. schools and universities. Eiffel/S offers an inexpensive student license.
  179. This license is limited to building systems with up to 75 classes along with
  180. a few other size constraints. It is only $60. Anyone can purchase it for the
  181. $60 until January 15th. Then ISE will raise the price for non-students to $98.
  182.  
  183. ISE is also selling relatively inexpensive student licenses for Eiffel (~$295)
  184. on their lower cost license platforms such as 386 Unix and the NeXT computer.
  185.  
  186. The current list of Eiffel dealers and distributors includes:
  187.  
  188.     Rock Solid Software
  189.     P.O. Box 163072
  190.     Austin, TX 78716
  191.     512-328-6406    FAX 512-328-0466
  192.  
  193.     Interactive Software Engineering, Inc.
  194.     270 Storke Road, Suite 7
  195.     Goleta, CA 93117
  196.     805-685-1006    FAX 805-685-6869
  197.  
  198.     Computer Ed, Inc.
  199.     115 Research Drive
  200.     Bethlehem, PA 18015
  201.     215-861-6915    FAX 215-861-8247
  202.  
  203.     Intelligent Visual Computing
  204.     P.O. Box 418
  205.     Morrisville, NC 27560
  206.     919-481-1353    FAX 919-467-3683
  207.  
  208.     First Principles, Inc.
  209.     3801 East Florida
  210.     Suite 605
  211.     Denver, CO 80210-2544
  212.     303-757-2216    FAX 303-757-2047
  213.  
  214.     Class Technology Pty. Ltd.
  215.     6 Pounds Road
  216.     Hornsby NSW 2077
  217.     Australia
  218.     +61 2 477 6188    FAX +61 2 476 4378
  219.  
  220.     Ease Pty. Ltd.
  221.     3 Edinburgh Avenue
  222.     Carlingford NSW 2118
  223.     Australia
  224.     +61 2 683 6930 ( Phone and FAX )
  225.  
  226.     Applied Logic Distribution
  227.     9 Princeton Court Road
  228.     55 Felsham Road
  229.     London SW151AZ
  230.     England
  231.     +44 81 780 2324    FAX +44 81 780 1941
  232.  
  233.     SOL
  234.     14 rue Jean Rey
  235.     75015 Paris
  236.     France
  237.     +33 1 40 56 03 58 FAX +33 1 40 56 05 81
  238.  
  239.     SiG Computer GmbH
  240.     Zu den Bettern 4
  241.     6333 Braunfels-Altenkirchen
  242.     Germany
  243.     +49 64 72 20 96    FAX +49 64 72 72 13
  244.  
  245.     EtnoTeam
  246.     Via Adelaide Bono Cairoli 34
  247.     20217 Milano
  248.     Italy
  249.     +39 2 261621    FAX +39 2 26110755
  250.  
  251.     Unirel
  252.     Centro Comerciale Osmanoro
  253.     Via Volturno, 12
  254.     50019 Sesto Fiorentino (FL)
  255.     Italy
  256.     +39 55 373043    FAX +39 55 318525
  257.  
  258.     Cromasoft
  259.     Tennyson 93
  260.     Col. Polanco 11550
  261.     Mexico
  262.     +52 5 501 4501    FAX +52 5 595 2089
  263.  
  264.     Objective Methods
  265.     77 Chamberlain Road
  266.     Karori
  267.     Wellington
  268.     New Zealand
  269.     +64 4 769 499    FAX +64 4 768 772
  270.  
  271.     Seinca
  272.     C/Jorge Juan, 19 - #4
  273.     28001 Madrid
  274.     Spain
  275.     +34 1 577 99 95    FAX +34 1 577 49 81
  276.  
  277.     Enea Data
  278.     Box 232
  279.     Nytorpsvagen 5
  280.     S-183 23 Taby
  281.     Sweden
  282.     +46 8 792 25 00    FAX +46 8 768 43 88
  283.  
  284.     as well as two new distributors in Japan and
  285.     one in India. Sorry, I don't have detailed contact
  286.     information for these last three yet.
  287.  
  288. G05)    What is Sather? How does it compare to Eiffel?
  289. Sather is a new language patterned after Eiffel, but emphasizing
  290. efficiency and compiling simplicity over software correctness, reusability,
  291. and maintenance. Sather was created by Dr. Stephen Omohundro and others
  292. at ICSI of Berkeley, CA. ( The name comes from the name of a well-known
  293. tower on the Berkeley campus. Sather rhymes with "bather". )
  294. Sather simplifies some Eiffel constructs, eliminates others. and adds some
  295. of its own such as built-in arrays and programmer specified dynamic
  296. dispatching. It compiles quickly and produces smaller executables than Eiffel
  297. 2.x. The Sather environment includes an emacs editing environment, a debugger,
  298. and several hundred library classes. Currently, it is only tested on the SUN4.
  299. Theoretically, porting the language to other platforms is possible and a
  300. number of individuals are trying to do just that. Some have succeeded.
  301.  
  302. G06)    What books are available for learning about Eiffel?
  303. The classic text for learning about Eiffel ( as well as the general concepts
  304. in OOP ) is Dr. Meyer's "Object Oriented Software Construction". Although
  305. the language has evolved significantly since the book's date of publication,
  306. the presentation of the basic problems and solutions which motivate the
  307. object-oriented mind set are still quite compelling. ( Prentice Hall )
  308.  
  309. Dr. Meyer's new book, "Eiffel: The Language Version 3", is just now
  310. being printed by Prentice Hall. It is over 600 pages and is much more than
  311. a language reference in that it combines an introduction to Eiffel, a
  312. complete overview of the language, and a good deal of the philosophy that
  313. the language attempts to capture. This is the state of the art in OO thinking.
  314.  
  315. G07)    Are any magazines or newsletters available concerning Eiffel?
  316. Eiffel Outlook is a bi-monthly newsletter devoted to Eiffel and Sather. It
  317. is 24 pages long and focuses mainly on practical and technical issues
  318. involved in using these languages. Contact Rock Solid Software for more
  319. information. Trial subscriptions are available.
  320.  
  321. Eiffel Post is a four page newsletter for customers of SiG Computer, the
  322. makers of Eiffel/S. Contact SiG Computer for more information.
  323.  
  324. The Eiffel User's Group publishes a bi-monthly newsletter of a page or two
  325. consisting of short announcements of recent Eiffel news and upcoming events.
  326. Members of the User's Group also receive occasional goodies such as Eiffel
  327. User Conference Proceedings and updated Eiffel bibliographies. Contact ISE
  328. for more information.
  329.  
  330. G08)    Is Eiffel available on PC, Mac, NeXT, Amiga, Atari, ...?
  331. Eiffel 2.3 from ISE is available on most Unix platforms as well as VAX.
  332.  
  333. Release of Eiffel/S for the PC has finally taken place. Other Eiffel/S
  334. platforms slated for near term release SUN Sparc and 386 Unix (Interactive,
  335. SCO, and ESIX). Other upcoming ports include OS/2, SUN Sparc, and DEC Mips.
  336.  
  337. Eiffel/S is a fast compiler with a new approach to the compilation process.
  338. It seems to generate clean C code tha compiles and links quickly and produces
  339. reasonably small executables. The DOS version works with MicroSoft C v5 or 6,
  340. Borland C++, or Turbo C. This is the 1.0 release of Eiffel/S and there are
  341. some small problems with the initial release. Eiffel/S is largely compatible
  342. with the new Eiffel Version 3 language definition, although they have there
  343. own non-compatible libraries.
  344.  
  345. Eiffel 2.3 for the NeXT is available. This version includes some
  346. very nice library customizations to support the NeXT.
  347.  
  348. Eiffel 2.3 for the AmigaUX ( System V.4 Unix ) is available.
  349.  
  350. Eiffel for AmigaDOS has been postponed until after Version 3 is
  351.     ready for porting.
  352.  
  353. Eiffel 2.3 for the Mac AUX is available.
  354.  
  355. Eiffel for the Mac MPW environment has been postponed until after
  356.     Version 3 is ready for porting.
  357.  
  358. ( Eiffel Version 3 has been redesigned to be much less dependent on the
  359.     UNIX file system and UNIX system calls. This should allow for
  360.     non-UNIX ports of Version 3 to actually get done. )
  361.  
  362. G09)    Is there an archive of the comp.lang.eiffel newsgroup?
  363. Yes.  An archive of the newsgroup is available on gatekeeper.dec.com.
  364. Roger H. Goun (goun@ddif.enet.dec.com) maintains the archive.  The DEC Western
  365. Research Lab hosts it.
  366.  
  367. The files are in /pub/plan/eiffel/usenet/USENET-xx-yyy, where `xx' represents
  368. the last two digits of the year and `yyy' the month of posting, e.g.,
  369. /pub/plan/eiffel/usenet/USENET-91-AUG.  Compressed versions of the files are
  370. also available.
  371.  
  372. >From IP (either inside DEC or outside DEC):
  373.     anonymous FTP to gatekeeper.dec.com (16.1.0.2)
  374.     cd pub/plan/eiffel/usenet
  375.     get USENET-xx-yyy (or to get the compressed copy, bin, get USENET-xx-yyy.Z)
  376.  
  377. >From a UUCP neighbor of decwrl:
  378.     "uucp decwrl!~/pub/plan/eiffel/usenet/USENET-xx-yyy.Z"
  379.  
  380. >From the DEC Easynet:
  381.     DECWRL::"/pub/plan/eiffel/usenet/USENET-xx-yyy"
  382.  
  383. USENET-88-DEC and USENET-88-DEC.Z are the oldest entries in the archives.
  384.  
  385. G10)***    How much memory and disk space does Eiffel development require?
  386. A lot. 10 MB just to install the basic tools and library source. Once
  387. you start compiling those libraries it will be 20-25 MB. I'd recommend
  388. 50 MB for a minimum development environment.
  389.  
  390. Eiffel/S will requires less, but still keep about 3-4 MB free to get
  391. installed. It is possible to use Eiffel/S effectively with only about
  392. 10 MB available, but a heavy user can use more easily.
  393.  
  394. G11)***    How large are typical Eiffel executables?
  395. How large are typical C executables?
  396. Seriously, Eiffel does impose a minimum size which is large since
  397. even trivial Eiffel applications bring in a lot of classes and
  398. current Eiffel implmentations are not that hot at optimizing
  399. for space or time. Interestingly, as applications grow Eiffel
  400. applications seem to grow less rapidly as new capabilities are
  401. added. Reuse does help out in this regards. A good Eiffel compiler
  402. should eventually allow large applications to be smaller than
  403. equally functional applications written in C.
  404. ( See also the notes below about Eiffel's speed. Note that
  405. leaving assertion checking in the code increases the size of
  406. applications a lot. Despite this, many of us prefer that they
  407. remain throughout development. Some even deliver a PRECONDITIONS-only
  408. version of their applications to their early customers. )
  409.  
  410. Late note: Eiffel/S seems to create executables that are 4 to 5 times
  411. smaller for the same functionality as ISE's 2.3 Eiffel compiler. And
  412. SiG doesn't claim they have fully optimized for space yet. Perhaps the
  413. huge Eiffel executables seen prior to Eiffel/S or soon to be a thing of
  414. the past ( if ISE can match SiG's technology. )
  415.  
  416. L01)    What features does Eiffel have?
  417.     Classes, multiple inheritance, polymorphism, dynamic binding,
  418.     genericity, static type checking, a disciplined exception mechanism,
  419.     systematic use of assertions to promote programming by contract.
  420.  
  421.     ISE's Eiffel 2.3 development environment includes:
  422.         - automatic configuration management ( no makefiles! )
  423.         - automatic tools for creating class documentation
  424.         - a browser ( pretty good and you get the source code )
  425.         - an interactive test environment ( ISE calls it a
  426.             debugger, but that's stretching the truth a bit. )
  427.         - extensive libraries, see L07.
  428.  
  429.     Eiffel/S has a Version 3 compiler and libraries, see L07.
  430.     No other tools are included with this initial release besides
  431.     the automatic configuration management. But it is a very fast
  432.     and effective compiler that deserves some respect.
  433.  
  434. L02)    Is it true that Eiffel is too slow?
  435.     Early versions of Eiffel were slow. The compiler was too slow and
  436.     the generated code was bulky. In addition, the run-time environment
  437.     had some major inefficiencies. ISE's implementation has improved
  438.     dramatically in this regard with version 2.3 from ISE which has been
  439.     available for quite a while. For version 3, (expected in 4th Q, '91)
  440.     ISE is rumored to be working on new "melting ice" compiler technology
  441.     that will improve the edit-compile-cycle enormously.
  442.  
  443.     An interesting property of ISE's current Eiffel compiler is that
  444.     during normal development, 4 compilation steps are necessary to
  445.     create an executable. An additional 3 steps are necessary to create
  446.     a `C package'. These later steps also do extensive space and time
  447.     optimizations. The upshot is that a quick compile without the
  448.     C packaging steps will produce an executable that does not
  449.     compare well with other OO compilers, ecspecially if assertions
  450.     of various ilk are being used. A little care in the specification
  451.     of the desired options for building an Eiffel system for the
  452.     purposes of benchmarking can often produce performance improvements
  453.     of 20 times or more.
  454.  
  455.     See also the comments on Eiffel/S above. The Eiffel/S executables
  456.     seem faster than ISE's, but true benchmarks are not available yet.
  457.  
  458. L03)    Please explain and discuss covariance vs. contravariance.
  459.  
  460.     Richie Bielak says:
  461.     Consider the following situation: we have two classes PARENT
  462.     and CHILD. CHILD inherits from PARENT, and redefines PARENT's
  463.     feature "foo". In Eiffel it looks like this:
  464.  
  465.         class PARENT
  466.            feature
  467.               foo (arg : A) is ...
  468.  
  469.         end; -- PARENT
  470.  
  471.  
  472.         class CHILD
  473.            inherit
  474.                PARENT redefine foo
  475.            feature
  476.                foo (arg : B) is ...
  477.          end; -- CHILD
  478.  
  479.  
  480.     The question is: what should the relation between the type of argument
  481.     to "foo", that is "A" and "B"? ( If they are the same, then there is
  482.     no problem and this discussionis moot. )
  483.  
  484.     Here are two posibilities:
  485.        (1)  A is a parent of B.        - the covariant rule
  486.        (2)  B is a parent of A.        - the contravariant rule
  487.  
  488.     "Covariant" - because in the child class the types of arguments in
  489.     redefined routines are children of types in the parent's routine,
  490.     so the inheritance "varies" for  both in the same direction - i.e.
  491.     co-varies. "Contravariant" is the opposite.
  492.  
  493.     Robert Howard comments:
  494.     The disadvantage of the contravariant rule is in a scenario like:
  495.  
  496.     class PLOT
  497.         feature
  498.         add( arg : DATA_SAMPLE ) is ...
  499.  
  500.     class PLOT_3D
  501.         inherit
  502.         PLOT redefine add
  503.         feature
  504.         add( arg : DATA_SAMPLE_3D ) is ...
  505.  
  506.     where DATA_SAMPLE_3D is inherited from DATA_SAMPLE.
  507.  
  508.     In general, the problem of specializing related classes jointly
  509.     is a major headache in contravariant systems. Most contravariant
  510.     solutions that desire type safety in this situation must resort to
  511.     some form of run-time conformity checking.
  512.  
  513.     ( The December 1991 issue of Eiffel Outlook and JOOP both contain
  514.       more discussion and explanations concerning this topic. )
  515.  
  516. L04)    Is it true that there are "holes" in the Eiffel type system?
  517.     Technically no, but ISE's implementation of 2.3 doesn't handle
  518.     all of the admittedly complex cases correctly in every situation.
  519.     Dr. Meyer claims: A) the holes are rarely a problem in real world
  520.     systems ( debatable, but I've never met    an Eiffel user who has had
  521.     a problem caused by the type system hole ) and B) it will be fixed
  522.     in Version 3 without giving up covariance.
  523.  
  524.     I guess someone will ask me to confirm that the "hole" is fixed
  525.     in the new Eiffel/S compiler. I haven't checked yet.
  526.  
  527. L05)    What's the big deal about preconditions and postconditions?
  528.     The big deal is that it supports programming by contract. For
  529.     example, preconditions ( require clauses ) are simple boolean
  530.     statements that are used to check that the input arguments are
  531.     valid and that the object is in a reasonable state to do the
  532.     requested operation. If not, an exception is generated. Similarly,
  533.     postconditions ( ensure clauses ) make sure that a method has
  534.     successfully performed its duties, thus "fulfilling its contract"
  535.     with the caller. Invariants are booleans expressions that are checked
  536.     every time an object method returns back to a separate object.
  537.  
  538.     You can use these ideas in any object-oriented programming language,
  539.     but usually must supply your own assertion mechanisms or rely on
  540.     programmer discipline. In Eiffel, the ideas are integrated into the
  541.     whole fabric of the environment. We find them used by:
  542.     -- the exception handling mechanism.
  543.         ( Tracebacks almost always identify the correct culprit code
  544.           since preconditions almost always denote an error in the
  545.           calling method, while postconditions denote an error in
  546.           the called method. )
  547.     -- the automatic compilation system.
  548.         ( Assertions can be disabled entirely or selectively by
  549.           type on a per class basis. )
  550.     -- the Eiffel compiler
  551.         ( Assertion expressions are not allowed to produce side
  552.           effects since they can be trivially omitted. )
  553.     -- the automatic documentation tools
  554.         ( Preconditions and postconditions are important statements
  555.           about what a method does, often effectively describing the
  556.           "contract" between the caller and callee. Invariants can
  557.           yield information about legal states an object can have. )
  558.  
  559.     In addition, if conjecture by Dr. Meyer bears fruit, the notion
  560.     of preconditions may be extended into an important mechanism for
  561.     the development of parallel programming.
  562.  
  563. L06)    What libraries come with Eiffel?
  564. SE Eiffel 2.3
  565.     - Base libraries
  566.     - Data Structure Library
  567.     - Graphics Libary, ( based on X Windows )
  568.     - Parsing Library
  569.     - classes for storing and retrieving persistent objects
  570.     - classes for analysis of Eiffel class code
  571.         ( all the source for the Eiffel browser is included )
  572.     - many others
  573.  
  574.     ( The libraries are very solid, but somewhat spotty in
  575.           terms of their usability and reusability.
  576.           Some library classes are excellent. In general,
  577.           they are a good starting point for development.
  578.  
  579.     - Eiffel 2.3 on the NeXT also includes
  580.         - compatible version of the graphics library, but
  581.             uses NeXTStep and Display PostScript
  582.         - an encapsulation of the NeXTStep AppKit classes
  583.  
  584. SiG Computer Eiffel/S Version 3
  585.     SiG has chosen to implement there own set of library classes.
  586. Included are:
  587.  
  588. The BASIC Cluster
  589.     Universal classes
  590.         GENERAL, PLATFORM, ANY
  591.     Special classes
  592.         ORDER, NUMBER, HASHKEY, BOOLEAN, CHARACTER, INTEGER, REAL, DOUBLE,
  593.         BITS n, STRING, ARRAY[G]
  594.     Other
  595.         ENVIRON  -- access to calling arguments and environment variables
  596.         BASIC_IO -- normal IO
  597.         FORMAT   -- extension to BASIC_IO with some simple formatting ability
  598.         EXCEPT   -- fine grained access to exception handling info
  599.         SYS_TIME -- system time interface
  600.         INTERNAL -- control garbage collector.
  601.  
  602. The FILES Cluster
  603.     FILE        -- files are modelled as persistent dynamic arrays
  604.     FILE_SYS    -- interface to clusters, files, and paths
  605.     FSYS_DAT    -- file information, i.e. name, permissions, dates, path
  606.  
  607. The SORTER
  608.         -- A sorting algorithm ( bottom-up heapsort ). It is not clear
  609.                 to me why this is in a separate class and cluster.
  610.  
  611. The MATH Cluster
  612.         -- math functions ( mostly real functions plus simple integer random
  613.                 numbers ). Also a few constants.
  614.  
  615. The CONTAINER Cluster
  616.         -- The theory behind these classes are in the Eiffel/S Libraries
  617.                 article in Eiffel Outlook Vol. 1, Number 3. In a nutshell,
  618.                 containers are distinquished by three characteristics:
  619.                 unique members, ordered members, keyed members. All containers
  620.                 are accessed via iterators. Here are the class names:
  621.         LIST[G], S_LIST[G->ORDER], SMP_TBL[K,G], H_TABLE[K->HASHKEY,G],
  622.         S_TABLE[K->ORDER,G], STACK[G], QUEUE[G], PRQUEUE[G->ORDER],
  623.         KPR_QUEUE[k->ORDER,G], COLCTN[G]*, TABLE[K,G]*, SRT_CLN[G->ORDER]*,
  624.         SRT_TBL[K->ORDER,G]*, TRAVERS*, TW_TRVRS*, ITERATOR, TW_ITER
  625.  
  626. The GRAPH Cluster
  627.         -- directed or undirected graphs as well as weighted graphs.
  628.         VERTEX[G], EDGE[G], GRAPH[G], WT_GRAPH[G],
  629.         EDG_ITER[G], BF_ITER[G], DF_ITER[G], TOP_ITER[G]
  630.  
  631. The MATCHER Cluster
  632.         -- pattern matching, implemented as a automaton
  633.         MATCHER*, RK_MTCH, KMP_MTCH, BM_MTCH, RE_MTCH, TXT_MTCH
  634.  
  635.  
  636. The asterisks after class names above denote abstract classes. While the class
  637. names are a bit more obscure than in ISE's library, the functionality looks
  638. to be well reasoned out. The documentation is a bit more thorough. It includes
  639. examples of simple usages and hints for adding new containers or matchers.
  640. All in all, a smaller but possibly tighter set of libraries.
  641. ( I believe the wierd class names are due to a limitation on DOS file names. )
  642.  
  643. This response may give the appearance that Eiffel/S libraries are much
  644. more extensive than ISE's. The reverse is true. I'll try to flesh out the
  645. list of ISE's library classes as details of their new Version 3 of Eiffel
  646. become available. The latest quoted date from ISE is that version 3 will be
  647. available sometime in the first quarter of 1992.
  648.  
  649. **************************************************************************
  650.  
  651. Robert (Rock) Howard                            Ph:   512/328-6406
  652. Rock Solid Software                FAX:  512/328-0466
  653. P.O.Box 163072                                  Email: howard@ses.com
  654. Austin, TX, USA 78716                           or ...!uunet!sessun!howard
  655.     Let us help you make a fully-informed decision about Eiffel.
  656.  
  657.  
  658.  
  659.  
  660. -- 
  661.  
  662. *------------------------------------------------------------------------------*
  663. Jim McKim  (203)-548-2458     In exactly 3.2 seconds it will be a few 
  664. Internet:  jcm@hgc.edu   minutes to 5:00.
  665.