software.wikisort.org - Langage_de_programmation

Search / Calendar

Le D est un langage de programmation impératif orienté objet et multi-paradigmes conçu pour la programmation système.

D

Date de première version
Paradigme impératif, orienté objet, procédural
Auteur Walter Bright
Développeur Fondation du langage D
Dernière version 2.098.0 (10 octobre 2021)
Typage fort , statique , inféré
Influencé par C, C++, Java, C#, Eiffel, Python
Implémentations DMD, GDC, LDC
Système d'exploitation Linux, Windows, MacOS
Licence Boost
Site web dlang.org
Extension de fichier d, dd, di et def

Il s’inspire de nombreux langages, dont C++, Java (avec lequel il a en commun l'utilisation d'un ramasse-miettes et l'existence d'un héritage simple), Eiffel (pour le paradigme de programmation par contrat).

D est en version 2.x, abrégé « D2 » (depuis le 17 juin 2007), et subit ponctuellement de légères modifications de spécification. Ces transformations sont réalisées par Walter Bright et Andrei Alexandrescu, qui tiennent compte des remarques et requêtes de la communauté. La version 1.x du langage est obsolète et a été abandonnée le 31 décembre 2012.


Historique


Le langage D a été créé par Walter Bright en avec sa société Digital Mars (il devait d'ailleurs être appelé Mars initialement[1]), et il est présenté comme le successeur du C, d'où son nom (le langage C lui-même succédait au langage B, qui quant à lui ne dérive pas d'un quelconque langage A, mais du BCPL).


Origine


Walter Bright a imaginé ce langage en s’appuyant sur l'expérience qu'il a acquise lors du développement de compilateurs pour les langages C et C++. Le design du langage D a pour ambition de conserver le niveau de performance de ces langages tout en palliant les problèmes liés à la syntaxe et à la sémantique.

En particulier :

Pour cela, le langage D s'affranchit du préprocesseur, utilise des modules, et a une syntaxe non ambiguë, ce qui a pour effet d'accélérer grandement la vitesse de compilation et de faciliter la création d'outils d'analyse de code. Ainsi, couplé avec des notions modernes incluses dans le langage, la productivité est améliorée.

« Si un langage peut récupérer 90 % de la puissance du C++ mais seulement 10 % de sa complexité, cela vaut largement le coup[2]. »

 Walter Bright


Compilateurs


Le compilateur officiel, DMD, est développé parallèlement à la spécification du langage. Il cible le langage machine. La totalité[3] de son code est ouvert, ce qui permet de corriger rapidement les problèmes rencontrés, ou encore de réaliser son propre compilateur en utilisant une autre base (backend). Il existe actuellement pour les plates-formes Linux, FreeBSD, Mac OS X et Windows.

Un compilateur GNU, GDC, mêlant le frontend de DMD et le backend de gcc est en développement.

Un compilateur sous licence BSD, LDC, mêlant le frontend de DMD et le backend LLVM est encore en cours de développement. Il peut compiler en 64 bits, supporte l'essentiel du langage D dans ses versions 1 et 2 et permet de créer des bibliothèques dynamiques quelle que soit la plate-forme Linux, Mac OS X ou Windows contrairement à son homologue DMD ne pouvant réaliser cette tâche que sur Mac OS X.


Spécificités du langage



Paradigmes


D dans sa version 2 est un langage multi paradigmes qui inclut la plupart des notions essentielles de programmation orientée objet, générique et fonctionnelle, tout en laissant la possibilité d'inclure du code assembleur ou encore de linker du code C.

Paradigmes supportés :


Autres


Il introduit dans ses spécifications les éléments de la programmation par contrat, de test unitaire, et de vrais modules qui améliorent la qualité et facilitent la maintenance du code. Les tableaux associatifs et les tableaux avec "slices", directement inclus dans le langage, les pointeurs (bien que leur usage soit largement réduit par rapport à C ou C++), le « ramasse-miettes » débrayable et l'inférence de types permettent de faire de D un langage à la fois puissant et expressif. Le langage permet en outre d'inclure directement dans le source du code écrit en C ou code assembleur.

La programmation objet en D supporte l’encapsulation, le polymorphisme, de l’héritage simple étendu par des interfaces et de vraies « propriétés ». L’instanciation se fait uniquement par référence et laisse le contrôle sur l’initialisation des attributs statiques. Les exceptions et le mécanisme des "scope guards" permettent de simplifier la gestion des erreurs.

Les possibilités fonctionnelles du langage s'expriment de plusieurs manières: les fonctions anonymes ou lambda, les fonctions pures dont la pureté est vérifiée par le compilateur, l'évaluation paresseuse des arguments. L'évolution du langage prend en compte le multithreading en permettant la vérification par le compilateur de l'immutabilité d'objets en mémoire.

Enfin D inclut un très puissant système de « templates », qui permet d'utiliser l'essentiel du langage dans le cadre de la métaprogrammation. Il inclut notamment la notion de contrainte sur les paramètres de templates, les mixins et l'évaluation du code à la compilation (Compile Time Function Evaluation). Le compilateur a accès au typage des données à la compilation et permet la compilation conditionnelle ce qui permet d'optimiser la génération de code.


Exemples


Voici un exemple du fameux « Hello World » en langage D :

import std.stdio;

void main() {
  writeln("Hello world!");
}

Autre exemple, qui affiche la liste des arguments associés au programme lors de son exécution en ligne de commande:

import std.stdio;

void main(string[] args) {
  foreach (int i, string arg; args) {
    writeln("args[", i, "] = '", arg, "'");
  }
}

La version 2.0 accepte également le type string comme un alias à immutable(char)[], et inclut par ailleurs writeln() en plus de writefln(), permettant ainsi d'invoquer des variables plus simplement (cf. Stackoverflow).


Anecdote


Le langage BCPL fut inventé en 1966, et son successeur fut le langage B (1969) qui fut à son tour remplacé par le langage C (1970). Le successeur du C pouvait alors être nommé D ou P selon l'ordre alphabétique ou l'ordre des lettres BCPL.[réf. nécessaire] Finalement, ce fut le C++ (1983). C'est ainsi que la lettre D fut choisie (1999) en référence au nouveau successeur.


Annexes


Sur les autres projets Wikimedia :


Liens externes



Références


  1. « It started out as the Mars programming language, but my colleagues called it D first as a joke, but the name caught on and the D programming language was born. » - Walter Bright, préface du livre The D Programming Language.
  2. « If a language can capture 90% of the power of C++ with 10% of its complexity, I argue that is a worthwhile tradeoff. » - Walter Bright
  3. (en-US) « dmd Backend converted to Boost License », sur forum.dlang.org (consulté le )
  4. http://www.informit.com/articles/article.aspx?p=1609144
  5. https://dlang.org/spec/contracts.html
  6. http://dlang.org/template.html

На других языках


- [fr] D (langage)

[ru] D (язык программирования)

D (Ди) — мультипарадигмальный статически типизированный компилируемый язык программирования, созданный Уолтером Брайтом из компании Digital Mars. Начиная с 2006 года соавтором также является Андрей Александреску. D является потомком языка C++, но существенно доработан по сравнению с ним. Также он заимствует ряд концепций из языков программирования Python, Ruby, C#, Java, Eiffel.



Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.org внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.org - проект по пересортировке и дополнению контента Википедии