Nuevos lenguajes para la programación de juegos (parte 2) - El lenguaje D
Como mencioné en la primera parte de esta nota (que puede encontrar aquÃ) existen nuevas alternativas para el desarrollo de juegos, no porque sean lenguajes realmente nuevos sino porque comienzan a ser cada dÃa más comunes en la elección de programadores de juegos.
La primera versión estable de este lenguaje fue lanzada por Digital Mars en Enero del año 2007, sÃ, hace tan sólo un año de la publicación de este post. Su autor es Walter Bright quien comenzó a desarrollar el lenguaje hace más de 10 años (la primera versión data del año 1995). La popularidad que ha ganado D en el último fue realmente asombrosa y eso no es otra cosa que los frutos de sus excelentes caracterÃsticas.
Pero comencemos por el principio, ¿Qué es el lenguaje D? ¿Es necesario otro lenguaje de programación más?
El D es un lenguaje de programación de tipado estático que compila en código nativo (principal diferencia con C# que compila sobre plataforma .NET en lenguaje intermedio). Es multiparadigma, soporta diversos estilos de programación (imperativo, orientado a objetos y metaprogramación). Su sintáxis es similar a la de C y en apareciencia es muy parecido a C# y Java.
Posee muchas caracterÃsticas interesantes a ser:
- Multiplataforma
- Arrays asociativos
- Gestión automática de memoria
- Compilación condicional sin uso de preprocesador (más al estilo C#)
- Delegados
- Compatibilidad con lenguaje C
- Sobrecarga de operadores
- Reflection
- Y mucho más…
¿Y porque deberÃa interesarme un lenguaje asÃ?
En pocas palabras, D ofrece la eficiencia de ejecución de C++ con la productividad de desarrollo de Java o C#. Con él podrÃamos crear drivers, ya que es un lenguaje nativo, o aplicaciones muy diversos tipos siendo los juegos - claro - lo que aquà más nos interesa.
Desarrollar un juego con D es muy atractivo por las caracterÃsticas mencionadas. Los programas hechos en D pueden ser muy eficientes y no tenemos que lidiar con cuestiones de bajo nivel si asà no lo requerimos, como la gestión automática de memoria.
En mi opinión el lenguaje D es en su definción hacia donde deberÃa moverse el lenguaje C++. Y es en parte es asÃ, ya que el lenguaje C++ también está incorporando - o planea incorporar - muchas de las caracterÃsticas con las que D ya nació (como la gestión automática de memoria). Sin embargo, los lenguajes no pueden sufrir transformaciones radicales en poco tiempo, el proceso de estandarización es largo y la adopción - siendo el C++ un lenguaje tan expandido - lo es aún más. Por otro lado, es dificil remover caracteristicas no deseadas de lenguajes existentes ya que siempre se prioriza mantener una compatibilidad hacia atrás. Actualmente el C++ - que es mi lenguaje predilecto - posee muchas caracterÃsticas que fueron siendo heredadas desde su creación y hoy dÃa molestan y dificultan el acceso a nuevos programadores. C++ es un lenguaje grande y dificil; D pretende ser más pequeño, es moderno y su sintaxis es más limpia.
Veamos un pequeño ejemplo de código D extraido de la Wikipedia:
| import std.stdio: writefln;
|
| void display_item_count(string person, string[] items)
| {
| writefln(person, " is carrying ", items.length, " items.");
| }
|
| void main(string[] args)
| {
| // Declare an associative array with string keys and
| // arrays of strings as data
| string[][string] people;
|
| // Add some people to the container and let them carry some items
| people["Anya"] ~= "scarf";
| people["Dimitri"] ~= "tickets";
| people["Anya"] ~= "puppy";
|
| // Iterate over all the persons in the container
| foreach (person, items; people)
| display_item_count(person, items);
| }
Libros acerca de D
Debido a que D es lenguaje relativamente nuevo, no existen muchÃsimos libros publicados acerca de él. Hace pocas semanas Apress publicó “Learn to Tango with D” pero hay mucha mas ofera. Seguramente en el transcurso de 2008 muchos otros libros de D saldrán a las calles.
Por otro lado, en internet cada vez es más común encontrar tutoriales y sitios dedicados a D. El foro oficial (que en realidad es un newsgroup) es actualmente el mejor medio para evacuar dudas e incluso es posible que el mismo Walter Bright podrÃa contestar nuestras preguntas.
Qué le falta al lenguaje D
Para que el lenguaje D pueda el próximo paso y se torne aún más popular se requiere la existencia de algún IDE poderoso tipo Visual Studio o Eclipse. No sólo un editor de texto que pinte la sintáxis de lenguaje de colores sino un entorno con debugger integrado y de fácil instalación, que permita el fácil acceso de nuevos programadores y mejore sustancialmente la productividad de la herramienta.
Para que esto ocurra una gran empresa deberÃa apostar por D. Microsoft dificilmente vea en D un futuro, ya que tiene sus propios lenguajes, como C#, al cual apuesta gran parte de su estrategia en este mercado. Tal vez Inprise/Borland o quizás en lugar de una gran empresa podrÃa ser la comunidad la que finalmente acerque las herramientas que le complementen este fantástico lenguaje.
¿Donde puedo conseguir más información?
El sitio oficial es el mejor sitio para acceder a información de primera respecto al lenguaje D y desde allà también podremos acceder a otros sitios de la comunidad dedicados al lenguaje.





Luego de leer este arÃculo estuve leyendo en la página del D. La verdad parece más que prometedor! Impresionante hallazgo Fuzzy, no lo tenÃa para nada.
Bueno no conozco el lenguaje D pero despues de leer el artÃculo voy a tomar en cuenta.
estuve probando un par de cosas en D y encontre cosas rarisimas como de costumbre.
1) trate de pasar el algoritmo de escalado hq2x y resulta (aunque parezca increible) que el compilador se cuelga con el inmenso switch que encuentra en el algoritmo.
2) escribi un script en python que dado los archivos: “strings.dat, gfx.dat, sound.dat” los transforma en: “0×1, 0×2, 0×3″ y crea un modulo con los nombres de los archivos originales y sus respectivos pares hexadecimales:
Resulta que si tenes, por ejemplo:
const char []s_StringFile = HexRes.STRINGS_DAT; (HexRes es el nombre del modulo y “STRINGS_DAT” es un “const char []” tambien)
el compilador tb se cuelga y es mas, hasta tira el famoso “la memoria no se puede written”.
y es raro porque es la unica parte donde sucede, en todas las demas partes donde hago asignaciones de ese tipo no.
—
pero si, D, es excelente