Monday, September 18, 2006


Whither SmartEiffel?

A few fairly innocent questions by Phil Taylor on the SmartEiffel mailing list led to an extraordinary amount of vitriol from main SmartEiffel contributors. In the end, one of the main SmartEiffel users outside the inner SmartEiffel circules decided to leave as well. Roger Browne, main contributor to this blog wrote:
That creates an atmosphere in which I can't contribute usefully to SmartEiffel. Bye.
Strange how the one compiler that opened up Eiffel to the open source community is led by people who have a talent and willingness to plant the boot into the face of everyone actually using their product. Very sad.

Outside the core SmartEiffel contributors we now only have Daniel F. Moisset, the guy behind the SmartEiffel Transitional release and Cyril Adrian, who wrote in the same thread:
Note that ESE will be my last attempt to do something viable with SmartEiffel. I'm quite fed up with hearing that the project is not open enough when we have been doing all we could to open up, KNOWING THAT SmartEiffel is not easily "openable" itself since it is primarily a research project (and the lab is a bit lukewarm in that respect).
Kinda vague. Greg C., another Eiffelist who has been around, wrote:
Over two hundred messages on this one lame topic?

That's it. I'm done.
Let's just hope that the Gobo Eiffel compiler will be ready soon. Although ISE Eiffel is open source, compiling a simple program with ISE Eiffel isn't simple. And although with my new laptop compilation is fast, it wasn't with my old Pentium III 650. And ISE takes up a huge amount of disk space. The story changes of course for large programs, where ISE Eiffel is a must. Recompilation speed with ISE is blindingly fast in such cases, and painful with the SmartEiffel approach.


> Let's just hope that the Gobo Eiffel compiler will be ready soon.

It won't be ready before the end of the year, that's for sure. I'm currently in the US for 2 more weeks, then I will move to a new house, then Karine and I will go to New Caledonia for our honeymoon, then go again to the US for work, and it will already be Christmas.

Hopefully I will have more time to devote to Gobo next year.
GEC may not be ready for some time, but it can be quite useful already.

I routinely use it to compile gexslt.

As for the SmartEiffel team, they are quite mad.
> As for the SmartEiffel team,
> they are quite mad.

Which of the following definitins apply to your use of 'mad'?

1. mentally disturbed; deranged; insane; demented.
2. enraged; greatly provoked or irritated; angry.
3. extremely foolish or unwise; imprudent; irrational: a mad scheme to invade France.
4. wildly excited or confused: frantic: mad haste.
5. overcome by desire, eagerness, enthusiasm, etc.; excessively or uncontrollably fond; infatuated: He's mad about the opera.
6. wildly gay or merry; enjoyably hilarious: to have a mad time at the Mardi Gras.

"mad." Unabridged (v 1.0.1). Based on the Random House Unabridged Dictionary, © Random House, Inc. 2006. 19 Sep. 2006.
Berend wrote, "Although ISE Eiffel is open source, compiling a simple program with ISE Eiffel isn't simple."

Well I just did this in well under a minute, using EiffelStudio 5.7.63625:

1. Start EiffelStudio.

2. Select the option to create a basic application from the start-up dialog.

3. Choose a location for the project.

4. Wait a few seconds for it to compile.

5. It now shows the root class automatically in the editor (yay!), so I implemented its main routine by entering: print ("Hello world")

6. F5 to compile (yippee, another 5.7 enhancement!) and run it.

7. A console window opens displaying "Hello world".

I can't imagine a simpler way to write a simple program :-)
Peter, once one has learned the ins and outs of EiffelStudio it's easy enough to compile a simple program.

But for the novice who has already used their text editor to write hello_world.e, it's not at all obvious how to compile that using EiffelStudio.

Should one "Add Project"? No, because the dialog only wants to know about *.ecf files.

Should one "Open project"? No, there's nothing there yet.

Should one change the "Action" from "Open" to "Compile"? Perhaps - but doing this doesn't change the dialog box button from "Open" to "Compile". What's going on?

Should one "Browse..." at the Location prompt? (No, because hello_world.e is grayed out).

So it must be "Create project"! We click on "Basic Application" then click "Create".

Now we get asked to "Choose Your Project Name and Directory". So we set the system name to "hello_world", and the root class to HELLO_WORLD. What should we name the root cluster? Perhaps the beginner will leave it at the default of "root_cluster".

