|
|
От: |
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) |