GNU Free Documentation License . .

D ( )

: ,
D
:

: , -,

:

:

1999

():

:

1.072 (2011-12-05; 180 days ago[1])

:

2.057 (2011-12-13; 172 days ago[2])

:

,

:

Digital Mars D, LDC, GDC

:

, C++, Lua, C#, Java, Eiffel, Python, Ruby

:

d-programming-language.org

D  -, , , Digital Mars. C++, , ++, . D C++, , Java, Python, Ruby, C#, Eiffel.

D . D C++, D .

1.0 2 2007[3]. 2.0 17 2007 .[4]

1.0 Windows, Linux, Mac OS, 1.043 FreeBSD. DMD ( Digital Mars)[5].


D  , . Digital Mars. D , [6]. D , . D C- , , ++, , , , , C# Java[7], [8][9][10][11], [12].

[] , C++

D C++ C#, , , ++.

D . , D, , . ++ ( make) D.

  • C C++.
  • D - , .
  • // (compile/link/debug).
  • D - .
  • .
  • . C++. D .
  • D C, D API.
  • .
  • .

[] D

  • C. , , C (Objective-C, C++ Vala). , . , C , .
  • [13]. #include . #ifdef version debug.[14] , , - C ( , C , , #define TEXT(quotes) L ## quotes), , D « ».
  • . , D.
  • (namespaces). , , , . .
  • (bit fields) . , . D 2.0[15]
  • 16- . D 16- .
  • (compiler passes). C++ (symbol table) . .
  • ->. D .

[] D

  • ;
  • (warning levels);
  • C++;
  • ;
  • ;
  • ;
  • ;
  • ;
  • . D NaN (not a number) (infinity). C99, C++;

[] D

  • (legacy) /++;
  • ;
  • .

[] D

[] -

[]

- D . , . Object, . , .

[]

. , +, -, * /, .

[]

[]

. (#include) . , , , , #ifndef/#endif #pragma once. , , (static this() { ... }, main()[16]) ( ) -, , (, B, B  ). main().

[]

C++ ,   (*.h), (*.cpp). . , , . D, :

class ABC
{
    int func() { return 7; }
    static int z = 7;
};
 
int q;

-, (extern), C++:

int ABC::func() { return 7; }
 
int ABC::z = 7;
 
extern int q;

: , C++ { return 7; } , . , ( , , ), (prototype). C++:

class Foo
{
    int foo(Bar *c) { return c->bar(); }
};
 
class Bar
{
    public:
        int bar() { return 3; }
};

D :

class Foo
{
    int foo(Bar c) { return c.bar; }
}
 
class Bar
{
    int bar() { return 3; }
}

, ( ) , D .

[]

D , .

[]

  , , . , -, , .

[] typedef

C C++ typedef . D typedef . ,

typedef int handle;

handle. , , . :

int foo(int i);
int foo(handle h);

[]

  , , , HTML- man. , , , , , . , . D .

C++ , . :

  • C++ 100 % , . (third party tools) C++.
  • C++ . C++.
  • C++ .

, D.

[]

D , , , , , , . D :

[]

, .

[] (function literals)

.

[] (closure)

, .

[] : in, out inout

, .

D , , , IDL (Interface Definition Languages).

[]

C , :

  • , .   main(int argc, char *argv[]). D, main : main(char[][] args);
  • , , , . . (, ++ ( ) ).
  • C . , , , ;
  • C , , ( );
  • [] . , , (  C) :
int (*array)[3];

D [] :

int[3]* array; //        
long[] func(int x); //  ,    

. D : , , .

[]

, .   , C++ , , STL. , , Qt, (. ). , ++ , 2-  3- .   D .

[] (resource management)

[]

D « ». , C++ . « » . , « » . , C++ , C . « » , , , , . , « » C++, « », « ».

[]

, D , new delete .

[] RAII

RAII  . D RAII , .

[]

[]

D C , , .

[]

, , (embedded systems) . D , .

[]

. , . , , .

[]

try-catch-finally , try-catch, (dummy) , , finally.

[]

, D . .

synchronized int func() { ... }

.

  • ;
  • - ;
  • ;
  • ;
  • ;
  • ;
  • ;
  • ;
  • , ;
  • ;

  • ;
  • for;
  • ;
  • API;

  • assert();
  • ;
  • ;

[]

[]

D C, . , ( ʸ , C, ́, - [17]).

[] API C

D , C, C. - (wrapper functions) .

[] C

API C C. , , , , C99.

[]

.

[]

D , , , , .

[]

[]

D . #if #endif.

[]

, , . , (deprecated). .

[] (warnings)

D . , , ,   . .

[]

(, , ) . D , . , C .

D
#if !defined(SOME_FILE_H)
//#ifndef SOME_FILE_H
#define SOME_FILE_H
// 
#endif
//  
#define MAX_INT 32767
 
//  
#define true TRUE
 
#if defined(Mac_OS_X)
//   Mac
#else
// 
#endif
//  
enum uint MAX_INT=32767
 
//  
alias TRUE true
 
version(Mac OS X)
{
    //   Mac
} else {
    // 
}

[]

, D : Phobos Tango. Phobos .

. , , :

version (Tango)
{
    // ,    Tango
} else
{
    // ,    Phobos
}

[] Tangobos

, Tangobos. Tangobos  Tango, Phobos.

[]

. main , args  .

module main; //  
 
version (Tango)
    import tango.io.Stdout;
else
    import std.stdio; //  writefln()
 
void main(char[][] args)
{
    foreach(int i, char[] a; args)
    {
        version(Tango)
            Stdout.formatln("args[{}] = {}", i, a);
        else
            writefln("args[%d] = '%s'", i, a);
    }
}

[] .

[]

  1. 1.0. 1 2012.
  2. 2.0. 1 2012.
  3. DMD 1.00  here it is! (digitalmars.D.announce) (.)
  4. D 2.0 changelog. 1 2012. 11 2009. (.)
  5. dmd 1.041 (.)
  6. D x86 Inline Assembler D
  7. [1](.)
  8. [2] D  (.)
  9. [3] (.)
  10. Embedded Documentation (.)
  11. [4] dmd html  (.)
  12. Named Return Value Optimization  (.)
  13. The C Preprocessor Versus D  digitalmars.com (.)
  14. Conditional Compilation  digitalmars.com (.)
  15. std.bitmanip (.)
  16. [5] D
  17. [ C. . : , C : <>]

[]

  • D (15 2008). 19 2012.