Está en la página 1de 5

D (lenguaje de programacin)

D
Desarrollador(es)
Digital Mars, Andrei Alexandrescu (desde 2006)
Informacin general
Extensiones comunes .d
Paradigma multiparadigma: orientado a objetos, imperativo, funcional, meta
Apareci en 20011
Diseado por Walter Bright, Andrei Alexandrescu (desde 2006)
ltima versin estable 2.064 / 1.0752 3 (2 de agosto de 2012; hace 1 ao4 )
Tipo de dato Fuerte, Esttico
Implementaciones DMD, GDC, LDC
Influido por C++, C, C#, Java, Eiffel, Python
Ha influido a MiniD, DScript, Vala, Qore
Sistema operativo DMD: Unix-like, Windows, Mac OS X
Licencia GPL/Artistic (DMD frontend),
Boost (libreras estndar y de tiempo de ejecucin),
cdigo disponible (DMD backend),5
Completamente open-source (LDC u GDC)6
D es un lenguaje de programacin de uso general desarrollado por Walter Bright cuya primera
versin apareci en 1999. Se origina como un rediseo de C++, con un enfoque ms pragmtico,
pero no es un lenguaje puramente derivado del anterior. D ha mantenido algunas caractersticas
de C++ y tambin est influido por otros conceptos de otros lenguajes como Java, C# y Eiffel. Una
versin estable fue lanzada el 2 de enero de 2007.

ndice [ocultar]
1 Caractersticas
1.1 Orientada a objetos
1.2 Metaprogramacin
1.3 Manejo de memoria
1.4 Interaccin con otros sistemas
2 Implementacin
3 Herramientas de desarrollo
4 Problemas y controversias
4.1 Sobrecarga de operadores
4.2 Divisin en la biblioteca estndar
4.3 Soporte sin finalizar para bibliotecas compartidas/dinmicas
5 Referencias
6 Enlaces externos
Caractersticas[editar]
D est siendo diseado con lecciones aprendidas del uso de C++ en vez de ser diseado desde una
perspectiva terica. Aunque usa muchos de los conceptos de C/C++ tambin descarta algunos, y
por lo tanto no es compatible con cdigo escrito en C o C++. D retiene la habilidad de C++ de hacer
cdigo de bajo nivel, permitiendo incluir cdigo en ensamblador. La herencia mltiple de C++ es
reemplazada por herencia simple e interfaces y 'mixins'. La sintaxis de declaracin y la sintaxis para
las expresiones se parecen a las de C++.

El soporte del lenguaje ensamblador demuestra una de las diferencias entre D con respecto a
otros lenguajes como Java y C#. Esto permite incluir cdigo especfico de la mquina con cdigo D,
una tcnica comnmente usada por programadores de software de sistema para acceder a
caractersticas de bajo nivel necesarias para interactuar directamente con el hardware,
permitiendo escribir software como sistemas operativos y drivers.

D incluye soporte para comentarios de documentacin, pero hasta ahora slo el compilador
entregado por Digital Mars implementa un generador de documentacin.

Orientada a objetos[editar]
La programacin orientada a objetos est basada en herencia simple, con todas las clases
derivadas de la clase Object. D no soporta herencia mltiple; en vez de eso, usa interfaces
parecidas a las de Java, que son comparables a las clases abstractas de C++.

Metaprogramacin[editar]
Metaprogramacin es soportada por una combinacin de plantillas, ejecucin de funciones en
tiempo de compilacin, tuplas y 'mixins' de cadena. Soporta CTFE (evaluacin de funciones en
tiempo de compilacin).

Manejo de memoria[editar]
La memoria es usualmente manejada por un recolector de basura, pero objetos especficos
pueden ser finalizados inmediatamente cuando salen del mbito. Es posible el manejo de memoria
explcito usando los operadores sobrecargados new y delete, y simplemente llamando las
funciones malloc y free de C directamente. La recoleccin de basura puede ser controlada: los
programadores pueden agregar y excluir rangos de memoria de ser observados por el recolector,
pueden pausar y reanudar el recolector y forzar un ciclo generacional o de recoleccin completa.7
El manual da muchos ejemplos de cmo implementar diferentes esquemas de manejo de
memoria altamente optimizados para cuando la recoleccin de basura es inadecuada para el
programa.

