Lenguaje de programación D

Lenguaje de programación D

Lenguaje de programación D

D
Paradigma: multiparadigma: orientado a objetos, imperativo
Apareció en: 1995
Diseñado por: Walter Bright
Última versión: 1.050(estable) 2.035(inestable) (14 de octubre de 2009; hace 36 días[1] )
Tipo de dato: Fuerte, Estático
Implementaciones: DMD, GDC, LDC
Influido por: C++, C, C#, Java, Eiffel
Web: http://www.digitalmars.com/d/

D es un lenguaje de programación de uso general desarrollado por Walter Bright cuya primera versión apareció en 1995. Se origina como un rediseño de C++, con un enfoque más pragmático, pero no es un lenguaje puramente derivado del anterior. D ha mantenido algunas características de C++ y también está influido por otros conceptos de otros lenguajes como Java, C# y Eiffel. Una versión estable fue lanzada el 2 de enero de 2007. Una versión experimental, 2.0, fue lanzada el 17 de junio de 2007.

Contenido

Características

D está siendo diseñado con lecciones aprendidas del uso de C++ en vez de ser diseñado desde una perspectiva teórica. Aunque usa muchos de los conceptos de C/C++ también descarta algunos, y por lo tanto no es compatible con código escrito en C o C++. D retiene la habilidad de C++ de hacer código de bajo nivel, permitiendo incluir código en ensamblador. La herencia múltiple de C++ es reemplazada por herencia simple e interfaces y 'mixins'. La sintaxis de declaración 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 código específico de la máquina con código D, una técnica comúnmente usada por programadores de software de sistema para acceder a características de bajo nivel necesarias para interactuar directamente con el hardware, permitiendo escribir software como sistemas operativos y drivers.

D incluye soporte para comentarios de documentación, pero hasta ahora sólo el compilador entregado por Digital Mars implementa un generador de documentación.

Orientada a objetos

La programación orientada a objetos está basada en herencia simple, con todas las clases derivadas de la clase Object. D no soporta herencia múltiple; en vez de eso, usa interfaces parecidas a las de Java, que son comparables a las clases abstractas de C++.

Metaprogramación

Metaprogramación es soportada por una combinación de plantillas, ejecución de funciones en tiempo de compilación, tuplas y 'mixins' de cadena. Soporta CTFE (evaluación de funciones en tiempo de compilación).

Manejo de memoria

La memoria es usualmente manejada por un recolector de basura, pero objetos específicos pueden ser finalizados inmediatamente cuando salen del ámbito. Es posible el manejo de memoria explícito usando los operadores sobrecargados new y delete, y simplemente llamando las funciones malloc y free de C directamente. La recolección 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 recolección completa.[2] El manual da muchos ejemplos de cómo implementar diferentes esquemas de manejo de memoria altamente optimizados para cuando la recolección de basura es inadecuada para el programa.

Interacción con otros sistemas

La ABI de C es admitida, al igual que todos los tipos fundamentales y derivados de C, permitiendo acceso directo al código existente escrito en C y bibliotecas. La biblioteca estándar de C es parte del D estándar. A menos que se usen namespaces muy explícitos puede ser de alguna forma difícil de acceder, como se puede observar en módulos escritos en D que hagan uso de dicha característica. Pero la biblioteca estándar de D es usualmente suficiente.

Implementación

Las implementaciones actuales de D compilan el código directamente a código máquina para lograr una ejecución eficiente.

Aunque D todavía está en desarrollo, cambios al lenguaje no se hacen regularmente desde la versión 1.0. El diseño está virtualmente congelado, y nuevos lanzamientos se concentran en resolver bugs existentes. La versión 1.0 no es completamente compatible con versiones antiguas del lenguaje y del compilador. 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 código es abierto.
  • GDC: Un front end para el back end GCC, construido usando las fuentes del compilador DMD. Snapshots soportan la versión 2.0 del lenguaje. Obsoleto.
  • LDC: Un compilador basado en DMD y usa LLVM como back end. El backend LLVM permite que LDC logre optimizar el código alcanzando rendimiento similar a C/C++ e incluso superándolo en ocasiones.

Herramientas de desarrollo

