Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Programming IT Technology

SmartEiffel 1.0 Released 365

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!"
This discussion has been archived. No new comments can be posted.

SmartEiffel 1.0 Released

Comments Filter:
  • is there (Score:5, Funny)

    by mehfu ( 451236 ) on Friday December 06, 2002 @07:04PM (#4829658) Homepage
    an implementatation of the towers of hanoi in eiffel? is it free (as in liberty?)
    • Re:is there (Score:2, Funny)

      by Theatetus ( 521747 )
      Yes, but since Eiffel is French, it's called the Towers of Dien Bien Phu and bails out after 3 recursions.
      • by solferino ( 100959 )
        Yes, but since Eiffel is French, it's called the Towers of Dien Bien Phu and bails out after 3 recursions.


        more french bashing by (i assume) an american poster which is moderated up on a site which has a largely american readership

        why is this constant painting of the french as cowards so supported by americans? is it perhaps because france is one of the few countries that doesn't kow-tow to american imperialism?

        i try to seperate the actions of the american government from the general american ppl, believing that they are as much victims of the corrupt machinations of the said government as the rest of the world, however constant puerile slandering of non-americans such as this causes me difficulty in maintaining my discrimination

        in case you were wondering : i am australian of anglo-saxon cultural background

    • Since you asked... (Score:2, Informative)

      by eyal_bd ( 595498 )
      Yes there is an example in the distribution. Just go to the example directory and compile.
  • what's it good for? (Score:5, Interesting)

    by brandonfpu ( 582238 ) on Friday December 06, 2002 @07:04PM (#4829662)
    as perl started out great for scripting stuff and has grown, java started out with the promise of write once, run anywhere, what is eiffel's main strength according to it's developers (any users out here?)
    • by _Spirit ( 23983 )
      Forced OO, at least that's what I remember it by. It's good for teaching OO, as you *have* to do everything in an objectoriented manner.
      • by edhall ( 10025 ) <slashdot@weirdnoise.com> on Friday December 06, 2002 @07:17PM (#4829752) Homepage

        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 [eiffel.com].

        -Ed
      • by g4dget ( 579145 ) on Friday December 06, 2002 @08:23PM (#4830144)
        One of the things people should learn about OOP is when not to use it. If you force them to, they'll end up using it inappropriately.
    • 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.
    • What's it good for? Choice.

      If we didn't have a choice in languages we'd all be programming in our respective processors assembly. :)

      Long Live mov!
    • by HiThere ( 15173 ) <charleshixsn.earthlink@net> on Friday December 06, 2002 @08:59PM (#4830285)
      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.)

      • by auntfloyd ( 18527 ) on Saturday December 07, 2002 @10:25AM (#4832513) Journal

        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 [cons.org], Allegro [franz.com], CormanLisp [cormanlisp.com], SBCL [sf.net], etc). Oberon-2 compilers use GC, including the open source OOC [sourceforge.net] and Oberon System3 [oberon.ethz.ch] from ETH. Ada was designed such that GC could be implemented, but it rarely is. Many FP languages use GC, such as Haskell [haskell.org]. Haskell compilers, such as GHC [haskell.org], NHC [york.ac.uk], and HBC [chalmers.se] 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.

  • Nice language (Score:5, Interesting)

    by _Spirit ( 23983 ) on Friday December 06, 2002 @07:06PM (#4829677) Journal
    I learned OO programming in Eiffel. It's nice and structured. Never made anything useful with it though, compiling was cumbersome (Eiffel > C > binary) and it was impossible to do any GUI stuff with the tools I had back then (95 or so).
  • by ThogScully ( 589935 ) <neilsd@neilschelly.com> on Friday December 06, 2002 @07:08PM (#4829686) Homepage
    What's the amazing thing about this code and what are its faults? I can't find much info on their website. Some sample code to look at would be really nice just to get a feel for it. Is there a feature list somewhere? A comparison to C/C++/Java?
    -N
    • by g4dget ( 579145 )
      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.

  • by Johan Veenstra ( 61679 ) on Friday December 06, 2002 @07:10PM (#4829704)
    Eifel is simply the best language I ever saw on paper, and I looked at quite a few languages for my study.

    I never imagined I could ever download a free compiler to actually compile the programs I jotted down during exams.
  • by Shamanin ( 561998 ) on Friday December 06, 2002 @07:10PM (#4829710)
    "easy-to-read, easy-to-learn" ... and you think people who prefer perl obviscated code would really buy into something with these sorts of (negative) attributes?
  • Why? (Score:2, Insightful)

    by Anonymous Coward
    Maybe Eiffel's underratedness has something to do with it following the functional programming paradigm? Most programmers are still used to more conventional coding. I'm not saying this is a rational argument against the language itself, but when you want to get things done, you use the tools you know best.
    • Functional? (Score:4, Insightful)

      by jefu ( 53450 ) on Friday December 06, 2002 @07:25PM (#4829809) Homepage Journal

      "functional programming paradigm" ?

      Unless things have changed substantially in the last few (um) time-units-of-your-choice, Eiffel is Object Oriented, not Functional.

      I've not codes much (only a few KLOC) in Eiffel, but it is a very nice language with lots of help for producing programs that run. My biggest problem with it was that it tended to be a bit on the verbose side.

      • Re:Functional? (Score:3, Informative)

        by Nutello ( 132201 )
        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 [eiffel.com] (think of iterators, map and for-all).
    • Eiffel is a typically imperative OO language. It's not built on avoiding side effects, higher-order functions, lazy evaluation, or currying, which are hallmarks of modern functional languages.
    • Eiffel is about as far from being what is referred to a "functional programming language" as any language can be. Until recently, Eiffel didn't even allow you to manipulate functions or methods as data. Eiffel should feel right at home to any Java or C# programmer: it's a fairly simple statically typed object-oriented programming language with multiple inheritance and genericity.

      I think Eiffel's lack of success has to do with some serious problems and limitations in the early design of the language, which have only been addressed in the last few years in the main commercial Eiffel compiler. And SmartEiffel does not even implement the full, commercial Eiffel system.

  • Very simple (Score:5, Funny)

    by unterderbrucke ( 628741 ) <unterderbrucke@yahoo.com> on Friday December 06, 2002 @07:12PM (#4829720)
    "Eiffel is a very underrated language in the free software community for some strange reason"

    It isn't a strange reason. As this link [elj.com] shows, Eiffel "guides the software construction process". Engineers want to be hands on, not guided. If you go through the IT department at your business, I can guarantee you will never see anyone using a wizard, if they can be doing in manually. It harkens back to the ancient male tradition of never putting anything together following instructions.
    • Re:Very simple (Score:3, Insightful)

      by John Whitley ( 6067 )
      It harkens back to the ancient male tradition of never putting anything together following instructions.

      Yes, and this is why bridges seem to be falling down all the damn time. Oh wait, they don't. Hmm..

      Engineers want to be hands on, not guided.

      I assume that you don't bother with the "guidance" from tools like diff, but would rather "do it manually"? *Good* engineers don't want to uselessly reinvent the wheel or deal with tedious error prone tasks when tools can do it for them faster, better, and cheaper. These tools can be software applications (e.g. diff, purify). or powerful abstractions within a programming language environment. Examples are the Design By Contract features of Eiffel, modern higher-order type inference systems in languages like OCaml, or well designed class heirarchies with a toolbox of useful prebuilt classes and interfaces ala Java or Smalltalk.
      • by Anonymous Coward
        *Good* engineers don't want to uselessly reinvent the wheel or deal with tedious error prone tasks

        But the best engineers know a friggin' joke when they see it.

      • Re:Very simple (Score:3, Insightful)

        by Cecil ( 37810 )
        The point he's trying to make is not that everything is done by hand, but that good software engineers don't like their 'guide' to box them in.

        diff does not box you in, it does a function and gives you output. It can be combined with other programs. It is atomic.

        When he refers to wizards, he is absolutely correct. They are a 'path'. You take the path and you get everything that happens along the way. Developers don't want that. Developers like atomic things.

        We're talking about people who are usually hackers, remember. At least the good developers are. They want to take things apart and see how it works. You can't really do that with a wizard. You can do that with something like CVS.

        He seems to be suggesting that Eiffel tries to force you down a laid out, structured path. I am not going to debate whether it does, or even whether this is a good thing or a bad thing, but I can state one fact: Many developers don't like that. That's all there is to it. It could be a million times 'better', but if the developers, the producers of the code don't like it, it won't succeed. (ObAnalogy: VHS vs. Beta)
        • He seems to be suggesting that Eiffel tries to force you down a laid out, structured path. I am not going to debate whether it does, or even whether this is a good thing or a bad thing, but I can state one fact: Many developers don't like that.

          My point, which should have been stated more explicitly, is that the comment I was responding to *is* uninformed and off-topic comment w.r.t. Eiffel. I.e. who in the heck mentioned anything about wizards or the like? I'm also taking a stab at the tired stereotype of 'hacker' as Primal Software Shaman, whose Art must not be Questioned and Who Must Remain Unfettered. Far too often, I see this powerful meme used as an excuse for rejecting powerful developer tools (usually of the programming language variety) without an iota of hands-on experience.
    • That's how Eiffel is billed, but in practice, it's just a really neat OO language that you can use in any way you like. It has a lot of great concepts and some features (like being able to easily call C library functions) that I wish other languages would adopt. Eiffel is a beautiful language. It's not an impediment to real engineering.

      -John
  • by dagg ( 153577 ) on Friday December 06, 2002 @07:13PM (#4829724) Journal
    LFEA: What features does Eiffel have?

    Eiffel is a pure, statically typed, object-oriented language. Its modularity is based on classes. Its most notable feature is probably design by contract. It brings design and programming closer together. It encourages maintainability and the re-use of software components.

    Eiffel offers classes, multiple inheritance, polymorphism, static typing and dynamic binding, genericity (constrained and unconstrained), a disciplined exception mechanism, systematic use of assertions to promote programming by contract.

    Eiffel has an elegant design and programming style, and is easy to learn.

    An overview is available at http://www.eiffel.com/doc/manuals/language/intro/

    --

    yersex [tilegarden.com]
    • by _mt99 ( 546197 ) on Friday December 06, 2002 @07:40PM (#4829922) Homepage
      ...with an unsafe type system. Bet that's not in the FAQ. This has been overcome after it has been discovered, but at great expense of making the compiler do ugly things that compilers of elegant type-safe languages don't have to do. I still liked the idea of programming by contract the first time I saw it though. MT
    • io.get_line
      my_string := clone(io.last_string) -- or be doomed to lose the reference forever.

      Yeah, except there are a few odd little quirks to Eiffel. Other than those few, I do think it's quite an underrated language for what it offers. All CS students here have to learn it in 2nd year, often by a prof who hasn't touched a computer in 20 years. But then again, he wrote the book (as in by hand) so maybe there's a reason we're taking it.
    • Eiffel is a wonderful language with two major problems:
      1) No overloading allowed. This is so exterme that you even need to use different operators for integer and float arithmetic. It tends to lead to lots of unwieldy names for things that do about the same thing.

      2) It's static. Compared to almost anything Eiffel is static. It's static compared to C. It's static compared to C++. (Granted, C and C++ must use unsafe constructs to achieve their dynamic capabilities [like arrays that are referenced beyond their bounds].) What I'm really comparing it to, however, is Ada, Python, Java, and PL/1. And Eiffel is STATIC.

      Outside of those two flaws, I find Eiffel to be the best language around. Lots of time point 2 doesn't matter, but I've rarely seen a program where point 1 didn't seriously mangle the understandability of the code.

  • by Anonymous Coward on Friday December 06, 2002 @07:14PM (#4829731)
    Anybody know what "almost self-debugging" means? Does it mean that I can do the following:

    1) Come up with a great idea for a program.

    2) Write a few lines of complete garbage.

    3) The GNU Eiffel-compiler will then take the garbage from 2), read my mind, and spit out a working program that does exactly what I want?
    • Debugging is discovering why your code doesn't do what you thought it would do. If you put the right pre/postconditions and invariants into your interfaces (and enable them), the runtime is very likely to tell you exactly when any of your assumptions turned out to be wrong. Automatically fixing your code is not a solved problem....
  • helloworld in Eiffel (Score:5, Interesting)

    by caternater ( 574933 ) on Friday December 06, 2002 @07:16PM (#4829748)
    For those, like me, wondering what Eiffel looked like, here is helloworld:
    class HELLO_WORLD



    creation
    make
    feature
    make is
    local
    io:BASIC_IO
    do
    !!io
    io.put_string("%N Hello World!!!!")
    end --make
    end -- class HELLO_WORLD
    This was taken from http://www2.latech.edu/~acm/helloworld/eiffel.html

    Also, this interesting tidbit from the comp.lang.eiffel FAQ:

    QEIF: What is Eiffel?


    Eiffel is an advanced object-oriented programming language that emphasizes the design and construction of high-quality and reusable software.

    Eiffel is not a superset or extension of any other language. Eiffel strongly encourages OO programming and does not allow dangerous practices from previous generation languages although it does interface to other languages such as C and C++. Eiffel supports the concept of "Design by Contract" to improve software correctness.

    Beyond the language aspect Eiffel may be viewed as a method of software construction. Eiffel is an excellent vehicle for software education, including for a first programming course.
    (http://omicron.felk.cvut.cz/FAQ/articles/a511.htm l)
    • Based on intrest in Eiffel, wouldn't this be a better example?
      class GOODBYE_WORLD

      creation
      make
      feature
      make is
      local
      io:BASIC_IO
      do
      !!io
      io.put_string("% N Goodbye World!!!!")
      end --make
      end -- class GOODBYE_WORLD
    • Eiffel is an advanced object-oriented programming language that emphasizes the design and construction of high-quality and reusable software. [...] Eiffel supports the concept of "Design by Contract" to improve software correctness.

      Of course, those are merely claims. Sure, Eiffel is almost certainly better than C/C++ in terms of reuse and correctness, but then, what isn't? But is it better than Java, C#, or O'CAML? Or Python, for that matter? Where is the experimental evidence to support those claims?

      Eiffel strongly encourages OO programming and does not allow dangerous practices from previous generation languages although it does interface to other languages such as C and C++.

      By now, Eiffel itself is, in a sense, a "previous generation language". The baseline these days isn't C or C++, it's languages like Java, C#, and O'CAML.

    • This is the first I've ever seen Eiffel code. Maybe it's just me, but I thought this review said it's supposed to be easy to read? I can't identify what half of those lines of code are for - I can identify the two lines that actually outpue Hello World, but even that would have been hard in a different example.

      What's the point of this language again? I thought it was to combine the power of C/C++ with the ease of VB or something.
      -N

      • You can't judge a language from "hello world", that is just plain stupid..

        Eiffel is designed to write large bugfree object-oriented applications, not short "one-timer" scripts...
    • by eyepeepackets ( 33477 ) on Friday December 06, 2002 @08:02PM (#4830047)

      #!/usr/bin/wish;puts stdout "Hello World!"

      You can now rename your example to HELLO BLOAT!

      • by HiThere ( 15173 )
        That's unfair. For one thing, Eiffel is a compiled language. For another, those don't all need to be on separate lines. And for the third, hello world doesn't represent the operations of any resonable program.

        That said, Eiffel does suffer from name_length_inflation due to it's prohibition against overloading.
  • by myowntrueself ( 607117 ) on Friday December 06, 2002 @07:27PM (#4829836)
    When I was at Auckland university we used to dread when the guys doing the stage 3 OO programming course got an assignment.

    I once saw 12 of them running the eiffel compiler each instance of which was absorbing over 100M of virtual memory on, as I recall, old DEC unix boxes...

    This was back in 1993 so as you can imagine (with relatively limited amounts of RAM and VM in those days and in a relatively small and underbudgeted department) the whole system came to a grinding halt for everyone else. Heck, I couldn't even read usenet news and opening a smallish text file to edit in emacs took around 10 minutes. Which, for vi devotees, *is* unusually long even for emacs ;)

    I think they went home for the weekend to leave their compile processes running, meaning that the rest of the comp.sci facility could barely use the unix servers for the duration.

    Eventually, as I recall en-masse eiffel compiler processes were *banned* and they were told to spread out their compilation processes over a few days (ie not all 12 students at once).

    Since the assignments were weekly this caused problems. I believe they turned to an alternative OO language. I wasn't doing the paper so I don't know which one.
  • by DarknessInBlindingLi ( 544819 ) on Friday December 06, 2002 @07:29PM (#4829846)
    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 [pobox.com] - POSIX bindings for eiffel
    gobo [gobosoft.com] - a collection of tools and libraries to unify the development of applications on diffrent Eiffel compilers
    mico/e [uni-goettingen.de] - a CORBA ORB in Eiffel (DISCLAIMER: I am involved in the development of this project)

    • "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?? :)

  • by Anonymous Coward on Friday December 06, 2002 @07:29PM (#4829847)
    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 [yorku.ca] and this [yorku.ca] and this [yorku.ca] and if you still have time, this [eiffel.com].


    Also, check #eiffel on freenode (irc)


    Eiffel is the best,
    DM

    • > Design by Contract (dbc)

      Definitely one of, if not the, best part of the langauge. Others have tried to tack it on as an afterthought but it just didn't pan out well enough.

      > Multiple Interitance

      Is a great help but used incorrectly it can be a major downfall. I've even seen the libraries that my former university developed using multiple inheritance when it should have been single inheritance and then an instance within the class of the other type. Also, things get tricky when ambiguous situations arise although Eiffel provides all you need to disambiguate them.

      > Static typing

      There is somewhat of casting with the =? syntax (or is it ?=) though again, it does improve on the idea of casting. If you get a null back, the cast was unsuccessful and you carry on your merry way doing what your program should do after a failed assignment attempt. It's nice to know that your attempt failed right away than having to do a check other than object != Void

      > Dynamic binding

      Most OO languages do this so it's not really a benefit of the language so much as it is that if they hadn't included it, it would be the worst OO language ever ;)

  • serious limitation (Score:5, Insightful)

    by g4dget ( 579145 ) on Friday December 06, 2002 @07:37PM (#4829906)
    C, C++, Java, C#, and Objective-C, have extensive support for dynamic class/code loading and manipulating objects with types not known at compile time. These are crucial features in modern systems and applications programming languages because many modern software systems are built out of dynamically loadable components and have plug-in architectures. Support for these features is probably at the core of the success of these languages.

    Java and C# are particularly interesting in this regard because they not only support dynamic class/code loading, they also support it safely and with full reflection. That's really the future.

    SmartEiffel, on the other hand, takes a static, global program analysis approach to compilation and optimization. It provides almost no reflection or dynamic loading (if you compile to JVM, you may be able to rig something up). I think ultimately, that makes it a fairly unattractive choice for many applications. Even the commercial Eiffel systems only had those features retrofitted over the last few years, which probably accounts in part for the very limited success of Eiffel as a language.

    SmartEiffel is a really great concept, and for some niche applications, it is very useful (I have used it for some prototyping). I would very much like to see a safe, batch-compiled language catch on for Linux system programming as an alternative to C/C++. But I just don't think SmartEiffel is it, at least not yet.

  • Sather (Score:5, Insightful)

    by jefu ( 53450 ) on Friday December 06, 2002 @07:38PM (#4829910) Homepage Journal
    Eiffel is a nice language, but for me the best part of Eiffel is that it spawned Sather.

    Sather started as a free subset of Eiffel but then transmuted itself into a related but very different language.

    Sather had great support for procedural pre and post conditions (not the aftermarket cheezy afterthought kind of thing that some languages seem to want to adopt), class invariants that could be automatically checked on call and return of a "public" method, class based iterators (not cursor classes, but built into the class itself), constrained genericity, simple (and relatively restricted) overloading ("a + b" became a.plus(b)), unboxed objects and so on....

    Without formally measuring it, I'd guess that writing three more or less equivalent programs in Java, C++ and Sather would result in Sather having the lowest LOC count and the fastest development time. Though the tradeoffs were sometimes odd, good pre/post conditions saved me huge amounts of debugging and testing time, but required quite a bit more up front thought on what those conditions were - this resulted in much better code, but sometimes required interesting amounts of redesign.

    Sadly, Sather, while still available here is GNU Sather [gnu.org] is no longer being developed or supported AFAIK. Were I more of a compiler maven I'd work on it, but I doubt my efforts as a compiler writer would improve things much.

  • Not another one! (Score:3, Insightful)

    by pla ( 258480 ) on Friday December 06, 2002 @07:46PM (#4829973) Journal
    Damn, people, can the collective computer geeks of the world *please* pick some sort of "standard" language (or at least a very small set of languages, like perhaps C++ for most things, Perl for scripts, and Tcl/Tk for GUIs)?

    I personally like C. I consider myself fairly good at it. But honestly, I don't care if we decide "Everyone must code in Forth". Just *some* sort of standard. I'll learn it, and feel happy to "waste" a year mastering it, just to never have to learn another "fad" language.

    I see people asking why Eiffel doesn't have more popularity - Why? I can answer that *really* simply. Because we already have too-damn-many languages to choose from!

    Yes, a *FEW* choices make sense, because not every language has the same strengths and weaknesses. But really, how many people research all 250+ "major" existing languages to determine the best for each and every program they write? No one. People pick a language that has a lot of general-purpose power and flexibility, and *ONLY* deviate when their first choice literally cannot accomplish the task at hand.

    Put out efforts toward making a few projects truly great, not having a huge number of mediocre projects.
    • by ken_mcneil ( 90642 )
      Put out efforts toward making a few projects truly great, not having a huge number of mediocre projects.

      Obviously you don't get why people create programming languages in the first place, or most of the open source software for that matter. They do it "just for the hell of it" or to "scratch an itch". Their goal is not to take over the world with a massive project to create the language to end all languages. In fact, the idea of working on a massive project full of documentation, debugging, and huge libraries may not appeal to them (not the cast for SmartEiffel of course). They just wanted to experiment with somes ideas they've been throwing around.

      That brings up my second point...experimentation. How are you supposed to come up with the "truly great" projects without messing around for a really long time. It is impossible for someone to just sit down and pull the ideal programming language for any given problem out of their ass.
    • But honestly, I don't care if we decide "Everyone must code in Forth". Just *some* sort of standard. I'll learn it, and feel happy to "waste" a year mastering it

      It shouldn't take a year to learn a language. Of course, with some monsters (I'm thinking C++ here), that's a problem with the language.

      As for a "standard" language, most people already have settled on C++ and Java for most things, and Perl for scripting.

    • You pick your set, I'll pick mine. C++ is hopefully getting ready to die. It's just not pleasant to use. I'm also waiting for the day when the world wakes up and realizes the cruel joke Larry Wall played on it with perl. While some of my most crucial application code is written in C, I've spent more time on it, and trust it far less than stuff I've thrown together in Eiffel.

      At home [spy.net], I've got code I rely on written in Java, Eiffel, C, Objective C, python, bourne shell, smalltalk (although the smalltalk code that I actually use the most I didn't write), tcl, scheme, etc... I've got some perl stuff, too, but I don't maintain it anymore (it asked me not to). This is just the stuff I use day-to-day, and much of it is server code I've written that just runs on its own (Java, C, python, eiffel).

      So, that's my set. Anyone who disagrees, make up your own set, continue to research and find better ways to do things, and help us continue to improve computer science in general. Every time I learn a new programming language, I learn a little more about programming, and apply that knowledge to everything I do.
    • Re:Not another one! (Score:2, Interesting)

      by buggered ( 442020 )

      In the past 25 years I have programmed in Assembler (for about 2 dozen different architectures), Fortran, Algol, Pascal, Bliss, Ada, Lisp, C, C++, Java, Perl, Python, SmallTalk, and probably some others that I can't think of at the moment. During that time I have always wanted something better. While Eiffel is not perfect, I can say that it comes the closest to my ideal language of any I have ever used.

      I have found that Eiffel programs are very easy to debug (because of the "Design by Contract" the problem usually pops right out). Sometimes I have even had non-trivial programs work correctly the FIRST time!

      When I have been working on C++ programs, it sometimes takes days or even weeks to find some of the problems. Most of the time in Eiffel I can find the problem in seconds or minutes. Rarely have I had bugs that took longer than an hour or two to find.

      If I had to pick one programming language to use from now on it would be Eiffel.

    • by CFN ( 114345 ) on Friday December 06, 2002 @08:43PM (#4830217)
      Hey, I really cannot understand your animosity towards the development of new languages. At the very worst, you can are free to bury your head in the sand, ignore their existance, and go on with your life. At the best, this might be the perfect tool for you to do your programming with.

      Now, there are very good reasons why a programmer, even someone who will never in their career look at something other than C, benefits from this work.

      Computer Science is a continually evolving field (thats why universites have CS departments, filled with people doing research in CS). Because some computer scientists study programming languages, programming languages are evolving as well. This means that researchers keep introducing new and different features into new languages.

      Of course, the vast majority of these new languages never become popular (or ever get used for even a single real program), but this collection of ideas influences more "mainstream" language. Things like classes, type-safety, generics, etc., all began as research ideas and then migrated into production systems. (Of course, Eiffel is well beyond the research language phase).

      So even if you never adopt a cutting edge language, eventually, a tool you use will exist, or have been made better, because of that language.

      Point is, instead of bitching you should be appreciative.
    • My set would be:

      Python for anything that doesn't require performance.

      C for the rest.

      My own Lisp variant for everything (when I get time to implement it, ofcourse :)

      Now, use any set you like and quit bitching :)

    • Personally, I don't see how anyone can take a language with the kind of unsafe type casting requirements that C has and think that it's a suitable general purpose language. A portable assembler, yes. That was what it was designed for, and it does the job quite well. And C++ continued all of C's flaws. Intentionally. They originally wanted all C programs to be valid C++ programs with the same meaning, which meant that they couldn't fix anything.

      With Java I still have complaints about the rampant casting requirements.

      Python would be a good choice if it were faster. Ditto for Ruby. (Don't know Perl.) Etc.

      Eiffel is another "nearly good enough" language. It's faults are that it can't be dynamic (in the manner of Python and Ruby), and it prohibits overloading of operators. Bad move. Tends to mean that you need to come up with several new names for functions that do the same thing just because their arguments are slightly different. So, e.g., there is no generic length operator.

      But, depending on what you are doing, Eiffel may well be the best choice available. Or not. (And, unfortunately, the edges are sharp. If it's not a great choice, it's a terrible choice.)
    • Yeah, I don't understand the popularity of screwdrivers... Why can't we all just get along and use hammers for getting screws installed, TVs fixed and kids disciplined! Why waste time and resources on developing and learning how to use multiple tools?
  • by jerdenn ( 86993 ) <jerdenn@dennany.org> on Friday December 06, 2002 @07:46PM (#4829974)
    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. [inf.ethz.ch]


    There's also an MSDN article [microsoft.com].

    -jerdenn
    • Eiffel# when last I heard had many of the most appealing parts of Eiffel stripped out. Unless it's been radically revised I wouldn't recommend bothering with it.

      There's lots of languages that have been shoehorned into the .NET environment. Most of them suffer seriously for the exercise. Don't judge any of them by their .NET versions, and don't assume that your favorite language is available on .NET just because theres something with a similar name (even if it's by the original language creator). If you really like a language, you might want to examine the specs of the .NET version to see if it still has the features that you prize. But don't just assume that it will.

      • Eiffel# when last I heard had many of the most appealing parts of Eiffel stripped out.

        That's a pretty bold statement, but you've backed none of it up. What are the "most appealing parts of Eiffel" that have been stripped from .NET?


        -jerdenn
  • Eiffel versus Java (Score:5, Informative)

    by hazzzard ( 530181 ) on Friday December 06, 2002 @08:07PM (#4830076)
    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) [ise.com]. Be careful with them, they are cooperating with the evildoers [microsoft.com] 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 [amazon.com].
  • "About a little guy that lives in a blue world
    And all day and all night and everything he sees
    Is just blue
    Like him inside and outside
    Blue his house with a blue little window
    And a blue Corvette
    And everything is blue for him
    And himself and everybody around
    Cause he ain't got nobody to listen

    I'm Blue da ba dee da ba daa
    I'm Blue da ba dee da ba daa"

    Well, Microsoft DOES have an Eiffel plugin for .NET! Any guesses what song rights they will buy, when they launch their new standard development language?

  • According to the main Eiffel website [eiffel.com], a major aspect of Eiffel is EiffelStudio, their "more than just an IDE" that really makes everything go. They imply that this product is necessary to reap the major benefits of developing in Eiffel, but unfortunately it is quite pricey (not to mention proprietary): the Windows or Linux version will run you $4799. That price, and hitching your wagon to a proprietary star, are major barriers to wider acceptance.

    If anyone strongly believes that learning Eiffel is worth the trouble even without a good free (as in speech) IDE, please let me know.

  • by elj ( 155120 ) on Friday December 06, 2002 @09:43PM (#4830499) Homepage
    The ELJ project [sourceforge.net] - http://elj.sourceforge.net/ [sourceforge.net] has been successful in providing much needed multiplatform libraries to SmallEiffel/SmartEiffel developers.

    The wxEiffel [sourceforge.net] GUI library provides a comprehensive interface to the wxWindows [wxwindows.org] GUI. Database interfaces to Firebird [sourceforge.net], sqlite [sourceforge.net], berkeley db [sourceforge.net], mysql [sourceforge.net], postgres [sourceforge.net].

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

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

    There are many other open source Eiffel projects:

    • GOBO [sourceforge.net] - lex, yacc, xml, data structures, date/time libraries and
    • eposix [gameren.nl] 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.

  • by name_already_in_use ( 604991 ) on Friday December 06, 2002 @09:44PM (#4830503) Homepage
    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 [eiffel.com] yourself.
  • by Per Wigren ( 5315 ) on Friday December 06, 2002 @10:33PM (#4830719) Homepage
    If you're going to code in SmartEiffel, you should try using TinyCC [tinycc.org] instead of GCC while developing! TinyCC is an extremly fast and memoryefficient ANSI-C compiler that is 100% compatible with SmartEiffel! TCC generates code which is about as fast as "gcc -O2", but compiles almost 1000 times faster than "gcc -O2"!! I know these figures look unbelievable, but they are authentic! Just try it yourself if you don't believe it!

    oggy gexace # time gcc -O2 -o gexace-gcc gexace.c
    real 10m12.746s
    user 9m33.227s
    sys 0m4.897s
    oggy gexace # time tcc -o gexace-tcc gexace.c
    real 0m1.353s
    user 0m0.472s
    sys 0m0.061s
    oggy gexace # ls -l gexace-*
    -rwxr-xr-x 1 root root 1216938 Nov 29 18:27 gexace-gcc
    -rwxr-xr-x 1 root root 994200 Nov 29 18:27 gexace-tcc


    The gexace.c examplefile is from GOBO [gobosoft.com], generated by SmartEiffel and is about 2MB...
    When your program is ready to be distributed you can compile it using "gcc -O3 -mcpu=i686 -fomit-frame-pointer -ffast-math" or similar to make it run ~10% faster, but compilation may take hours instead of seconds...
    • try using TinyCC [tinycc.org] instead of GCC.

      Thanks for that. I grabbed the source, which fails to build (on linux) with:

      tccelf.c:382: `RTLD_DEFAULT' undeclared

      Supplying the missing definition gets it to build, then I was able to get it to self-compile just by supplying a -I to the gcc headers and a symlink to the build directory for the libraries (I like it when I can evade sudo make install easily). Yes, it's instantaneous.

      It's a recursive-descent one-pass compiler, i.e., inline code generation, as you might expect. There's little or no register optimization and no discernable global optimization, again as you might expect, so it's a slight exaggeration to say it generates code quality near the level of gcc -O2. The compile speed would way more than make up for this in the vast majority of development situations.

      Without inline assembly or support for gcc's weird array of special attributes, you couldn't compile much of the kernel with this, but maybe with a little tweaking you could compile module code.

      I'd like to see somebody take on the challenge of a tiny two-pass C compiler, with an intermediate parse tree. How much bigger would it be? Not much, and the extra time to build+traverse the tree would likely only add 20-30% to compile time, leaving it still several times faster than gcc (ever more so vs gcc 3.x). This design would open up the field for 'tiny global optimization', which would be fun to see.

      time gcc -O2 -g -Wall -m386 -malign-functions=0 -DCONFIG_TCC_PREFIX=\"/usr/local\" -o tcc_g tcc.c -ldl

      real 0m8.833s
      user 0m8.120s
      sys 0m0.140s

      time bin/tcc_g -I/src/tcc-0.9.14 -DCONFIG_TCC_PREFIX=\"/usr/local\" -o tcc_g tcc.c -ldl

      real 0m0.502s
      user 0m0.430s
      sys 0m0.040s
  • by AxelTorvalds ( 544851 ) on Friday December 06, 2002 @10:36PM (#4830730)
    I don't want to compile something in to C and then into object code. Why not an eiffel front end for GCC?
  • by Fefe ( 6964 ) on Friday December 06, 2002 @10:53PM (#4830790) Homepage
    It's about learning a new point of view, it's about expanding your horizon.

    I don't use Eiffel, but learning it taught me some concepts I didn't know before.

    And that's why we need even more new languages. Life (and work) is about learning. If you stop trying to learn you might as well drop dead.
  • by Admiral Akbar ( 632090 ) on Friday December 06, 2002 @11:05PM (#4830827)
    The free version of Eiffel Studio for linux is available here [eiffel.com].

    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

  • by willamowius ( 193393 ) on Saturday December 07, 2002 @12:25AM (#4831180) Homepage
    For a nice IDE for Eiffel you should get the Eiffel extension for the SNiFF+ environment

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

    There are free versions of SNiFF+ for projects up to 200 (?) classes which should be ok for starters.
  • by RockyJSquirel ( 412960 ) on Saturday December 07, 2002 @02:03AM (#4831460)
    Last time I checked (years ago), the Eiffel's garbage collector didn't handle objects shared between different threads.

    Does anyone know whether this was fixed and/or how what SmartEiffel's garbage collector is like?

    Rocky J. Squirrel
  • Eiffel (& SML) (Score:3, Insightful)

    by C A S S I E L ( 16009 ) on Saturday December 07, 2002 @11:56AM (#4832921) Homepage
    Eiffel is a very underrated language in the free software community for some strange reason..


    One possible reason might be (correct me if I'm wrong) that for a long time, Eiffel was supported by a single vendor with a closed-source, commercial, proprietary compiler. Who is going to commit to a brand new programming language with a single vendor?

    From this point of view, an open-source compiler is ideal. Perl and Python are effectively single-vendor (i.e. single development team) but at no risk.

    Aside: at the time (commercial) Eiffel first appeared, we were working on a Standard ML [bell-labs.com] language and compiler (in fact there were several different development teams building compilers, since the language had a formal semantics and definition). The New Jersey compiler was open-source from the start (around, oh, 1987?), and was self-compiling, generating native code for 680x0, Alpha, Vax and Mips architectures.

    This was around the time that OO programming was getting trendy, and SML, despite being very-high-level, strongly-typed, memory-managed, having a superb modules system etc., wasn't really OO and so fell out of fashion. It's still around, though, and still being developed (see the link above).

A triangle which has an angle of 135 degrees is called an obscene triangle.

Working...