Bahasa pengaturcaraan D

**D** merupakan bahasa pengaturcaraan sistem pelbagai-paradigm imperatif berorentasi objek oleh Walter Bright dari Digital Mars. Ia asalnya (*re-engineering*) C++, tetapi sungguhpun ia banyak dipengaruhi oleh bahasa tersebut, ia bukannya variasi C++. **D** telah mereka semula ciri-ciri C++ dan dipengaruhi oleh konsep yang digunakan dalam bahasa lain, seperti Java, C# dan Eiffel. Versi 1.0 yang stabil dibebaskan pada 2 Januari 2007. Versi ujian, 2.000, dibebaskan pada 17 Jun 2007.

## Contoh
Kata kekunci diwarnakan , rentetan pula , manakala ulasan diwarnakan .

### Contoh 1
Atur cara contoh berikut memaparkan argumen-argumen baris perintahnya.
Fungsi main ialah titik masuk bagi atur cara D, dan args
ialah tatasusunan rentetan mewakili argumen-argumen baris perintah.
Rentetan dalam D ialah sebuah tatasusunan aksara yang diwakili oleh char[].

  std.stdio;       
  main([][] args)
 {
     (i, a; args)
         writefln(, i, a);
      0;
 }

Kenyataan foreach boleh mengulang apa jua koleksi, di sini ia menghasilkan tatasusunan indeks (i) dan nilai (a) daripada tatasusunan
args. Jenis bagi indeks i dan nilai a diketahui melalui jeni bagi tatasusunan args.

### Contoh 2
Berikut menunjukkan penggunaan tatasusunan bersekutu bagi membentuk struktur data yang lebih kompleks

  std.stdio;       
 
  main([][] args)
 {
     
      container;
 
     
     container[] ~= ;
     container[] ~= ;
     container[] ~= ;
 
     
      ([] person, [][] items; container)
         display_item_count(person, items);
      0;
 }
 
  display_item_count([] person, [][] items)
 {
     writefln(person, , items.length, );
 }

### Contoh 3
Contoh yang mempunyai banyak anotasi berikut menonjolkan banyak perbezaan berbanding C++, sambil masih mengekalkan beberapa aspek C++.

 
 
  std.stdio;                        
 
  main([][] args)                 
 {
     
     writefln(             
              );
 
     
     (argc, argv; args)
     {
          cl =  CmdLin(argc, argv); 	                 
 	writefln(cl.argnum, cl.suffix, , cl.argv); 	
 
 	 cl; 	              
     }
 
     
      specs
     {
 	
 	 count, allocated;
 	
 	[10000] bigarray = ;
     }
 
     specs argspecs([][] args)
     
     
     
 	(args.length > 0);                   
     }
     (result)
     
 	(result.count == CmdLin.total);
 	(result.allocated > 0);
     }
     
     {
 	specs* s =  specs;
 	
 	s.count = args.length;  
 	s.allocated = (args).sizeof; 
 	(arg; args)
 	    s.allocated += arg.length * (arg[0]).sizeof;
 	 *s;
     }
 
     
     [] argcmsg  = ;
     [] allocmsg = ;
     writefln(argcmsg ~  ~ allocmsg,
 	    argspecs(args).count,argspecs(args).allocated);
      0;
 }
 
 
  CmdLin
 {
     
     {
 	 _argc;
 	[] _argv;
 	 _totalc;
     }
 
     :
 	
 	( argc, [] argv)
 	{
 	    _argc = argc + 1;
 	    _argv = argv;
 	    _totalc++;
 	}
 
 	() 
 	{
 	    
 	}
 
 	 argnum() 
 	{
 	     _argc;
 	}
 
 	[] argv() 
 	{
 	     _argv;
 	}
 
 	[] suffix() 
 	{
 	    [] suffix; 
 	    (_argc)
 	    {
 		 1:
 		    suffix = ;
 		    ;
 		 2:
 		    suffix = ;
 		    ;
 		 3:
 		    suffix = ;
 		    ;
 		:  
 		    suffix = ;
 	    }
 	     suffix;
 	}
 
 	
 	 (_totalc) total()
 	{
 	     _totalc;
 	}
 
 	
 	
 	{
 	    (_argc > 0);
 	    (_totalc >= _argc);
 	}
 }

## Pautan luar

* Digital Mars: D programming language
* 
* DSource, an open source community for the D Programming Language.
* Dprogramming.com, home of the DFL windowing library.
* Wiki4D, "the wiki for the d programming language"
* gdc, D front-end for GCC
* The Computer Language Benchmarks Game 
* D Documentation Wiki 
* D Language Feature Table
* Video presentation of D by Walter Bright
* Ddbg - Win32 D debugger 

## Rujukan