Slashdot Mirror


SmartEiffel 1.0 Released

Per Wigren writes "Today SmartEiffel, the GNU Eiffel-compiler finally reached 1.0! Eiffel is a very underrated language in the free software community for some strange reason.. Hopefully this will help to gain some interest in this extremely powerful, fast, easy-to-read, easy-to-learn, almost self-debugging language!"

31 of 337 comments (clear)

  1. Re:What is it? by Johan+Veenstra · · Score: 4, Informative

    Then this link is for you:

    http://archive.eiffel.com/eiffel/nutshell.html

  2. Re:what's it good for? by edhall · · Score: 5, Informative

    I'd not call it is "forced" Object Orientation, but rather it is OO plus pre- and post-conditions in a methodology known as Design By Contract.

    -Ed
  3. Re:what's it good for? by J.+Random+Software · · Score: 4, Informative

    Funny you should mention that. Eiffel's the only language I've seen that actually gets boxing right. Any class can be "expanded" when declared or even used, and then it's transparently handled by value instead of by reference.

  4. Re:What is it? by SlowMovingTarget · · Score: 4, Informative

    Eiffel is an object-oriented programming language designed to be replete with O-O-ness (no, really). For example, their are no primitives in Eiffel, everything is an object. Eiffel also has a singly-rooted hierarchy and garbage collection (like Java) and parameterized classes like C++.

    Unlike Java, Eiffel syntax was designed to also act as a specification language of sorts, including syntactic support for contract specification.

    Bertrand Meyer's book Object-Oriented Software Construction explains problems in modern software development, examines how object-orientation probably could solve them, then designs such a language. This language turns out to be Eiffel (sorry for the spoiler if you intend to read this > 1000 page book).

    One of the points Meyer demonstrates is how a syntax to describe groups (classes) of solutions gets fleshed out into actual software that may execute. Eiffel, being that syntax, among other things, was intended to make you think in terms of types of objects sending messages to each other to get work done.

    That said, I use Java. Why? Apache's Jakarta project.



    Regards,

    M. Murphree
  5. Some infos about Eiffel by DarknessInBlindingLi · · Score: 4, Informative
    For those who are unfamilar with this language (I fear most of the /. crowd) here a basic overview of its advantages and problems:

    Eiffel is a language with an minimal instruction set (sometimes refered to as RISC language), which is used mostly in environments that emphasize reliability and dependability. It's small instruction set (e.g. there is only one type of loop) make it easy to learn and understand but is taking away some of the fun of coding. Most of the work you put into an eiffel project is to find the right approache, because you don't have too many ways to implement stuff. Here in Europe it's used in mostly academic environments that like the grace of its simplistic approace and its 100% object oriented design.

    Tradeoffs of this language are its high compilation time, as Eiffel source gets translated to C and then into a native form, the scarcity of available system libraries and the lack of dynamic features as shared objects and stuff.

    If your going to invest some time in this language, a look at those open source projects might be worthwhile:
    eposix - POSIX bindings for eiffel
    gobo - a collection of tools and libraries to unify the development of applications on diffrent Eiffel compilers
    mico/e - a CORBA ORB in Eiffel (DISCLAIMER: I am involved in the development of this project)

    1. Re:Some infos about Eiffel by thebatlab · · Score: 3, Informative
      "which is used mostly in environments that emphasize reliability and dependability"

      So true. I hear that a major stock trading application was made using Eiffel as it was the best tool for their needs. Kind of tells you something when a stock trading system uses this pretty much unknown language b/c of it's reliability. Design by contract anyone?? :)

  6. Information on Eiffel by Anonymous Coward · · Score: 3, Informative
    Eiffel is awesome! Here are some of the most obvious benefits:
    • Design by Contract (dbc)
    • Multiple Interitance
    • Static Typing (no such thing as casting)
    • Dynamic Binding


    To learn more about Eiffel, read this and this and this and if you still have time, this.


    Also, check #eiffel on freenode (irc)


    Eiffel is the best,
    DM

  7. Re:found some more links by SlowMovingTarget · · Score: 3, Informative

    At its heart, Design-by-Contract is an API description mechanism (think assertions). For any given method on a class, you specify what must be true in order to call it (preconditions) and what it guarantees will be true once it has finished execution or has errored out (postconditions, exceptions).

    In Eiffel, however, this kind of specification is given some heft in terms of compiler support. Design-by-Contract is especially useful when defining an interface between code bases (IOW: public APIs). DbC gives client programmers of a class insight into how to call the class, and gives the language a way to enforce and check for that.

  8. Re:Functional? by Nutello · · Score: 3, Informative

    Eiffel remains inherently an object-oriented language, but in recent times it has borrowed some functionality typical of functional languages, through the new agent mechanism (think of iterators, map and for-all).

  9. Re:what's it good for? by edrugtrader · · Score: 2, Informative

    writing valid code.

    it has pre and post conditions BUILT IN to the system. so it isn't like a comment or an if statement in the function, you say, this function only accepts x if it is between y or z... or any number of boolean statements... if it fails, the system fails. it makes your code very solid.

    --
    MARIJUANA, SHROOMS, X: ONLINE?! - E
  10. Eiffel also has .NET support by jerdenn · · Score: 3, Informative

    Eifel also has plug in and compiler support for Microsoft's .NET initiative. It's pretty cool, actually, because although .NET does not have support for genericity in V1.0 (though it's planned for v2.0), Eifel.NET has overcome this limitation and allows for multiple inheritance and other cool stuff. Take a look here.


    There's also an MSDN article.

    -jerdenn

    1. Re:Eiffel also has .NET support by Admiral+Akbar · · Score: 2, Informative

      The current version of Eiffel for .Net supports the full Eiffel language with no limitations whatsoever, free download available here

      --
      -- You see what happens when you have fun with a stranger in the Alps?
  11. Since you asked... by eyal_bd · · Score: 2, Informative

    Yes there is an example in the distribution. Just go to the example directory and compile.

  12. Re:helloworld in Eiffel by Anonymous Coward · · Score: 1, Informative

    Well, since all Eiffel code involves classes, you need a class creation procedure. Comments are literally indicated with a --

    Here goess

    class ROOT_CLASS (specifying the name of the class)

    inherit ANY -- (Not required, using an example of it's multiple inheritence feature which --Java does not have)

    creation make -- (the creation procedure for this routine, equivalent to C++ *p = new (class))

    feature -- (functions and attributes class has)

    make is -- function name
    local statement : STRING -- local attributes
    do
    create statement.make(0)
    statement := "Hello World!%N"
    io.put_string(statement)
    end

    end

  13. Re:what's it good for? by the_mystic_on_slack · · Score: 5, Informative

    Well, as a current student at the University of Notre Dame, Eiffel was used in our Data Structures course. We basically had two options, Eiffel or C++. Not a lot of people picked up on Eiffel simply because they were stubborn. But as a whole, the Eiffel coders had consistently better projects and overall success. It's purely O-O, so that takes some getting used to. The Design By Contract is an excellent tool for writing perfect code the first time, thus getting a larger systems to market faster. And the libraries that are available are excellent. The STL is simply not good enough relative to EiffelBase. Bertrand Meyer, founder of Eiffel Software, gave three distinguished lectures here this week, and another to our class, and he's very convincing when it comes to his methodologies. It's a great language for teaching O-O and Contracts. Additionally, the same code runs on multiple platforms, and EiffelStudio is available for free for Windows and Linux. EiffelVision also makes it possible to create GUI's that will compile on Windows and Unix too.

  14. Eiffel versus Java by hazzzard · · Score: 5, Informative
    I've used Eiffel quite a bit;
    actually, I was a TA in a class that used Eiffel.
    Being an experienced Java programmer also,
    I would say that:
    • Eiffel's syntax is a matter of taste. However, no matter what taste it is very clean and easy to learn, but sometimes trades this beauty for inefficiencies that ruin your daily life. For example, the semicolons between statements are completely optional, so you can write a:=1; b:=2 or a:=1 b:=2. This does not make the language ambiguous, but it means that you can only catch very few syntax errors at a time (usually, parsers can skip erroneous statements and report syntax errors even after them). The compiler we used to work with (ISE's Eiffel Bench) actually reported only one error at a time which was at some random place in the code. Just imagine the experience of writing a bigger piece and then trying to compile it.
    • What I liked about the language is its consistency, especially in the library. The standard library is a textbook grade collection of container classes and there are standards for naming things. For example, to retrieve something you will always use the function 'item' and not like in Java get, getItem getElementAt and so on. This is at least useful if you don't have an IDE that shows all the possible functions while you are typing.
    • Eiffel has full generics. This even includes bounded genericity, so you can do things like a sorted list of some sort where the sort has to be a subclass of Comparable. This rocks, especially when you compare it to the weak generics that Java is going to have.
    • Full multiple inheritance, even with renaming functions. A matter of taste but it can be useful.
    • Some features of Eiffel are debatable, one of which is covariance for parameters: This means that if you override a method in a subclass, you may make its parameters more specific. This means that you can get dynamic type errors even though the system is mostly statically checked. Also, you can throw out a function when you are inheriting, which also may lead to dynamic type errors. In practice, this won't hurt you (and can even be useful), but hardcore type system people can become upset about it.
    • Overall, Eiffel is a great language for philosophers. In practice, Java is more convenient and even though it's not as consistent and pure it has a more useful library (I don't mean the collections but the other things it comes with). Another aspect is that Sun's Java licensing is nicer than ISE's (Bertrand Meyer's Company). Be careful with them, they are cooperating with the evildoers and integrating Eiffel into .NET.
    • Even though some language features are debatable, there is a great book available that I would even recommend to non-Eiffel folks: Bertrand Meyers OOSC.
    1. Re:Eiffel versus Java by curious.corn · · Score: 1, Informative

      -- quote
      Overall, Eiffel is a great language for philosophers. In practice, Java is more convenient and even though it's not as consistent and pure it has a more useful library (I don't mean the collections but the other things it comes with). Another aspect is that Sun's Java licensing is nicer than ISE's (Bertrand Meyer's Company) [ise.com]. Be careful with them, they are cooperating with the evildoers [microsoft.com] and integrating Eiffel into .NET.
      -- quote

      And are the authors of ISE TCAD... a nasty, evil & wild beast for semiconductor device simulation. We couldn't figure out why out little Term Project simulation on a stinkin' InP device kept behaving as if made of GaAs. Some of the older guys think they just slapped in the same model and relabeled it.

      --
      Mi domando chi à il mandante di tutte le cazzate che faccio - Altan
    2. Re:Eiffel versus Java by Anonymous Coward · · Score: 1, Informative

      wrong site. Check http://www.eiffel.com for ISE's web site.

  15. Re:This is news to me. by g4dget · · Score: 3, Informative
    As a language, SmartEiffel is similar to Java or C#, but it has language support for genericity, operator overloading, multiple inheritance, lexical closures, expanded types, and pre/post-conditions. Eiffel's syntax is more similar to Pascal (probably the most annoying part of Eiffel's syntax is that you cannot declare variables at the point of first use).

    What SmartEiffel lacks is good support for dynamic loading and reflection. Those are crucial features for many real-world applications these days, and given SmartEiffel's compilation strategy, they'll be very difficult to add.

    SmartEiffel's performance was disappointing last time I benchmarked it--Sun Java beat it handily on equivalent problems. In principle, given its compilation strategy and static semantics, SmartEiffel should be able to yield very high performance code.

  16. Re:what's it good for? by HiThere · · Score: 5, Informative

    What's it good for?

    It lets you ensure that the program you write does what you intend. (This is called Design by Contract. It works better than any alternative I've encountered.)

    It manages multiple inheritance and limited generics in a way that C++ can't even try to approach. (Ada can do it, but it's a lot more work.)

    And despite what has been said earlier, it isn't a memory hog during compilation. Not compared with the current competition. (Unless you are comparing it with C, of course.)

    It's got a built-in garbage collector. Many languages do now, but it was quite unusual at the time, and it's still one of only a few compilable languages (excepting gcj == java) that have a gc.

    It's got a good documentation system. Better than javadoc. (But the presentation isn't as nice unless you purchase the ISE development platform...which I don't recommend.)

    --

    I think we've pushed this "anyone can grow up to be president" thing too far.
  17. Re:what's it good for? by Anonymous Coward · · Score: 1, Informative

    In addition to all the great OO design by contract features mentioned by everybody I would add this:

    An interface specification for a class can be trivially (and with smarteiffel or ISE tools automaticly) derived from the source. You won't have to go and learn JavaDoc or doxygen or anything. Take a look at http://smarteiffel.loria.fr/libraries/
    for an example of automaticly generated eiffel class interface docs.

    To me this is worth a lot. I find that when I write eiffel, I go more slowly than in C or perl (full OO and genericity make you want to think through your design more), but as others have said, long, complicated codes actually tend to work right or require only trivial fixes the first time. Not only that, but when they do, I have lovely documentation that describes them!

    The only major problem is the lack of available libraries, and this situation is improving. There is a POSIX wrapper now, which was a major missing piece of the puzzle in my opinion.

    Also, wrapping C libraries can be a useful exercise. OpenGL for example has bazillions of weird conditions that must be met for things to work right, my own little toy OpenGL wrapper formalizes some of these with preconditions and has already caught me a few times. (There is a more serious eiffel OpenGL wrapper out there but it seems to still be fermenting).

  18. open source gui/database project for SE .. by elj · · Score: 5, Informative
    The ELJ project - http://elj.sourceforge.net/ has been successful in providing much needed multiplatform libraries to SmallEiffel/SmartEiffel developers.

    The wxEiffel GUI library provides a comprehensive interface to the wxWindows GUI. Database interfaces to Firebird, sqlite, berkeley db, mysql, postgres.

    There are even libraries for Regular Expressions and for those who like the perl way of doing things - see Perlish.

    The 0.5 release announcement in comp.os.linux.announce gives more details. The ELJ project is undertaking the necessary work to move from SmallEiffel to SmartEiffel.

    There are many other open source Eiffel projects:

    • GOBO - lex, yacc, xml, data structures, date/time libraries and
    • eposix which aims to provide a a 100% complete Eiffel binding to Standard C and POSIX.

    Eiffel has come a long way over the years. Misconceptions still abound. You can now develop multiplatform applications using open source Eiffel tools and libraries. There are small hurdles to jump as there are with anything. Give it a try and become involved if there is something about Eiffel which you find appealing.

  19. Some generally unknown facts about Eiffel by name_already_in_use · · Score: 5, Informative

    Eiffel has been around for about 17 years, so a lot of people who used it a long time ago and haven't used it since moan about old problems with the language THAT SIMPLY DON'T APPLY MORE. Here is an up to date list of cool things about Eiffel:

    - Compilation is not so slow anymore.

    - It a full .NET language. Eiffel Software have made a Visual Studio plug-in, and EiffelStudio (previously EiffelBench, or EBench) can also be used to make .NET or non-.NET applications.

    - EiffelStudio is the IDE for creating Eiffel applications was COMPLETELY REWRITTEN a couple of years ago, so previous uses of EiffelBench won't recognise it anymore. The new studio is better in every respect and has the best class browsing facilities you will find in any IDE ANYWHERE (I'm not kidding).

    - EiffelStudio was written using Eiffel Software's Vision2 library - a 100% platform independent library meaning it is identical on Windows and *nix platforms. You can use Vision2 to make your own cross-platform interfaces with real ease.

    - The .NET implementation of Eiffel adds some programming mechanisms that are NOT available in Java, C#, C++. Namely these are multiple inheritance of classes, genericity (true generics), design by contract (pre- and post- conditions/assertation to improve software reliabilty and greatly ease the debugging process).

    - Eiffel Software provide a FREE version of EiffelStudio and Envision! (the .NET plug-in) from there web site.

    There's loads more to this language, but aint got time to talk about it, so just check it out yourself.

    --


    Rake Free + Mac Poker: CardCrusade
  20. Sather-K by haruchai · · Score: 2, Informative

    This may be of interest to you.
    http://www.info.uni-karlsruhe.de/~sather/dl. html

    I can't say how much development is being done on this as my German is very basic but it doesn't seem to be a dead project.

    --
    Pain is merely failure leaving the body
  21. Free Linux version of EiffelStudio by Admiral+Akbar · · Score: 3, Informative

    The free version of Eiffel Studio for linux is available here.

    This is an example of an extremely well written Gtk application and provides gtk bindings as well as multi-platform libraries that allow applications to run on, if forced to, Windows with absolutely no change of code yet retaining full platform look and feel. Very cool stuff indeed

    --
    -- You see what happens when you have fun with a stranger in the Alps?
  22. Re:helloworld in Eiffel by Anonymous Coward · · Score: 1, Informative

    Forth beats all of you:

    'Hello World' .

  23. Programming Environment for Eiffel by willamowius · · Score: 5, Informative

    For a nice IDE for Eiffel you should get the Eiffel extension for the SNiFF+ environment

    http://www.willamowius.de/eiffel.html

    There are free versions of SNiFF+ for projects up to 200 (?) classes which should be ok for starters.

  24. Re:Why not a GCC frontend? by Anonymous Coward · · Score: 1, Informative

    1. Because RMS forbids it.
    2. GCC is a GPL'd program.

    A front end for GCC would make the front end also a GPL'd program. This has been hashed over a million and one times in the GCC mailing list.

  25. Re:Price of Eiffel's IDE by majordomo · · Score: 2, Informative

    The IDE is free only for non-commercial use...

  26. Re:is there by jayed_99 · · Score: 2, Informative
    I do have to point out Camerone Day. It is *way* up on the list of legendary-battles-that-really-happened.

    Sure, it might be the French *Foreign* Legion. But there sure were some French guys there driving the train.

    Yes, the vast majority of WWII was not too pretty...however, Dien Bien Phu -- while a failure, was not a surrender. And that difference is incredibly important. Dien Bien Phu would be impressive by itself. But Camerone gives the French, and the French military, something that no one will ever be able to take away. And if you don't understand what I just said, then I will never be able to explain it to you.

    The day after Camerone Day, like the day after Veteran's Day, is a day that I will always manage to get off...because I'll be so hungover that I wouldn't be able to work.


    -- An Anglo-American that spent many, many years in the U.S. Army (with a large amount of time being shot at in Panama, Iraq, Bosnia and Somalia).

  27. Re:what's it good for? by auntfloyd · · Score: 4, Informative

    and it's still one of only a few compilable languages (excepting gcj == java) that have a gc.

    There is nothing special about a "compilable language" (whatever that means) using GC. Lisp has been doing it for decades (and yes, most Lisp systems are native code compilers, such as CMUCL, Allegro, CormanLisp, SBCL, etc). Oberon-2 compilers use GC, including the open source OOC and Oberon System3 from ETH. Ada was designed such that GC could be implemented, but it rarely is. Many FP languages use GC, such as Haskell. Haskell compilers, such as GHC, NHC, and HBC all use GC.

    If you haven't gotten the point yet, there is nothing special about implementing languages using garbage collection, and furthermore, there was nothing innovative when Meyer decided to use it for Eiffel.