robot de la enciclopedia para niños

D (lenguaje de programación) para niños

Enciclopedia para niños
Datos para niños
D
D Programming Language logo.svg
Desarrollador(es)
Digital Mars, Andrei Alexandrescu (desde 2006)
https://dlang.org
Información general
Extensiones comunes .d
Paradigma multiparadigma: orientado a objetos, imperativo, funcional, meta
Apareció en 1999
Diseñado por Walter Bright, Andrei Alexandrescu (desde 2006)
Última versión estable 2.105.2 (15 de septiembre de 2023 (1 año, 9 meses y 19 días))
Sistema de tipos Fuerte, Estático
Implementaciones DMD, GDC, LDC
Influido por C++, C, C#, Java, Eiffel, Python, Ruby
Ha influido a MiniD, DScript, Vala, Qore, Swift
Sistema operativo DMD: Unix-like (FreeBSD, Linux etc) , Windows, OS X
Licencia GPL/Artistic (DMD frontend),
Boost (librerías estándar y de tiempo de ejecución),
código disponible (DMD backend),
Completamente open-source (LDC u GDC)

D es un lenguaje de programación de uso general. Fue creado por Walter Bright y su primera versión apareció en 1999. Se diseñó como una mejora del lenguaje C++, buscando ser más práctico. Aunque D toma ideas de C++, no es una copia, sino que incorpora conceptos de otros lenguajes como Java, C# y Eiffel.

¿Qué hace especial al lenguaje de programación D?

El lenguaje D fue creado pensando en las experiencias de usar C++. No se basó solo en teorías, sino en cómo los programadores trabajan en la vida real. Aunque comparte muchas ideas con C y C++, también cambia algunas cosas. Por eso, el código escrito en C o C++ no funciona directamente en D.

D mantiene la capacidad de C++ para crear programas que interactúan directamente con el hardware. Esto es útil para desarrollar sistemas operativos o controladores. También permite incluir código en lenguaje ensamblador, que es un lenguaje muy cercano a la máquina.

Programación orientada a objetos en D

D usa un estilo de programación llamado "orientada a objetos". Esto significa que los programas se organizan en "objetos" que tienen características y acciones. En D, las clases (que son como planos para crear objetos) se basan en una sola clase principal llamada "Object". D no permite la herencia múltiple (que una clase herede de varias a la vez), pero usa "interfaces" que son similares a las clases abstractas de C++.

Metaprogramación: Programar programas

La Metaprogramación en D te permite escribir programas que crean o modifican otros programas. Esto se logra con herramientas como las plantillas, la ejecución de funciones durante la compilación y los "mixins" de cadenas.

Por ejemplo, puedes calcular el factorial de un número (el producto de todos los números enteros positivos desde 1 hasta ese número) de dos maneras:

ulong factorial(ulong n)
{
    ulong Producto = 1;
    for(ulong i = 2; i <= n; i++){
        Producto *= i;
    }
    return Producto;
}

O usando una plantilla que hace el cálculo al momento de compilar el programa:

template Factorial(ulong n)
{
    ulong Producto = 1;
    static for(i = 2; i <= n; i++){
        Producto *= i;
    }
    return Producto;
}

Así es como se usarían estas funciones para calcular factoriales:

enum fact_7 = Factorial!(7); // Calcula 7! al compilar
enum fact_9 = factorial(9); // Calcula 9! al compilar

D también permite mostrar mensajes durante la compilación, lo que es útil para verificar los resultados:

import std.string : format;
pragma(msg, format("7! = %s", fact_7));
pragma(msg, format("9! = %s", fact_9));

Los "mixins" de cadenas son muy potentes. Permiten generar código D a partir de texto, y ese código se compila junto con el programa. Esto es útil para crear lenguajes especiales dentro de D.

import FooToD; // Un módulo que convierte código "Foo" a código D
void main()
{
    mixin(fooToD(import("example.foo")));
}

Funciones: Cómo D maneja las acciones

D soporta características de programación funcional. Esto incluye "funciones anónimas" (funciones sin nombre), "clausuras" (funciones que recuerdan el entorno donde fueron creadas) y el uso de "funciones de orden superior" (funciones que pueden tomar otras funciones como entrada o devolverlas como salida).

Aquí hay un ejemplo de cómo se escriben las funciones anónimas en D:

int function(int) g;
g = (x) { return x * x; }; // Forma más larga
g = (x) => x * x; // Forma abreviada

Manejo de la memoria en D

La memoria en D se gestiona generalmente con un "recolector de basura". Esto significa que el lenguaje se encarga automáticamente de liberar la memoria que ya no se usa. Sin embargo, los programadores también pueden controlar la memoria de forma manual si lo necesitan, lo que es útil para programas que requieren un control muy preciso.

Interacción con otros sistemas

D puede trabajar fácilmente con código escrito en C. Esto es importante porque hay muchas bibliotecas y programas ya hechos en C que los programadores de D pueden usar. La biblioteca estándar de C es parte de D, lo que facilita el acceso a sus funciones.

Ejemplos de código en D

Aquí tienes un ejemplo sencillo de un programa en D.

Ejemplo 1: Mostrar argumentos

Este programa muestra los argumentos que se le pasan cuando se ejecuta desde la línea de comandos. La función principal se llama `main` y `args` es una lista de textos (cadenas de caracteres) que representan esos argumentos.

import std.stdio: writefln;

void main(string[] args)
{
    foreach (i, arg; args)
        writefln("args[%d] = '%s'", i, arg);
}

La palabra `foreach` permite recorrer cualquier colección de elementos. En este caso, recorre la lista `args` y obtiene el número de posición (`i`) y el valor (`arg`) de cada elemento.

¿Cómo funciona D?

Los programas escritos en D se convierten directamente a código que la computadora puede entender, lo que los hace muy rápidos.

El diseño del lenguaje D no cambia mucho desde la versión 1.0. Las nuevas versiones se enfocan en corregir errores. El compilador oficial, creado por Walter Bright, es el que define cómo funciona el lenguaje.

  • DMD: Es el compilador oficial de Digital Mars. Su parte principal es de código abierto.
  • GDC: Es otra forma de compilar D, usando una herramienta llamada GCC.
  • LDC: Este compilador también se basa en DMD y usa LLVM, lo que le permite crear código muy optimizado, a veces tan rápido o más que el de C/C++.

Herramientas para desarrollar en D

Aunque D es un lenguaje potente, no tiene tantos entornos de desarrollo (programas que ayudan a escribir código) como otros lenguajes. Sin embargo, se puede usar con editores de texto como emacs, vim, SciTE y Zeus. Algunos de ellos ofrecen ayuda para escribir código en D.

También hay complementos para entornos como Eclipse, llamados Descent y Mmrnmhrm. Además, existen entornos de desarrollo completos escritos en el propio D, como Poseidon, que incluyen funciones para completar código, resaltar la sintaxis y depurar (encontrar errores) programas.

Los programas en D se pueden depurar con herramientas de C o C++, como GDB o WinDbg. También hay depuradores específicos para D, como Ddbg para Windows y ZeroBUGS para Linux.

kids search engine
D (lenguaje de programación) para Niños. Enciclopedia Kiddle.