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

25 of 337 comments (clear)

  1. 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...
  2. Why? by Anonymous Coward · · Score: 2, Insightful

    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.

  3. 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
  4. Too different by Anonymous Coward · · Score: 0, Insightful

    Eiffel is a fine example of a great paradigm which is living in shadow because of programmers' mental inertia. Logical programming could solve many maintenance issues of current software, yet Eiffel is simply ignored.

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

  6. Re:Huh? by thebatlab · · Score: 2, Insightful

    The point of all these languages is, yes, to give choice to programmers on what to use. Eiffel doesn't do low level so you wouldn't want to code up a device driver in it. C doesn't do high level so mapping a design to C *could* be more work than mapping it to Eiffel. This is like asking why new cars? Lets just improve on the old ones we have. You want to be driving in a model T? A 300 ZX is a lot better :) I know the analogy isn't perfect but it's a starting point ;)

  7. Re:Huh? by Anonymous Coward · · Score: 1, Insightful

    These languages are actually very useful in teaching. Everybody who has the slightest interest in programming has at some point looked into C/C++. But an unguided journey into this world can ruin the ability to create maintainable high quality software. That's why it is a good idea to pull students away from the mess that is C/C++ and have them rethink their way of programming in modern languages. Later on they will code C/C++ again, but hopefully the coding style which they learned with cleaner languages will stick.

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

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

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

  11. Re:Information on Eiffel by thebatlab · · Score: 2, Insightful
    > 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 ;)

  12. Re:helloworld in Eiffel by ThogScully · · Score: 2, Insightful

    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

    --
    I've nothing to say here...
  13. 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 ken_mcneil · · Score: 2, Insightful

      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.

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

    3. Re:Not another one! by Anonymous Coward · · Score: 1, 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)?

      People can't even agree on a common spoken language; why should they be able to agree on a computer programming language?

      Different people want different things from a programming language. All of these are valid design principles:

      The language must allow hand-optimization for speed.
      The language must prevent hand-optimization for clarity.

      The language should be as powerful as possible.
      The language should be as minimal as possible.
      The language should be as consistant as possible.
      The language should fit the user's expectations as much as possible.

      The language should be hide underlying complexity.
      The language should make all levels of processing accessible to the programmer.

      The language must allow low-level access to hardware. (eg. to create device drivers)
      The language must not allow low-level access to hardware. (eg. to address security concerns).

      You can see how most of these princples are in conflict. The needs of a real time developer making a mission critical shuttle lauch are vastly different than a webmaster trying to automatically geneerate html pages.

      Programming languages which enforce a certain structure are good if that particular structure is what you need; but bad if that structure is against your needs, or merely too slow for the task at hand.

      Speed is a critical aspect of computing, and always has been. It's another reason we need to keep re-evalutating computing languages.

      Computers today aren't the same as computers ten years ago -- people used to argue against compiled languages, because compilers were "too slow". Compilers haven't gotten much faster -- the hardware has.

      Java is a terrible choice for my Pentium 75 -- it's too slow, and has too much overhead for what I get from it. C is a much better choice in terms of time and memory savings, which are scarce.

      On my TRS-80, the problem was a lot worse -- any compiler which writes a 20K hello world has a problem, because the computer only has 16K.

      On mainframes in the 1950s, programmer time was cheaper than computer time -- wasting computer time to do something humans could do was a waste of money. Now, a scant 50 years later, the purchase cost of a computer is much less than one month of a programmer's salary -- and we want the
      computer to bear as much of the programming burden as possible.

      Tommorows languages, I imagine, will continue the same trend -- we'll make the computer do more and more of the grunt work for us, and the computer will be able to do more of the work that only skilled professionals could manage before. The skilled professionals will move on to making the computer do new and interesting things, and develop yet more powerful and expressive languages for the next generation of programmers.

      Don't fear more languages -- it's called exploration, and development. Choice is good.

      --
      AC

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

  15. Re:what's it good for? by larry+bagina · · Score: 2, Insightful
    if it fails, the system fails. it makes your code very solid

    So it's good if eiffel does it, but bad in Windows does it, right?

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

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

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

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

  19. Re:helloworld in Eiffel by Al+Al+Cool+J · · Score: 2, Insightful
    That's what you think. I just created a new language called HelloWorld in which every program outputs "Hello World" by default, unless the first line is the special SuppressHelloWorld command. So now you can do a Hello World program in 0 bytes!

    Top that!

  20. Re:It's just not Perl by Dom2 · · Score: 2, Insightful
    Funnily enough, but the reason that I prefer perl over most mainstream languages (barring Python) is the fact that it's by far easier to read and understand what the code is doing. Larry Wall's background in linguistics has payed off handsomely.

    Of course, there's a lot of bad perl out there. There's a lot of bad C, C++, and Java too. Yes, yes, I know you don't write any, but that doesn't mean that it's not there.

    -Dom

  21. What I would like to know is... by henshin · · Score: 2, Insightful

    Why should we use it?
    Im not trying to be a smartass by any means, or discredit the "ease-of-use" etc etc. I program in c (Windows and Linux) because it is widely used, and widely supported. Will this become ..dare I say.. mainstream? There are plenty of languages out there with plenty of advantages and applications but what does this bring to the table? Do any of you think this will be the next c/perl/php/?

    --
    I have acorns.
  22. 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).