Slashdot Mirror


SmartEiffel 1.0 Released

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

54 of 337 comments (clear)

  1. is there by mehfu · · Score: 5, Funny

    an implementatation of the towers of hanoi in eiffel? is it free (as in liberty?)

  2. what's it good for? by brandonfpu · · Score: 5, Interesting

    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?)

    1. Re:what's it good for? by _Spirit · · Score: 3, Interesting

      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.

      --

      beauty is only a light switch away

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

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

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

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

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

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

    5. Re:what's it good for? by g4dget · · Score: 5, Insightful

      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.

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

      What's it good for?

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

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

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

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

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

      --

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

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

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

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

  3. Nice language by _Spirit · · Score: 5, Interesting

    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).

    --

    beauty is only a light switch away

  4. This is news to me. by ThogScully · · Score: 3, Insightful

    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

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

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

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

  5. Holy cow, it's piggy flying time by Johan+Veenstra · · Score: 3, Interesting

    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.

    1. Re:Holy cow, it's piggy flying time by berenddeboer · · Score: 3, Interesting

      You probably are not interested in an answer, but anyway: with SmartEiffel and boost mode, your hello world is probaby around 4-10KB or so. Quite comparable to C.

      ISE Eiffel, a commercial implementation, if you compile hello world in melted code, the binary might be MB's. You can read about the advantages of melted mode on ISEs website. But if you freeze it, it's 160KB.

      Read this post:

      http://groups.google.com/groups?dq=&hl=en&lr=&ie =U TF-8&selm=3DDF4E65.6933E52B%40ifrance.com

      --
      If I had a sig, I would put it here.
  6. It's just not Perl by Shamanin · · Score: 4, Funny

    "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?

    --
    come on fhqwhgads
  7. Re:What is it? by Johan+Veenstra · · Score: 4, Informative

    Then this link is for you:

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

  8. Re:Who needs all these languages? by zapfie · · Score: 5, Insightful

    Any computer program can be expressed in C... why bother with crap...

    Yeah, right.. while we're going down that slope at all, any computer program can be expressed as machine code, so why bother with assembly, C, VB, or any of that? Why bother with Photoshop when you can just do stuff pixel by pixel? I think you get the point..

    --
    slashdot!=valid HTML
  9. helloworld in Eiffel by caternater · · Score: 5, Interesting
    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)
    1. Re:helloworld in Eiffel by boy_of_the_hash · · Score: 3, Interesting
      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
    2. Re:helloworld in Eiffel by eyepeepackets · · Score: 4, Funny


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

      You can now rename your example to HELLO BLOAT!

      --
      Everything in the Universe sucks: It's the law!
    3. Re:helloworld in Eiffel by HiThere · · Score: 3, Interesting

      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.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    4. Re:helloworld in Eiffel by Per+Wigren · · Score: 3, Interesting

      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...

      --
      My other account has a 3-digit UID.
  10. Re:What is it? by SlowMovingTarget · · Score: 4, Informative

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

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

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

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

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



    Regards,

    M. Murphree
  11. Functional? by jefu · · Score: 4, Insightful

    "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.

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

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

  12. Eiffel = enormous memory hog still? by myowntrueself · · Score: 3, Interesting

    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.

    --
    In the free world the media isn't government run; the government is media run.
  13. Some infos about Eiffel by DarknessInBlindingLi · · Score: 4, Informative
    For those who are unfamilar with this language (I fear most of the /. crowd) here a basic overview of its advantages and problems:

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

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

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

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

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

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


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


    Also, check #eiffel on freenode (irc)


    Eiffel is the best,
    DM

  15. Eiffel is not a new language by Earlybird · · Score: 4, Interesting
    • Why is everyone gung ho on creating new programming languages.
    Eiffel is not a "new programming language". It's nearly twenty years old, invented in 1985 by Betrand Meyer, and a damn well-respected language at that.

    Historically Eiffel has probably had more success in influencing other languages and in teaching software construction principles, than actually being used for commercial software projects, although it has seen some popularity in the finance sector. Lately, like certain other niche languages, it has seen its popularity further eroded through the emergence of Java.

  16. Re:Huh? by Jerf · · Score: 5, Insightful

    Real people don't depend on "teachers" to learn.

    I was going to say "Real hackers don't depend on teachers to learn languages", but that's just a very isolated special case of the general principle.

    If you honestly don't know anybody using something other then COBOL, Java, or a little C++, you are horribly, horribly disconnected from several exciting communities dedicated to increasing the power of the programmer. If you don't know the why multiple languages are useful, that is a grevious flaw in your education that you need to take immediate steps to rectify, and nobody's going to do it for you but you. Moreover, I don't mean to be offensive but you're so far behind you won't even understand the explanation of why you're behind; you need to be in the position of having used a couple of languages before you can understand comparisions!

    Language differences are nothing like the difference between kde and gnome; it's more like the difference between GUI and CLI.

    Don't wait for someone to teach you; you can't afford to while you're competing with people like me who know at least 10 languages well and can pick up a new one in a week (and I'm nothing special). I strongly suggest you rectify your ignorance.

    'Course, if you don't, and you want to keep your attitude, no skin off my nose. That much less competition for me.

    (*chuckle* I wish I could see you in an interview situation where someone asks about the differences between languages and you gave your post as the answer. They might not even bother to finish the interview.)

    The whole point of this is you shouldn't be waiting for somebody else to look around for you, but here's some hints anyhow. I strongly suggest you spend a few months each on Perl, Python, a functional language like Haskell, and several APIs of some sort, like wxWindows or XML parsing. That's more educational then you might even think directly, since you'll get introduced to event-driven programming (though you may have seen it in Java), handling complicated data structures in general, and a lot of other useful things, not just "XML processing" and "GUI development". All of these things have great, free tutorials online.

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

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

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

  18. serious limitation by g4dget · · Score: 5, Insightful
    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.

  19. Sather by jefu · · Score: 5, Insightful
    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 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.

  20. Not another one! by pla · · Score: 3, Insightful

    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.

    1. Re:Not another one! by CFN · · Score: 5, Insightful

      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.

    2. Re:Not another one! by Doomdark · · Score: 3, Funny

      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?

      --
      I like paying taxes. With them I buy civilization -- Oliver Wendell Holmes
  21. Eiffel also has .NET support by jerdenn · · Score: 3, Informative

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


    There's also an MSDN article.

    -jerdenn

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

    I strongly suggest you spend a few months each on Perl, Python, a functional language like Haskell, and several APIs of some sort, like wxWindows or XML parsing.

    I agree totally. I just wanted to chime in and say that while you're out checking out new languages, give Ruby a try. It's a beautful language that falls in the same family as Perl and Python but has it's own charm all the same. I use it for all of my development in an environmental lab, and it's served me quite well.

    If you want to explore functional programming, you also may want to check out SML.
    There are several free implementations available, and it's easy to learn. It's very fast and quite powerful for a variety of tasks. Last but not least, check out ANSI Lisp or at least Scheme. Everybody serious programmer should know at least one dialect of Lisp because it's the original hackers language.

    I believe ESR did a rant somewhere on how to become a real programmer or something along those lines. Google could probably dig it up rather quickly. It's worth a read as he outlines languages to learn to explore the various development methodologies(functional, OOP, procedural, etc).

    --
    A musician without the RIAA, is like a fish without a bicycle.
  24. open source gui/database project for SE .. by elj · · Score: 5, Informative
    The ELJ project - http://elj.sourceforge.net/ has been successful in providing much needed multiplatform libraries to SmallEiffel/SmartEiffel developers.

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

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

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

    There are many other open source Eiffel projects:

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

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

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

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

    - Compilation is not so slow anymore.

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

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

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

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

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

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

    --


    Rake Free + Mac Poker: CardCrusade
  26. Use TinyCC with SmartEiffel! by Per+Wigren · · Score: 5, Interesting

    If you're going to code in SmartEiffel, you should try using TinyCC 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, 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...

    --
    My other account has a 3-digit UID.
    1. Re:Use TinyCC with SmartEiffel! by Daniel+Phillips · · Score: 3, Interesting

      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

      --
      Have you got your LWN subscription yet?
  27. Why not a GCC frontend? by AxelTorvalds · · Score: 3, Insightful

    I don't want to compile something in to C and then into object code. Why not an eiffel front end for GCC?

  28. It's not about using all the languages! by Fefe · · Score: 3, Insightful

    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.

  29. Free Linux version of EiffelStudio by Admiral+Akbar · · Score: 3, Informative

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

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

    --
    -- You see what happens when you have fun with a stranger in the Alps?
  30. more french slander by solferino · · Score: 3, Insightful
    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

    1. Re:more french slander by Sivar · · Score: 3, Offtopic

      Not unlike they did for us in our early history.

      The U.S., of which I am a citizen, is the only country in the world which has decided to make itself the world's police force.
      Defending other countries is bound to happen in-between oil rescues and terrorist witch-hunts.

      France, BTW, is one of the most self-sufficient countries in the world. The coordinate system used to display graphics on your monitor was invented by the French philosopher and mathematician Rene Descartes--also the creator of analytical geometry, the precursor math which made Calculus possible.

      Why don't you try to not portray Americans as ethnocentric, poorly educated bigots, because that reputation is passed along to more people than yourself. I am sure that was not your intention, but intention and interpretation are often completely different.

      --
      Computer Science is no more about computers than astronomy is about telescopes. --E. W. Dijkstra
    2. Re:more french slander by DrXym · · Score: 3
      Nonsense. The US is only the world's police force when it is in its own interests to be. There have been plenty of conflicts where the US has conveniently looked the other way or marginalised its involvement when the region in question isn't rich in oil or strategically important.


      As for other people not policing, that too is nonsense. Lots of countries including neutral ones such as Ireland send peacekeeping forces under the UN flag, as well as NATO forces. Even the likes of France has troops in Africa doing peacekeeping work at the moment.

  31. Re:absolutely nothin' by jejones · · Score: 5, Funny

    You forgot the "HUH...Good God, y'all!"

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

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

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

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

  33. What about threading? by RockyJSquirel · · Score: 3, Interesting

    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

  34. Eiffel (& SML) by C+A+S+S+I+E+L · · Score: 3, Insightful
    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 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).