Eiffel is an ISO-standardized object-oriented programming language designed for extensibility, reusability, reliability and programmer productivity.
With roots going back to 1985, Eiffel has development environments available from multiple suppliers. Although less well known than many other languages, Eiffel is used by large projects in various industries (finance, aerospace, health care, games and others) as well as for teaching programming in academia.
The language design is closely connected with the method, based on a set of principles: Design by contract, Command-query separation, Uniform access principle, Single choice principle, Open-closed principle, Option-Operand separation and others.
Eiffel Interviews are getting tough these days as the technology grows faster. To get through the Eiffel interview one needs to update him/herself in a regular manner. Having said that, just before the interview, it is very important to have a quick glance of the reputed Eiffel questions and answers to make yourself comfortable during the interview process. This is where DoAnswers.com helps you in renewing yourself on Eiffel and various other technologies interview preparation.
1. Does openEHR have to be implemented in Eiffel?
No, it doesn't. The choice of language is completely up to the developer organisation, and usually relates more strongly to available human resources and so on. There are parts of openEHR being developed in Java, C#.net, Oracle, VB.net, and in the future, it is expected that Python will be used, among others.
2. How can I interface my Java or C# software to Eiffel components?
First of all, you might not care about this, since there are a growing number of native Java and C# implementations of openEHR - and there is absolutely nothing stopping you writing all your software in your favourite language. Some reference components written in Eiffel already have a C# wrapper, and will soon have a Java wrapper, such as the ADL reference parser. For those who do care...C# is easy. ISE, one of the Eiffel vendors has produced a solid set of .net tools which enable any Eiffel piece of software to be made available as a .net DLL, directly usable by VB.net, C#.net, and any other .net language. This has been tested in the ADL tools with both C# and VB.net graphical front-ends, including the ability to dispatch C# -programmed functions in Eiffel. Interfacing to Java is somewhat more work. Eiffel to Java interfacing has already been done in production health software by various companies, including ENEA-data in Sweden. There are well-known methods for doing it, but it requires a little work. A java wrapping is in development for the openEHR ADL reference parser.
3. How can I look at the openEHR Reference Model in Eiffel?
You could download a copy of Eiffel and browse using the IDE. But you'd probably complain about having to do the download, and learn a new IDE! So there is a much easier way. The entire openEHR specifications are available in a completely hyperlinked HTML tree, on the openEHR website.
4. How do you create a web service in Eiffel?
Creating a web service using Eiffel for .NET is as simple as creating one in any other .NET supported language. The class that contains the methods you wish to expose on the Internet can inherit from the .NET type System.Web.Services.WebService. To expose class features on the Internet they must then be given custom attributes declaring them as web methods.
5. How fast is Eiffel's run-time performance?
FAST. Eiffel Software has shown that it is possible to utilize the full power of modern object technology without sacrificing run-time performance. Various benchmarks show run-time efficiency similar to C and Fortran, and in many cases better.
6. However, Eiffel does happen to be an excellent choice for implementation, for two reasons:
the need for correctness when processing health information (e.g. consider the consequences of a software bug causing the coded term for "kidney, left" to be changed to "kidney, right"). Only Eiffel implements assertions the ability to bind properly to the two "big" languages around today, namely C# and Java. It is worth considering that we are now in an IT environment somewhat like the CORBA/COM situation of a decade ago. Many companies and other organisations promised that the two would talk together; they never did, properly. Similarly, there are political reasons why companies (particularly Sun and Microsoft) are unlikely to make it easy for developers to jump to the other side, or integrate software written in the two languages properly. Eiffel does offer one solution to this problem. Tools have already been built by ISE which compile Eiffel code to native .Net bytecode, meaning that Eiffel components can be deployed seamlessly with components written in other .Net languages. Eiffel has also be wrapped for Java in production software in health, and can be reliably deployed in Java environments. The upshot of this is that a single code base for an important component could be written in Eiffel and deployed on all platforms, not just in one or other of the .Net or Java worlds. The types of implementation which we foresee in the future are multi-language component-based systems, not single language systems. For example, a reference openEHR kernel implemented in Eiffel could be deployed in both .Net and Java worlds via interfacing solutions which already exist; in each environment they would be used in the appropriate application server environment, e.g. J2EE or similar. Other systems are likely to use a diversity of languages for presentation and back-end databases as well.The bottom line is: implement in whatever technology you choose, you will still most likely to be able to take advantage of any openEHR components that happen to be in Eiffel.
7. I have several classes in VB.NET and C#. Do I need to rewrite them in Eiffel?
No. Any code written in a .NET supported language such as VB.NET, C# or Eiffel for .NET automatically compiles to the Common Intermediary Language (CIL) code. Through this standard, independent modules are created (.dll's or .exe's) that are fully interoperable so that a developer can reuse any code without having to rewrite or port it to another language.
8. Is Eiffel intended for any specific application area?
Not specifically. Eiffel shines in ambitious systems that need to adapt to changing market and user demands. It brings many benefits to serious application development and is used in various industries, from financial applications to manufacturing, product configuration control, healthcare, telecommunication systems, defense .... Eiffel scales up thanks to its abstraction and structuring facilities. It is one of the few environments that won't let you down when your project (or company) grows in size, scope, and ambition.
9. Is it true that Eiffel Compiles into C?
Yes. The Eiffel compiler generates an internal form known as "bytecode". The bytecode can be interpreted directly, but it can also be translated into other forms. To generate the final version of a system, the bytecode is optimized and translated into C, to take advantage of the presence of C compilers on just about every platform under the sun. This is the process known as "finalization", which performs extensive optimizations (routine inlining, static calls, array optimization), permitting performance achievements. Using C as an intermediate language takes advantage of the platform-specific optimizations performed by C compilers, and most importantly, facilitates interoperability with software written in C and C++.
10. Is there an open source version of Eiffel?
Yes, it's called SmartEiffel, and as far as we know, it implements everything in the Eiffel specification, plus well-known extensions such as "agents". Other resources include: newsgroup numerous books; try searching Amazon.com numerous libraries (see e.g. Google Eiffel directory)