Is Eiffel# Better than Eiffel? 14
hardcorebit asks: "Interactive Software Engineering has announced that a version of the Eiffel programming language, called Eiffel# is available for Microsoft's .NET initiative. The .NET framework provides a common type system and inheritance mechanism for different languages. The claim is that Eiffel# programmers can use this to seamlessly integrate code from other programming languages, across networks, and so on. The only thing is that .NET doesn't support multiple implementation inheritance, so Eiffel# currently lacks this feature. There are one or two other differences as well. I'm not an Eiffel expert, so I'd like to know whether the missing features matter and if so, how much." First C# and now Eiffel#...is Microsoft trying to wrap some of the more popular languages in it's .NET initiative? If so, how effective can it be if Microsoft is leaving out features like multiple inheritance and the ability to redefine features in descendant classes?
Re:Without DbC, what's the point? (Score:1)
We're not scare-mongering/This is really happening - Radiohead
Snap! (Was Re:Without DbC, what's the point?) (Score:1)
WHACK! This is not a holy war.
WHACK! This is not good v. evil.
WHACK! This is not a zero-sum solution.
You prefer the purity and design-by-contract discipline of Eiffel. Fine. I prefer the flexibility of Visual Basic, combined with the wisdom of experience. We agree to disagree. I judge languages by suitability to task myself. Probably explains why I've used so many different languages over the years. No dogma, just the right tool for the right job. By your criteria, I must have the most severe case of Multiple Personality Disorder on record. Probably because any show of support or sympathy for Microsoft on Slashdot is met with a conditioned response of "Burn the heretic!" I reiterate: This is not a holy war. I've been reading it for years. You were just unlucky enough to catch me on a bad day with enough free time to respond.
BTW, to pull this whole thing back on topic, I agree with you that a
(I can feel my Karma points burning away even as I type, but I've been waiting to get this off my chest for years.)
We're not scare-mongering/This is really happening - Radiohead
Re:Without DbC, what's the point? (Score:1)
Re:Without DbC, what's the point? (Score:1)
anyone who tries to architect a complex software system in VB is choosing the wrong tool for the job. As is anyone who writes a small GUI app in C++ (or maybe eiffel -- I don't know it well enough to say).
Knowing to choose the right tool for the job is arguably more important than being a master of one and only one. Even if you are able to use your hammer as a chisel, wouldn't a plane be better? Not to bad mouth Eiffel or Java (or Scheme), but VB and Python are very well suited for some jobs.
This is why multiple language implementation for the JVM and the language interoperability you get for free are such important concepts. They allow you to avoid implementing a partial and incorrect LISP interpreter just because you're implementing a large system (with apologies to Philip Greenspun).
As to whether multiple inheritance is the panacea it is sometimes made out to be, I don't know. It is one of these issues that touches every part of the language. From what I've seen from Eiffel, it seems well integrated, but you know that SUN have some smart people on the design team, and they left it out of Java for a reason.
Python also! (Score:1)
flats (Score:1)
Re:Why oh why??? (Score:1)
Other people besides MS are doing component based software, but MS seems to have the most coherent plan the moment (I'm just a simple in-the-trenches programmer. CORBA is mostly just confusing to me. Java The Platform doesn't encourage support for languages other than Java The Language). It's not something I'm happy to say, but it looks to me that MS are going to eat everyone else's lunches. Again.
It's sad that Eiffel will have to lop off a few limbs to fit in with .NET, but it's probably in Eiffel's best interests.
Re:Without DbC, what's the point? (Score:1)
However, I strictly follow a reader-response theory of language critcism -- I judge languages by the sorts of programmers who are most attracted to them. Calling VB "Venereal Basic" is not a "childish insult"; it's funny, and it's an apt metaphor, considering that VB is a painful disease and most well-to-do people are embarassed to discuss it in polite company.
why! (Score:2)
In the case of .NET, what MS is really saying is "we do the Java VM better than the Java VM." The core of .NET is a virtual machine which is supposed to provide all the benefits of the JVM with less focus on a single language - and therefore not subject to that one language's limitations.
If you consider the fact that the JVM has been used as a target for an enormous number of other languages [tu-berlin.de], the .NET approach actually makes a lot of technical sense. Interoperability between languages - for example, between a server-side web scripting language and a more heavy-duty back end language - becomes trivial when both languages execute in the same virtual machine. People are already doing this sort of thing to some extent, using things like Rhino [mozilla.org] (Javascript on the JVM) or Jacl [scriptics.com] (Tcl in Java) as a scripting environment to invoke heavier-duty Java objects.
This approach isn't completely mainstream at the moment, but it has a lot of benefits. Microsoft has paid attention to these possibilities and is betting their development strategy on it, in the same way as they bet on COM/ActiveX previously.
I suspect this will be very successful amongst loyal MS developers. True, you'd have to be drinking serious amounts of Kool-Aid to be willing to devote development resources to developing in a brand-new language like C#, which because of its origins has little likelihood of gaining the kind of multi-independent-vendor popularity that Java has. But if you already use one of the other languages that support .NET, there's little risk in taking advantage of it if you develop only for MS platforms.
I look forward to seeing open source projects compete in this arena. The JVM opened the door to this, but Sun's proprietary attitude to Java has caused many problems. Either the JVM must be freed from its proprietary roots, or an open source alternative must arise. Either way, open source just makes an incredible amount of sense for such a strategic base platform - as with Linux, it becomes much easier for vendors of any stripe to commit to it.
All languages go to Windows (Score:2)
> languages in it's
> can it be if Microsoft is leaving out features like
> multiple inheritance and the ability to redefine
> features in descendant classes?
We are going to see #-versions of many languages: APL, CAML, Cobol, Eiffel, Haskell, Java, Mercury, ML, Oberon, Oz, Pascal, Perl, Python, Scheme and Smalltalk.
Dotnet framework (the next runtime of Windows) wants to be a platform for alla languages (as oppposed to Java who wants to be a language for all platforms). All these languages are supposed to be integrated all the way down to the runtime level, meaning that GC will be handled collectively and exceptions will be thrown across languages. Of course, all the languages also can call all Windows libraries with no plumming.
It works like this: Dotnet framework actually only speaks one language MSIL (M$ intermediary language) and all languages who wants to join the platform need their own MSIL-compiler. MSIL would correspond to java bytecode, the idea is that any language, not just java, could be translated to bytecode.
Of course you need to hack the language a little, creating these "#" and ".net" suffixed versions of old languages, more or less related to the old language.
Eiffel# does not only loose Eiffel stuff, like multiple inheritance. It also needs to deal with non-Eiffel stuff in MSIL, like overloading, for example, which Eiffel doesn't have. Eiffel# hacks that problem with a tool that adds hungarian notation to the real MSIL names (ie "wite_int" and "write_float" for "write").
Eiffel# does not loose design-by-contract, though -- it won't bother other languages on Dotnet framework that Eiffel# does a little extra runtime validation.
I know the Eiffel guys are somehow trying to "insert" design-by-contract into Dotnet framework. So that other languages will be able to use it. Still haven't figured out how they plan to do it though.
The Eiffel inventor Bertrand Meyer is involved himself in creating Eiffel#. So there must be SOMETHING good coming from it
Re:Without DbC, what's the point? (Score:2)
Re:Without DbC, what's the point? (Score:2)
I really don't see how having strong opinions constitutes "Flamebait".
Why oh why??? (Score:3)
Maybe they are just up to their old trick of trying to do everything their own way - we do C++ better than C++... We do Kerberos better than Kerberos <sigh>
I don't think I will ever understand those Redmond guys...
Without DbC, what's the point? (Score:3)
Besides, any serious OO programmer knows that an OO language without multiple-implementation inheritance is a crippled husk of a language. Even Java has it with the addition of JAMIE [list.org] and delegation. .NET is merely a platform for VenerealBasic programmers who can't do real design, and Eiffel# is an Eiffel impostor with broken arms and legs.