in english auf Deutsch

von Michael Neumann (neumann@s-direktnet.de)

Sprache Vererbung Templates (*1) Typisierung Polymorphie Überladen DBC (*3) Compiler/Interpreter Nebenläufigkeit (*4) Objekt-Orientierung Persistenz (*5) GC (*6) Closures Besonderheit
BETA einfach ja statisch, stark ja nein nein Compiler ja (Co-Routinen) nur Pattern nein ja nein Pattern
C# einfach (+Interfaces) ja statisch, stark ja ja nein Compiler ? OO nein ja (+manuell) nein alle Objekte sind COM-Objekte
C++ mehrfach ja statisch, stark ja
(explizit)
ja nein Compiler nein hybrid (OO/prozedural) nein nein nein -
C-Talk mehrfach ja statisch, stark ja ? nein Compiler ja hybrid (OO/prozedural) ja ja ja -
Eiffel mehrfach ja statisch, stark ja nein ja Compiler nein OO nein ja nein -
Java einfach (+Interfaces) nein statisch, stark ja ja nein Bytecode ja OO nein ja nein -
Object Pascal einfach nein statisch, stark ja
(explizit)
nein nein Compiler nein hybrid (OO/prozedural) nein nein nein -
Ruby einfach (+Mixin) (*2) dynamisch ja nein nein Interpreter ja OO nein ja ja alles ist ein Objekt
Sather mehrfach ja statisch, stark ja ja ja Compiler nein (nur pSather) OO nein ja ja Iteratoren statt Schleifen
Smalltalk einfach nein dynamisch ja nein nein Bytecode/Interpreter ? OO nein ja ? (ja) alles ist ein Objekt

(*1) Templates = Generische/Parameterisierte Klassen

(*2) Es ist möglich, dynamisch Klassen zu erzeugen. Templates jedoch gehören jedoch nicht zum Sprachumfang, da es wenig Sinn macht (wegen der dynamischen Typisierung).

(*3) DBC = Design by Contract (Bertrand Meyer); Pre-/Postconditions und Klassen-Invarianten

(*4) Nebenläufigkeit (Multithreading) ist in (fast) jeder Sprache durch zusätzliche Bibliotheken möglich. Gemeint ist, ob Nebenläufigkeit standardmäßig vorgesehen ist.

(*5) Persistenz ist bei jeder Sprache möglich (z.B. durch Dateien oder Datenbanken).

(*6) GC = Garbage Collector = Automatische Speicherfreigabe