EiffelStudio Goes Open 219
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."
About time (Score:5, Funny)
Re:About time (Score:3, Funny)
That, and it sounds French...
Re:About time (Score:4, Funny)
Ocaml (Score:2)
Oh Thank God (Score:3, Funny)
I was beginning to get concerned about the incredible lack of object oriented programming languages currently available.
Fortunately, there's now another one to choose from that is now free.
Re:Oh Thank God (Score:5, Informative)
It is true that Eiffel is not the only language with some support for OO out there. It is, however, the only industrial strictly object-oriented language with static typing enforced thoroughly on all levels. This is different from the much more relaxed model offered by the likes of Java and C#. Also, Eiffel is the only such language which fully incorporates Design by Contract (in fact, it is where it originates from) - and by that I mean not only in the language itself, but also in standard and all 3rd-party libraries as well.
So, yes, there are many good reasons to choose Eiffel over other OO languages.
Re:Oh Thank God (Score:3, Insightful)
1) Best tool for producing the application
2) The tool you can find people that know how to use
3) The tool with the best support
Well, there are tons of places that Eiffel is the best tool for the job. I would even imagine that there are circumstances where the support is there. Problem is finding the people that know how to use it.
I've been goofing with
Re:Oh Thank God (Score:4, Insightful)
"Another great example of a language that is probably better but has never picked up steam is Scheme. Every compiler developer in the world loves scheme. It is by far the most heavily optimized compiled language on the planet. It has great merits. But the fact is that with the exception of the scheme compilers written in scheme and and an ocassional university project", which is what it was designed for: Scheme was meant to be simple rather than useful, in order to further the study of such things as program correctness (software algorthims studied as mathematics) by academia. The industrial version is Common Lisp.
When discussing the right tool for the job, comments regarding the attempt to use a thermometer as a hammer (Scheme vs Common Lisp) make it hard to take your C++ vs Eiffel seriously, especially since you seem to think a 21 year old language is "new". It is old enough to drink.
Re:Oh Thank God (Score:3, Funny)
I'm not sure that drunken languages are an advantage
Re:Oh Thank God (Score:2)
Jedidiah
Re:Extreme O-O (Score:2)
Eiffel Contracts (Score:5, Informative)
To make a long story short ... (Score:5, Funny)
Re:To make a long story short ... (Score:2)
Eiffel Contracts are syntactic sugar (Score:2)
Disclosure: I haven't used Eiffel since about 1998 when my undergrad degree software engineering courses were taught using the language, so I'm not complete current on the language.
Re:Eiffel Contracts are syntactic sugar (Score:3, Insightful)
You can acquire and release resources in many languages, too, but using the RIAA idiom in C++ you never forget the latter, while in languages that rely on finally or Dispose or whatever, you can.
yeah? really? (Score:3, Insightful)
Ah, and this has been demonstrated how? Programming language designers like to dream about how their features are going to lead to fewer bugs, lower costs, and all that, but there is almost no acceptable experimental data to support their claims.
Re:yeah? really? (Score:2)
The Real Link (Score:5, Informative)
http://www.eiffel.com/products/studio/ [eiffel.com]
Also there should be a PDF warning on the ECMA standards link, just a thought.
Re:The Real Link (Score:3, Informative)
Depending on what browser you're using, you might actually be able to have a reasonably accurate automatic PDF warning system. It's not perfect (it goes by the name of the link, so if you've got a download page in between it marks it as PDF, and if there's a file without a PDF extension that is PDF, it doesn't get noted), but it works reasonably well. (Obviously the best solution is to get the linkmaker to do it properly, but if t
flashback (Score:5, Interesting)
Re:flashback (Score:2)
I'm confused. It would seem that Eiffel is a Software Engineer's language [72.14.203.104], designed (like ADA) specificly for large scale programs [ntecs.de]. Like ADA, there are programmer constraint issues...but these are in place specificly for such longterm, large scale programs, yes?
According to the ECMA [ecma-international.org]:
Re:flashback (Score:2)
the "pet rock" of programming languages (Score:3, Insightful)
As a language, Eiffel doesn't make it more convenient to express a problem to receive a good solution, it just makes the programmer follow the public speaker's maxim:
Programming by contract is essentially just writing twice as many unit tests, wrapped all around the code that is supposed to be doing the work. It's even easier to write bad tests when it's right next to the code being tested, so why bother?
Bertie, give it up already!
Re:the "pet rock" of programming languages (Score:3, Funny)
Re:the "pet rock" of programming languages (Score:2)
Effiel was the first language with garbage collection if I remember correctly.
Re:the "pet rock" of programming languages (Score:2)
"For many people, Java is the first language they've used with automatic garbage collection. While it may seem like new technology, it's actually been around for a very long time and is a well studied field. This book is a good tour through all the gritty details of many GC algorithms and covers the tradeoffs that distinguish them." -James Gosling
Re:the "pet rock" of programming languages (Score:2)
Re:the "pet rock" of programming languages (Score:2, Funny)
Somehow I'm missing (5)
Re:the "pet rock" of programming languages (Score:2)
OTOH, I don't know if Lisp had garbage collection from the beginning or not; it may be the case that Lisp was not the first language to use it. But I'm pretty sure it was.
Re:the "pet rock" of programming languages (Score:2)
Bzzzzt. Java mainly followed in the footsteps of C++. Eiffel is quite different.
Effiel was the first language with garbage collection if I remember correctly.
Bzzzt. Lisp environements had GC by the early to mid '70s.
Re:the "pet rock" of programming languages (Score:2)
Re:the "pet rock" of programming languages (Score:3, Informative)
Er... you don't recall correctly. Lisp had garbage collection in the early 60's (in fact, John McCarthy invented garbage collection specifically for Lisp). Eiffel isn't even the first OO language with GC - that honour goes to Simula (also the first OO language ever).
Re:the "pet rock" of programming languages (Score:2, Interesting)
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
Re:the "pet rock" of programming languages (Score:2)
Re:the "pet rock" of programming languages (Score:3, Informative)
If that's what you're looking for then I would suggest that you take some time to check out JML [iastate.edu] and ESC/Java2 [secure.ucd.ie] which provides almost exactly that
Re:the "pet rock" of programming languages (Score:2)
If we could just shoot them, then we wouldn't need to...no, must not think bad thoughts
Re:the "pet rock" of programming languages (Score:2)
According to Wikipedia [wikipedia.org] John McCarthy invented garbage collection sometime around 1959, specifically for implementing Lisp.
Re:the "pet rock" of programming languages (Score:2)
Re:the "pet rock" of programming languages (Score:2)
Re:the "pet rock" of programming languages (Score:2)
Re:the "pet rock" of programming languages (Score:5, Informative)
Programming by contract is writing your unit testing harness as assertions while you write the code, and having those assertions respect inheritance elegantly, saving you considerable work if you actually have any sort of class heirarchy built up in your code. Programming by contract is about stating clearly how you intend your code to work so that it is much easier to determine whether the code you wrote actually does what is intended or not. Programming by contract is about providing clear and explicit documentation of the interfaces making code reuse and code maintainability far easier.
Programming by contract is not the right choice for every programming project. Sometimes you want flexibility. Sometimes rapid adaptability is more valuable than correctness or maintability. Sometimes, however, it is not. I don't draw up careful plans to build a treehouse, I hold the wood where I want it to go and cut it to fit: being able to adapt to the exact organic shape of the tree is more important than the strict integrity and finish of the treehouse. Likewise I don't build home by nailing 2x4's together and cutting the next chunk to fit: Having a truly solid structure, with all the walls and floors are properly aligned is more important than the speed with which I can get started building something. Different projects have different needs, and there are plenty of projects for which Design by Contract is a fantastic way to go. Just because you, personally, don't happen to work on those projects, doesn't invalidate its usefulness for others who do.
Jedidiah.
Re:the "pet rock" of programming languages (Score:2)
It seems reasonable that making formal assertions about how programs work ought to help create better software (along some dimension of "better"); even though that's never been rigorously demonstrated, let's just stipulate that.
That still leaves the question whether design-by-contract is the right way of doing that, and whether Eiffel is the language to do it in. Personally, I don't think so: I think you're more likely to write so
Re:the "pet rock" of programming languages (Score:2)
I have no doubt that you're right; but I have to ask...so what? You make it sound as if this is a bad thing; I'd like to know what you'd have preffered.
By releasing this to the public in this manner, Eiffel has a chance to stay alive and to be adopted by a community which will use and enhance it. Mind you, I can relate to your attitude of "what a kiss off, who cares?". That is exactly how I felt about the open-sourceing of minix years back.
Eiffel is pretty fast... (Score:2, Interesting)
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
Re:Eiffel is pretty fast... (Score:2)
Re:Eiffel is pretty fast... (Score:2)
Which is bad if you just want to bash out code, but great if you want serious long term maintainability. Let's face it the ultimate "There's More Than One Way To Do It" language (hell, it's their motto) is Perl, and we all know h
Re:Eiffel is pretty fast... (Score:2)
Re:Eiffel is pretty fast... (Score:2)
I love Ruby as well for it's smalltalk-lik
Re:Eiffel is pretty fast... (Score:2)
Talk about Situational Irony (Score:2)
Re:Talk about Situational Irony (Score:4, Interesting)
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-freesoftwa
Re:Talk about Situational Irony (Score:2)
Re:Talk about Situational Irony (Score:2)
always wanted to try it (Score:3, Informative)
I've wondered just how much a language can compensate for programmer laziness, carelessness, or just lack of ability. This question recently came up in a discussion. I am somewhat confident that software or languages can be designed to force good behaviour and eliminate (certain types of) mistakes. After all, there are no memory leaks in scripting languages, right? And you can't write to memory that's not yours. In lisp, it's harder to make off-by-one mistakes than in some other languages. Java forces you to handle error conditions with checked exceptions.
Yeah, I'm going to have to try this eiffel thing.
Re:always wanted to try it (Score:3, Interesting)
I don't think people will use eiffel for personal projects because there is no sense in put
Back in the day, before C++ was the "winner"... (Score:4, Informative)
Re:Back in the day, before C++ was the "winner"... (Score:2)
And the more time has gone by, the more it looks like either of Eiffel of Smalltalk would have been far better choices. When it comes to clean OO design both Eiffel and Smalltalk are way ahead of C++. All C++ really had going for it in com
Re:Back in the day, before C++ was the "winner"... (Score:2)
Re:Back in the day, before C++ was the "winner"... (Score:2)
Eventually I'm going to decide to use D and write
Re:Back in the day, before C++ was the "winner"... (Score:2)
And neither are game engines.
D programming language (Score:2, Informative)
http://www.digitalmars.com/d/ [digitalmars.com]
Re:D programming language (Score:2, Insightful)
It's sad but I fear the D programming language will face the same fait as Eiffel: Not enough used! But I've several times said how this can be solved. I really hope people would listen to my suggestion since I think the D language is well worth the effort.
In OpenSource no matter what you do, to become successful you have to be the number one in your area. Only then developers are faced to delve into
Re:D programming language (Score:2)
A stable cross-platform GUI library is also needed. WxWidgets is good on Windows and UNIX but only "OK" on MacOS X. A stable release of WxD [sourceforge.net] will do. DWT [dsource.org] (D port of Java's SWT) seems promising also but AFAIK only available as a win32-only alpha release so far. D bindings for Qt 4 w
Re:D programming language (Score:2)
Interesting page, but AFAICT "programming language hype index" would be a fairer characterisation of the information. It's based on the number of hits returned by popular search engines, rather than any objective metric to do with number of programmers currently using the language, rate at which new code is currently being written in the language, or similar.
.NET/Mono (Score:2)
In any event, I welcome this move. I'm definitely adding Eiffel to my list of languages to learn. It is a neat language that has a lot of advantages. In fact at one time
Re:.NET/Mono (Score:3, Informative)
Jedidiah.
Now Eiffel too can have a stupid name (Score:2)
That's a death knell if ever I heard one.
Progress or abandonware? (Score:3, Informative)
Eiffel is kind of dated. Even its successor, Sather [berkeley.edu], didn't catch on, even though Sather has been out under the GPL since 1999. There are some great ideas in there, but the language was a bit too clunky. It's kind of like Ada and Modula in that respect; the concepts are sound but the syntax is too bulky to become popular.
On the other hand, all the languages listed here protect against buffer overflows without requiring an interpretive run-time system.
Re:Syntax or Syntax? (Score:2)
OTOH, I remember the first time I opened one of my Python files with an editor that automatically converted tabs to spaces...and 8 spaces at that! (My default is 3 spaces/tab...and indent with tabs, but some of the code came from someone else, who used spaces to indent, and the editor assumed without a
fully open source? (Score:2)
Or is this one of those pseudo-open source releases, in which a large body of code gets released under an open source license, but in order to compile and run it, you need proprietary tools from the same vendor that released the code?
Eiffel (Score:2)
The many uses of Design by Contract (Score:2, Interesting)
Let's do the Checklist: (Score:2)
- Avantgarde Language known for neat concepts, hippness and good results? Check.
- Compiled rather than the bazillion interpreted PLs I've got allready (Python, Perl, PHP, etc...)? Check.
- No C/C++ suckage even though it's a compiled language? Check.
- Comes with neat OSS IDE now costing 0 as opposed to the 4900$ last week? Check.
- Zero fuss hassle free cross-plattform deving? Check.
- Zero fuss ultra hassle free cross-plattform GUI kit? Dunno... gotta find that out.
Mmmmh
Re:Let's do the Checklist: (Score:2)
It has a cross platform toolkit, using native look in Windows, Linux (GTK), and other Unices (Motif); I don't know about OS X. If you want to get into the guts of it, you can go through the abstract layer and work more closely to the native toolkit (at the expense of portability, obviously).
I tried it a little some time ago, not too much. But it seems to be as hassle free as you can get (which is not "100% hassle free").
Eiffel's not too bad, EiffelStudio is (Score:2)
EiffelStudio is nowhere near as nice as Eiffel. The IDE is clunky and in some ways quite antiquated
Not just an Eiffel Compiler (Score:2)
No one notes it here, but besides the Eiffel Compiler (anyways, we have had a GPL eiffel compiler [loria.fr] for about 10 years), the guys at Eiffel.com are releasing not just the compiler, but also one of the most complete IDEs you can find under a Free license.
It has a project editor, integrated debugger, including browsing the object structure in run time, a class browser, an integrated documentation generator, and you can write your designs in BON (a graphical notation, UML-style) and flip back and forth from di
Not just contracts (Score:2)
GPL? (Score:2)
Re:Info please? (Score:5, Informative)
Re:Info please? (Score:5, Informative)
For example a sqrt function will require x >= 0, that is the calling function must have checked. Since this is specifically listed in the contract your calling function is expected to be able to indicated how it knows that x >= 0 before computing sqrt(x).
The second big thing is that the language is pretty high level and you just give hints to the compiler about how to implement things (sort of like Oracle SQL) unlike Java or C++ where implementation details are definitely part of the program.
That's pretty much it.
Re:Info please? (Score:2)
Re:Info please? (Score:2)
My example is a little simple to make it clear why this isn't such a good idea. Basically using your method (called function checks) you are often testing the same criteria N times. Lets say you have a function like:
A which will end up calling B which end up calling C which will end up calling D. D has criteria (x) shared by C,B
Re:Info please? (Score:5, Informative)
Eiffel has been around for a long time, and is a mature language. What does it offer? A very clean and well designed Object Oriented language with a very clear and readable syntax and great support for Design by Contract. The principle behind Design by Contract is simple enough: objects, and methods provide contracts - providing you meet their stated requirements, the guarantee things in return. Statically typed languages offer some level of this already: you have to provide paramters of the right datatype, and it guarantees the datatype of the return type. Design by Contract essentially just extends this principle to allow for much more expressive contracts than just type signatures, and things like object invariants (properties of an object that are guaranteed not to change). The result is a much clearer statement of intention as to how code should work, and a powerful test harness that massively speeds up the test/debug cycle. In theory you can achieve this by liberally sprinkling assertions through your code. The advantage of having a language with explicit support for Design by Contract is that things like inheritance of contracts and invariants are all handled automatically and elegantly etc.
As well as this release of EiffelStudio as open source, there's SmartEiffel [loria.fr] which is an open source Eiffel compiler (which supports a number of extra features beyond what is given in the recent ECMA spec).
Jedidiah.
Re:Info please? (Score:2)
Re:Info please? (Score:2)
Re:Differences (Score:3, Interesting)
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 [debian.org], 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,
Re:Differences (Score:3, Funny)
Wikipedia's entry gives the secret to this raw speed:
"Eiffel is generally closely connected to C: three of the four Eiffel compilers output no object or machine code, but only C source code as an intermediate language, to submit to a C compiler, for optimizing and portability."
Re:Differences (Score:5, Informative)
2) Design-by-contract. Think of it as taking type-safety squared. Just like static-typed languages are more verbose but compile-time safer than dynamic-type languages (don't argue static/dynamic, you know damn well what I mean), design-by-contract is moreso.
3) Extremely generic-oriented and had generics designed in, as opposed to the after-the-fact hacks that appeared in C++, Java, and C#. And it has multiple inheritence.
Plus, I'm also very disappointed by all the languages you listed being non-generic Algol family languages. That's like asking someone "what's your favourite beverage - Coke, Pepsi, or RC Cola?" The example languages you listed are all of the same line of descent (although Ruby pulls more from SmallTalk than the others). Plus, most of the languages you mentioned are just a mishmash of features. Eiffel is more like "Lisp" in the mentality of design, which is "keep the language simple but make it expressive enough that complex concepts can be expressed simply anyways".
Such languages tend to be much more intelligently structured, safe, and extendable, but also fall short in legibility.
Basically it is similar to Ada and C++, with a little functional programming thrown in. The problem is that most attempts to make C++ "safer" have focussed on ripping out language features like multiple inheritence and templates that made it "too complicated" but were important, useful features. Eiffel takes the alternate approach - instead of paring down the featureset, it pares down the language while actually expanding the featureset.
And if you've never coded with generics and still just typecast your container data: get out of my sight you disgusting hacker. OOP without generics is like a car that only turns left - sure you can go right, just do three lefts.
Re:Differences (Score:2)
I disagree here - GP listed Ruby, which definitely is not in the Algol family - having a syntax that doesn't look like Lisp/ML/Haskell does not mean it cannot be functional.
Every Ruby statement is also an expression that has a return value. It basically means you can (and a lot of people do) use Ruby as a functional language.
Re:Differences (Score:2)
Re:Differences (Score:2)
True hacker just make 3/4th circle to left to make single right turn. Hence 3/4 is more efficient than 1...
You bastard, you made me feel sad...
Re:Differences (Score:2)
More than what? Ruby? Parent did list that...
Ruby is a very simple language, with quite simple syntax, and includes standard libraries that provide enough features that you think they're built into the language itself. Open up a Ruby shell, and it's as easy to hack around in as Perl, yet often looks cleaner than Python -- nice synta
Re:this is why /. is dead and digg triumphant (Score:3)
Sure, Digg can deliver some news faster, but then I prefer the depth of the userbase on Slashdot, the moderation system, the fact that it is frequented by more than just 16 year olds and of course its lovely green.
If Digg is what you want, Digg is what you should get, so piss off.
Re:this is why /. is dead and digg triumphant (Score:2)
Re:this is why /. is dead and digg triumphant (Score:2)
Laughing out loud!
The depth of the user base? Oh yes, the deep levels of trolls, flamebait posters, and GNAA members really add to the community here.
The moderation system? Abused by those same trolls and idiots; anyone with a dissenting view is modded off the page.
More than just 16 year olds? Ha, you've got me rolling on the floor now...
I'm with
Re: (Score:2)
tools for learning (Score:2)
I mean, one could extend this to just about anything, though I'm curious as to how you would describe this technique in non-CS specific terms. Would you consider the relevant variables that the learning context
Re: (Score:2)
Re:It's true. The french name is really irritating (Score:2, Insightful)
"I hate everything french for all the basic reasons most people hate the french which are all more or less deeply rooted in their insurmountable arrogance".
Yeah, right. Those arrogant French, thinking they are God's chosen people! Don't they know that *A