summaryrefslogtreecommitdiffhomepage
path: root/fr-fr/d.html.markdown
diff options
context:
space:
mode:
authorLukaxFeh <32396925+LukaxFeh@users.noreply.github.com>2017-10-29 13:09:01 -0200
committerPratik Karki <predatoramigo@gmail.com>2017-10-29 20:54:01 +0545
commit0aaae2653cc4edef745c7f0de2b5c038097337d2 (patch)
tree1134c1993e7d3986c5ca2063578bfde15447afa4 /fr-fr/d.html.markdown
parentf4b019680c8c21d0e57aa59dcadc25d3ac515e58 (diff)
Fix file names in french (#2984)
* fix file name * fix file names * fix file names * fix file names * fix file names * fix file names
Diffstat (limited to 'fr-fr/d.html.markdown')
-rw-r--r--fr-fr/d.html.markdown264
1 files changed, 0 insertions, 264 deletions
diff --git a/fr-fr/d.html.markdown b/fr-fr/d.html.markdown
deleted file mode 100644
index 8d98f9dc..00000000
--- a/fr-fr/d.html.markdown
+++ /dev/null
@@ -1,264 +0,0 @@
----
-language: D
-filename: learnd-fr.d
-contributors:
- - ["Nick Papanastasiou", "www.nickpapanastasiou.github.io"]
-translators:
- - ["Quentin Ladeveze", "aceawan.eu"]
-lang: fr-fr
----
-
-```c
-// Commençons par un classique
-module hello;
-
-import std.stdio;
-
-// args n'est pas obligatoire
-void main(string[] args) {
- writeln("Bonjour le monde !");
-}
-```
-
-Si vous êtes comme moi et que vous passez beaucoup trop de temps sur internet, il y a
-de grandes chances pour que vous ayez déjà entendu parler du [D](http://dlang.org/).
-D est un langage de programmation moderne, généraliste, multi-paradigmes qui contient
-des fonctionnalités aussi bien de bas niveau que de haut niveau.
-
-D est activement développé par de nombreuses personnes très intelligents, guidées par
-[Walter Bright](https://fr.wikipedia.org/wiki/Walter_Bright))) et
-[Andrei Alexandrescu](https://fr.wikipedia.org/wiki/Andrei_Alexandrescu).
-Après cette petite introduction, jetons un coup d'oeil à quelques exemples.
-
-```c
-import std.stdio;
-
-void main() {
- //Les conditions et les boucles sont classiques.
- for(int i = 0; i < 10000; i++) {
- writeln(i);
- }
-
- // On peut utiliser auto pour inférer automatiquement le
- // type d'une variable.
- auto n = 1;
-
- // On peut faciliter la lecture des valeurs numériques
- // en y insérant des `_`.
- while(n < 10_000) {
- n += n;
- }
-
- do {
- n -= (n / 2);
- } while(n > 0);
-
- // For et while sont très utiles, mais en D, on préfère foreach.
- // Les deux points : '..', créent un intervalle continu de valeurs
- // incluant la première mais excluant la dernière.
- foreach(i; 1..1_000_000) {
- if(n % 2 == 0)
- writeln(i);
- }
-
- // On peut également utiliser foreach_reverse pour itérer à l'envers.
- foreach_reverse(i; 1..int.max) {
- if(n % 2 == 1) {
- writeln(i);
- } else {
- writeln("Non !");
- }
- }
-}
-```
-On peut définir de nouveaux types avec les mots-clés `struct`, `class`,
-`union` et `enum`. Ces types sont passés à la fonction par valeur (ils sont copiés)
-De plus, on peut utiliser les templates pour rendre toutes ces abstractions génériques.
-
-```c
-// Ici, 'T' est un paramètre de type. Il est similaire au <T> de C++/C#/Java.
-struct LinkedList(T) {
- T data = null;
-
- // Utilisez '!' pour instancier un type paramétré.
- // Encore une fois semblable à '<T>'
- LinkedList!(T)* next;
-}
-
-class BinTree(T) {
- T data = null;
-
- // S'il n'y a qu'un seul paramètre de template,
- // on peut s'abstenir de mettre des parenthèses.
- BinTree!T left;
- BinTree!T right;
-}
-
-enum Day {
- Sunday,
- Monday,
- Tuesday,
- Wednesday,
- Thursday,
- Friday,
- Saturday,
-}
-
-// Utilisez alias pour créer des abreviations pour les types.
-alias IntList = LinkedList!int;
-alias NumTree = BinTree!double;
-
-// On peut tout aussi bien créer des templates de function !
-T max(T)(T a, T b) {
- if(a < b)
- return b;
-
- return a;
-}
-
-// On peut utiliser le mot-clé ref pour s'assurer que quelque chose est passé
-// par référence, et ceci, même si a et b sont d'ordinaire passés par valeur.
-// Ici ils seront toujours passés par référence à 'swap()'.
-void swap(T)(ref T a, ref T b) {
- auto temp = a;
-
- a = b;
- b = temp;
-}
-
-// Avec les templates, on peut également passer des valeurs en paramètres.
-class Matrix(uint m, uint n, T = int) {
- T[m] rows;
- T[n] columns;
-}
-
-auto mat = new Matrix!(3, 3); // T est 'int' par défaut
-
-```
-À propos de classes, parlons des propriétés. Une propriété est, en gros,
-une méthode qui peut se comporter comme une lvalue. On peut donc utiliser
-la syntaxe des structures classiques (`struct.x = 7`) comme si il
-s'agissait de méthodes getter ou setter.
-
-```c
-// Considérons une classe paramétrée avec les types 'T' et 'U'
-class MyClass(T, U) {
- T _data;
- U _other;
-}
-
-// Et des méthodes "getter" et "setter" comme suit:
-class MyClass(T, U) {
- T _data;
- U _other;
-
- // Les constructeurs s'appellent toujours 'this'.
- this(T t, U u) {
- // Ceci va appeller les setters ci-dessous.
- data = t;
- other = u;
- }
-
- // getters
- @property T data() {
- return _data;
- }
-
- @property U other() {
- return _other;
- }
-
- // setters
- @property void data(T t) {
- _data = t;
- }
-
- @property void other(U u) {
- _other = u;
- }
-}
-
-// Et on l'utilise de cette façon:
-void main() {
- auto mc = new MyClass!(int, string)(7, "seven");
-
- // Importer le module 'stdio' de la bibliothèque standard permet
- // d'écrire dans la console (les imports peuvent être locaux à une portée)
- import std.stdio;
-
- // On appelle les getters pour obtenir les valeurs.
- writefln("Earlier: data = %d, str = %s", mc.data, mc.other);
-
- // On appelle les setter pour assigner de nouvelles valeurs.
- mc.data = 8;
- mc.other = "eight";
-
- // On appelle les setter pour obtenir les nouvelles valeurs.
- writefln("Later: data = %d, str = %s", mc.data, mc.other);
-}
-```
-Avec les propriétés, on peut construire nos setters et nos getters
-comme on le souhaite, tout en gardant une syntaxe très propre,
-comme si on accédait directement à des membres de la classe.
-
-Les autres fonctionnalités orientées objets à notre disposition
-incluent les interfaces, les classes abstraites, et la surcharge
-de méthodes. D gère l'héritage comme Java: On ne peut hériter que
-d'une seule classe et implémenter autant d'interface que voulu.
-
-Nous venons d'explorer les fonctionnalités objet du D, mais changeons
-un peu de domaine. D permet la programmation fonctionelle, avec les fonctions
-de premier ordre, les fonctions `pures` et les données immuables.
-De plus, tout vos algorithmes fonctionels favoris (map, reduce, filter)
-sont disponibles dans le module `std.algorithm`.
-
-```c
-import std.algorithm : map, filter, reduce;
-import std.range : iota; // construit un intervalle excluant la dernière valeur.
-
-void main() {
- // On veut un algorithme qui affiche la somme de la liste des carrés
- // des entiers paires de 1 à 100. Un jeu d'enfant !
-
- // On se contente de passer des expressions lambda en paramètre à des templates.
- // On peut fournir au template n'importe quelle fonction, mais dans notre
- // cas, les lambdas sont pratiques.
- auto num = iota(1, 101).filter!(x => x % 2 == 0)
- .map!(y => y ^^ 2)
- .reduce!((a, b) => a + b);
-
- writeln(num);
-}
-```
-
-Vous voyez qu'on a calculé `num` comme on le ferait en haskell par exemple ?
-C'est grâce à une innovation de D qu'on appelle "Uniform Function Call Syntax".
-Avec l'UFCS, on peut choisir d'écrire un appel à une fonction de manière
-classique, ou comme un appel à une méthode. Walter Brighter a écrit un
-article en anglais sur l'UFCS [ici.](http://www.drdobbs.com/cpp/uniform-function-call-syntax/232700394)
-Pour faire court, on peut appeller une fonction dont le premier paramètre
-est de type A, comme si c'était une méthode de A.
-
-J'aime le parallélisme. Vous aimez le parallélisme ? Bien sûr que vous aimez ça.
-Voyons comment on le fait en D !
-
-```c
-import std.stdio;
-import std.parallelism : parallel;
-import std.math : sqrt;
-
-void main() {
- // On veut calculer la racine carrée de tous les nombres
- // dans notre tableau, et profiter de tous les coeurs
- // à notre disposition.
- auto arr = new double[1_000_000];
-
- // On utilise un index et une référence à chaque élément du tableau.
- // On appelle juste la fonction parallel sur notre tableau !
- foreach(i, ref elem; parallel(arr)) {
- ref = sqrt(i + 1.0);
- }
-}
-
-
-```