Cours Complet du langage de Programmation D en PDF


Télécharger Cours Complet du langage de Programmation D en PDF

★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Cours Complet du langage de Programmation D en PDF

...

Qu'est ce que D?

Language Langage multi-paradigme

 Programmation orientée objet

 Programmation générique (via des modèles)

 Compilé

 code natif

Pas de VM, pas d'Iterpreters

 Typiquement

 Ordures collectées

Based Basé sur Unicode

 binaire compatible avec C

 Ressemble et se sent très bien comme C / C ++

Exemple de code: Hello World

importer std.cstream;

int main (char [] [] args)

{

dout.writefln («Bonjour, le monde!»);

retourne 0;

}

Exemple de code: Classes

interface Animal {

char [] parle ();

}

classe Chien: Animal {

char [] speak () {return woof‖; }

}

classe Cat: Animal {

char [] speak () {return ―meow‖; }

}

Exemple de code: Classes

int main()

{

Animaux [] animaux;

animaux ~ = nouveau chien ();

animaux ~ = nouveau chat ();

foreach (Animal a; animaux)

dout.writeLine (a.speak ());

retourne 0;

}

Classe

 Encapsulation

 public, protégé, privé

 Héritage

 héritage unique

 Interfaces multiples

 Mix-in

 «objet de classe» à la racine de la hiérarchie

Un peu comme Java & C #! (sauf les mix-ins)

Classe

 Propriété (comme C #)

 Setter / Getter comme s'il s'agissait d'un champ

Over Surcharge des opérateurs (comme C ++, C #)

A + b  a.opAdd (b)

Exemple de code: modèles

classe Stack (T)

{

données T [] privées;

push public vide (T e) {

données ~ = e;

}

public T pop () {

T e = data [$ - 1];

data.length = data.length-1;

renvoyer e;

}

}

Exemple de code: modèles

int main()

{

Stack! (Int) s = new Stack! (Int) ();

pousse (100);

pousse (200);

dout.writefln (s.pop ()); // 200

dout.writefln (s.pop ()); // 100

retourne 0;

}

Modèles

 Modèles

 Ensemble de déclarations paramétrées

 classe

 fonction

 variable

 typedef ...

Similaire aux modèles C ++ (plus puissant)

Qu'est ce que D?

 Réingénierie de C / C ++

Comp Compilateur Naitive-code

 binaire compatible avec C

 Apparence familiale

 intégrant de nombreuses caractéristiques de la modernité

langues: Java, C #, ...

 GC

 Modules

 OO basé sur un héritage unique

 ... Et plus encore!



Quand est né D?

Quand est né D?

 1999 déc

Conçu par Walter Bright

Aug 2001 août

 Projet de spécifications de langue publié

 2001 déc

 Première version alpha du compilateur D (DMD)

 2004 mars

 GDC - D Front End pour GCC

Constamment développé

0.000

0,020

0,040

0,060

0,080

0,100

0,120

0,140

Rendez-vous amoureux

Version

pour chaque

déléguer,

fonction littérale

Surcharge d'opérateur

modèle

mixin

statique si

ddoc

Toujours en version bêta, toujours en légère évolution

Qui a créé D?

Qui a créé D?

Bright Walter Bright

L'auteur de ...

Software Northwest Software C

 Datalight C

 Zorland C

Ort Zortech C ++ (le premier compilateur C ++ natif)

 Symantec C ++

 Symantec Visual Cafe pour Java

 Digital Mars C ++

 Véritable hacker du compilateur!

Qui a créé D?

Bright Walter Bright - Hacker du compilateur

 souligne la «facilité du compilateur»

Implémentation ”du langage D,

qui conduit à...

 temps de compilation ultra-rapide

 Facilité de mise en œuvre d'autres outils

 Syntaxe Hilighting

Compl Achèvement du code

 Outils de refactoring

Pourquoi D?

Pourquoi D?

Qu'est-ce qui diffère de C / C ++ / Java / C #?

 Puissants tableaux et chaînes intégrés

 Numéros complexes intégrés

 déclaration «avec»

 Fonctions imbriquées et délégués

 Mix-in

RAII, Programmation à contrat, Unittest

Array Slice, Concat, ...

char [] s = "Bonjour";

char [] t = s [1..3]; // el‖

char [] u = s ~ t; // «Bonjour»

u [4 .. $] = ‗_ ‘; // -Enfer___‖

Changer de chaîne

int main (char [] [] args)

{

foreach (char [] arg; args)

commutateur (arg)

{

cas -h‖:

cas —help‖: ... pause;

cas -i‖: ... pause;

défaut: ... break;

}

}

Tableaux associatifs intégrés

long [char []] pfx;

pfx [―Kilo‖] = 1_000;

pfx [―Mega‖] = 1_000_000;

pfx [―Giga‖] = 1_000_000_000;

pfx [―Tera‖] = 1_000_000_000_000;

si (! (- Peta‖ dans pfx))

pfx [―Peta‖] = pfx [―Tera‖] * 1000;

Déclaration «avec»

avec (dout)

{

écrirefln («Bonjour»);

writefln («Monde»);

}

Fonction imbriquée

void f ()

{



int x = 0;

void g () {++ x; }

g(); g(); g();

}

Les délégués

OutputStream delegate (...) p =

& dout.writefln;

p («Bonjour»);

p (100);

p (-5,3 + 4i);

Délégués Anonymes

boucle void (int n, void delegate () s)

{

pour (int i = 0; i <n; ++ i)

s ();

}

boucle (10,

delegate {dout.writefln (―Hi! ‖);});

Délégués Anonymes

boucle vide (int n,

délégué vide (int i) s)

{

pour (int i = 0; i <n; ++ i)

si);

}

int x = 0;

boucle (10, délégué (int i) {x + = i;});

Mix-in

modèle Debug () {

void whoAmI () {

TypeInfo t = typeid (typeof (this));

dout.writefln (t, - - -, this);

}

}

classe Dog {

mixin Debug! ();

char [] toString () {...}

}

Chien d = nouveau chien (ochPochi‖);

d.whoAmI (); // Chien - Pochi

Programmation à contrat

double sqrt (double x)

dans

{affirmer (x> = 0); }

out (r)

{affirmer (abs (r * r-x) <0,0001); }

corps

{

...

}

Unittests intégré

char toUpper (char c) {

retourne a ‘<= c && c <= z‘

? c-«a» + «A»: c;

}

Test de l'unité {

assert (toUpper (‗a ‘) == ‗A‘)

assert (toUpper (‗T ‘) == ‗T‘)

}

Où est utilisé D?

Où est utilisé D?

 Systèmes pris en charge

 DMD - Compilateur numérique Mars D

Windows, Linux sur x86

 GDC - Compilateur GNU D

Linux, FreeBSD, MacOSX, Cygwin, AIX, ...

Où est utilisé D?

Applications écrites en D

 Jeux!

 Démos!

 SDL (Simple DirectMedia Layer)

Où est utilisé D?

 Autres applications écrites en D

 akIDE

Un objectif de l'IDE D et écrit en D

 attoHttpd

 Serveur HTTP simple

 delmail

K Spam-mail killer

 Diki

Engine moteur wiki simple

 DMDScript

Inte interpréteur ECMAScript

Comment obtenir D?



66