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!"
is there (Score:5, Funny)
Re:is there (Score:2, Funny)
more french slander (Score:3, Insightful)
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
Re:more french slander (Score:3, Offtopic)
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.
Re:more french slander (Score:3)
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.
Re:is there (Score:2)
Since you asked... (Score:2, Informative)
what's it good for? (Score:5, Interesting)
Re:what's it good for? (Score:3, Interesting)
Re:what's it good for? (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 [eiffel.com].
Re:what's it good for? (Score:2)
Re:what's it good for? (Score:5, Insightful)
Re:what's it good for? (Score:4, Informative)
Re:what's it good for? (Score:2)
Re:what's it good for? (Score:2)
Re:what's it good for? (Score:2)
-jerdenn
Re:what's it good for? (Score:2)
It is possible to write something in Java that should be OO but it's instead done all in one class. I've seen CS students that were first taught basic C and then Java become totally lost with this multiple files, multiple objects thing. They tried to write all these tree objects, nodes, linked lists, etc all into one class file with their main program. They just didn't get it.
If it is true the Eiffel forces OO, then it would probably be a good tool for teaching such confused souls how they should take advantage of OO. Once you get it, it can be a time saver because you don't have to send pointers to the moon and back, and you don't have to deal with pointers to pointers to pointers to ... Of course I still become squeamish when I want to write int a[n];. If you were brought up on C, you know why ;-)
Re:what's it good for? (Score:5, Informative)
Re:what's it good for? (Score:2, Informative)
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.
Re:what's it good for? (Score:2)
If we didn't have a choice in languages we'd all be programming in our respective processors assembly.
Long Live mov!
Re:what's it good for? (Score:5, Informative)
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.)
Re:what's it good for? (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 [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.
Re:absolutely nothin' (Score:5, Funny)
Nice language (Score:5, Interesting)
This is news to me. (Score:3, Insightful)
-N
Re:This is news to me. (Score:3, Informative)
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.
Holy cow, it's piggy flying time (Score:3, Interesting)
I never imagined I could ever download a free compiler to actually compile the programs I jotted down during exams.
Re:Holy cow, it's piggy flying time (Score:3, Interesting)
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=&i
It's just not Perl (Score:4, Funny)
Why? (Score:2, Insightful)
Functional? (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.
Re:Functional? (Score:3, Informative)
Re:Why? (Score:2)
Eiffel is not a functional programming language (Score:2)
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)
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)
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.
Re:Very simple (Score:2, Funny)
But the best engineers know a friggin' joke when they see it.
Re:Very simple (Score:3, Insightful)
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)
Re:Very simple (Score:2)
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.
Re:Very simple (Score:2)
-John
Wizards vs. scripts (Score:3, Insightful)
* They're written for you; more often than not you can't write your own
* They are completely closed source
* You only have a few predefined tasks you can perform.
I think you will find that the type of programmer who eschews wizards will embrace scripting to get repetitive tasks done. The autoconf/automake/autowhoosiwhatsit tools from GNU are a fine example of scripting in Unix applied to a wizard-like task.
The most powerful "scripting" I've seen for programming tasks, however, has got to be the macro facility of the LISP family...
Features of Eiffel... From the FAQ: (Score:4, Informative)
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/
Re:Features of Eiffel... From the FAQ: (Score:4, Interesting)
Re:Features of Eiffel... From the FAQ: (Score:3, Funny)
my_string
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.
Re:Features of Eiffel... From the FAQ: (Score:2)
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.
self-debugging??? (Score:4, Funny)
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?
Re:self-debugging??? (Score:3, Insightful)
helloworld in Eiffel (Score:5, Interesting)
Also, this interesting tidbit from the comp.lang.eiffel FAQ:
(http://omicron.felk.cvut.cz/FAQ/articles/a511.htRe:helloworld in Eiffel (Score:3, Interesting)
Re:helloworld in Eiffel (Score:2)
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.
Re:helloworld in Eiffel (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
Re:helloworld in Eiffel (Score:3, Interesting)
Eiffel is designed to write large bugfree object-oriented applications, not short "one-timer" scripts...
Re:helloworld in Eiffel (Score:4, Funny)
#!/usr/bin/wish;puts stdout "Hello World!"
You can now rename your example to HELLO BLOAT!
Re:helloworld in Eiffel (Score:3, Interesting)
That said, Eiffel does suffer from name_length_inflation due to it's prohibition against overloading.
Eiffel = enormous memory hog still? (Score:3, Interesting)
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.
Some infos about Eiffel (Score:4, Informative)
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)
Re:Some infos about Eiffel (Score:3, Informative)
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?? :)
Information on Eiffel (Score:3, Informative)
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
Re:Information on Eiffel (Score:2, Insightful)
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)
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)
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)
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.
Re:Not another one! (Score:2, Insightful)
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.
Re:Not another one! (Score:2)
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.
Re:Yes another one! (Score:2)
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)
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.
Re:Not another one! (Score:5, Insightful)
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.
Re:Not another one! (Score:2)
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
Re:Not another one! (Score:2)
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.)
Re:Not another one! (Score:3, Funny)
Eiffel also has .NET support (Score:3, Informative)
There's also an MSDN article [microsoft.com].
-jerdenn
Re:Eiffel also has .NET support (Score:2)
There's lots of languages that have been shoehorned into the
Re:Eiffel also has .NET support (Score:2)
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
-jerdenn
Eiffel versus Java (Score:5, Informative)
actually, I was a TA in a class that used Eiffel.
Being an experienced Java programmer also,
I would say that:
Re:Yikes! an $80 book (Score:2, Interesting)
Yo listen up, here's a story.... (Score:2)
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
Price of Eiffel's IDE (Score:2, Interesting)
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.
open source gui/database project for SE .. (Score:5, Informative)
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:
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.
Some generally unknown facts about Eiffel (Score:5, Informative)
- Compilation is not so slow anymore.
- It a full
- 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
- Eiffel Software provide a FREE version of EiffelStudio and Envision! (the
There's loads more to this language, but aint got time to talk about it, so just check it out [eiffel.com] yourself.
Use TinyCC with SmartEiffel! (Score:5, Interesting)
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...
Re:Use TinyCC with SmartEiffel! (Score:3, Interesting)
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
Why not a GCC frontend? (Score:3, Insightful)
It's not about using all the languages! (Score:3, Insightful)
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.
Free Linux version of EiffelStudio (Score:3, Informative)
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
Programming Environment for Eiffel (Score:5, Informative)
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.
What about threading? (Score:3, Interesting)
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)
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).
Re:What is it? (Score:4, Informative)
http://archive.eiffel.com/eiffel/nutshell.html
found some more links (Score:2)
Why Eiffel: http://www.elj.com/eiffel/why-eiffel/
Other lins (including tutorials): http://www.cetus-links.org/oo_eiffel.html
I wonder what is meant by all of this "Design by Contract" stuff... I'm not sure yet if this is something useful, or just more buzz-buzz.
Re:found some more links (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.
Re:What is it? (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
Re:Who needs all these languages? (Score:5, Insightful)
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..
Re:Huh? (Score:2, Insightful)
Eiffel is not a new language (Score:4, Interesting)
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.
Re:Huh? (Score:5, Insightful)
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.
Re:Huh? (Score:3, Interesting)
I agree totally. I just wanted to chime in and say that while you're out checking out new languages, give Ruby [ruby-lang.org] 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 [bell-labs.com].
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).
Re:Huh? (Score:2)
People create new languages in the hope that a lucky few won't be damned to program in COBOL all of their lives.
Re:Huh? (Score:2)
No - people create new languages so that they can get new grants to do something that has already been done before... :-)
Re:IN SOVIET RUSSIA (Score:2)
How can something be almost self-debugging? This stupid horseshit was obviously injected into the description to generate interest in something that is otherwise unremarkable.
Re:Irony at its best (Score:2)
Isn't it ironic that this story about [opensource software technology] ran with a MS ad?
or
Isn't it ironic that this [alternative chip technology like AMD or TransMeta, or . .
is pretty high.