D (lenguaje de programación)

El lenguaje de programación D es un lenguaje de programación de sistemas orientado a objetos, imperativo y multiparadigma. El lenguaje D se originó como una reingeniería de C++, y los objetivos de diseño de D intentan combinar el rendimiento de los lenguajes compilados con la seguridad y el poder expresivo de los lenguajes dinámicos modernos. El código D nativo suele ser tan rápido como el código C++ equivalente, a la vez que es más corto y seguro para la memoria.

 

Ejemplos

Ejemplo 1

Este programa de ejemplo imprime sus argumentos de línea de comandos. La función main es el punto de entrada de un programa D, y args es una matriz de cadenas que representan los argumentos de la línea de comandos. Una cadena en D es una matriz de caracteres, representada por char[] en D1, o immutable(char)[] en D2.

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

La sentencia foreach puede iterar sobre cualquier colección. En este caso, está produciendo una secuencia de índices (i) y valores (arg) del array args. El índice i y el valor arg tienen sus tipos inferidos del tipo del array args.

Ejemplo 2

A continuación se muestran varias capacidades de D y compensaciones de diseño de D en un programa muy corto. Recorre las líneas de un archivo de texto llamado palabras.txt que contiene una palabra diferente en cada línea, e imprime todas las palabras que son anagramas de otras palabras.

import std. stdio, std. algorithm, std. range, std. string; void main() { dstring[][dstring] signs2words; foreach(dchar[] w; lines(File("words.txt"))     { w = w. chomp(). toLower(); clave inmutable = w. dup. sort(). release(). idup; signs2words[key] ~= w. idup; } foreach(words; signs2words) if(words. length > 1) writefln(words. join(" ")); }
  1. signs2words es una matriz asociativa incorporada que asigna claves dstring (32 bits / char) a matrices de dstrings. Es similar a defaultdict(list) en Python.
  2. lines(File()) produce líneas de forma perezosa, con la nueva línea. Luego hay que copiarlo con idup para obtener una cadena que se utilizará para los valores de la matriz asociativa (la propiedad idup de las matrices devuelve un duplicado inmutable de la matriz, lo que es necesario ya que el tipo dstring es en realidad inmutable(dchar)[]). Las matrices asociativas incorporadas requieren claves inmutables.
  3. El operador ~= añade una nueva cadena d a los valores de la matriz dinámica asociada.
  4. toLower, join y chomp son funciones de cadena que D permite utilizar con una sintaxis de método. El nombre de estas funciones suele ser muy similar al de los métodos de cadena de Python. La función toLower convierte una cadena a minúsculas, join(" ") une una matriz de cadenas en una sola cadena usando un solo espacio como separador, y chomp elimina una nueva línea del final de la cadena si está presente.
  5. La ordenación es una función de std.algorithm que ordena el array en su lugar, creando una firma única para las palabras que son anagramas entre sí. El método release() en el valor de retorno de sort() es útil para mantener el código como una sola expresión.
  6. El segundo foreach itera sobre los valores del array asociativo, es capaz de inferir el tipo de palabras.
  7. se asigna a una variable inmutable, su tipo se infiere.
  8. Se utiliza UTF-32 dchar[] en lugar de UTF-8 char[] normal, de lo contrario sort() se niega a ordenarlo. Hay formas más eficientes de escribir este programa, que utilizan sólo UTF-8.
 

AlegsaOnline.com - 2020 / 2023 - License CC3