Slashdot Mirror


EiffelStudio Goes Open

WeiszNet writes "Bertrand Meyer, the creator of Eiffel the language and CTO of Eiffel Software in Santa Barbara, CA has announced in his Software Architecture course at ETH Zurich that the company's flagship product - EiffelStudio was released under the GPL today. Here is the press release: and the project's page. Eiffel is an object oriented programming language supporting contracts. Last year the international standard (ECMA) for Eiffel was released and now the initiative to go open has been taken."

8 of 219 comments (clear)

  1. flashback by agendi · · Score: 5, Interesting

    I'm having first year comp sci flashback! I remember at the time being taught Eiffel as my first OO langage used to teach OO techniques and design - I hated it back then it felt clunky, overly protective and claustraphobic. Now after almost 10 years as a programmer every so often I crack open the old textbooks and think "wow.. that is rather elegent and expressive". Eiffel is engineered/designed - it is deliberately not suited if all you want to do is hack about. It's funny, only yesterday I was using Eiffel as an example to my IT team as a language that forced strong contractual based interfaces.

    --
    I just can't be bothered.
  2. Eiffel is pretty fast... by dudeX · · Score: 2, Interesting

    At least according to this website I found via the Artima.com website.
    It lets you compare any two languages that have compilers in Linux and it gives you a graph of speed vs memory usage in various kinds of programming patterns such as matrix math, branchy programs, etc.
    Eiffel (compiled with SmartEiffel) vs C++ (GCC 3.3.4) is actually slightly faster than C++ in almost all of the tests that the author came up with. And the memory usage is just as efficient as C++.

    I've looked at Eiffel, but the syntax isn't very pretty. However, for important projects I think Eiffel will be the right language for the job.

  3. Re:Differences by Coryoth · · Score: 2, Interesting

    What are the differences between Eiffel and other free object oriented programming languages? What does Eiffel have that Ruby, Python, and Java do not?

    Compared to Ruby, Python and Java the biggest thing Eiffel has going for it is raw speed. Consider the benchmarks and you'll see Eiffel is much much faster than Java, with considerably less memory use. You get that sort of performance from a langauge with an exceptionally clean, well designed and engineered OO system, and great support for Design by Contract, and a very clear readable syntax: learning Eiffel is very easy.

    If you're doing very dynamic work that really calls for the flexibility of Python or Ruby, then Eiffel probably isn't for you. If you want something to build robust complex large scale systems then Eiffel is actually better than Java for producing robust, well documented, reusable, maintainable code - and its faster to boot. Java, of course, has its own advantages in terms of "run anywhere" and its huge standard library, but Eiffel is well worth acquainting yourself with.

    Jedidiah.

  4. Re:the "pet rock" of programming languages by swilly · · Score: 2, Interesting
    Wasn't java based off it?

    Not even close. Java most resembles Object Pascal with C++ friendly syntax.

    Effiel was the first language with garbage collection if I remember correctly.

    Lisp is the first language that I'm aware of to use it, but I bet someone else did it even earlier. Most functional languages use garbage collection. Eiffel is the first statically typed language I'm aware of to use garbage collection (as part of the language itself, not implemented in a library). This is probably the area where Eiffel most influenced Java.

    Eiffel's most notable features are Design by Contract, Multiple Inheritance, and Generics, and it's been doing all that for over fifteen years (as opposed to Java and C# which only recently figured out Generics). Design by Contract is particularly nice if you are willing to spend a little extra effort to write very reliable code, but it would be even better if there were good theorum provers out there to verify that contracts will always hold and warn if they don't. The would be much more developer friendly than the predicate calculus normally associated with formal methods.

    Eiffel's biggest drawback (to me) is the horrible Pascal like syntax. Some of Meyer's philosophy has also made the API a little clumsy in places. His belief that a method should never return a value and have a side effect is particularly bad. Writing a stack with get_top() and remove_top() instead of pop() is a little weird.

  5. Re:Talk about Situational Irony by jbolden · · Score: 3, Interesting

    You aren't remembering correctly, he went after all open source and free software. His biggest criticism of Stallman and Linus was for not distancing the free software movement from the NRA when Raymond tried to link the two (he held Stallman more responsible since Linus being a Finn might not have known what the NRA was...). He attacked FreeBSD explicitly for poor quality.

    What is funny though he lists a whole bunch of reasons vendors turn something open source that pretty much amount to "it isn't worth keeping as commercial product for reason X" where he lists the possible X's. Anyway here is a reminder:

    http://www.apostate.com/programming/bm-freesoftwar e.html

  6. Re:always wanted to try it by killjoe · · Score: 2, Interesting

    The thing is that companies by and large don't want to hire great programmers because they cost too much. They would rather hire a bunch of mediocre or crap programmers and make them use a bondage language like java or eiffel. The idea is that you need one sort of smart guy to design the application (writing the interfaces, contracts etc) and then an army of easily replaceable monkeys to do the actual implementation.

    I don't think people will use eiffel for personal projects because there is no sense in putting yourself into bondage like that. The super l33t programmers seems to prefer really fluid languages like lisp and smalltalk.

    --
    evil is as evil does
  7. Syntax or Syntax? by Anonymous Coward · · Score: 1, Interesting

    "It's kind of like Ada and Modula in that respect; the concepts are sound but the syntax is too bulky to become popular."

    Unfortunately when a programmer tosses around the word "syntax". What they really mean is "Hey this isn't C/C++"! Even Python's whitespaces gets chewed up, and spat out. That's partially why Java has done as well as it has with it's "feels like" syntax.

  8. The many uses of Design by Contract by ribuck · · Score: 2, Interesting
    Design by Contract, how do I love thee, let me count the ways...
    • DbC is a documentation tool. It specifies the behaviour of a class concisely and precisely.
    • DbC is a design tool. The application is specified by means of classes equipped with assertions (I call this Contract Driven Design, or CoDD).
    • DbC is an enhancement tool. Assertions can be added to existing code to make it more robust. I call this Contract Hardening, or CoHa.
    • DbC is a maintenance tool. Assertions can be added to existing code to confirm (or improve) understanding of the behaviour of existing code prior to changes being made.
    • DbC is a refactoring tool. Assertions make sure that desirable behaviour is retained even in the face of extensive refactoring. Eiffel code is so malleable when it is contract-equipped.
    • Dbc is a correctness tool. Assertions in parent classes help ensure that child classes (which inherit the parents' assertions) are substitutable.
    • DbC is an error-handling tool. Assertions define the success or failure of a routine and direct its error recovery during exception handling.
    • DbC is a concurrency tool. Well, it will be when SCOOP is fully-implemented, because preconditions play a key role in synchronization.
    • DbC is a testing tool. It enables a tool like AutoTest to stress-test your code for you, based on the contracts that you have specified.
    • DbC is a project management tool, for maintaining and enforcing specifications.

    Have I missed any?

    By the way, here are some useful links related to the newly-open-sourced EiffelStudio, and you can find additional Eiffel libraries and tools at EiffelZone.