by Michael Neumann (neumann@s-direktnet.de)
| Language | Inheritance | Templates (*1) | Typing | Polymorphic | Overloading | DBC (*3) | Compiler/Interpreter | Multithreading (*4) | Object-Orientation | Persistence (*5) | GC (*6) | Closures | Special Feature |
| BETA | single |
|
static, strong |
|
no | no | Compiler |
(Co-Routines)
|
only Pattern | no |
|
no | Pattern |
| C# | single (+Interfaces) |
|
static, strong |
|
|
no | Compiler | ? | OO | no |
(+manual)
|
no | every object is a COM-object |
| C++ | multiple |
|
static, strong |
![]() (explicit) |
|
no | Compiler | no | hybrid (OO/procedural) | no | no | no | - |
| C-Talk | multiple |
|
static, strong |
|
? | no | Compiler |
|
hybrid (OO/procedural) |
|
|
|
- |
| Eiffel | multiple |
|
static, strong |
|
no |
|
Compiler | no | OO | no |
|
no | - |
| Java | single (+Interfaces) | no | static, strong |
|
|
no | Bytecode |
|
OO | no |
|
no | - |
| Object Pascal | single | no | static, strong |
![]() (explicit) |
no | no | Compiler | no | hybrid (OO/procedural) | no | no | no | - |
| Ruby | single (+Mixin) | (*2) | dynamic |
|
no | no | Interpreter |
|
OO | no |
|
|
everything is an object |
| Sather | multiple |
|
static, strong |
|
|
|
Compiler | no (only pSather) | OO | no |
|
|
iterators instead of loop |
| Smalltalk | single | no | dynamic |
|
no | no | Bytecode/Interpreter | ? | OO | no |
|
? ( )
|
everything is an object |
(*1) Templates = generic/parameterized classes
(*2) It is possible to create classes dynamically. But Templates do not belong to the language, because it makes no sense (because of the dynamic typing).
(*3) DBC = Design by Contract (Bertrand Meyer); pre-/postconditions and class-invariants
(*4) Multithreading is possible in (almost) any language if additionally libraries are used. Meant is if multithreading standard-wise belongs to the language.
(*5) Persistence is possible in any language (e.g. through files or databases).
(*6) GC = Garbage Collector = automatic memory removal