www.digitalmars.com         C & C++   DMDScript  

D - Eiffel comments

reply BErend de Boer <BErend_member pathlink.com> writes:
 "Ilya" == Ilya Minkov <webmaster midiclub.de.vu> writes:
Ilya> Hello. Fans of the D Programming Language by Walter Bright Ilya> have been working on a chart to compare D with all kinds of Ilya> other programming languages. Ilya> We would like to invite people who know respective languages Ilya> to contribute here. Ilya> http://www.prowiki.org/wiki4d/wiki.cgi?LanguagesVersusD As that page is absolutely uneditable, here my comments: Nested functions No Function literals don't know what that is Dynamic closures are there static closures? Eiffel supports closures Non-class functions No Arrays Lightweight arrays What's a lightweight array? Resizeable arrays Yes Arrays of bits Yes (obsolete) Built-in strings Eh, there are no special cases in Eiffel Array slicing Yes Array bounds checking Yes Associative arrays Not in the language *definition* (of course), lots of libraries provide them, all Eiffel compilers ship with one. Strong typedefs what's a typedef? Eiffel is statically typed. String switches what's that? Aliases what's that? OOP Object Oriented Yes Multiple Inheritance Yes Interfaces Yes Operator overloading No Modules it has clusters. There is no such thing as a module name space. Works a bit different. Dynamic class loading Depends on your version, Eiffel.Net does this. Inner classes No Covariant return types Yes Performance Inline assembler No (you have inline C, and most of Eiffel programmers consider C a portable assembly language) Direct access to hardware You can call any API/C func you want Lightweight objects what's that? Explicit memory allocation control Yes (in library) Independent of VM Yes Direct native code gen Depends on compiler Templates No (but it has generics and that's probably a question you want to ask) Reliability Design by Contract Yes Unit testing Eh? You can write your own test, there are test frameworks. And for Eiffel it would be class testing. Static construction order What's that? Guaranteed initialization Yes RAII What's that? Exception handling Yes, but works quite different. try-catch-finally blocks No, it has try-catch-(retry) blocks Thread synchronization primitives Yes, not implemented by compilers Compatibility Algol-style syntax Yes Enumerated types No Support all C types No (probably) Long double floating point Hmm, depends on compiler probably Complex and Imaginary In library Direct access to C Yes Use existing debuggers No Struct member alignment control No Generates standard object files Yes Independent of macro preprocessor Eh, what's that? Other Conditional compilation No Regards, Berend. ** you're welcome to the #eiffel irc channel on irc.freenode.net
Jun 09 2003
parent "Andrew Edwards" <edwardsac spamfreeusa.com> writes:
I've gone ahead and inserted your comments into the chart. Categories on
which you were either not specific or had questions on were left blank.
Please check for accuracy!

Andrew

"BErend de Boer" <BErend_member pathlink.com> wrote in message
news:bc2sot$185m$1 digitaldaemon.com...
 "Ilya" == Ilya Minkov <webmaster midiclub.de.vu> writes:
Ilya> Hello. Fans of the D Programming Language by Walter Bright Ilya> have been working on a chart to compare D with all kinds of Ilya> other programming languages. Ilya> We would like to invite people who know respective languages Ilya> to contribute here. Ilya> http://www.prowiki.org/wiki4d/wiki.cgi?LanguagesVersusD As that page is absolutely uneditable, here my comments: Nested functions No Function literals don't know what that is Dynamic closures are there static closures? Eiffel supports
closures
 Non-class functions     No

 Arrays
 Lightweight arrays      What's a lightweight array?
 Resizeable arrays       Yes
 Arrays of bits          Yes (obsolete)
 Built-in strings        Eh, there are no special cases in Eiffel
 Array slicing           Yes
 Array bounds checking   Yes
 Associative arrays      Not in the language *definition* (of course), lots
of
 libraries provide them, all Eiffel compilers
 ship with one.
 Strong typedefs         what's a typedef? Eiffel is statically typed.
 String switches         what's that?
 Aliases                 what's that?

 OOP
 Object Oriented         Yes
 Multiple Inheritance    Yes
 Interfaces              Yes
 Operator overloading    No
 Modules                 it has clusters. There is no such thing as a
 module name space. Works a bit different.
 Dynamic class loading   Depends on your version, Eiffel.Net does this.
 Inner classes           No
 Covariant return types  Yes

 Performance
 Inline assembler          No (you have inline C, and most of Eiffel
 programmers consider C a portable assembly language)
 Direct access to hardware  You can call any API/C func you want
 Lightweight objects        what's that?
 Explicit memory allocation control Yes (in library)
 Independent of VM                   Yes
 Direct native code gen     Depends on compiler
 Templates                  No (but it has generics and that's probably
 a question you want to ask)

 Reliability
 Design by Contract        Yes
 Unit testing               Eh? You can write your own test, there are
 test frameworks. And for Eiffel it would be
 class testing.
 Static construction order What's that?
 Guaranteed initialization  Yes
 RAII                       What's that?
 Exception handling         Yes, but works quite different.
 try-catch-finally blocks No, it has try-catch-(retry) blocks
 Thread synchronization primitives Yes, not implemented by compilers

 Compatibility
 Algol-style syntax         Yes
 Enumerated types            No
 Support all C types         No (probably)
 Long double floating point  Hmm, depends on compiler probably
 Complex and Imaginary       In library
 Direct access to C          Yes
 Use existing debuggers      No
 Struct member alignment control   No
 Generates standard object files   Yes
 Independent of macro preprocessor Eh, what's that?

 Other
 Conditional compilation     No

 Regards,

 Berend.
   ** you're welcome to the #eiffel irc channel on irc.freenode.net
Jun 09 2003