От: | VladD2 | www.nemerle.org | |
Дата: | 18.05.06 15:53 | ||
Оценка: | 62 (15) -1 |
Feature | D | C | C++ | C# | Java | Nemerle |
---|---|---|---|---|---|---|
Garbage Collection | Yes- | No | No | Yes | Yes | Yes |
Functions | D | C | C++ | C# | Java | Nemerle |
Function delegates | Yes | No | No | Yes | No | Yes+ |
Function overloading | Yes | No | Yes | Yes | Yes | Yes |
Out function parameters | Yes | Yes | Yes | Yes | No | Yes |
Nested functions | Yes | No | No | No | No | Yes+ |
Function literals | Yes | No | No | No | No | Yes ??? |
Dynamic closures | Yes | No | No | Yes | No | Yes+ |
Typesafe variadic arguments | Yes | No | No | Yes | Yes | Yes |
Arrays | D | C | C++ | C# | Java | Nemerle |
Lightweight arrays | Yes | Yes | Yes | Yes | No | No |
Resizeable arrays | Yes | No | No | No | No | No |
Built-in strings | Yes | No | No | Yes | Yes | Yes |
Array slicing | Yes | No | No | No | No | No* |
Array bounds checking | Yes | No | No | Yes | Yes | Yes |
Associative arrays | Yes | No | No | No | No | No |
Strong typedefs | Yes | No | No | No | No | No |
String switches | Yes | No | No | Yes | No | Yes+ |
Aliases | Yes | Yes | Yes | No | No | Yes |
OOP | D | C | C++ | C# | Java | Nemerle |
Object Oriented | Yes | No | Yes | Yes | Yes | Yes |
Multiple Inheritance | No | No | Yes | No | No | No |
Interfaces | Yes | No | Yes | Yes | Yes | Yes |
Operator overloading | Yes | No | Yes | Yes | No | Yes+ |
Modules | Yes | No | Yes | Yes | Yes | Yes |
Dynamic class loading | No | No | No | Yes | Yes | Yes |
Nested classes | Yes | Yes | Yes | Yes | Yes | Yes |
Inner (adaptor) classes | Yes | No | No | No | Yes | No* |
Covariant return types | Yes | No | Yes | No | Yes | No |
Properties | Yes | No | No | Yes | No | Yes |
Performance | D | C | C++ | C# | Java | Nemerle |
Inline assembler | Yes | Yes | Yes | No | No | No |
Direct access to hardware | Yes | Yes | Yes | No | No | No |
Lightweight objects | Yes | Yes | Yes | Yes | No | Yes |
Explicit memory allocation control | Yes | Yes | Yes | No | No | No |
Independent of VM | Yes | Yes | Yes | No | No | No |
Direct native code gen | Yes | Yes | Yes | No | No | No |
Generic Programming | D | C | C++ | C# | Java | Nemerle |
Class Templates | Yes | No | Yes | Yes | Yes | Yes |
Function Templates | Yes | No | Yes | Yes | Yes | Yes |
Implicit Function Template Instantiation | No | No | Yes | No | No | No |
Partial and Explicit Specialization | Yes | No | Yes | No | No | No |
Value Template Parameters | Yes | No | Yes | No | No | No |
Template Template Parameters | Yes | No | Yes | No | No | No |
Mixins | Yes | No | No | No | No | No* (plan) |
static if | Yes | No | No | No | No | |
is expressions | Yes | No | No | No | No | |
typeof | Yes | No | No | Yes | Yes (instanceof) | Yes |
foreach | Yes | No | No | Yes | Yes | Yes+ |
Implicit Type Inference | Yes | No | No | No | No | Yes+ |
Reliability | D | C | C++ | C# | Java | Nemerle |
Contract Programming | Yes | No | No | No | No | Yes* |
Unit testing | Yes | No | No | No | No | No* |
Static construction order | Yes | No | No | Yes | Yes | Yes |
Guaranteed initialization | Yes | No | No | Yes | Yes | Yes |
RAII (automatic destructors) | Yes | No | Yes | Yes | No | Yes |
Exception handling | Yes | No | Yes | Yes | Yes | Yes |
Scope guards | Yes | No | No | No | No | Yes+ |
try-catch-finally blocks | Yes | No | No | Yes | Yes | Yes |
Thread synchronization primitives | Yes | No | No | Yes | Yes | Yes* |
Compatibility | D | C | C++ | C# | Java | Nemerle |
C-style syntax | Yes | Yes | Yes | Yes | Yes | ~Yes |
Enumerated types | Yes | Yes | Yes | Yes | Yes | Yes |
Support all C types | Yes | Yes | No | No | No | No |
80 bit floating point | Yes | Yes | Yes | No | No | No |
Complex and Imaginary | Yes | Yes | No | No | No | No |
Direct access to C | Yes | Yes | Yes | No | No | No |
Use existing debuggers | Yes | Yes | Yes | Yes ??? | No | Yes ??? |
Struct member alignment control | Yes | No | No | Yes | No | Yes |
Generates standard object files | Yes | Yes | Yes | No | No | No |
Macro text preprocessor | No | Yes | Yes | No | No | |
Other | D | C | C++ | C# | Java | Nemerle |
Conditional compilation | Yes | Yes | Yes | Yes | No | Yes |
Unicode source text | Yes | Yes | Yes | Yes | Yes | Yes |
Documentation comments | Yes | No | No | Yes | Yes | No (plan) |
Feature | D | C | C++ | C# | Java | Nemerle |
---|---|---|---|---|---|---|
Functionam programming suport | D | C | C++ | C# | Java | Nemerle |
pattern matching | No | No | No | No | No | Yes |
lambda support | Yes | No | No | Yes | No | Yes+ |
Partial application | No | No | No | No | No | Yes |
All statment is expression | No | No | No | No | No | Yes |
Support Linken Lists in language | No | No | No | No | No | Yes+ |
Other | D | C | C++ | C# | Java | Nemerle |
Extended local type inference | No | No | No | No | No | Yes+ |
Extention methods | No | No | No | No (plan) | No | Yes+ |
yield coninuatons | No | No | No | Yes | No | Yes |
Constrans on type parametrs | No | No (plan) | No | Yes | Yes | Yes |
Indexers (propery[...]) | ??? | No | No | Yes | No | Yes+ |
Default parameter value | ??? | Yes | No | No | No | Yes |
Attrubutes (extending metedata) | No | No | No | Yes | Yes | Yes |
Named parametrs | No | No | No | No | No | Yes |
Type safe variant data type | No | No | No | No | No | Yes |
Nulable type | No | No | No | Yes | No | Yes |
Pattern imlementation | No | No | No | No | No | Yes |
Console interpreter | No | No | No | No | No | Yes |
Type safe variant data type | No | No | No | No | No | Yes |
Tuple data type (anonymous type) | No | No | No | No (plad-) | No | Yes |
Multiple dispatching | No | No | No | No | No | Yes |
Spliced strings ( $" xxx $(x + 1) yyy" notation) | No | No | No | No | No | Yes |
Lazy evaluation | No | No | No | No | No | Yes |
Metaprograming | D | C | C++ | C# | Java | Nemerle |
Metaprograming support | Bad (static calcs) | Bad (textual macro) | Bad (textual macro, template side affect) | No | No | Yes+ (AST based macros) |
Tuting complete mete-language | No | No | No | No | No | Yes |
Mete-language is same language | No | No | No | No | No | Yes |
Compiled meta-code | No | No | No | No | No | Yes |
Fast meta-code | No | No | No | No | No | Yes |
Analyse AST | No | No | No | No | No | Yes |
Report clear and intelligible error and diagnostic message | No | No | No | No | No | Yes |
Modify syntax | No | No | No | No | No | Yes |
Simplify code generation | No | No | No | No | No | Yes (quasi-quotation, splising) |
Internal DSL support | No | No | Bad | No | No | Yes+ |
Interaction with copiler | No | No | No | No | No | Yes+ |
Useful macros in stdlib | No | No | No | No | No | Yes |
Modify AST | No | No | No | No | No | Yes |
IDE | D | C | C++ | C# | Java | Nemerle |
IDE suport | No | Bad | Bad | Yes+ | Yes+ | No (plan) |
Refactoring | No | Bad | Bad | Yes+ | Yes+ | No (plan) |