Interaccin con otros sistemas[editar]
La API de C es admitida, al igual que todos los tipos fundamentales y derivados de C, permitiendo
acceso directo al cdigo existente escrito en C y bibliotecas. La biblioteca estndar de C es parte
del D estndar. A menos que se usen namespaces muy explcitos puede ser de alguna forma difcil
de acceder, como se puede observar en mdulos escritos en D que hagan uso de dicha
caracterstica. Pero la biblioteca estndar de D es usualmente suficiente.

Implementacin[editar]
Las implementaciones actuales de D compilan el cdigo directamente a cdigo mquina para
lograr una ejecucin eficiente.

Cambios al lenguaje no se hacen regularmente desde la versin 1.0. El diseo est virtualmente
congelado, y nuevos lanzamientos se concentran en resolver bugs existentes. El compilador oficial
de Walter Bright define el lenguaje.

DMD: El compilador de Digital Mars, el compilador oficial de D. El front end est bajo la licencia
Artistic License y la licencia GNU GPL; las fuentes para el front end son distribuidas con los binarios
del compilador. El back end es propietario, pero el cdigo es abierto.
GDC: Un front end para el back end GCC, construido usando las fuentes del compilador DMD.
Snapshots soportan la versin 2.0 del lenguaje.
LDC: Un compilador basado en DMD y usa LLVM como back end. El backend LLVM permite que
LDC logre optimizar el cdigo alcanzando rendimiento similar a C/C++ e incluso superndolo en
ocasiones.
Herramientas de desarrollo[editar]
D todava no est soportado en muchos entornos de desarrollo, lo cual es un problema esencial
para muchos usuarios. Editores que pueden ser usados incluyen a Entice Designer, emacs, vim,
SciTE y Zeus entre otros. Vim soporta el resaltado de sintaxis y completado de cdigo (a travs de
ctags parcheados). Code::Blocks incluye soporte parcial del lenguaje.

Hay dos plu-gins en desarrollo para Eclipse, Descent y Mmrnmhrm.

Adicionalmente, hay IDEs escritas en el propio D como Poseidon, que incluye completado de
cdigo, resaltado de sintaxis y depurador.

Aplicaciones escritas en D pueden ser depuradas con cualquier depurador de C o C++, como GDB o
WinDbg, aunque soporte para varias caractersticas fundamentales de D es limitado. Un
depurador con soporte explcito para D es Ddbg para Windows. El depurador comercial ZeroBUGS
para Linux tiene soporte experimental para D. Ddbg puede ser usado con varios IDEs o desde la
lnea de comandos, ZeroBUGS tiene su propia interfaz grfica.

Problemas y controversias[editar]
Sobrecarga de operadores[editar]
La sobrecarga de operadores en D a veces son menos poderosas que las de C++. Un ejemplo es el
opIndex, que sufre porque D no permite regresar referencias. Esto hace operaciones como
obj[i]++; imposibles. La solucin parcial de D es el operador opIndexAssign, que solo repara casos
donde la expresin indexeada es solo un valor L como obj[i] = 5 pero no los casos originales.

Divisin en la biblioteca estndar[editar]
La biblioteca estndar en D es llamada Phobos. Algunos miembros de la comunidad piensan que
Phobos es demasiado simple y que posee numerosos problemas, por lo cual un reemplazo llamado
Tango fue escrito.8 Sin embargo, Tango y Phobos eran incompatibles debido a varias diferencias
(soporte de hilos, recolector de basura, etc). La existencia de dos bibliotecas, ambas de uso
elevado, llev a problemas significativos donde algunos paquetes usan Phobos y otros usan Tango.
Este problema fue resuelto con la versin 2.0 del lenguaje.

Soporte sin finalizar para bibliotecas compartidas/dinmicas[editar]
Bibliotecas compartidas ELF de Unix son soportadas hasta un punto usando el compilador GDC. En
Windows, DLLs son soportadas y permiten a objetos recolectados por el recolector de basura de
ser seguramente pasados a funciones de C, ya que el recolector de basura revisa el stack por
punteros. Sin embargo, todava hay limitaciones con DLLs en D incluyendo el hecho de que la
informacin en tiempo de ejecucin de clases definidas en la DLL es incompatible con esas
definidas en el ejecutable, y que cualquier objeto creado desde la DLL debe ser finalizado antes de
que la DLL sea descargada.9

También podría gustarte