D todavía 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 código (a través 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 código, 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 características fundamentales de D es limitado. Un depurador con soporte explícito 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 línea de comandos, ZeroBUGS tiene su propia interfaz gráfica.

Problemas y controversias

Sobrecarga de operadores

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 solución parcial de D es el operador opIndexAssign, que solo repara casos donde la expresión indexeada es solo un valor L como obj[i] = 5 pero no los casos originales.

División en la biblioteca estándar

La biblioteca estándar 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.[3] Sin embargo, Tango y Phobos son por el momento incompatibles debido a varias diferencias (soporte de hilos, recolector de basura, etc). La existencia de dos bibliotecas, ambas de uso elevado, puede llevar a problemas significativos donde algunos paquetes usan Phobos y otros usan Tango.

Soporte sin finalizar para bibliotecas compartidas/dinámicas

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, todavía hay limitaciones con DLLs en D incluyendo el hecho de que la información en tiempo de ejecución 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.[4]

Referencias

  1. Change Log - D Programming Language 1.0 - Digital Mars
  2. «core.memory - D Programming Language - Digital Mars».
  3. Wiki4D: Standard Lib
  4. «Wiki4D: BestPractices/DLL».

Enlaces externos

Obtenido de "Lenguaje de programaci%C3%B3n D"

Wikimedia foundation. 2010.

Игры ⚽ Нужен реферат?

Mira otros diccionarios:

  • Lenguaje de programación C — Saltar a navegación, búsqueda C Paradigma: Imperativo (Procedural) Apareció en: 1972 Diseñado por: Dennis M. Ritchie Tipo de dato: Débil, Estático Implementaciones …   Wikipedia Español

  • Lenguaje de programación J — Saltar a navegación, búsqueda El lenguaje de programación J, diseñado por Kenneth Iverson y Roger Hui en los 90, es una síntesis de los lenguajes de programación APL (diseñado también por Iverson) y los lenguajes funcionales FP y FL creados por… …   Wikipedia Español

  • Lenguaje de programación Oz — Saltar a navegación, búsqueda Oz es un lenguaje de programación multi paradigma y lenguaje de programación esotérico. Oz fue originalmente desarrollado en el laboratorio de Programación de Sistemas en la Universidad de Saarland por Gert Smolka y… …   Wikipedia Español

  • Lenguaje de programación B — Saltar a navegación, búsqueda B Paradigma: imperativo (procedural) Apareció en: 1969 Diseñado por: Kenneth L. Thompson, Dennis M. Ritchie Tipo de dato: lenguaje sin tipos …   Wikipedia Español

  • Lenguaje de programación FP — Saltar a navegación, búsqueda FP (abreviación de Functional Programming) es un lenguaje de programación creado por John Backus para apoyar la diseminación del paradigma de Programación a nivel funcional. Contenido 1 Componentes del lenguaje 1.1… …   Wikipedia Español

  • Lenguaje de programación bc — Saltar a navegación, búsqueda bc es un lenguaje de programación de cálculo numérico con precisión arbitraria, con una sintaxis similar a la del lenguaje de programación C. El lenguaje y su intérprete son una herramienta estandarizada de los… …   Wikipedia Español

  • Lenguaje de programación — Captura de la microcomputadora Commodore PET 32 mostrando un programa en el lenguaje de programación BASIC, bajo el emulador VICE en una distribución GNU/Linux. Un lenguaje de programación es un idioma artificial diseñado para expresar… …   Wikipedia Español

  • Lenguaje de programación — Un lenguaje de programación es una técnica estándar de comunicación que permite expresar las instrucciones que han de ser ejecutadas en una computadora. Consiste en un conjunto de reglas sintácticas y semánticas que definen un programa… …   Enciclopedia Universal

  • Lenguaje de programación B — B es un lenguaje de programación diseñado por Dennis Ritchie y Ken Thompson en los Laboratorios Bell, principalmente usado para aplicaciones no numéricas y programación de sistemas. Apareció por primera vez en 1969. Las primeras implementaciones… …   Enciclopedia Universal

  • Lenguaje de programación C — C es un lenguaje de programación creado en 1969 por Ken Thompson y Dennis M. Ritchie en los Laboratorios Bell basándose en los lenguajes BCPL y B. Al igual que sus dos predecesores, es un lenguaje orientado a la implementación de Sistemas… …   Enciclopedia Universal

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”