Next we browse the project location, and set it to the directory that contains file hello_world.e. But don't change the "System name" after you've done this or EiffelStudio will corrupt your Location path!

The "Compile project" checkbox is ticked, so we click "OK".

EiffelStudio chugs away and creates 32 Megabytes in the EIFGENs directory, whilst spending 15 seconds on Eiffel compilation and 45 seconds on background C compilation (all this just for Hello World!).

Now we are ready to run our compiled program. We look at the tooltips. Some refer to "Starting" the program; some to "Executing" it. Undeterred, we press the biggest one, labelled "Start".

Some clunky things happen to the screen, then (if we are lucky) we notice that "Hello World!" has been output to the terminal window from which we launched EiffelStudio. If we are not lucky, EiffelStudio covers that window and we don't see anything happening...

I agree with Berend that this process is not "simple". EiffelStudio is incredibly powerful for big, complex systems, but the hurdle of entry is quite high.
Hi Roger,

Your description talks about "Hello world" appearing on the Linux terminal from which you launched EiffelStudio. You must be using Linux. On Windows, there's no such confusion: a brand new console window pops up in your face. You can't miss it.

"... 15 seconds on Eiffel compilation and 45 seconds on background C compilation ...": huh? Are you running on a 1995 Pentium 90? On my year-old laptop it did the whole compilation in the blink of an eye. Or maybe it's a Linux thing.

This whole "EiffelStudio compilation is slow" thing is a thing of the past, as far as I can tell. Yes, it's a bit slower than C# compilation, and of course it's far slower than Delphi compilation. But the fact is that compiling a simple "hello world" program, accepting all of EiffelStudio's default options, on a reasonably modern Windows machine, takes a couple of seconds. Who cares that Delphi would do it in under a second?

Your description of the possible thought processes of a new user were plausible. I don't think I went through quite the same degree of puzzlement the first time I created an EiffelStudio application a couple of years ago, because the "create" option is pretty obvious. Nonetheless, new users are going to linger over the options for a while. But it was the same the first time I used Delphi or Visual Studio: I had to sit there going through basicaly the same thought processes. Recent versions of those two IDEs try to make it easier by throwing up "Welcome" pages with the most common options. I'm sure the EiffelStudio start-up dialog could be made friendlier; I submitted a suggestion to them a couple of months ago for reducing the number of options at the bottom of the dialog, which they haven't implemented, but they could probably go a lot further than that.

But you seem to be looking at this from the perspective of someone familiar with command-line compilers. Now there's something that was really hard to figure out the first time I ever had to do it! But if the new user wants to compile from the command line, they can; if they want to write their root class and ECF file in a text editor, they can. Me, I'll stick with the IDE; it's much, much easier.

EiffelStudio's great failing is not with simple "hello world" console programs -- it's quick and no more painful than with any ther IDE -- but with simple GUI programs. In Delphi or Visual Studio when you ask to build a GUI application, the IDE throws a blank form in your face, ready for you to drop controls onto. EiffelStudio just gives you more source code; and then one day you discover that there is this clunky code generator that looks like a refugee from 1993 called EiffelBuild. I wish they would integrate EiffelBuild into EiffelStudio. Berend's comment was definitely right if he was thinking about GUI or web applications!
Peter, perhaps the word "simple" wasn't the right word. It is simple. For me it is either "geant compile_debug_se" or "geant compile_debug_ise". That's just one character.

But it takes quite a bit longer to compile an ISE program for the first time. Perhaps not if you're on a Pentium 4 4Ghz or so.

That's was my point basically: first time is noticably longer (2nd time is superfast of course) and takes up quite a bit more disk space. All for small programs, for large programs the recompilation hit with SE is a show stopper.

One more thing: I like the SE stack dump. Far superior to ISE. Another reason for me to use SE in certain circumstances.
Peter, yes it's Linux I'm referring to. The computer is a 3GHz x86-32 with 1GB RAM. Maybe EiffelStudio just works faster under Windows (but remember I'm timing the first compilation, not the subsequent melts).

Berend - yes the SmartEiffel stack dump is better, provided there's no "rescue" clause in your call chain. Then it falls to pieces, losing everything from the call frames between the exception and the rescue clause.
Roger, it was a first compilation, not a subsequent melt.

A first time compilation of a basic EiffelStudio 5.7 project, with all of the default options, on a year-old AMD 2.19 GHz notebook under Windows, takes 2 or 3 seconds.
Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?