home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / answers / eiffel-faq < prev    next >
Text File  |  1993-12-23  |  46KB  |  1,101 lines

  1. Newsgroups: comp.lang.eiffel,comp.answers,news.answers
  2. From: rogerb@eiffel.demon.co.uk (Roger Browne)
  3. Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!nic.hookup.net!europa.eng.gtefsd.com!uunet!pipex!uknet!demon!eiffel.demon.co.uk!rogerb
  4. Subject: comp.lang.eiffel Frequently Asked Questions (FAQ)
  5. Organization: Everything Eiffel
  6. Reply-To: rogerb@eiffel.demon.co.uk
  7. X-Newsreader: Demon Internet Simple News v1.26
  8. Lines: 1090
  9. Followup-To: comp.lang.eiffel
  10. Expires: +1 month
  11. Approved: news-answers-request@MIT.Edu
  12. Summary: Eiffel is a pure object-oriented language designed to promote
  13.          software correctness and re-use.
  14. Date: Thu, 23 Dec 1993 15:29:29 +0000
  15. Message-ID: <756660569snz@eiffel.demon.co.uk>
  16. Sender: usenet@demon.co.uk
  17. Xref: senator-bedfellow.mit.edu comp.lang.eiffel:4469 comp.answers:3128 news.answers:16118
  18.  
  19. Archive-name: eiffel-faq
  20. Last-modified: 23 December 1993
  21.  
  22. EIFFEL: FREQUENTLY ASKED QUESTIONS
  23. ----------------------------------
  24.  
  25. This question-and-answer list is posted monthly to the Usenet newsgroups 
  26. comp.lang.eiffel, comp.answers and news.answers.
  27.  
  28. Please send corrections, additions and comments to Roger Browne 
  29. (rogerb@eiffel.demon.co.uk).
  30.  
  31. This information is abstracted and condensed from the posts of many 
  32. contributors to comp.lang.eiffel, supplemented by information from vendors. 
  33. No guarantees are made regarding its accuracy.
  34.  
  35. You can receive the latest copy by anonymous file transfer from:
  36.  
  37.    ftp.cm.cf.ac.uk  /pub/eiffel/eiffel-faq
  38.    rtfm.mit.edu     pub/usenet/news.answers/eiffel.faq
  39.  
  40. or by sending an email message to archive-server@cm.cf.ac.uk with the 
  41. following message body:
  42.  
  43.    send Eiffel eiffel-faq
  44.  
  45. ----------
  46.  
  47. CONTENTS
  48.  
  49. Changes since the last posting:
  50.  
  51.    Q02: Added birth date for Eiffel
  52.    Q03: TowerEiffel now available
  53.    Q04: Student license also available from TowerEiffel
  54.    Q05: Shareware interpreter for a subset of Eiffel 2.3 on Atari ST
  55.    Q09: TowerEiffel available under SunOS and Solaris
  56.    Q16: Various address and phone number changes for suppliers
  57.    Q17: Date for TOOLS USA '94 conference
  58.  
  59.    Thanks to Jan Sandquist and Laurent Bloch for their input.
  60.  
  61. Frequently Asked Questions:
  62.  
  63.    Q01) What is Eiffel?
  64.    Q02) Where did Eiffel come from?
  65.    Q03) What Eiffel products are available?
  66.    Q04) Are there any school or student discounts?
  67.    Q05) Is Eiffel available in the public domain?
  68.    Q06) What is Sather? How does it compare to Eiffel?
  69.    Q07) What books are available for learning about Eiffel?
  70.    Q08) Are any magazines or newsletters available concerning Eiffel?
  71.    Q09) Is Eiffel available on PC, Mac, NeXT, Amiga, Atari, ...?
  72.    Q10) Is there an archive of the comp.lang.eiffel newsgroup?
  73.    Q11) How much memory and disk space does Eiffel development require?
  74.    Q12) How large are typical Eiffel executables?
  75.    Q13) Are there standards for the Eiffel language?
  76.    Q14) Is it true that Eiffel is too slow?
  77.    Q15) Are there any Eiffel user groups?
  78.    Q16) Where can I get Eiffel products and services?
  79.    Q17) Are there any conferences for Eiffel users?
  80.    Q18) Why do Eiffel implementations compile to C?
  81.    Q19) What is BON?
  82.  
  83. Language Issues:
  84.  
  85.    L01) What features does Eiffel have?
  86.    L02) What changes have been made to the Eiffel language definition?
  87.    L03) What libraries come with Eiffel?
  88.    L04) What's the big deal about preconditions and postconditions?
  89.    L05) Please explain and discuss covariance vs. contravariance.
  90.    L06) Is it true that there are "holes" in the Eiffel type system?
  91.    L07) Is there support for concurrency in Eiffel?
  92.  
  93. ----------
  94.  
  95. Q01)   What is Eiffel?
  96.  
  97. Eiffel is an advanced object-oriented programming language that emphasizes 
  98. the design and construction of high-quality and reusable software.
  99.  
  100. Eiffel is a complete language definition unto itself. It is not a superset 
  101. or extension of any other language. Eiffel strongly encourages object-
  102. oriented programming and does not allow dangerous practices from previous 
  103. generation languages although it does interface to other languages, 
  104. particularly C. Eiffel supports the concept of "Design by Contract" to 
  105. improve software correctness.
  106.  
  107. Eiffel is also an excellent vehicle for software education, including for a 
  108. first programming course.
  109.  
  110. Eiffel is typically implemented by compilation to C, ensuring wide 
  111. portability. Eiffel compilers generally can generate stand-alone C packages 
  112. including makefiles to aid in porting finished applications.
  113.  
  114. ----------
  115.  
  116. Q02)   Where did Eiffel come from?
  117.  
  118. Eiffel was created by Bertrand Meyer and developed by his company, 
  119. Interactive Software Engineering (ISE) of Goleta, CA.
  120.  
  121. Dr. Meyer borrowed on his extensive experience with OOP, particularly with 
  122. Simula. He also added in important concepts from his academic work on 
  123. software verification and computer language definition.
  124.  
  125. Eiffel's design addresses many practical concerns that software engineers 
  126. face when creating complex software. Eiffel has evolved continually since 
  127. its conception on September 14, 1985 and its first introduction in 1986.
  128.  
  129. ----------
  130.  
  131. Q03)   What Eiffel products are available?
  132.  
  133. ISE Eiffel 3 is a commercially supported product available from Interactive 
  134. Software Engineering.
  135.  
  136. ISE Eiffel 3 is a complete graphical development environment meant for the 
  137. production of quality software, with particular attention being given to 
  138. the development of large systems. The environment itself is written in 
  139. Eiffel, and is an example of non-trivial system - about 3000 classes.
  140.  
  141. A version of Eiffel called Eiffel/S is produced by SiG Computer GmbH of 
  142. Germany. It is based on the Eiffel 3 language definition.
  143.  
  144. Eiffel/S Version 3, release 1.21 includes:
  145.    - command-line compiler with automatic configuration management
  146.    - libraries
  147.    - manual
  148.    - book "Eiffel: The Language" by Dr Meyer.
  149.  
  150. Tower Technology Corporation of Austin, TX produce TowerEiffel. It 
  151. includes:
  152.    - compiler
  153.    - many programming tools
  154.    - an emacs-based integrated programming environment
  155.    - Eiffel 3 kernel and support libraries
  156.  
  157. In addition, there are at least three other Eiffel compiler development 
  158. projects underway. One may release a commercial version of Eiffel 3 in the 
  159. very near future. Availability of high value Eiffel implementations will 
  160. soon be excellent.
  161.  
  162. There is also work going on to create business application development 
  163. environments based on Eiffel, Eiffel CASE-style tools, an Eiffel-based 
  164. OODB. Soon the most telling need will be for more high quality commercial 
  165. Eiffel libraries.
  166.  
  167. ----------
  168.  
  169. Q04)   Are their any school or student discounts?
  170.  
  171. Both ISE Eiffel and SIG Eiffel/S include aggressive site-licensing and 
  172. discount licenses for schools and universities.
  173.  
  174. Eiffel/S offers an inexpensive student or trial license. This license is 
  175. limited to building systems with up to 75 classes. You do not have to be a 
  176. student to buy it, and you get a discount if you subsequently upgrade to 
  177. the full version.
  178.  
  179. ISE is also selling student licenses on their lower cost platforms.
  180.  
  181. TowerEiffel offers a much reduced price for a student license.
  182.  
  183. ----------
  184.  
  185. Q05)   Is Eiffel available in the public domain?
  186.  
  187. There is not currently a public domain Eiffel compiler. ISE has expressed 
  188. willingness to support the serious efforts of those who wish to create a PD 
  189. Eiffel, but so far no such effort has succeeded.
  190.  
  191. There is, however, a somewhat limited Eiffel 2.3 interpreter for the Atari 
  192. ST which is shareware (DM50). The documentation is in German, and the 
  193. example files seem quite interesting. Inheritance does not seem to be 
  194. supported (!), but there is an interesting extension to allow "for all" and 
  195. "for some" in assertions.
  196.  
  197. The following Eiffel archive sites allow anonymous file transfer:
  198.  
  199. ftp.tu-clausthal.de
  200. pub/atari/languages/eiffel/vici_102.lzh
  201.    The Atari ST interpreter.
  202.  
  203. ftp.cm.cf.ac.uk
  204. /pub/eiffel
  205.    University of Wales. Contains the latest version of this FAQ, plus the 
  206.    front-end parser (ep) and various public domain classes. To contribute, 
  207.    contact Ted Lawson (ted@cm.cf.ac.uk).
  208.  
  209. ftp.fu-berlin.de
  210. /pub/heron/ep.tar.Z
  211.    There is an Eiffel front-end parser (HERON) in the public domain, 
  212.    created by Burghardt Groeber and Olaf Langmack of the Freie Universitat 
  213.    in Berlin. Olaf has announced that the Freie Universitat has agreed to 
  214.    join the NICE consortium and keep the front-end parser in sync with the 
  215.    Eiffel language definition as it evolves.
  216.  
  217. ftp.informatik.uni-stuttgart.de
  218. /pub/eiffel
  219.    Falkultaet Informatik der Universitaet Stuttgart, Germany. Contains a 
  220.    compiler generator, several encapsulations, a pretty-printer for 
  221.    Eiffel/S, and some utility classes. To contribute, contact Joerg Schulz 
  222.    (schulz@adam.informatik.uni-stuttgart.de).
  223.  
  224. utarlg.uta.edu
  225. CSE/EIFFEL
  226.    UT-Arlington, USA. Contains some code from Eiffel Outlook back issues.
  227.  
  228. wuarchive.wustl.edu
  229. /graphics/gif/e/eiffel_tower
  230.    Contains a GIF graphic of the eiffel tower
  231.    (also on plaza.aarnet.edu.au from Australia only).
  232.  
  233. ----------
  234.  
  235. Q06)   What is Sather? How does it compare to Eiffel?
  236.  
  237. Sather is an object-oriented language, originally patterned after Eiffel, 
  238. created by Stephen Omohundro and others at ICSI of Berkeley, CA.
  239.  
  240. Sather simplifies some Eiffel constructs, eliminates others, and adds some 
  241. powerful constructs of its own such as iteration abstraction, built-in 
  242. arrays, overloading, object constants and programmer specified dynamic 
  243. dispatching.
  244.  
  245. Sather is available for free, under a very unrestrictive license. The 
  246. documentation for Sather, and the ICSI implementation of it, are available 
  247. by anonymous file transfer from the following sites:
  248.  
  249.    ftp.ICSI.Berkeley.edu   /pub/sather
  250.    ftp.gmd.de              /pub/Sather
  251.    sra.co.jp               /pub/lang/sather
  252.    lynx.csis.dit.csiro.au  /pub/sather
  253.  
  254. See the usenet newsgroup comp.lang.sather for more details.
  255.  
  256. ----------
  257.  
  258. Q07)   What books are available for learning about Eiffel?
  259.  
  260. The classic text for learning about Eiffel (as well as Object-Oriented 
  261. programming in general) is Dr. Meyer's "Object Oriented Software 
  262. Construction". Although the language has evolved significantly since the 
  263. book's date of publication, the presentation of the basic problems and 
  264. solutions which motivate the object-oriented mind set are still quite 
  265. compelling. This is the book to get if you are new to the object-oriented 
  266. world as well as to Eiffel. (Prentice Hall, ISBN 13-629031-0)
  267.  
  268. Also by Dr. Meyer, "Eiffel: The Language", combines an introduction to 
  269. Eiffel, the language reference, and a good deal of philosophy into its 600 
  270. pages. This is the state of the art in OO thinking, but is a rigorous and 
  271. comprehensive book which some readers may find heavy going despite Dr. 
  272. Meyer's clarity of expression. It is, however, the definitive language 
  273. reference, and essential reading for all serious Eiffel users. This book is 
  274. now in its second _printing_ (same ISBN), with some minor corrections and 
  275. clarifications (this is not a second _edition_, and none is currently 
  276. underway). (Prentice Hall, ISBN 13-247925-7)
  277.  
  278. Dr. Meyer and Jean-Marc Nerson have edited a new book about Eiffel called 
  279. "Object-Oriented Applications". It includes an introduction to Eiffel 
  280. technology followed by seven in-depth descriptions of large applications 
  281. written in Eiffel. (Prentice Hall, ISBN 13-013798-7)
  282.  
  283. Robert Switzer, from Gottingen University in Germany, has written "Eiffel: 
  284. An Introduction". This is a very clear and concise primer for those wishing 
  285. to learn Eiffel, with many code fragments, and two substantial Eiffel 
  286. applications. (Prentice Hall, ISBN 13-105909-2)
  287.  
  288. ISE distributes a set of 6 video lectures (about one hour each) entitled 
  289. "Object-Oriented Software Construction", taught by Bertrand Meyer. These 
  290. provide an overall introduction to the method and use ISE Eiffel 3 to 
  291. illustrate the concepts.
  292.  
  293. ----------
  294.  
  295. Q08)   Are any magazines or newsletters available concerning Eiffel?
  296.  
  297. Eiffel Outlook is a bi-monthly newsletter devoted to Eiffel and Sather. It 
  298. is 24 pages long and focuses mainly on practical and technical issues
  299. involved in using these languages. Contact Tower Technology Corporation for 
  300. more information. Trial subscriptions and back issues are available.
  301.  
  302. Eiffel Outlook is distributed by:
  303.  
  304.    Jay-Kell in Canada
  305.    SIG Computer in Germany
  306.    Everything Eiffel in the United Kingdom
  307.    IMSL in Japan
  308.    Enea Data in Sweden
  309.    Class Technology in Australia
  310.    Tower Technology in the USA and for all other countries
  311.  
  312. Eiffel Post is a four page newsletter for customers of SiG Computer, the 
  313. makers of Eiffel/S. Contact SiG Computer for more information.
  314.  
  315. The Eiffel Interest Group of the UK and Ireland also publishes an excellent 
  316. newsletter for its members.
  317.  
  318. NICE has produced a four-page glossy flyer "Eiffel Success Stories", 
  319. intended to be the first of a series.
  320.  
  321. ISE produces an 8-page newsletter "Eiffel World" which will appear four 
  322. times a year.
  323.  
  324. ----------
  325.  
  326. Q09)   Is Eiffel available on PC, Mac, NeXT, Amiga, Atari, ...?
  327.  
  328. This is the latest information that I have, but it does change rapidly.
  329.  
  330. SIG Eiffel/S 1.21 is available for DOS on the PC. As at June 1993, the 
  331. following C compilers are supported: Microsoft C 7.0, Borland C++ 3.1, Gnu 
  332. 2.2.2 (with DJ Expander), Gnu 2.2.2 (with 0.8e EMX expander), Zortech 3.0, 
  333. Watcom 9.0A (not 9.0) and 9.5 Beta. SIG uses Zortech 3.0 in-house. It works 
  334. best with a 32-bit compiler, e.g. Gnu, Zortech, Watcom.
  335.  
  336. Eiffel/S 1.21 is also available for OS/2 on the PC, and for the following 
  337. Unix systems: PC Unix (Interactive, SCO, and ESIX), Sun SPARC, NeXT, 
  338. HP/9000, DEC 5xxx, Sony News and RS/6000.
  339.  
  340. ISE's Eiffel 3 is available for IBM RISC 6000, Sparc (SunOS 4.1.X), Silicon 
  341. Graphics, Fujitsu, Data General Avion, HP/UX, and SCO Open Desktop. It is 
  342. expected within the next few weeks for Pyramid and other 88open-conformant 
  343. platforms, and MIPS. Development is said to be well-advanced for NeXTSTEP, 
  344. VMS, AIX (PS/2), Apple A/UX, Solaris 2 and several other Unix platforms.
  345.  
  346. Tower Corporation's TowerEiffel is available on Sun SPARC or compatible 
  347. running SunOS 4.1.2 or 4.1.3, with gcc 2.2.2, gcc 2.4.5 or Sun's acc 2.0.1 
  348. C compiler; also running Solaris 2.1 with gcc 2.4.5
  349.  
  350. Future ports of TowerEiffel are planned for AIX, IRIX, HPUX, DG/UX, 
  351. NextStep, Windows NT, OS/2, VMS and various Intel-based Unix systems.
  352.  
  353. ----------
  354.  
  355. Q10)   Is there an archive of the comp.lang.eiffel newsgroup?
  356.  
  357. An archive of the newsgroup is available on gatekeeper.dec.com. The DEC 
  358. Western Research Lab hosts it. This archive does not contain articles after 
  359. September 1992.
  360.  
  361. The files are in /pub/plan/eiffel/usenet/USENET-xx-yyy, where `xx' 
  362. represents the last two digits of the year and `yyy' the month of posting, 
  363. e.g., /pub/plan/eiffel/usenet/USENET-91-AUG. Compressed versions of the 
  364. files are also available.
  365.  
  366. >From IP (either inside DEC or outside DEC):
  367.    anonymous FTP to gatekeeper.dec.com (16.1.0.2)
  368.    cd pub/plan/eiffel/usenet
  369.    get USENET-xx-yyy
  370.    (or to get the compressed copy, bin, get USENET-xx-yyy.Z)
  371.  
  372. >From a UUCP neighbor of decwrl:
  373.    "uucp decwrl!~/pub/plan/eiffel/usenet/USENET-xx-yyy.Z"
  374.  
  375. >From the DEC Easynet:
  376.    DECWRL::"/pub/plan/eiffel/usenet/USENET-xx-yyy"
  377.  
  378. USENET-88-DEC and USENET-88-DEC.Z are the oldest entries in the archives.
  379.  
  380. There is also an archive of comp.lang.eiffel at wuarchive.wustl.edu (login 
  381. as anonymous, send e-mail address as password). The files are in 
  382. /usenet/comp.lang.eiffel and subdirectories. Each message is in a separate 
  383. file, so it's not as convenient as the DEC archive, but it's more up-to-
  384. date.
  385.  
  386. ----------
  387.  
  388. Q11)   How much memory and disk space does Eiffel development require?
  389.  
  390. A lot. For ISE Eiffel, 10 MB just to install the basic tools and library 
  391. source. Once you start compiling those libraries it will be 20-25 MB. I'd 
  392. recommend 40 MB for a minimum development environment.
  393.  
  394. To install Eiffel/S, you need about 5MB disk space. To run it you need at 
  395. least 4MB RAM, and at least 10MB available disk space, but a heavy user 
  396. would want twice that or more.
  397.  
  398. ----------
  399.  
  400. Q12)   How large are typical Eiffel executables?
  401.  
  402. (How large are typical C executables?)
  403.  
  404. Seriously, Eiffel does impose a minimum size which is large since even 
  405. trivial Eiffel applications bring in a lot of classes and current Eiffel 
  406. implementations are not that hot at optimizing for space or time. 
  407. Interestingly, as applications grow Eiffel applications seem to grow less 
  408. rapidly as new capabilities are added. Reuse does help out tremendously in 
  409. this regard. A good Eiffel compiler should eventually allow large 
  410. applications to be smaller than equally functional applications written in 
  411. C.
  412.  
  413. Note that leaving assertion checking in the code increases the size of 
  414. applications a lot. Despite this, many of us prefer that they remain 
  415. throughout development. Some even deliver a PRECONDITIONS-only version of 
  416. their applications to their early customers.
  417.  
  418. ----------
  419.  
  420. Q13)   Are there standards for the Eiffel language?
  421.  
  422. The definition of the Eiffel language is in the public domain. This 
  423. definition is controlled by NICE, the Non-profit International Consortium 
  424. for Eiffel. This means that anyone or any company may create a compiler, 
  425. interpreter, or whatever having to do with Eiffel. NICE reserves the right 
  426. to validate that any such tool conforms to the current definition of the 
  427. Eiffel language before it can be distributed with the Eiffel trademark. 
  428. (i.e. advertised as an "Eiffel" compiler.)
  429.  
  430. The Eiffel trademark is owned and controlled by NICE. NICE is using Dr. 
  431. Meyer's latest book, "Eiffel: The Language", as the initial definition of 
  432. the language.
  433.  
  434. The NICE board of directors consists of Bertrand Meyer, Darcy Harrison, 
  435. Frieder Monninger, Peter Williams and Rock Howard (chairman).
  436.  
  437. NICE has formed the Eiffel Standards Group (ESG) to resolve standards 
  438. questions and control the evolution of the language. The three current 
  439. Eiffel Compiler Vendors (ISE, SIG and Tower) are represented in the ESG as 
  440. well as many important and influential users of Eiffel.
  441.  
  442. There are three committees -- Language, Library, and Future Directions.
  443.  
  444. The Language Committee will address the ambiguities in the Eiffel Version 3 
  445. language specification as well as the differences that appear between the 
  446. current Eiffel 3 implementations.
  447.  
  448. The Library Committee will standardize the Kernel library, then consider 
  449. interface standards for the data structures cluster and other key Eiffel 
  450. clusters.
  451.  
  452. The Future Requirements Committee will prioritize the long range direction 
  453. of the standards work performed by the other two committees.
  454.  
  455. The NICE Interoperability Program (NIP) tracks the reporting and resolution 
  456. of interoperability problems. If you are aware of a problem whereby correct 
  457. Eiffel code will not run under a particular implementation, or where 
  458. correct Eiffel code produces different results under different 
  459. implementations, you are invited to report this by email to 
  460. nice-nip@atlanta.twr.com
  461.  
  462. NICE (Nonprofit International Consortium for Eiffel)
  463. 2701 Stratford Drive
  464. Austin, TX 78746
  465. TEL: (512) 328 6406
  466. FAX: (512) 328 0466
  467. email: nice@twr.com
  468.  
  469. ----------
  470.  
  471. Q14)   Is it true that Eiffel is too slow?
  472.  
  473. Early versions of Eiffel were slow, and the generated code was bulky. 
  474. Recent implementations have improved dramatically. However, to achieve 
  475. maximum performance under any Eiffel implementation, run-time assertion 
  476. monitoring must be disabled.
  477.  
  478. In theory, there is nothing about Eiffel that should cause Eiffel 
  479. applications to be larger or slower than C++. Future Eiffel compilers can 
  480. be expected to further improve run time efficiency.
  481.  
  482. ----------
  483.  
  484. Q15)   Are there any Eiffel user groups?
  485.  
  486. International Eiffel                    UK and Ireland Eiffel Interest
  487.   User Group (IEUG)                       Group
  488. Darcy Harrison                          Caroline Browne
  489. Attention: IEUG                         Applied Logic Developments
  490. ISE Inc.                                9 Princeton Court
  491. 270 Storke Road, Suite 7                55 Felsham Road
  492. Goleta, CA 93117, USA                   London SW15 1AZ
  493. TEL (805) 685-1006                      TEL 081 780 1088
  494. FAX (805) 685-6869                      FAX 081 780 1941
  495. email darcyh@eiffel.com
  496.  
  497. The UK and Ireland Eiffel Interest Group (EIG) has a quarterly meeting, 
  498. usually with a technical topic and guest speaker, and publishes a quarterly 
  499. newsletter.
  500.  
  501. ----------
  502.  
  503. Q16)   Where can I get Eiffel products and services?
  504.  
  505. Interactive Software Engineering, Inc.  Jay-Kell Technologies, Inc.
  506. 270 Storke Road, Suite 7                48 Lakeshore Road, Suite #1
  507. Goleta, CA 93117                        Pointe Claire, Quebec
  508. TEL 805-685-1006                        Canada H9S 4H4
  509. FAX 805-685-6869                        TEL +51 4 630 1005
  510.                                         FAX +51 4 630 1456
  511.  
  512. SiG Computer GmbH                       Tower Technology Corporation
  513. zu den Bettern 4                        1501 Koenig Lane
  514. D 35619 Braunfels                       Austin, TX 78756 USA
  515. Germany                                 TEL 512-452-9455
  516. TEL +49 6472 2096                       FAX 512-452-1721
  517. FAX +49 6472 7213                       email: tower@twr.com
  518. email eiffel@sigcomp.sub.org
  519.  
  520. Class Technology Pty. Ltd.              Ease Pty. Ltd.
  521. 6 Pound Road                            4 Edinburgh Avenue
  522. Hornsby NSW 2077                        Carlingford NSW 2118
  523. Australia                               Australia
  524. TEL +61 2 477 6188                      TEL +61 2 683 6930
  525. FAX +61 2 476 4378                      FAX +61 2 630 8717
  526. email class@peg.pegasus.oz.au
  527.  
  528. Everything Eiffel                       Applied Logic Group
  529. 6 Bambers Walk                          9 Princeton Court
  530. Wesham PR4 3DG                          55 Felsham Road
  531. England                                 London SW15 1AZ
  532. TEL +44 772 687525                      England
  533. email rogerb@eiffel.demon.co.uk         TEL +44 81 780 1988
  534.                                         FAX +44 81 780 1941
  535.  
  536. EtnoTeam                                SOL
  537. Via Adelaide Bono Cairoli 34            104 rue Castagnary
  538. 20217 Milano                            75015 Paris
  539. Italy                                   France
  540. TEL +39 2 261621                        TEL +33 1 45 32 58 80
  541. FAX +39 2 26110755                      FAX +33 1 44 32 58 81
  542.  
  543. Unirel                                  Sritech Information Technology
  544. Centro Comerciale Osmanoro              744/51 2nd Floor
  545. Via Volturno, 12                        10 Mian Road, 4th Block
  546. 50019 Sesto Fiorentino (FL)             Jayanagar, Bangalore
  547. Italy                                   India 560011
  548. TEL +39 55 373043                       TEL +91 812 640661
  549. FAX +39 55 318525                       FAX +91 812 643608
  550.  
  551. Cromasoft                               Objective Methods Ltd
  552. Mazatlan 101                            PO Box 17356
  553. Col Condesa                             77 Chamberlain Rd
  554. 06140 Mexico                            Karori, Wellington
  555. TEL +52 5 286 82 13                     New Zealand
  556. FAX +52 5 553 12 01                     TEL +64 4 476 9499
  557.                                         FAX +64 4 476 9237 or 8772
  558.                                         email dkenny@swell.actrix.gen.nz
  559.  
  560. Seinca                                  Enea Data
  561. C/Jorge Juan, 19 - #4                   Box 232
  562. 28001 Madrid                            Nytorpsvagen 5
  563. Spain                                   S-183 23 Taby
  564. TEL +34 1 577 99 95                     Sweden
  565. FAX +34 1 577 49 81                     TEL +46 8 792 25 00
  566.                                         FAX +46 8 768 43 88
  567.                                         email kim@enea.se
  568.  
  569. Cybertech                               Forefront Computer Services
  570. Systens Integration for CIM               Pty. Ltd.
  571. Suarez 1281, Third Floor,Apt.A          115 Seaford Road
  572. CP-1288 Buenos Aires                    Seaford, Victoria 3198
  573. Argentina                               Australia
  574. TEL +54 1 28 1950                       TEL +61 3 785 1122
  575. FAX +54 1 322 1071 or +54 1 963 0070    FAX +61 3 770 0961
  576.  
  577. Science Data Systems                    Software Research Associates
  578. Sarphatistraat, 133                     1-1-1 Hirakawo-Cho
  579. 1018 GC Amsterdam                       Chiyoda-ku Tokyo 102
  580. The Netherlands                         Japan
  581. FAX +31 20 6315444                      TEL +81 3 3234 2623
  582.                                         FAX +81 3 3234 4338
  583.  
  584. Information and Mathematical Science    Simon Parker
  585.   Laboratory, Inc.                      45 Hazelwood
  586. 2-43-1, Ikebukuro, Toshima-ku           Shankill
  587. Tokyo 171, Japan                        Co Dublin
  588. email fushimi@idas.imslab.co.jp         Ireland
  589. TEL +81 3 3590 5211                     TEL +353 1 282 3487
  590. FAX +81 3 3590 5353                     email sparker@chl.ie
  591.  
  592. Objectif Concept                        SOOPS
  593. Passage Cour-Robert 5                   Sarphatistraat 133
  594. CH 1700 Fribourg                        NL-1018 GC Amsterdam
  595. Switzerland                             The Netherlands
  596. TEL (41) 37-232977                      TEL (31) 205 256 644
  597. FAX (41) 37-464889
  598.  
  599. ----------
  600.  
  601. Q17)   Are there any conferences for Eiffel users?
  602.  
  603. The conferences listed here are not just for Eiffel. Eiffel shares the 
  604. spotlight with other object-oriented languages including C++ and Smalltalk.
  605.  
  606. Mar 7 - 11, 1994
  607.    TOOLS EUROPE '94, Versailles, France
  608.  
  609. Mar 10 - 11, 1994
  610.    "Eiffel In Action" (part of TOOLS conference)
  611.  
  612. Aug 1 - 5, 1994
  613.    TOOLS USA '94, Santa Barbara, California
  614.    Deadline for papers: 18 March
  615.  
  616. TOOLS is the major international conference devoted to the applications of 
  617. Object-Oriented technology. Other events, such as Eiffel User Group 
  618. meetings or NICE meetings are often held in conjunction with TOOLS.
  619.  
  620. TOOLS Conferences
  621. PO Box 6863, Santa Barbara, CA 93160, USA
  622. TEL (805) 685 1006, FAX (805) 685 6869
  623. email tools@tools.com
  624.  
  625. ----------
  626.  
  627. Q18)   Why do Eiffel implementations compile to C?
  628.  
  629. (Although current Eiffel implementations compile to C, native code 
  630. compilers may become available in the future.)
  631.  
  632. By using C as a target language, an Eiffel implementor can:
  633.  
  634. -  bring Eiffel to the marketplace faster and at lower cost
  635. -  port their implementation more easily to other platforms
  636. -  take advantage of optimisation provided by the C compiler
  637.  
  638. Much of the technology that makes Eiffel relatively simple to use also 
  639. makes it more difficult to implement (an Eiffel-to-C compiler is perhaps 4 
  640. to 5 times more difficult to create than a native Pascal compiler).
  641.  
  642. Compiling Eiffel to C seems to work well under Unix. C is sometimes thought 
  643. of as the native code of Unix.
  644.  
  645. On the other hand, C is not universal on other platforms, and the Eiffel 
  646. purchaser may need to buy a C compiler as well, and possibly replace it if 
  647. the supported C compilers change with new versions of the Eiffel compiler.
  648.  
  649. With a native-code compiler, you'd get somewhat better throughput and the 
  650. potential for smaller executables and slightly better performance. You'd 
  651. also get a higher price and an even longer wait for Eiffel to show up on 
  652. other than the leading market share machines.
  653.  
  654. ----------
  655.  
  656. Q19)   What is BON?
  657.  
  658. BON ("Business Object Notation") is a method for high-level analysis and 
  659. design, offering a seamless transition to an Eiffel implementation. The 
  660. method emphasizes Design by Contract and systematic development. For more 
  661. information on BON, see the Communications of the ACM, September 1992.
  662.  
  663. ----------
  664.  
  665. L01)   What features does Eiffel have?
  666.  
  667. Eiffel is a pure object-oriented language. Its modularity is based on 
  668. classes. It stresses reliability, and facilitates design by contract. It 
  669. brings design and programming closer together. It encourages the re-use of 
  670. software components.
  671.  
  672. Eiffel offers classes, multiple inheritance, polymorphism, static typing 
  673. and dynamic binding, genericity (constrained and unconstrained), a 
  674. disciplined exception mechanism, systematic use of assertions to promote 
  675. programming by contract, and deferred classes for high-level design and 
  676. analysis.
  677.  
  678. Eiffel has an elegant design and programming style, and is easy to learn.
  679.  
  680. ----------
  681.  
  682. L02)   What changes have been made to the Eiffel language definition?
  683.  
  684. Eiffel is still a relatively new language, and there have been a number of 
  685. changes to its definition. Here is a summary of the major changes:
  686.  
  687. 1. Changes between the publication of "Object-Oriented Software 
  688.    Construction" in 1988, and the release of Eiffel 2.3:
  689.  
  690.    - Constrained genericity enables a generic class to restrict its
  691.      generic parameters to the descendants of a given class
  692.  
  693.    - The indexing clause allows information about a class to be
  694.      recorded for extraction by archival, browsing and query tools
  695.  
  696.    - The assignment attempt operator "?=" provides a way to make
  697.      type-safe assignments going against the inheritance hierarchy
  698.  
  699.    - User-defined infix and prefix operator features
  700.  
  701.    - Expanded types support composite objects without dynamic
  702.      allocation, and with value semantics
  703.  
  704.    - The obsolete clause for smooth library evolution
  705.  
  706.    - The unique keyword for implicitly-assigned integer codes
  707.  
  708.    - The multi-branch instruction (similar to a case statement)
  709.  
  710.    - The boolean operator for implication ("implies")
  711.  
  712. 2. Changes with the introduction of Eiffel Version 3:
  713.  
  714.    - The feature adaptation subclause must now be terminated with "end"
  715.  
  716.    - Semicolons as instruction separators are optional
  717.  
  718.    - Groups of features are bracketed by a feature clause. All features
  719.      are exported unless the feature clause specifies a restriction.
  720.      The repeat subclause is no longer needed, because inherited
  721.      features keep the original export status they had in the parent
  722.      unless they are redefined, or are the subject of an export
  723.      subclause in the feature adaptation clause.
  724.  
  725.    - Preconditions can only be replaced by weaker ones, postconditions
  726.      can only be replaced by stronger ones. This is now enforced by the
  727.      language through the use of "require else" in preconditions and
  728.      "ensure then" in postconditions.
  729.  
  730.    - Ambiguities in repeated inheritance are resolved by a select
  731.      clause.
  732.  
  733.    - A feature can no longer be replicated and redefined in the same
  734.      feature adaptation clause, however the same effect can be achieved
  735.      through repeated inheritance
  736.  
  737.    - Two or more features may be defined at the same time (e.g. "f1, f2
  738.      is...").
  739.  
  740.    - The keyword "frozen" before a feature name prohibits redefinition
  741.      of the feature in descendants
  742.  
  743.    - In an anchored declaration, the anchor may now also be a formal
  744.      argument of the enclosing routine
  745.  
  746.    - A class may have zero, one or more creation procedures, designated
  747.      with the "creation" keyword. A new creation syntax using the "!!"
  748.      symbol allows the appropriate creation procedure to be specified.
  749.      It is also possible to directly create an object of any type which
  750.      conforms to the entity to which it is being attached.
  751.  
  752.    - The meaning of dot notation has been made more uniform, and
  753.      alternative constructs have been provided for the special
  754.      language-defined features that previously used dot notation:
  755.          x.Create   is now  !! x
  756.          y.Clone(x) is now  y := clone(x)
  757.          x.Forget   is now  x := Void
  758.          x.Void     is now  x = Void
  759.          x.Equal(y) is now  equal(x, y)
  760.  
  761.    - Manifest arrays can be specified, for example
  762.          <<"Jan", "Feb", "Mar">>
  763.      which also provides a way to pass a variable number of arguments
  764.      to a routine.
  765.  
  766.    - The command-line parameters are made available to the creation
  767.      procedure of the root class as an array of strings.
  768.  
  769.    - A default rescue procedure called default_rescue may be defined
  770.      and inherited.
  771.  
  772.    - A class may be declared to be an expanded class, in which case any
  773.      type based on that class will be expanded.
  774.  
  775.    - An object may no longer contain a reference to an expanded object
  776.      that is a sub-object of another object. Instead, upon assignment
  777.      of an expanded object to a non-expanded object, the expanded
  778.      object will be cloned, and a reference to the newly-cloned object
  779.      will be stored in the non-expanded object.
  780.  
  781.    - The operator "div" has been replaced by "//", and the operator
  782.      "mod" has been replaced by "\\".
  783.  
  784. 3. Changes between first and second printings of "Eiffel: The Language"
  785.  
  786.    - New basic types INTEGER_REF, REAL_REF, CHARACTER_REF and
  787.      BOOLEAN_REF etc have been introduced to provide non-expanded basic
  788.      types.
  789.  
  790.    - Introduction of the POINTER type to enable external references to
  791.      be passed around in Eiffel programs.
  792.  
  793.    - Calls from Eiffel to external routines no longer implicitly pass
  794.      the current object as the first parameter.
  795.  
  796. ----------
  797.  
  798. L03)   What libraries come with Eiffel?
  799.  
  800. ISE Eiffel 3:
  801.  
  802. EiffelBase (the basic library) is a library of reusable components covering 
  803. data structures and algorithms. It is the result of long-going systematic 
  804. effort at classifying the fundamental patterns and structures of computer 
  805. science in a Linnaean manner. It relies heavily on the Eiffel method, in 
  806. particular assertions (preconditions, postconditions, class invariants), 
  807. Design by Contract, constrained genericity, and repeated inheritance.
  808.  
  809. EiffelVision (the GUI library) is an encapsulation of essential graphical 
  810. abstractions. It makes it possible to build graphical Eiffel applications 
  811. without having to learn and use the internal details of X, Motif, OpenLook 
  812. or other window systems, as they are all encapsulated in EiffelVision's 
  813. classes in a form that is closer to application-related concepts.
  814.  
  815. EiffelLex provides a set of lexical analysis facilities.
  816.  
  817. EiffelParse (still in a somewhat provisional state) is an object-oriented 
  818. approach to parsing.
  819.  
  820. Other libraries are under development; in particular, third-party
  821. products are being integrated into the EiffelShelf distribution.
  822. (If you are interested in submitting components to the EiffelShelf,
  823. for profit or just for fame, please contact shelf@eiffel.com)
  824.  
  825. SIG Eiffel/S:
  826.  
  827.    The universal classes -- GENERAL, PLATFORM, ANY and NONE
  828.  
  829.    The special classes, some of which are treated specially by the compiler 
  830.    -- COMPARABLE, NUMERIC, HASHABLE, BOOLEAN, CHARACTER, INTEGER, REAL, 
  831.    DOUBLE, ARRAY, BITS n, and STRING
  832.  
  833.    ENVIRONMENT -- provides access to command line arguments and environment 
  834.    variables
  835.  
  836.    BASIC_IO -- access to standard input, standard output and error output 
  837.    serial I/O
  838.  
  839.    FORMAT -- conversion of other data types to and from strings
  840.  
  841.    EXCEPTION -- fine grained access to exception handling
  842.  
  843.    SYSTEM_TIME -- system time interface
  844.  
  845.    INTERNAL -- control of the garbage collector
  846.  
  847.    The FILES cluster: FILE, FILE_SYSTEM, FSYS_DAT -- files are modelled as 
  848.    persistent dynamic arrays
  849.  
  850.    TEXTFILE -- treats an ASCII text file as an array of strings
  851.  
  852.    The SORTER class -- a sorting 'expert' that knows how to sort arrays 
  853.    optimally
  854.  
  855.    The MATH class -- trig, log, truncation, and a few constants
  856.  
  857.    The basic container classes -- classified according to uniqueness (can 
  858.    the same object occur more than once in the container?), ordering (are 
  859.    objects in the container kept in sorted order?) and search access (does 
  860.    one search for a key, or for the object itself?), as well as by 
  861.    efficiency (is speed or size more important?): LIST, SORTED_LIST, 
  862.    SIMPLE_TABLE, HASH_TABLE, SORTED_TABLE, SHORT_LIST, SHORT_TABLE, 
  863.    SHORT_SORTED_LIST and SHORT_SORTED_TABLE
  864.  
  865.    Other container classes -- associative arrays accessed by a hashable 
  866.    key: DICTIONARY (with unique keys) and CATALOG (with multiple items per 
  867.    key)
  868.  
  869.    Specialised container classes -- STACK, QUEUE, PRIORITY_QUEUE and 
  870.    KEY_PRIORITY_QUEUE
  871.  
  872.    Abstract container classes -- define much of the interface of 
  873.    containers: COLLECTION, TABLE, SORTED_COLLECTION and SORT_TABLE.
  874.  
  875.    Iterator classes -- objects stored within containers can be visited 
  876.    sequentially with iterators. More than one iterator can be active on a 
  877.    container at one time: TRAVERSABLE, TWOWAY_TRAVERSABLE, ITERATOR and 
  878.    TWOWAY_ITER.
  879.  
  880.    The GRAPH Cluster -- a graph is defined by the classes VERTEX and EDGE. 
  881.    It may have weighted edges (WT_GRAPH) or unweighted edges (GRAPH). 
  882.    Iterators are provided to visit the edges emanating from a vertex 
  883.    (EDGE_ITER); or all the vertices of a graph in breadth-first order 
  884.    (BREADTH_ITER), depth-first order (DEPTH_ITER) or topological order 
  885.    (TOP_ITER).
  886.  
  887.    The MATCHER Cluster -- the MATCHER class is a pattern matcher that can 
  888.    build and activate an automaton to search for patterns in text. 
  889.    Effective descendants search for text using the Rabin-Karp algorithm 
  890.    (RK_MATCHER), the Knuth-Morris-Pratt algorithm (KMP_MATCHER) and the 
  891.    Boyer-Moore algorithm (BM_MATCHER). Others search for Regular 
  892.    Expressions (RE_MATCHER) and lists of keywords (KEYWORD_MATCHER). 
  893.    TXT_MATCHER is an iterator that searches for multiple occurrences of a 
  894.    pattern in an array of strings, using any of the matcher classes.
  895.  
  896.    The documentation is brief but readable, including examples and hints 
  897.    for adding new containers or matchers. All in all, a smaller but 
  898.    possibly tighter set of libraries.
  899.  
  900. (This response may give the appearance that Eiffel/S libraries are much
  901. more extensive than ISE's, but the converse is true.)
  902.  
  903. ----------
  904.  
  905. L04)   What's the big deal about preconditions and postconditions?
  906.  
  907. The big deal is that it supports programming by contract. For example, 
  908. preconditions (require clauses) are simple boolean statements that are used 
  909. to check that the input arguments are valid and that the object is in a 
  910. reasonable state to do the requested operation. If not, an exception is 
  911. generated. Similarly, postconditions (ensure clauses) make sure that a 
  912. method has successfully performed its duties, thus "fulfilling its 
  913. contract" with the caller. Invariants are boolean expressions that are 
  914. checked every time an object method returns back to a separate object.
  915.  
  916. You can use these ideas in any object-oriented programming language, but 
  917. usually must supply your own assertion mechanisms or rely on programmer 
  918. discipline. In Eiffel, the ideas are integrated into the whole fabric of 
  919. the environment. We find them used by:
  920.  
  921. -- the exception handling mechanism.
  922.    (Tracebacks almost always identify the correct culprit code since 
  923.    preconditions almost always denote an error in the calling method, while 
  924.    postconditions denote an error in the called method.)
  925.  
  926. -- the automatic compilation system.
  927.    (Assertions can be disabled entirely or selectively by type on a per 
  928.    class basis.)
  929.  
  930. -- the Eiffel compiler
  931.    (Invariants, preconditions and postconditions are all inherited in a 
  932.    manner that makes logical sense.)
  933.    (Assertion expressions are not allowed to produce side effects so they 
  934.    can be omitted without effect.)
  935.  
  936. -- the automatic documentation tools
  937.    (Preconditions and postconditions are important statements about what a 
  938.    method does, often effectively describing the "contract" between the 
  939.    caller and callee. Invariants can yield information about legal states 
  940.    an object can have.)
  941.  
  942. In the future we expect to see formal methods technology work its way into 
  943. the assertion capability. This will allow progressively more powerful 
  944. constraints to be put into place. In addition, if a conjecture by Dr. Meyer 
  945. bears fruit, the notion of preconditions may be extended into an important 
  946. mechanism for the development of parallel programming.
  947.  
  948. ----------
  949.  
  950. L05)   Please explain and discuss covariance vs. contravariance.
  951.  
  952. Consider the following situation: we have two classes PARENT and CHILD. 
  953. CHILD inherits from PARENT, and redefines PARENT's feature 'foo'.
  954.  
  955.    class PARENT
  956.       feature
  957.          foo (arg: A) is ...
  958.    end; -- PARENT
  959.  
  960.    class CHILD
  961.       inherit
  962.          PARENT redefine foo
  963.       feature
  964.          foo (arg: B) is ...
  965.     end; -- CHILD
  966.  
  967. The question is: what restrictions are placed on the type of argument to 
  968. 'foo', that is 'A' and 'B'? (If they are the same, there is no problem.)
  969.  
  970. Here are two possibilities:
  971.  
  972.    (1)  B must be a child of A (the covariant rule - so named because in 
  973.         the child class the types of arguments in redefined routines are 
  974.         children of types in the parent's routine, so the inheritance 
  975.         "varies" for both in the same direction)
  976.  
  977.    (2)  B must be a parent of A (the contravariant rule)
  978.  
  979. Eiffel uses the covariant rule.
  980.  
  981. At first, the contravariant rule seems theoretically appealing. Recall that 
  982. polymorphism means that an attribute can hold not only objects of its 
  983. declared type, but also of any descendant (child) type. Dynamic binding 
  984. means that a feature call on an attribute will trigger the corresponding 
  985. feature call for the *actual* type of the object, which may be a descendant 
  986. of the declared type of the attribute. With contravariance, we can assign 
  987. an object of descendant type to an attribute, and all feature calls will 
  988. still work because the descendant can cope with feature arguments at least 
  989. as general as those of the ancestor. In fact, the descendant object is in 
  990. every way also a fully-valid instance of the ancestor object: we are using 
  991. inheritance to implement subtyping.
  992.  
  993. However, in programming real-world applications we frequently need to 
  994. specialize related classes jointly.
  995.  
  996. Here is an example, where PLOT_3D inherits from PLOT, and DATA_SAMPLE_3D 
  997. inherits from DATA_SAMPLE.
  998.  
  999.    class PLOT
  1000.       feature
  1001.          add(arg: DATA_SAMPLE) is ...
  1002.  
  1003.    class PLOT_3D
  1004.       inherit
  1005.          PLOT redefine add
  1006.       feature
  1007.          add(arg: DATA_SAMPLE_3D) is ...
  1008.  
  1009. This requires the covariant rule, and works well in Eiffel.
  1010.  
  1011. It would fail if we were to put a PLOT_3D object into a PLOT attribute and 
  1012. try to add a DATA_SAMPLE to it. It fails because we have used inheritance 
  1013. to implement code re-use rather than subtyping, but have called a feature 
  1014. of the ancestor class on an object of the descendant class as if the 
  1015. descendant object were a true subtype. It is the compiler's job to detect 
  1016. and reject this error, to avoid the possibility of a run-time type error.
  1017.  
  1018. Here's another example where a real-world situation suggests a covariant 
  1019. solution. Herbivores eat plants. Cows are herbivores. Grass is a plant. 
  1020. Cows eat grass but not other plants.
  1021.  
  1022.    class HERBIVORE                               class PLANT
  1023.    feature
  1024.       eat(food: PLANT) is ...
  1025.       diet: LIST[PLANT]
  1026.  
  1027.    class COW                                     class GRASS
  1028.    inherit                                       inherit
  1029.       HERBIVORE                                     PLANT
  1030.          redefine eat
  1031.       end
  1032.    feature eat(food: GRASS) is ...
  1033.  
  1034. This does what we want. The compiler must stop us from putting a COW object 
  1035. into a HERBIVORE attribute and trying to feed it a PLANT, but we shouldn't 
  1036. be trying to do this anyway.
  1037.  
  1038. Also consider the container 'diet'. We are not forced to redefine this 
  1039. feature in descendant classes, because with covariant redefinition of the 
  1040. argument to 'eat', the feature 'diet' can always contain any object that 
  1041. can be eaten (e.g. grass for a cow). (With contravariant redefinition of 
  1042. the argument to 'eat', it would be necessary to re-open the parent class to 
  1043. make the type of the container 'diet' more general).
  1044.  
  1045. To summarise: Real-world problems often lend themselves to covariant 
  1046. solutions. Eiffel handles these well. Incorrect programs in the presence of 
  1047. covariant argument redefinition can cause run-time type errors unless the 
  1048. compiler catches these.
  1049.  
  1050. Sather uses the contravariant rule, but uses separate mechanisms for 
  1051. subtyping and code reuse and only allows dynamic binding on true subtypes. 
  1052. This seems to make contravariance work well, but it can force the Sather 
  1053. programmer to use concrete types when modelling covariant problems. 
  1054. Concrete types cannot be further subtyped in Sather, so this can reduce the 
  1055. potential for re-use (in Eiffel, any type can be further subtyped, but the 
  1056. compiler must check that it is used validly).
  1057.  
  1058. [Eiffel and Sather users are welcome to make suggestions to improve this 
  1059. section. This is one of the most frequently asked questions, and one of the 
  1060. most confusing to newcomers. I would like to make this section simpler and 
  1061. more clear.]
  1062.  
  1063. ----------
  1064.  
  1065. L06)   Is it true that there are "holes" in the Eiffel type system?
  1066.  
  1067. No. The design of Eiffel makes it possible to catch all type errors at 
  1068. compile time, so that an Eiffel program cannot abort with a run time type 
  1069. error.
  1070.  
  1071. However, to catch the more obscure type errors at compile time, the 
  1072. compiler must analyse the way that classes interact within the entire 
  1073. system, rather than just looking at each class one by one. This type of 
  1074. system-wide checking is also necessary for many compiler optimisations.
  1075.  
  1076. Because system-wide compile-time validity checking can be complex, some 
  1077. compilers insert run-time traps for these errors instead, and some may fail 
  1078. to correctly trap these errors. Ask your Eiffel compiler vendor how they 
  1079. handle these type problems.
  1080.  
  1081. ----------
  1082.  
  1083. L07)   Is there support for concurrency in Eiffel?
  1084.  
  1085. Eiffel 3 does not support concurrency; neither do current commercial 
  1086. compilers. However, work on concurrency is one of the hottest Eiffel-
  1087. related research topics.
  1088.  
  1089. For four articles on concurrency facilities for Eiffel, including Bertrand 
  1090. Meyer's article "Systematic Concurrent Object-Oriented Programming", see 
  1091. the September 1993 "Communications of the ACM" (Vol. 36, Number 9).
  1092.  
  1093. ----------
  1094. -- Roger Browne, 6 Bambers Walk, Wesham PR4 3DG, UK.    |  Ph 0772-687525
  1095. -- Everything Eiffel: compilers/libraries/publications  |  +44-772-687525
  1096.  
  1097.  
  1098. -- 
  1099. -- Roger Browne, 6 Bambers Walk, Wesham, PR4 3DG, UK   | Ph 0772-687525
  1100. -- Everything Eiffel: compilers/libraries/publications | +44-772-687525
  1101.