*houbo diversas linguaxes de programación chamadas D. O que se presenta neste artigo é o desenvolvido por Walter Bright.*

**D** é unha linguaxe de programación de uso xeral desenvolvido por Walter Bright cuxa primeira versión apareceu en 1995, resultado de décadas de investigación e experiencia de programadores expertos en moitas linguaxes.

É dun nivel máis alto que C++, pero conserva a capacidade de escribir código de alto rendemento e de interconectar directamente con el os APIs dun sistema operativo ou o hardware. Ademais compórtase ben con programas de grande escala cun millón de liñas, que desenvolven equipos de programadores.

D é fácil de aprender, proporciona moitas funcións para axudar a/o programador/a, e cumpre ben coa tecnoloxía agresiva de optimización do recopilador. É unha linguaxe compilada, non interpretada. É unha linguaxe práctica para programadores que necesitan conseguir un traballo finalizado rapidamente, cun código fácil de entender.

C++ é a linguaxe á que D aspira a substituír. É unha linguaxe evolucionaria, non revolucionaria e nun principio pode parecer que non achega demasiado sobre C++, Pero non son
as características xerais senón os seus detalles os que marcan a diferenza. En primeiro lugar D conserva todas as características de expresividade de C++ (cousa que nin C# nin moito menos Java conseguen no seu afán por facerse linguaxes máis accesibles), pero cunha sintaxe e unhas construcións moito máis sinxelas e lóxicas. Ademais, outro dos puntos fortes de C++, o seu rendemento, tamén se ve reflectido en D (nalgunhas ocasións ata superado).

Doutra banda D conta con moitas outras melloras e ata características das que C++ non dispón, as cales se enumeran a continuación. Ao contrario do que pasa con Java ou C#, estas características non supoñen unha perda apreciable de rendemento para D en comparación con C++:

* Xestión automática de memoria (recolección de lixo)
* Delegados, funcións aniñadas e funcións literais
* Sobrecarga de operadores e propiedades sen sobrecargar a/o programador/a
* Estruturación: Módulos e paquetes
* Propiedades
* Programación xenérica moi mellorada
* Programación por contratos
* Mantenibilidade e fiabilidade
* Compilación condicional sen sucios preprocesadores
* Compatibilidade con C sen cargar con C
* Arrays asociativos

Vantaxes e inconvenientes
-------------------------

### Vantaxes

* Linguaxe máis intuitiva e fácil de aprender que C, C++ ou Java, con gran cantidade de melloras respecto destas.
* Compatibilidade cos binarios de C (non C++).
* Linguaxe compilada (non se executa nunha máquina virtual, como Java).
* *Garbage collector* ou colector de lixo (sistema que libera a memoria dinámica cando xa non se necesita, como Java, pero con posibilidade de desactivalo se se desexa maior control).
* Elimina parte da complexidade de sintaxe de C++.

### Inconvenientes

* A única documentación é a especificación oficial.

Notas
-----



| * v
* c
* e
Linguaxes de programación |
| --- |
| Baixo nivel | 

|  |  |
| --- | --- |
| Primeira xeración | Código máquina |
| Segunda xeración | Assembly |

 |
| Alto nivel | 

|  |  |
| --- | --- |
| Terceira xeración | 
* A+
* ABC
* Algol
* B
* BASIC
* C
* C++
* C#
* COBOL
* CPL
* D
* E
* Fortran
* Go
* Java
* JavaScript
* Lisp
* Objective-C
* PL/1
* Pascal
* Smalltalk
* Visual Basic .NET

 |
| Cuarta xeración | 
* Clarion
* Clipper
* Clojure
* Common Lisp
* Erlang
* GNU Octave
* Haskell
* Lisp
* Lua
* Julia
* Perl
* PHP
* Prolog
* Python
* R
* Ruby
* Rust
* S
* Scilab
* Stata
* SQL

 |
| Quinta xeración | 
* Mercury
* OPS5
* Prolog

 |

 |
| 
* Ambiente de desenvolvemento
* Metaprogramación
* Programación a nivel funcional
* Programación estruturada
* Programación non estruturada
* Programación imperativa
* Programación modular
* Programación multidimensional
* Orientación a obxectos

 |

|  |  |
| --- | --- |
| Control de autoridades | 
* Wd: Q319268
* GND: 7606805-5
* LCCN: sh2010005564

 |