esommer.net | esommer.net : blog | esommer.net : blog : archive | archive : 2002 | 2002 03 dyree(e) |

Up



2002 03 01 Friday dyree(e) in K
2002 03 07 Thursday dyree(e) in K
2002 03 08 Friday dyree(e) in K
2002 03 11 Monday dyree(e) in MUC
2002 03 13 Wednesday dyree(e) in K
2002 03 16 Saturday dyree(e) in K
2002 03 17 Sunday dyree(e) in K
Details 2002 03 dyree(e)

  2002 03 02 Saturday dyree(e) in K

reading http://eiffel.com/doc/manuals/technology/bmarticles/sd/dotnet.html 200203 02 Saturday Bertrand Meyer on .NET
space picturewhat he doesn't like:
space picture[..] Examples include:
space picturethe presence of overloading, a vanity mechanism that brings nothing to the semantic power of an O-O language, but hampers readability and complicates everyone’s task;
space picturelack of support for multiple inheritance, except (Java style) for “interfaces”;
space picturethe C++ mechanism for constructors (based on using a single name for all constructors for a class, disambiguating clashes through an irrelevant property, type signatures, and forcing the initialization of an object to go through the initialization procedures for all ancestor types);
space picturenovariance of routine arguments and results;
space picturethe difficulty of keeping a clear separation between member names and member values (to support, for example, renaming as in Eiffel).
space pictureI understand the source of these problems: the .NET designers are not responsible for C++. But what these decisions mean is, in many cases, forcing a complicated solution where simple ones are readily available.
space pictureheh:
space pictureToo bad; as anyone who has observed Java and Smalltalk programmers knows, removing multiple inheritance from an O-O language leads programmers to emulate it manually through the kind of tricks that should not be further described in a family-oriented column.
space pictureBy the way, please do not pay attention to anyone who tells you that multiple inheritance is inherently “bad” or “dangerous” or “messy”. There is one and only one reason Java and .NET don’t have MI: it makes dynamic class loading far more difficult to implement. Every other reason is a red herring. (Harangue mode off.)
space pictureelements:
space pictureAt the center of the .NET framework is an object model, called the VOS (Virtual Object System);
space pictureBased on the object model, .NET offers a virtual machine, the Common Language Runtime
space pictureOne of the distinctive traits of the virtual machine is that, unlike its Java counterpart, it does not provide an interpreter: MSIL is meant for on-the-fly compilation to machine code the first time each MSIL unit is executed. This is also known as “Jitting the code”, where “Jit” stands for Just In Time compilation. Here .NET draws the lessons of the Java experience (familiar enough to anyone who has ever seen the dreaded message “Starting Java” show up in the browser) by putting performance concerns at the heart of design goals. The results are impressive: we have seen no difference between the speed of .NET-generated Eiffel# applications and that of code generated through our standard compiler (which produces machine code through C). The tradeoffs are clear: Java’s interpreter-oriented design (where JIT compilers are an afterthought) has fostered portability; .NET’s design has put run-time performance at the top of the design goals.

.
.
.
.
.
home
.
english
.
deutsch
.
siteindex
.
.
.
.
.
.
.
.
.
.
.
.
.
.

  this doc, http://esommer.net/blog/archive/2002/03/a02SaturdayK.html,
first posted 02.03.2002; 08:35:44,
last updated 02.03.2002; 08:50:58,
is part of esommer.net

  info@esommer.net  

  webmaster@esommer.net