Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Programming IT Technology

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

Is Eiffel# Better than Eiffel?

Comments Filter:
  • I really don't see how having strong opinions constitutes "Flamebait".
    There's a difference between a strong opinion and flamebait.
    Besides, any serious OO programmer knows that an OO language without multiple-implementation inheritance is a crippled husk of a language.
    That was a strong opinion.
    ... mongrel languages... like Java and VB...
    That was flamebait.
    .NET is merely a platform for VenerealBasic programmers who can't do real design....
    That was a childish insult .

    We're not scare-mongering/This is really happening - Radiohead
  • You've already beaten yourself numb with that bible you carry, so a clue stick will probably be ineffective, but here goes anyway.

    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.
    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.
    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.
    Why is it that Microsoft shills always resort to ad hominem attacks to respond to allegations about the types of programmers that Microsoft's inferior wares attract?
    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 .NET-ized Eiffel would be pretty worthless if it meant that Eiffel's unique features would be dropped for the sake of compatibility. So I don't think you have to worry about any "Microsoft shills" doing who-knows-what to your codebase.

    (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
  • "any serious OO programmer knows that an OO language without multiple-implementation inheritance is a crippled husk of a language." I guess Smalltalk [squeak.org] is not a serious OO language? But C++ and Perl, which do allow multiple inheritance [c2.com], would be considered real OO languages? Seriously though, would someone please moderate Socializing Agent's post down to "Flamebait"?
  • I'll pour some water to burning oil:

    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.

  • I was pleased to see that python was also being ported to .net (it's called python.NET, get it). Some researches at the university that my brother attends make regular trips over to M$ research (they've GOT to have one of these right, that's where all that innovation comes from) had proted a few other languages over to .net about this time last year (I think it was a implementation of Object Pascal, not sure). I for one think choice is a good thing, and I'm glad some less mainstream languages are getting ported.
  • by m.o ( 121338 )
    It's time to start a new family of languages - Cb, Eiffelb... I guess Oracle and Sun should do that...
  • Despite being an excellent language, Eiffel didn't win the programming language popularity competition. It doesn't have the critical mass needed to get good third-party library support.

    .NET places emphasis on interoperability between languages. This is of course just what Eiffel needs. For once, on .NET at least, Eiffel will be a first class citizen.

    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.

  • Implements IStdDisclaimer
    Why is it that Microsoft shills always resort to ad hominem attacks to respond to allegations about the types of programmers that Microsoft's inferior wares attract? Show me a single VB programmer who is truly capable of architecting a complex software system (other than Steve McConnell, whose behavior of late is inexplicable), and I'll recant.

    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.

  • Maybe they are just up to their old trick of trying to do everything their own way - we do C++ better than C++...

    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.

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

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

  • Did you actually read that Wiki page that you linked to? Here's a quote that demonstrates that you're the flamer, not I:
    The last pair of these are only issues with static type-checking, and the first can be done quite nicely with delegation idioms (especially based around #doesNotUnderstand:), so we don't much need MI in Smalltalk. Java covers the last pair with interfaces but loses out sorely on the first. It has nothing "multiple" there. The other languages need MI because they don't have decent delegation and they do have static types.
    I await your reply, troll.
  • Well, in smalltalk, you can use delegation and use a refactoring browser to dupe methods from two base classes as needed, so MI is not strictly necessary. (This works because of smalltalk's type system.) However, in a language without such a strong development environment, MI can be extremely helpful in collapsing a class hierarchy (a very useful refactoring), or in quickly designing complicated behavior. MI is usually not the best solution, but multiple-interface inheritance with multiple-implementation delegation is a sane and useful compromise.

    I really don't see how having strong opinions constitutes "Flamebait".

  • by pleitner ( 95644 ) on Monday December 11, 2000 @04:00PM (#566465)
    I don't know... Maybe my thinking is flawed... I always thought one of the coolest feature of any OO language is the ability to NOT have to reinvent the wheel constantly. It seems to me that Microsoft is taking every opportunity to do just this. I really don't understand why. I don't claim to be an expert in C# or anything, but I really can't see the benefit in taking the approach that they are.

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

  • by Socializing Agent ( 262655 ) on Monday December 11, 2000 @05:14PM (#566466)
    Sorry, but this is flat-out absurd. The main advangtage of Eiffel (as I've used it in engineering projects) is Design-by-Contract [elj.com], which is unenforcable in lesser languages. Real Eiffel programmers don't want the ability to link in methods from other languages, especially since Microsoft are allowing mongrel languages to target .NET, like Java and VB, which allow blasphemies like side-effects in functions with return values.

    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.

Marriage is the triumph of imagination over intelligence. Second marriage is the triumph of hope over experience.

Working...