home *** CD-ROM | disk | FTP | other *** search
Text File | 1999-06-05 | 51.3 KB | 1,350 lines |
- Archive-name: eiffel-faq
- Posting-Frequency: approximately monthly
- Last-modified: 09 October 1998
-
- EIFFEL: FREQUENTLY ASKED QUESTIONS
- ----------------------------------
-
- This question-and-answer list is posted monthly to the Usenet
- newsgroups comp.lang.eiffel, comp.answers and news.answers.
-
- Please send corrections, additions and comments to Franck Arnaud
- (franck_arnaud@stratus.com).
-
- This information is abstracted and condensed from the posts of many
- contributors to comp.lang.eiffel, supplemented by information from
- vendors. No guarantees are made regarding its accuracy.
-
- This compilation is by Franck Arnaud. Distribution is unrestricted.
- It builds on the work of the previous maintainers: Rock Howard,
- Roger Browne, Conrad Taylor in chronological order.
-
- You can receive the latest copy by anonymous file transfer from:
-
- ftp://ftp.cm.cf.ac.uk/pub/eiffel/eiffel-faq
- ftp://rtfm.mit.edu/pub/usenet/news.answers/eiffel-faq
-
- or by sending an email message to mail-server@rtfm.mit.edu with this
- message body:
-
- send /pub/usenet/news.answers/eiffel-faq
-
- --------------------
-
- WHAT'S NEW?
-
- Changes since the last posting:
-
- QCOM Visual Eiffel current version is 2.5
- QCOM TowerEiffel moved to historical section
- QCOM SmallEiffel -0.80
- QGRP Rio de la Plata Eiffel Group added
- LPRC Consensus shift on feature objects
-
- --------------------
-
- CONTENTS
-
- Frequently Asked Questions:
-
- QEIF What is Eiffel?
- QORI Where did Eiffel come from?
- QCOM What Eiffel compilers are available?
- QFRE Is Eiffel available for free or as shareware?
- QARC Is there an archive of the comp.lang.eiffel newsgroup?
- QBOK What books are available for learning about Eiffel?
- QWEB Where can I find Eiffel on the World-Wide-Web?
- QEDI Where can I get an Eiffel editor or emacs-mode?
- QBON What is BON?
- QSAT What is Sather? How does it compare to Eiffel?
- QSTD Are there standards for the Eiffel language?
- QTGV How fast do Eiffel applications run?
- QGRP Are there any Eiffel user groups?
- QADR Where can I get Eiffel products and services?
- QCNF Are there any conferences for Eiffel users?
- QECC Why do most Eiffel implementations compile to C?
- QJVM Where can I get an Eiffel to Java compiler?
-
- Language Issues:
-
- LFEA What features does Eiffel have?
- LCHN What changes have been made to the Eiffel language definition?
- LLIB What libraries come with Eiffel?
- LDBC What's the big deal about preconditions and postconditions?
- LCON Please explain and discuss covariance vs. contravariance.
- LCAT Is it true that there are "holes" in the Eiffel type system?
- LTSK Is there support for concurrency in Eiffel?
- LOVL Why doesn't Eiffel allow function overloading?
- LPRC Why are there no procedural types in Eiffel?
- LATR Why are there no class attributes in Eiffel?
- LPAR How can I call the parent-class version of a redefined
- routine?
- LEVC Where can I find a comparison between Eiffel and C++?
- LDES Are there any destructors in Eiffel?
- LDIS How do I implement multiple inheritance efficiently?
- LISA How does the `Iterating several actions' example in ETL work?
-
- --------------------
-
- QEIF: What is Eiffel?
-
- Eiffel is an advanced object-oriented programming language that
- emphasizes the design and construction of high-quality and reusable
- software.
-
- Eiffel is not a superset or extension of any other language. Eiffel
- strongly encourages OO programming and does not allow dangerous
- practices from previous generation languages although it does
- interface to other languages such as C and C++. Eiffel supports the
- concept of "Design by Contract" to improve software correctness.
-
- Beyond the language aspect Eiffel may be viewed as a method of
- software construction. Eiffel is an excellent vehicle for software
- education, including for a first programming course.
-
- --------------------
-
- QORI: Where did Eiffel come from?
-
- Eiffel was created by Bertrand Meyer and developed by his company,
- Interactive Software Engineering (ISE) of Goleta, CA.
-
- Dr. Meyer borrowed on his extensive experience with OOP, particularly
- with Simula. He also added in important concepts from his academic
- work on software verification and computer language definition.
-
- Eiffel's design addresses many practical concerns that software
- engineers face when creating complex software. Eiffel has evolved
- continually since its conception on September 14, 1985 and its first
- introduction in 1986.
-
- Eiffel is named after Gustave Eiffel, the engineer who designed the
- Eiffel Tower.
-
- --------------------
-
- QCOM: What Eiffel compilers are available?
-
- The following Eiffel compilers are currently available and supported
- by their vendors or authors. The list is ordered by date of first
- publication.
-
- In the case of commercial products, the price is not mentioned because
- there can be varying conditions depending on platforms, conditions of
- use (personal vs. professional), etc. Please check with the vendors'
- web-sites for up to date pricing information. As a rule of thumb,
- limited or personal versions of compilers cost from US$ 50 to US$ 200
- while a full-blown compiler for a single-user licence and the right to
- royalty-free distribution varies from US$ 200 to US$ 1500, on
- mainstream platforms.
-
- In the list below, the 'target' entry indicates what code is produced
- by the compiler. Most -- but not all -- compilers produce C code so a
- supported C compiler may be needed.
-
- In the 'platform' entry, an indication of supported platforms is given.
- "Win32" means Windows 95 and Windows NT on Intel x86. No compiler (but
- indirectly Smalleiffel) is available under Windows NT on RISC platforms
- to the best of our knowledge. "Unix" means various Unices, check with
- vendor for the actual list of platforms. Most vendors supporting Unix
- do support Linux on Intel x86.
-
- The 'brief description' sections are abstracted from the vendors' web
- pages.
-
-
- Vendor: Interactive Software Engineering Inc, USA
- Product: ISE Eiffel (current version: 4.2)
- Licensing conditions: Commercial; free time-limited evaluation version
- Target: C
- Platforms: Win32, Unix
- Web: http://www.eiffel.com/
-
- Brief description:
- The ISE Eiffel environment includes:
- - EiffelBench, a complete graphical development environment with
- unique facilities for fast compilation, power browsing,
- documentation, symbolic debugging and more
- - EiffelBase, which is also available under an open source license,
- is a complete and professional set of classes covering containers,
- collections, I/O, iterators, object persistence, table
- searching etc.
- - Under Windows, the Windows Eiffel Library (WEL), combining the
- power of Eiffel with access to the Windows API.
-
-
- Vendor: Dominique Colnet et al
- Product: SmallEiffel the GNU Eiffel compiler (current version: -0.80)
- Licensing conditions: Freeware (GPL)
- Target: ANSI C / Java Virtual Machine
- Platforms: Any ANSI C machine
- Web: http://www.loria.fr/SmallEiffel/
-
- Brief description:
- SmallEiffel is intended to be a complete, though small and very fast,
- free Eiffel compiler, available for a wide range of platforms.
- It includes an Eiffel to C compiler, an Eiffel to Java bytecode
- compiler, a documentation tool, a pretty printer, etc.
- SmallEiffel uses an innovative strategy involving whole system
- analysis which allows compilation to be often faster than the
- incremental compilation of traditional compilers.
- It was originally designed at the LORIA lab, Nancy, France,
- in 1994-95, and has been used worldwide by many individuals
- and Universities since September 1995.
-
-
- Vendor: Halstenbach ACT GmbH, Germany
- Product: iss-base (current version: 2.0cl1)
- Licensing conditions: Commercial; 90-day free evaluation version
- Target: ANSI C
- Platforms: Win32, Unix
- Web: http://www.halstenbach.com/ or http://www.halstenbach.de/
-
- Brief description:
- iss-base is especially targeted to the creation of complex, mission
- critical applications with a strong focus on software quality.
- As an independent developer of Eiffel technology, Halstenbach has
- created a development environment covering the whole software life
- cycle. Major strenghs of iss-base are robustness, speed of
- compilation,
- a sophisticated UIMS with full Windows'95/NT support and corresponding
- GUI builder, reliable ODBC support, portability between Unix and
- Windows, many libraries especically for writing commercial
- applications, e.g., CORBA connectivity, extensive date/time support,
- BCD-arithmetics, support for report generators, etc.
-
- (Note: the compiler and base libraries are based on but not the same
- as ISE Eiffel. Other parts of the product are unrelated with ISE
- products.)
-
-
- Vendor: Object Tools GmbH, Germany
- Product: Visual Eiffel (current version: 2.5)
- Licensing conditions: Commercial; free feature-limited eval. version
- Target: Native Intel x86
- Platforms: Win32 only
- Web: http://www.object-tools.com/ or http://www.eiffel.de/
-
- Brief description:
- Using Visual Eiffel and DM will help you to develop complex Windows
- applications in a very short time. Visual Eiffel gives you
- - an integrated workbench with the Windows look and feel
- - a professional Eiffel compiler producing very efficient native
- code for Intel processors
- - DM - the most rapid RAD tool you have ever seen gives you
- everything to build applications for Windows fast.
- - many useful libraries for the production of commercial Windows
- applications - for ActiveX component integration, for ODBC access,
- for the creation of nice graphical packages and much more.
-
-
- Other Eiffel compilers are worth mentioning although they may be
- either not supported any more, or an older version, or at an early
- stage of development so that their implementation of the language
- may be far from complete.
-
-
- - A beta version of Eiffel/S 2.0 (not 1.3) is available from
- Object Tools for PowerPC-based Apple Macintosh. It works
- with the Codewarrior C compiler and IDE. It includes MOTEL,
- a library wrapping the most common Mac toolbox entities and
- providing an event driven application framework.
- http://www.object-tools.com/
-
- - FEC is a native Eiffel compiler for SUN SPARC machines. An early
- beta version (including the full source code) can be downloaded
- from Fridtjof Siebert's page at
-
- http://www.informatik.uni-stuttgart.de/ifi/ps/siebert/fridi_eiffel.html
-
- - SIG Eiffel/S, version 1.3: Eiffel/S was the first Eiffel 3
- compiler, and the first Eiffel compiler available on the PC
- platform. Version 1.3, is still available as shareware from
- Object Tools (formerly SIG) but it is a few years old. A
- much improved version has been announced for a while,
- but is not generally available (except for the Mac). Eiffel/S 1.3
- is a command line compiler producing C code, it is available
- for DOS32, Windows 95 and NT and many Unix platforms.
- Object Tools is at http://www.object-tools.com/.
-
- - J-Eiffel is an Eiffel compiler generating JVM bytecode. A very early
- version of the compiler -- including the source code -- is available
- on Pirmin Kalberer's web site at http://www.spin.ch/~kalberer/
-
- - EON Eiffel: An Eiffel to C++ compiler, written in C++,
- not actively maintained.
-
- - TowerEiffel was a commercial compiler with an emphasis on the
- performance of
- generated code. It is not actively maintained or sold as Tower
- Technology
- has moved on to write a static Java compiler using the same kinds of
- system-wide optimisations found in most Eiffel compilers.
-
-
- --------------------
-
- QFRE: Is Eiffel available for free or as shareware?
-
- SmallEiffel is a freeware compiler, provided as a highly
- portable C package that can compile on most ANSI C platforms.
- The full Eiffel source code of the compiler itself (in Eiffel)
- is included.
-
- A ready-to-run package for Windows, including a freeware C
- compiler, is available at http://www.elj.com/elj-win32/ .
-
- Many commercial vendors offer free evaluation versions, with
- some limitations. Commercial vendors often also have cheap
- entry-level versions for popular platforms like Win32 on
- Intel-based PCs.
-
- --------------------
-
- QARC: Is there an archive of the comp.lang.eiffel newsgroup?
-
- Yes, on the WWW at:
- http://www.cm.cf.ac.uk/CLE/
- or at the following FTP sites:
- ftp://wuarchive.wustl.edu/usenet/comp.lang.eiffel/
-
- The newsgroup is also archived at the usual places on the web
- (DejaNews, AltaVista, etc).
-
- --------------------
-
- QBOK: What books are available for learning about Eiffel?
-
-
- ESSENTIAL READING
-
- Title: Object-Oriented Software Construction, second edition
- Author: Bertrand Meyer, ISE Inc.
- ISBN: ISBN 0-13-629155-4 - Prentice Hall 1997
- Short: This book is the comprehensive reference on all aspects of
- object technology, from design principles to O-O techniques,
- Design by Contract, O-O analysis, concurrency, persistence,
- abstract data types and many more. Written by a pioneer in
- the field, contains an in-depth analysis of both
- methodological and technical issues.
-
- While not presented as an 'Eiffel book' (Eiffel is presented
- as the 'notation' used to illustrate the concept) it is
- essential reading for any Eiffelist and it actually includes
- a rather complete description of the 'notation' -- Eiffel.
-
- Comes with a CD-ROM containing: the complete hyperlinked text,
- for easy reference; software to read the text on major industry
- platforms; supplementary material (reusable components,
- mathematical complements); and a complete graphical O-O
- development environment supporting the concepts of the book.
-
-
- Title: Eiffel: The Language
- Author: Bertrand Meyer
- ISBN: ISBN 0-13-247925-7 -- Prentice Hall 1992
- Short: This book combines an introduction to Eiffel, the language
- reference, and a good deal of philosophy into its 600 pages.
- This is a rigorous and comprehensive book which some readers
- may find heavy going despite Dr. Meyer's clarity of expression.
- It is the definitive language reference, and essential reading
- for all serious Eiffel users. Get the second or later printing
- (same ISBN), which includes many corrections and changes (there
- is not a second edition, and none is currently underway). This
- book is also available in French (ISBN 2-7296-0525-8).
-
-
- OTHER BOOKS
-
- Title: Object Oriented Programming in Eiffel, 2nd edition
- Author: Pete Thomas and Ray Weedon -- ISBN: 0-201-33131-4 -- AW 1997
- Short: This book is a very comprehensive Eiffel tutorial and textbook,
- with a solid "Abstract Data Type" approach.
-
- Title: Algorithms and Data Structures
- Author: Jeffrey Kingston -- ISBN: 0-201-40374-9 -- AW 1997
- Short: A treatment of the central algorithms and data structures of
- computer science, including complete Eiffel implementations.
-
- Title: An Object-Oriented Introduction to Computer Science Using Eiffel
- Author: Richard Wiener -- ISBN: 0-13-838725 -- PH 1997
- Short: None
-
- Title: Object Technology for Scientific Computing Object-Oriented
- Numerical Software in Eiffel and C
- Author: Paul Dubois -- ISBN: 0-13-267808-X -- PH 1996
- Short: Accompanying CD with the Free Eiffel for UNIX & Linux
- environments.
-
- Title: Object-Oriented Software Engineering with Eiffel
- Author: Jean-Marc Jezequel -- ISBN: 0-201-63381-7 -- AW 1996
- Short: A comprehensive guide to Eiffel. In addition to describing
- Eiffel, the book contains descriptions and comparisons of
- compilers and libraries available on the market.
-
- Title: Object Structures: Building OO Software Components with Eiffel
- Author: Jacob Gore -- ISBN: 0-201-63480-5 -- AW 1996
- Short: This is the first "data structures" book for Eiffel, bringing
- to the study of that language the first comprehensive
- treatment of one of the most important topics in any
- programming language.
-
- Title: Eiffel Object-Oriented Programming
- Author: John Tyrrell -- ISBN: 0-333-64554-5 -- 1995
- Short: This is an inexpensive and very approachable book.
-
- Title: Software Development Using Eiffel: There can be life other than
- C++
- Author: Richard Wiener -- ISBN: 0-13-100686-X -- PH 1995
- Short: This is a useful book with a lot of code examples for those
- with a grounding in another OO language.
-
- Title: Object Success
- Author: Bertrand Meyer -- ISBN: 0-13-192833-3 -- PH 1995
- Short: This book is a manager's guide to object orientation, its
- impact on the corporation and its use for re-engineering the
- software process.
-
- Title: Object Oriented Programming in Eiffel
- Author: R. Rist and R. Terwilliger -- ISBN: 0-13-205931-2 -- PH 1995
- Short: This is a textbook with an emphasis on design.
-
- Title: Seamless Object-Oriented Software Architecture: Analysis and
- Design of Reliable Systems
- Author: Kim Walden & Jean-Marc Nerson -- ISBN: 0-13-031303-3 -- PH 1994
- Short: This book describes the Business Object Notation (BON) Method
- in detail.
-
- Title: Reusable Software: The Base Object-Oriented Component Libraries
- Author: Bertrand Meyer -- ISBN: 0-13-245499-8 -- PH 1994
- Short: This book describes principles of library design and the
- taxonomy of fundamental computing structures. Serves as a
- manual for the EiffelBase libraries.
-
- Title: An Object-Oriented Environment: Principles and Application
- Author: Bertrand Meyer -- ISBN: 0-13-245507-2 -- PH 1994
- Short: This book describes the ISE EiffelBench environment as well as
- the "Melting Ice" compilation technology and the EiffelBuild
- GUI application builder.
-
- Title: Object-Oriented Applications
- Author: Meyer and Nerson editors -- ISBN: 0-13-013798-7 -- PH 1993
- Short: This book includes an introduction to Eiffel technology
- followed by seven in-depth descriptions of large applications
- written in Eiffel.
-
- Title: Eiffel: Objektorientiertes Programmieren in der Praxis
- Author: Frieder Monninger -- ISBN: ISBN 3-88229-028-5 -- 1993
- Short: This book is a very down-to-earth Eiffel handbook in German.
-
- Title: Eiffel: An Introduction
- Author: Robert Switzer -- ISBN: 0-13-105909-2 -- PH 1993
- Short: This book is a very clear and concise Eiffel primer, with many
- code fragments and two substantial Eiffel applications. Also
- available in French (ISBN 2-225-84-656-1).
-
- Title: Object Oriented Software Construction, first edition
- Author: Bertrand Meyer -- ISBN: 0-13-629049-3 -- PH 1988
- Short: An earlier edition of the second edition mentioned above, based
- on a previous version of the language.
- Also available in French, German, Italian, Dutch, etc.
-
- Publishers are Addison Wesley (AW) and Prentice Hall (PH).
-
- --------------------
-
- QWEB: Where can I find Eiffel on the World-Wide-Web?
-
- http://www.cm.cf.ac.uk/CLE/
- An Eiffel home page that is held on the University of Wales College
- of Cardiff's server.
-
- http://www.eiffel-forum.org/
- The web site of the Eiffel Forum user group includes a repository
- of free software and information on the current projects.
-
- http://www.elj.com/
- Geoff Eldridge's Eiffel pages including GUERL, a preview of Eiffel
- Liberty, an online journal, the online C++ Critique, and other
- useful information.
-
- http://www.eiffel.tm/
- A directory of Eiffel resources maintained by Roger Browne of
- Everything Eiffel.
-
- The main vendors websites are:
-
- Halstenbach ACT http://www.halstenbach.de/
- ISE http://www.eiffel.com/
- Object Tools http://www.object-tools.com/
-
- --------------------
-
- QEDI: Where can I get an Eiffel editor or emacs-mode?
-
- Tower Technology Corporation supplies an Eiffel 3 emacs mode that
- supports syntax-directed highlighting, auto-indentation and is easily
- customized for font use, color and indentation amounts. It comes as
- part of the TowerEiffel system, but is also available free for anyone
- who requests it. Send email to elisp@atlanta.twr.com to get the latest
- version.
-
- The WINEDIT shareware programmer's editor offers colour syntax
- highlighting, works with Eiffel/S under MS-Windows, and is available
- from all main Windows shareware archives.
-
- Alan Philips' free Programmers File Editor also works with Eiffel/S
- under MS-Windows, has templates but not syntax highlighting, available
- from http://www.lancs.ac.uk/people/cpaap/pfe/ .
-
- The vim editor, an enhanced version of Unix's vi, includes Reimer
- Behrend's Eiffel syntax file as part of the standard distribution,
- from http://www.vim.org/ .
-
- Franck Arnaud's Eiffel extension to the Windows/WindowsNT programmers
- editor Codewright from Premia implements chromacoding of Eiffel code,
- has smart indenting and some templates. Available from
- http://www.altsoft.demon.co.uk/free/ .
-
- --------------------
-
- QBON: What is BON?
-
- BON ("Business Object Notation") is a method for high-level analysis
- and design, offering a seamless reversible transition to an Eiffel
- implementation. The method emphasizes Design by Contract and
- systematic development.
-
- ISE supports BON with its EiffelCase tool.
-
- --------------------
-
- QSAT: What is Sather? How does it compare to Eiffel?
-
- Sather is an OO language, originally patterned after Eiffel but now
- very different, created at ICSI of Berkeley, CA.
-
- Sather does not support Design by Contract, but has some other
- interesting features. See the Usenet newsgroup comp.lang.sather
- or the Sather home page at http://www.icsi.berkeley.edu/~sather/.
-
- --------------------
-
- QSTD: Are there standards for the Eiffel language?
-
- The definition of the Eiffel language is in the public domain. This
- definition is controlled by NICE, the Non-profit International
- Consortium for Eiffel.
-
- The Eiffel trademark is owned and controlled by NICE. NICE is using
- Bertrand Meyer's book, "Eiffel: The Language" (2nd Printing), as the
- initial definition of the language.
-
- In 1995 NICE published the first version (called "Vintage 95") of
- the Eiffel Library Kernel Standard (ELKS). Those parts of an Eiffel
- application that use only the standard classes and features should
- run with minimal change on any compiler supporting ELKS-95.
-
- The NICE board members for 1998 are Eric Bezault (Chairman), James
- McKim (Secretary), Frieder Monninger (Treasurer), Bertrand Meyer
- and Christine Mingins.
-
- NICE email: nice@atlanta.twr.com
-
- --------------------
-
- QTGV: How fast do Eiffel applications run?
-
- Early implementations of Eiffel were slow. Recent implementations have
- improved dramatically. However, to achieve maximum performance under
- any Eiffel implementation, run-time assertion monitoring must be
- switched off.
-
- It's hard to generalise, but compared to C++, simple
- computation-intensive applications will run perhaps 15% slower. Large
- applications are often dominated by memory management rather than
- computation. The effect of garbage collection is an oft-debated point,
- generally the overhead is quite low (10%) and in principle a style of
- programming assuming a GC could be more efficient than typical manual
- memory management. This also depends on the kind of application, the
- implementation of the garbage collector, etc.
-
- --------------------
-
- QGRP: Are there any Eiffel user groups?
-
- The 'Eiffel Forum' is an organization for individuals interested in
- Eiffel. One of the main aims is to put in place a web infrastructure,
- similar to the Perl CPAN, to make user or vendor developed resources,
- reusable components and supporting information accessible to a wide
- and diverse user community.
-
- The website is at http://www.eiffel-forum.org/
-
- Compiler vendors usually run user groups for their user base, often
- in the form of a mailing-list or meetings during conferences. Contact
- the individual vendors for more information.
-
- South American users of Eiffel can look at the home page of RIPLEG
- (Rio de la Plata Eiffel Group) at http://www.angelfire.com/biz2/ripleg/
-
- --------------------
-
- QADR: Where can I get Eiffel products and services?
-
- These vendors, resellers and suppliers of Eiffel training and
- consultancy are listed in alphabetical order:
-
-
- AUSTRALIA
-
- Class Technology Pty. Ltd.
- POST PO Box 6274, North Sydney NSW 2060, Australia
- TEL +61 2 9922 7222 FAX +61 2 9922 7703
- EMAIL eiffel@class.com.au WEB http://www.class.com.au/
-
-
- EUROPEAN UNION
-
- Advanced Media Technology Ltd.
- POST Box 16, Hatolantie 140, SF-34 301 Kuru, Finland
- TEL +358 400 620 236 FAX +358 3 4737 117
- EMAIL jukka.haukijarvi@eiffel.fi
- WEB http://www.eiffel.fi/
-
- Cap Gemini France, ITMI APTOR, Eiffel Group
- POST 86-90 rue Thiers, F-92513 Boulogne-Billancourt Cedex, France
- TEL +33 1 4910 5300 FAX +33 1 4910 5102
- EMAIL eiffel@capgemini.fr
-
- Eiffel Software Iberica
- POST Isabel II, 4, 1D; 20011 San Sebastian, Spain
- TEL/FAX +34 943 472108
- EMAIL jipferur@si.ehu.es
-
- Eiffel Ireland
- POST 45 Hazelwood, Shankill, Co Dublin, Ireland
- TEL +353 1 282 3487
- EMAIL sparker@eiffel.ie WEB http://www.eiffel.ie/Eiffel/
-
- Enea Data
- POST Box 232, Nytorpsvagen 5, S-183 23 Taby, Sweden
- TEL +46 8 638 5000 FAX +46 8 638 50 50
- EMAIL eiffel@enea.se WEB http://www.enea.se/
-
- EtnoTeam
- POST Via Adelaide Bono Cairoli 34, I-20127 Milano, Italy
- TEL +39 2 261621 FAX +39 2 26110755
- EMAIL sales@etnomi.it WEB http://www.etnomi.it/
-
- Everything Eiffel
- POST 6 Bambers Walk, Wesham PR4 3DG, England
- TEL & FAX +44 1772 687525 WEB http://www.eiffel.demon.co.uk/
- EMAIL roger@eiffel.demon.co.uk
-
- Halstenbach ACT GmbH
- POST Breidenbrucher Strasse 2, D-51674 Wiehl, Germany
- TEL + 49 2261 9902 0 FAX +49 2261 9902 99
- EMAIL info@halstenbach.de WEB http://www.halstenbach.de/
-
- Langmack & Partner, Feinarbeit
- POST Gitshinner Strasse 91 - 2. Hof, D-10969 Berlin, Germany
- TEL +49 30 616794 61 FAX +49 30 616794 67
- EMAIL langmack@feinarbeit.de
-
- Object Tools GmbH
- POST Nordstr. 5, D-35619 Braunfels, Germany
- TEL +49 6472 911030 FAX +49 6472 911031
- EMAIL eiffel@eiffel.de WEB http://www.eiffel.de/
-
- Jan Willamowius
- POST Rueckertstr. 27, D-22089 Hamburg, Germany
- TEL +49 40-20981888
- EMAIL jan@janhh.shnet.org
-
-
-
- JAPAN
-
- Information and Math Science Lab Inc.
- POST 2-43-1, Ikebukuro, Toshima-ku, Tokyo 171
- TEL +81 3 3590 5211 FAX +81 3 3590 5353
- EMAIL fushimi@imslab.co.jp WEB http://www.imslab.co.jp/
-
-
- NEW ZEALAND
-
- Objective Methods Ltd
- POST PO Box 17356 (77 Chamberlain Rd)
- Karori, Wellington, New Zealand
- TEL +64 4 476 9499 FAX +64 4 476 9237
- EMAIL dkenny@actrix.gen.nz
-
-
- SWITZERLAND
-
- Abstraction
- POST Faubourg de l'Hopital, CH-2000 Neuchatel, Switzerland
- TEL +41 32 7250493 FAX +41 32 7259857
- EMAIL abstraction@access.ch
-
-
- UNITED STATES OF AMERICA
-
- Halstenbach ACT, Inc.
- POST 827 State Street, Santa Barbara, CA 93101, USA
- TEL +1 805 568 0023 FAX +1 805 884 0806
- EMAIL info@halstenbach.de WEB http://www.halstenbach.de/
-
- Interactive Software Engineering, Inc
- POST ISE Building, 2nd floor, 270 Storke Road, Goleta, CA 93117, USA
- TEL +1 805 685 1006 FAX +1 805 685 6869
- EMAIL info@eiffel.com WEB http://www.eiffel.com/
-
- Object Tools, Inc.
- POST 13267 Summit Sq. Center, Route 413 & Doublewoods Rd,
- Langhorne, PA 19047, USA
- TEL/FAX +1 215 504 0854
- EMAIL info@object-tools.com WEB http://www.object-tools.com/
-
- Tower Technology Corporation
- POST 1501 Koenig Lane, Austin, TX 78756, USA
- TEL +1 512 452 9455 FAX +1 512 452 1721
- EMAIL tower@twr.com WEB ttp://www.twr.com/
-
-
- --------------------
-
- QCNF: Are there any conferences for Eiffel users?
-
- The conferences listed here are not just for Eiffel. Eiffel shares the
- spotlight with other OO languages including C++ and Smalltalk.
-
- TOOLS is an international conference devoted to the applications of
- OO technology. Other events, such as user group or NICE meetings
- are often held in conjunction with TOOLS. http://www.tools.com/
-
- The ACM SIGPLAN Conference On Object-Oriented Programming Systems,
- Languages and Applications (OOPSLA) is probably the largest technical
- conference about OO Technology. OOPSLA home page is at
- http://www.acm.org/sigplan/oopsla/
-
- ECOOP is the annual European Conference for Object-Oriented
- Programming. http://www.iam.unibe.ch/ECOOP/
-
- --------------------
-
- QECC: Why do most Eiffel implementations compile to C?
-
- By using C as a target language, an Eiffel implementor can:
-
- - bring Eiffel to the marketplace faster and at lower cost
- - port their implementation more easily to other platforms
- - take advantage of optimisation provided by the C compiler
-
- Much of the technology that makes Eiffel relatively simple to use also
- makes it more difficult to implement (an Eiffel-to-C compiler is
- perhaps 4 to 5 times more difficult to create than a native Pascal
- compiler).
-
- Compiling Eiffel to C seems to work well under Unix. C is sometimes
- thought of as the native code of Unix.
-
- On the other hand, C is not universal on other platforms, and the
- Eiffel purchaser may need to buy a C compiler as well, and possibly
- replace it if the supported C compilers change with new versions of
- the Eiffel compiler.
-
- With a native-code compiler, you may get somewhat better throughput
- and the potential for smaller executables and slightly better
- performance.
-
- --------------------
-
- QJVM: Where can I get an Eiffel to Java compiler?
-
- Since Java became fashionable, everyone wants their favourite
- language to be compiled for the JVM (Java Virtual Machine)'s byte
- code. It is tempting to think about providing Eiffel compilation
- to this platform with total interoperability between Java and Eiffel
- code.
-
- Unfortunately, things are not as simple as they look at first sight.
- There are fundamental differences between the Java and Eiffel object
- models (dynamic vs. static object systems, single vs. multiple
- inheritance, design by contract vs. wishful thinking, are among the
- problems).
-
- While it is of course possible to provide a compiler from Eiffel to
- the JVM (which is a Turing machine), it comes necessarily at a cost,
- be it performance or interoperability or both. It is unlikely in the
- foreseeable future to have an Eiffel to JVM compiler where it is
- possible to mix and match freely classes written in Java and Eiffel
- classes without having to worry about which language they are
- written in.
-
- Nevertheless, most compiler vendors are moving towards providing
- some support for the JVM, with differing limitations depending on
- the vendor and implementation strategy.
-
- SmallEiffel is the first compiler available to produce some
- usable result on the JVM. ISE and Object Tools have announced
- ongoing efforts to support Java. Pirmin Kalberer provides an
- early version of an Eiffel to JVM compiler.
-
- --------------------
-
- LFEA: What features does Eiffel have?
-
- Eiffel is a pure object-oriented language. Its modularity is based on
- classes. It stresses reliability, and facilitates design by contract.
- It brings design and programming closer together. It encourages the
- re-use of software components.
-
- Eiffel offers classes, multiple inheritance, polymorphism, static
- typing and dynamic binding, genericity (constrained and
- unconstrained), a disciplined exception mechanism, systematic use of
- assertions to promote programming by contract, and deferred classes
- for high-level design and analysis.
-
- Eiffel has an elegant design and programming style, and is easy to
- learn.
-
- An overview is available at
- http://www.eiffel.com/doc/manuals/language/intro/
-
- --------------------
-
- LCHN: What changes have been made to the Eiffel language definition?
-
- Eiffel is still a relatively new language, and there have been a
- number of changes to its definition.
-
- There were significant changes between the publication of
- "Object-Oriented Software Construction", first edition in 1988,
- and the release of Eiffel 2.3.
-
- More significant changes came with the introduction of Eiffel 3, the
- current and only version of the language in use today. These changes
- are summarised in Eiffel: The Language.
-
- There were some less significant changes between the first
- and second printings of "Eiffel: The Language":
-
- - New basic types INTEGER_REF, REAL_REF, CHARACTER_REF and
- BOOLEAN_REF etc have been introduced to provide non-expanded
- basic types.
-
- - Introduction of the POINTER type to enable external references to
- be passed around in Eiffel programs.
-
- - Calls from Eiffel to external routines no longer implicitly pass
- the current object as the first parameter.
-
- There are many other (more minor) changes, which Neil Wilson has
- summarized in ftp://ftp.cm.cf.ac.uk/pub/eiffel/Docs.
-
- Since then the following change has been adopted and widely
- implemented:
-
- - The Precursor construct allows the ancestor's version of
- a redefined feature to be conveniently called (see LPAR).
-
-
- --------------------
-
- LLIB: What libraries come with Eiffel?
-
- All vendors aim to support the Eiffel Library Standard kernel classes.
-
- In addition, extensive library classes are supplied with the compilers
- including data structures, graphics, lexical analysis and parsing, IO,
- persistence, formatting and more.
-
- Contact the vendors for further details.
-
- --------------------
-
- LDBC: What's the big deal about preconditions and postconditions?
-
- The big deal is that it supports programming by contract. For example,
- preconditions (require clauses) are simple boolean statements that are
- used to check that the input arguments are valid and that the object
- is in a reasonable state to do the requested operation. If not, an
- exception is generated. Similarly, postconditions (ensure clauses)
- make sure that a method has successfully performed its duties, thus
- "fulfilling its contract" with the caller. Invariants are boolean
- expressions that are checked every time an object method returns back
- to a separate object.
-
- You can use these ideas in any OO programming language, but usually
- must supply your own assertion mechanisms or rely on programmer
- discipline. In Eiffel, the ideas are integrated into the whole fabric
- of the environment. We find them used by:
-
- - the exception handling mechanism.
- (Tracebacks almost always identify the correct culprit code since
- preconditions almost always denote an error in the calling method,
- while postconditions denote an error in the called method.)
-
- - the automatic compilation system.
- (Assertions can be disabled entirely or selectively by type on a
- per class basis.)
-
- - the Eiffel compiler
- (Invariants, preconditions and postconditions are all inherited in
- a manner that makes logical sense.)
- (Assertion expressions are not allowed to produce side effects so
- they can be omitted without effect.)
-
- - the automatic documentation tools
- (Preconditions and postconditions are important statements about
- what a method does, often effectively describing the "contract"
- between the caller and callee. Invariants can yield information
- about legal states an object can have.)
-
- In the future we expect to see formal methods technology work its way
- into the assertion capability. This will allow progressively more
- powerful constraints to be put into place. In addition, Meyer has
- argued in his concurrency model (see LTSK) that assertions play
- a central role in concurrent and distributed object-oriented
- programming.
-
- --------------------
-
- LCON: Please explain and discuss covariance vs. contravariance.
-
- Consider the following situation: we have two classes PARENT and
- CHILD. CHILD inherits from PARENT, and redefines PARENT's feature
- 'foo'.
-
- class PARENT
- feature
- foo (arg: A) is ...
- end
-
- class CHILD
- inherit
- PARENT redefine foo end
- feature
- foo (arg: B) is ...
- end
-
- The question is: what restrictions are placed on the type of argument
- to 'foo', that is 'A' and 'B'? (If they are the same, there is no
- problem.)
-
- Here are two possibilities:
-
- (1) B must be a child of A (the covariant rule - so named because
- in the child class the types of arguments in redefined
- routines are children of types in the parent's routine, so the
- inheritance "varies" for both in the same direction)
-
- (2) B must be a parent of A (the contravariant rule)
-
- Eiffel uses the covariant rule.
-
- At first, the contravariant rule seems theoretically appealing. Recall
- that polymorphism means that an attribute can hold not only objects of
- its declared type, but also of any descendant (child) type. Dynamic
- binding means that a feature call on an attribute will trigger the
- corresponding feature call for the *actual* type of the object, which
- may be a descendant of the declared type of the attribute. With
- contravariance, we can assign an object of descendant type to an
- attribute, and all feature calls will still work because the
- descendant can cope with feature arguments at least as general as
- those of the ancestor. In fact, the descendant object is in every way
- also a fully-valid instance of the ancestor object: we are using
- inheritance to implement subtyping.
-
- However, in programming real-world applications we frequently need to
- specialize related classes jointly.
-
- Here is an example, where PLOT_3D inherits from PLOT, and
- DATA_SAMPLE_3D inherits from DATA_SAMPLE.
-
- class PLOT
- feature
- add(arg: DATA_SAMPLE) is ...
-
- class PLOT_3D
- inherit
- PLOT redefine add end
- feature
- add(arg: DATA_SAMPLE_3D) is ...
-
- This requires the covariant rule, and works well in Eiffel.
-
- It would fail if we were to put a PLOT_3D object into a PLOT attribute
- and try to add a DATA_SAMPLE to it. It fails because we have used
- inheritance to implement code re-use rather than subtyping, but have
- called a feature of the ancestor class on an object of the descendant
- class as if the descendant object were a true subtype. It is the
- compiler's job to detect and reject this error, to avoid the
- possibility of a run-time type error.
-
- Here's another example where a real-world situation suggests a
- covariant solution. Herbivores eat plants. Cows are herbivores. Grass
- is a plant. Cows eat grass but not other plants.
-
- class HERBIVORE class PLANT
- feature
- eat(food: PLANT) is ...
- diet: LIST[PLANT]
-
- class COW class GRASS
- inherit inherit
- HERBIVORE PLANT
- redefine eat
- end
- feature eat(food: GRASS) is ...
-
- This does what we want. The compiler must stop us from putting a COW
- object into a HERBIVORE attribute and trying to feed it a PLANT, but
- we shouldn't be trying to do this anyway.
-
- Also consider the container 'diet'. We are not forced to redefine this
- feature in descendant classes, because with covariant redefinition of
- the argument to 'eat', the feature 'diet' can always contain any
- object that can be eaten (e.g. grass for a cow). (With contravariant
- redefinition of the argument to 'eat', it would be necessary to
- re-open the parent class to make the type of the container 'diet' more
- general).
-
- To summarise: Real-world problems often lend themselves to covariant
- solutions. Eiffel handles these well. Incorrect programs in the
- presence of covariant argument redefinition can cause run-time type
- errors unless the compiler catches these.
-
- Sather uses the contravariant rule, but uses separate mechanisms for
- subtyping and code reuse and only allows dynamic binding on true
- subtypes. This seems to make contravariance work well, but it can
- force the Sather programmer to use concrete types when modelling
- covariant problems. Concrete types cannot be further subtyped in
- Sather, so this can reduce the potential for re-use (in Eiffel, any
- type can be further subtyped, but the compiler must check that it is
- used validly).
-
- --------------------
-
- LCAT: Is it true that there are "holes" in the Eiffel type system?
-
- No. The design of Eiffel makes it possible to catch all type errors at
- compile time, so that an Eiffel program cannot abort with a run time
- type error.
-
- However, to catch a class of certain more obscure type errors at
- compile time, the compiler must analyse the way that classes interact
- within the entire system, rather than just looking at each class one
- by one.
-
- The main types of errors that cannot be checked easily are:
- (a) restriction of exports in a descendant class.
- (b) covariant redefinition of routines parameters as in question LDBC.
- (c) covariant signatures in conforming types of a generic class
- (like 'put' in LIST[ANY] and LIST[STRING])
-
- There is a proposal underway that, if accepted, will allow compilers
- to incrementally check this class of errors by looking at classes
- and not at the whole system every time.
-
- Because system-wide compile-time validity checking can be complex,
- no compiler available today implements full static type checking. Some
- insert run-time checks. On the other hand, the cases where system
- level validity problems can occur are not too frequent so this is not
- a major annoyance in practice.
-
- --------------------
-
- LTSK: Is there support for concurrency in Eiffel?
-
- Eiffel does support concurrency in the latest specification for the
- language as defined by Interactive Software Engineering (ISE). A
- more complete description on concurrency -- the SCOOP (Simple
- Concurrent Object-Oriented Programming) model -- can be found
- in chapter 30 of "Object Oriented Software Construction 2ed" by
- Bertrand Meyer. Papers are also available from ISE web site at
- http://www.eiffel.com/doc/manuals/technology/concurrency/ .
-
- Some compilers also support various forms of multithreading
- independently of SCOOP.
-
- --------------------
-
- LOVL: Why doesn't Eiffel allow function overloading?
-
- In Eiffel, no two features of a class may have the same identifier,
- regardless of their respective signatures. This prevents the use of
- function overloading ("multiple polymorphism"), a common programming
- technique in languages like C++.
-
- Eiffel is designed to be minimal: it includes exactly the features
- that its designer considered necessary, and nothing else.
-
- Because Eiffel already supports (single) polymorphism through its
- inheritance system, the only positive thing that function overloading
- buys you is reducing the number of feature names you have to learn.
- This is at the expense of reducing the ability of the compiler to trap
- mistakes (often type errors).
-
- Readability is also enhanced when overloading is not possible. With
- overloading you would need to consider the type of the arguments as
- well as the type of the target before you can work out which feature
- is called. With multiple inheritance and dynamic binding this is
- awkward for a compiler and error-prone for a human. There is no
- intuitive rule which could be used to disambiguate routine calls where
- there is no "nearest" routine.
-
- However, in Eiffel it's easy to write one routine with arguments of
- the most general applicable type, then use the assignment attempt
- operator to carry out the appropriate operation according to the
- run-time type of the arguments (thereby explicitly programming the
- disambiguation "rules").
-
- Having said that, the lack of multiple polymorphism does force us to
- write some common mathematical operations (e.g. matrix math) in an
- awkward way, and forces arithmetic expressions to be treated specially
- (the "arithmetic balancing rule", ETL p385). But no-one has come up
- with a solution which is so simple, elegant and useful that it
- improves the quality of Eiffel as a whole.
-
- --------------------
-
- LPRC: Why are there no procedural types in Eiffel?
-
- A proposal is currently under consideration by NICE to add routine
- types to the language.
-
- The reason why these types were not implemented earlier, is that
- the notion of allowing a routine to be passed as an argument to a
- routine is in many people's view incompatible with the OO method.
- The definition of object-orientation implies that every operation
- belongs to an object type, so one does not manipulate routines
- just by themselves.
-
- Nevertheless, routine types can be useful in some specialist cases,
- like interfaces to other object systems, some forms of reflection,
- etc. The proposed extension is indeed not intended for general use,
- although there is concern that it may become used beyond the
- specialist cases when available.
-
- --------------------
-
- LATR: Why are there no class attributes in Eiffel?
-
- In Eiffel, the "once" function provides greater functionality in a
- more disciplined way. The body of a "once" function is executed once
- only per system (not per instance of the class), when it is first
- called. Thereafter, the "once" function returns the same Result
- without re-executing its body.
-
- The "once" function can therefore be used to implement a shared
- attribute of reference type (initialized on its first use).
-
- A "once" function can be included in a mixin class. The shared
- attribute returned by that once function is then available to all
- instances of classes which inherit from the mixin class.
-
- --------------------
-
- LPAR: How can I call the parent-class version of a redefined routine?
-
- When an inherited routine is redefined in a child class, is there a
- way for the redefined routine to call the version in the parent class?
-
- 1) If you are responsible for the design of the parent class, you may
- anticipate such a need. You may provide multiple versions of the
- same routine body, with some versions frozen (not redefinable):
-
- class PARENT
- feature foo, frozen parent_foo is
- do
- ...
- end
- end
-
- class CHILD
- inherit
- PARENT
- redefine foo
- end
- feature foo is
- do
- parent_foo
- ...
- end
- end
-
- 2) Otherwise, you use repeated inheritance to get two versions of
- 'foo', and redefine one of them:
-
- class PARENT
- feature foo is
- do
- ...
- end
- end
-
- class CHILD
- inherit
- PARENT
- rename foo as parent_foo
- end
- PARENT
- redefine foo
- select foo -- (in case of dynamic binding)
- end
- feature
- foo is
- do
- parent_foo
- ...
- end
- end
-
- 3) While usable both these constructs have their limitations and a
- proposal is under way to replace them with a more direct solution:
- the new reserved word Precursor that allows to call the parent
- version of a redefined routine in its body. In the rare cases when
- a routine has more than one precursor, the call can be qualified to
- specify which precursor is called.
-
- Under this proposal, the example becomes:
-
- class CHILD
- inherit
- PARENT
- redefine foo
- end
- feature
- foo is
- do
- Precursor -- call previous version
- ...
- end
-
- --------------------
-
- LEVC: Where can I find a comparison between Eiffel and other languages?
-
- In Richard Wiener's book "Software Development Using Eiffel: There can
- be life after C++" (Prentice-Hall, ISBN 0-13-100686-X).
-
- Ian Joyner's "C++ critique" includes a comparison between C++, Eiffel
- and other languages. It is at the following URL:
- http://www.progsoc.uts.edu.au/~geldridg/cpp/cppcv3.html
-
- You can also find a comparison of Eiffel, C++, Java, and Smalltalk at
- ISE's Web site,
- http://www.eiffel.com/doc/manuals/technology/oo_comparison/
-
- --------------------
-
- LDES: Are there any destructors in Eiffel?
-
- Eiffel objects are garbage-collected, so that there is no need for the
- software developer to worry about whether, how and when to "destroy"
- or "free" them in the software text.
-
- Some implementations offer a "free" procedure for programmers who
- absolutely want to remove an object manually. Such a procedure is "use
- at your own risk" and is not needed in normal Eiffel development.
-
- Coming back to normal usage, the need may arise to ensure that certain
- operations will automatically take place whenever the garbage
- collector reclaims an object. For example if an Eiffel object
- describing a file becomes unreachable and hence is eventually
- garbage-collected, you may want to ensure that the physical file will
- be closed at that time. Some implementations of Eiffel provide a
- mechanism for that purpose: procedure 'dispose' from the Kernel
- Library class MEMORY.
-
- Whenever the garbage collector collects an object, it calls 'dispose'
- on that object. The procedure does nothing by default (so that a smart
- GC will of course avoid executing any actual call). But any class may
- inherit from MEMORY and redefine 'dispose' to perform appropriate
- actions, such as closing a file. Such actions are sometimes called
- "finalization". This technique achieves it conveniently.
-
- Because there is no guarantee as to the order in which the garbage
- collector will reclaim objects that have become unreachable, safe
- redefinitions of 'dispose' should only act on external resources such
- as file descriptors, database elements, window system resources etc,
- not on Eiffel object structures themselves.
-
- --------------------
-
- LDIS: How do I implement multiple inheritance efficiently?
-
- People with a background in C++ or single-inheritance languages
- often think that multiple inheritance carries a penalty because
- it cannot be implemented using the classic dispatch table scheme
- (where every polymorphic feature has a fixed position in a pointer
- table that descendants can customise without breaking any code
- using the fixed position of an ancestor's polymorphic feature.)
-
- There are other ways to implement inheritance which allows Eiffel
- not to suffer performance problems because of multiple inheritance.
- Eiffel compilers generally use one of two methods.
-
- In both cases, we need to assume that every type in the system is
- assigned an integer identifier -- the type ID.
-
- The first implementation is the 'sparse matrix' model. Every
- polymorphic feature has an associated pointer table with an entry
- for each type, indexed by type ID. This allows all polymorphic
- calls to be executed at the (same) cost of a single pointer
- derefence.
-
- The immediate drawback of this, is that it generates a rather big
- data table (a matrix of all polymorphic routines per all types in
- a system). Fortunately, there are sparse matrix algorithms allowing
- to compress these tables efficiently by carefully selecting the IDs
- (an evident optimisation is to try to group all descendant next
- to their parent so that only a short section of the type ID space
- need be covered).
-
- The other method is completely different and uses the equivalent of
- an inspect statement on the type ID, calling the appropriate static
- function for each concrete type. In this case, it is obvious that the
- compiler needs a global knowlegde of the system: for each polymorphic
- routine call, it needs to know all concrete subtypes really used in
- the system, and all redefinitions of the routines.
-
- At first sight, it could be thought that the inspect statement could
- slow down the system. Actual compilers using this solution have proved
- that they can be as efficient as (or more than) those implemented
- using the first method.
-
- It should now be clear that, for both methods, it is necessary
- for the compiler to have at compile time -- or at the very least at
- optimisation time -- a view of the complete system. This could appear
- like a serious restriction but it is not much of a concern because
- Eiffel compilers must have this view in the first place in order to
- be able to differenciate between static and polymorphic routines --
- all routines being potentially polymorphic in Eiffel -- and this
- must be done to have compiled systems perform reasonably.
-
- --------------------
-
- LISA: How does the `Iterating several actions' example in ETL work?
-
- The example code page 176 of Eiffel: The Language, 2nd printing does
- not work with any widely available compiler. It has confused and
- puzzled many newcomers to the language and what it is supposed to
- do is not clearly defined in the language definition.
-
- What the example should do is as follows. When a feature is replicated
- under multiple inheritance (renamed so that the feature is now known
- under two names) and in the same inheritance clause a routine or
- attribute its source text references is also replicated, the routine
- body of the first feature should be adapted to call the corresponding
- replicated features on each path of the inheritance. The mechanism
- is not intended to scale to more complex cases where the replication
- do not occur in a single inheritance clause.
-
- The opinions are divided on whether this feature should be discarded
- completely because of the the conceptual complexity and odd
- side-effects or better defined and actually implemented.
-