From a8ebd498338183f3469e37f7763aad6d644780e1 Mon Sep 17 00:00:00 2001 From: aceawan Date: Mon, 19 Oct 2015 13:34:59 +0200 Subject: [d/fr] adds translation --- fr-fr/d.html.markdown | 291 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 291 insertions(+) create mode 100644 fr-fr/d.html.markdown diff --git a/fr-fr/d.html.markdown b/fr-fr/d.html.markdown new file mode 100644 index 00000000..dfc3519d --- /dev/null +++ b/fr-fr/d.html.markdown @@ -0,0 +1,291 @@ +--- +language: D +filename: learnd.d +contributors: + - ["Nick Papanastasiou", "www.nickpapanastasiou.github.io"] + - ["Quentin Ladeveze", "aceawan.eu"] +lang: fr +--- + +```d +// 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-paradigme qui contient +des fonctionnalités aussi bien de bas-niveau que haut-niveau. + +D is actively developed by a large group of super-smart people and is spearheaded by +[Walter Bright](https://en.wikipedia.org/wiki/Walter_Bright) and +[Andrei Alexandrescu](https://en.wikipedia.org/wiki/Andrei_Alexandrescu). +With all that out of the way, let's look at some examples! + +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. + +```d +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 continue 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 !"); + } + } +} +``` + +We can define new types with `struct`, `class`, `union`, and `enum`. Structs and unions +are passed to functions by value (i.e. copied) and classes are passed by reference. Futhermore, +we can use templates to parameterize all of these on both types and values! + +On peut définir de nouveaux types avec les mots-clés `struct`, `class`, +`union` et `enum`. Les structures et les unions sont passées au fonctions par +valeurs (elle sont copiées) et les classes sont passées par référence. De plus, +On peut utiliser les templates pour rendre toutes ces abstractions génériques. + +```d +// Ici, 'T' est un paramètre de type. Il est similaire au de C++/C#/Java. +struct LinkedList(T) { + T data = null; + + // Utilisez '!' pour instancier un type paramétré. + // Encore une fois semblable à '' + LinkedList!(T)* next; +} + +class BinTree(T) { + T data = null; + + // Si il n'y a qu'un seul paramètre de template, + // on peut s'abstenir de 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. + +```d +// 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'apellent 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); +} +``` + +With properties, we can add any amount of logic to +our getter and setter methods, and keep the clean syntax of +accessing members directly! + +Other object-oriented goodies at our disposal +include `interface`s, `abstract class`es, +and `override`ing methods. D does inheritance just like Java: +Extend one class, implement as many interfaces as you please. + +We've seen D's OOP facilities, but let's switch gears. D offers +functional programming with first-class functions, `pure` +functions, and immutable data. In addition, all of your favorite +functional algorithms (map, filter, reduce and friends) can be +found in the wonderful `std.algorithm` module! + +Avec les propriétés, on peut constuire nos setters et nos getters +comme on le souhaite, tout en gardant un 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 `pure` et les données immuables. +De plus, tout vos algorithmes fonctionelles favoris (map, reduce, filter) +sont disponibles dans le module `std.algorithm`. + +```d +import std.algorithm : map, filter, reduce; +import std.range : iota; // construit un intervalle excluant la dernière valeur. + +void main() { + // On veut un algorithm qui affiche la somme de la listes des carrés + // des entiers paires de 1 à 100. Un jeu d'enfant ! + + // On se content de passer des expressions lambda en paramètre à des templates. + // On peut fournier 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 comme on a calculé `num` comme on le ferait en haskell par exemple ? +C'est grâce à une innvoation de D qu'on appelle "Uniform Function Call Syntax". +Avec l'UFCS, on peut choisir d'écrire un appelle à une fonction de manière +classique, ou comme un appelle à 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 les parallélisme ? Bien sur que vous aimez ça +Voyons comment on le fait en D ! + +```d +import std.stdio; +import std.parallelism : parallel; +import std.math : sqrt; + +void main() { + // On veut calculer la racine carré 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); + } +} + + +``` -- cgit v1.2.3 From 6313536895742385f743b05ed84c1efc274204f7 Mon Sep 17 00:00:00 2001 From: aceawan Date: Mon, 19 Oct 2015 13:35:38 +0200 Subject: [d/fr] adds translation --- fr-fr/d.html.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fr-fr/d.html.markdown b/fr-fr/d.html.markdown index dfc3519d..5d72a2d0 100644 --- a/fr-fr/d.html.markdown +++ b/fr-fr/d.html.markdown @@ -1,10 +1,10 @@ --- language: D -filename: learnd.d +filename: learnd-fr.d contributors: - ["Nick Papanastasiou", "www.nickpapanastasiou.github.io"] - ["Quentin Ladeveze", "aceawan.eu"] -lang: fr +lang: fr-f --- ```d -- cgit v1.2.3 From 7f8b8d036302ee7e7ba2c47b11c3833b864bffab Mon Sep 17 00:00:00 2001 From: aceawan Date: Mon, 19 Oct 2015 13:38:10 +0200 Subject: correct translator name --- fr-fr/d.html.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/fr-fr/d.html.markdown b/fr-fr/d.html.markdown index 5d72a2d0..f9dececb 100644 --- a/fr-fr/d.html.markdown +++ b/fr-fr/d.html.markdown @@ -3,6 +3,7 @@ language: D filename: learnd-fr.d contributors: - ["Nick Papanastasiou", "www.nickpapanastasiou.github.io"] +translators: - ["Quentin Ladeveze", "aceawan.eu"] lang: fr-f --- -- cgit v1.2.3 From 5507a389903c4b2ff66aa811f6952a78e99c3c7a Mon Sep 17 00:00:00 2001 From: aceawan Date: Mon, 19 Oct 2015 13:39:05 +0200 Subject: correct language --- fr-fr/d.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fr-fr/d.html.markdown b/fr-fr/d.html.markdown index f9dececb..2c90a628 100644 --- a/fr-fr/d.html.markdown +++ b/fr-fr/d.html.markdown @@ -5,7 +5,7 @@ contributors: - ["Nick Papanastasiou", "www.nickpapanastasiou.github.io"] translators: - ["Quentin Ladeveze", "aceawan.eu"] -lang: fr-f +lang: fr-fr --- ```d -- cgit v1.2.3 From c759b6ea2bc1dd1ddad8d08bcdf5741d7e7711b0 Mon Sep 17 00:00:00 2001 From: aceawan Date: Mon, 19 Oct 2015 13:39:44 +0200 Subject: removes english text --- fr-fr/d.html.markdown | 5 ----- 1 file changed, 5 deletions(-) diff --git a/fr-fr/d.html.markdown b/fr-fr/d.html.markdown index 2c90a628..d75f1083 100644 --- a/fr-fr/d.html.markdown +++ b/fr-fr/d.html.markdown @@ -25,11 +25,6 @@ de grandes chances pour que vous ayez déjà entendu parler du [D](http://dlang. D est un langage de programmation moderne, généraliste, multi-paradigme qui contient des fonctionnalités aussi bien de bas-niveau que haut-niveau. -D is actively developed by a large group of super-smart people and is spearheaded by -[Walter Bright](https://en.wikipedia.org/wiki/Walter_Bright) and -[Andrei Alexandrescu](https://en.wikipedia.org/wiki/Andrei_Alexandrescu). -With all that out of the way, let's look at some examples! - 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). -- cgit v1.2.3 From 00182d32f4e2eebf46d12910e885b0dde3eabdbc Mon Sep 17 00:00:00 2001 From: aceawan Date: Mon, 19 Oct 2015 13:40:27 +0200 Subject: removes english text --- fr-fr/d.html.markdown | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/fr-fr/d.html.markdown b/fr-fr/d.html.markdown index d75f1083..702de206 100644 --- a/fr-fr/d.html.markdown +++ b/fr-fr/d.html.markdown @@ -72,11 +72,6 @@ void main() { } } ``` - -We can define new types with `struct`, `class`, `union`, and `enum`. Structs and unions -are passed to functions by value (i.e. copied) and classes are passed by reference. Futhermore, -we can use templates to parameterize all of these on both types and values! - On peut définir de nouveaux types avec les mots-clés `struct`, `class`, `union` et `enum`. Les structures et les unions sont passées au fonctions par valeurs (elle sont copiées) et les classes sont passées par référence. De plus, @@ -204,22 +199,6 @@ void main() { writefln("Later: data = %d, str = %s", mc.data, mc.other); } ``` - -With properties, we can add any amount of logic to -our getter and setter methods, and keep the clean syntax of -accessing members directly! - -Other object-oriented goodies at our disposal -include `interface`s, `abstract class`es, -and `override`ing methods. D does inheritance just like Java: -Extend one class, implement as many interfaces as you please. - -We've seen D's OOP facilities, but let's switch gears. D offers -functional programming with first-class functions, `pure` -functions, and immutable data. In addition, all of your favorite -functional algorithms (map, filter, reduce and friends) can be -found in the wonderful `std.algorithm` module! - Avec les propriétés, on peut constuire nos setters et nos getters comme on le souhaite, tout en gardant un syntaxe très propre, comme si on accédait directement à des membres de la classe. -- cgit v1.2.3 From f8a2b28890d5d68a252d5bc0fd8247495b680e09 Mon Sep 17 00:00:00 2001 From: aceawan Date: Mon, 19 Oct 2015 15:28:43 +0200 Subject: fix indentation and typos --- fr-fr/d.html.markdown | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/fr-fr/d.html.markdown b/fr-fr/d.html.markdown index 702de206..6782142d 100644 --- a/fr-fr/d.html.markdown +++ b/fr-fr/d.html.markdown @@ -4,7 +4,7 @@ filename: learnd-fr.d contributors: - ["Nick Papanastasiou", "www.nickpapanastasiou.github.io"] translators: - - ["Quentin Ladeveze", "aceawan.eu"] + - ["Quentin Ladeveze", "aceawan.eu"] lang: fr-fr --- @@ -22,8 +22,8 @@ void main(string[] args) { 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-paradigme qui contient -des fonctionnalités aussi bien de bas-niveau que haut-niveau. +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 @@ -34,18 +34,17 @@ Après cette petite introduction, jetons un coup d'oeil à quelques exemples. import std.stdio; void main() { - - //Les conditions et les boucles sont classiques. + //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. + // 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 `_`. + // en y insérant des `_`. while(n < 10_000) { n += n; } -- cgit v1.2.3 From 13c9d9af5cc60ae747d42f73d795f360a15f3fd8 Mon Sep 17 00:00:00 2001 From: aceawan Date: Mon, 19 Oct 2015 15:33:48 +0200 Subject: fix indentation and typos --- fr-fr/d.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fr-fr/d.html.markdown b/fr-fr/d.html.markdown index 6782142d..ee69ca34 100644 --- a/fr-fr/d.html.markdown +++ b/fr-fr/d.html.markdown @@ -90,7 +90,7 @@ class BinTree(T) { T data = null; // Si il n'y a qu'un seul paramètre de template, - // on peut s'abstenir de parenthèses. + // on peut s'abstenir de mettre des parenthèses. BinTree!T left; BinTree!T right; } -- cgit v1.2.3 From d7e3def01ec674a7578581c1fb8b003cd164d335 Mon Sep 17 00:00:00 2001 From: aceawan Date: Mon, 19 Oct 2015 15:40:44 +0200 Subject: fix indentation and typos --- fr-fr/d.html.markdown | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/fr-fr/d.html.markdown b/fr-fr/d.html.markdown index ee69ca34..96158683 100644 --- a/fr-fr/d.html.markdown +++ b/fr-fr/d.html.markdown @@ -72,9 +72,8 @@ void main() { } ``` On peut définir de nouveaux types avec les mots-clés `struct`, `class`, -`union` et `enum`. Les structures et les unions sont passées au fonctions par -valeurs (elle sont copiées) et les classes sont passées par référence. De plus, -On peut utiliser les templates pour rendre toutes ces abstractions génériques. +`union` et `enum`. Ces types sont passés au fonction par valeur (ils sont copiés) +De plus, on peut utiliser les templates pour rendre toutes ces abstractions génériques. ```d // Ici, 'T' est un paramètre de type. Il est similaire au de C++/C#/Java. -- cgit v1.2.3 From 24ff15fe7a327232a0c33600ea70f8bc5c566eb3 Mon Sep 17 00:00:00 2001 From: aceawan Date: Wed, 21 Oct 2015 19:08:03 +0200 Subject: correct indentation --- fr-fr/d.html.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fr-fr/d.html.markdown b/fr-fr/d.html.markdown index 96158683..9eacc2aa 100644 --- a/fr-fr/d.html.markdown +++ b/fr-fr/d.html.markdown @@ -88,8 +88,8 @@ struct LinkedList(T) { class BinTree(T) { T data = null; - // Si il n'y a qu'un seul paramètre de template, - // on peut s'abstenir de mettre des parenthèses. + // Si 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; } -- cgit v1.2.3 From a15486c2a843c7b1c76f0343da9436bf39d2e227 Mon Sep 17 00:00:00 2001 From: aceawan Date: Wed, 21 Oct 2015 19:08:52 +0200 Subject: correct indentation --- fr-fr/d.html.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/fr-fr/d.html.markdown b/fr-fr/d.html.markdown index 9eacc2aa..d9bd9b48 100644 --- a/fr-fr/d.html.markdown +++ b/fr-fr/d.html.markdown @@ -248,13 +248,13 @@ import std.parallelism : parallel; import std.math : sqrt; void main() { - // On veut calculer la racine carré de tous les nombres - // dans notre tableau, et profiter de tous les coeurs - // à notre disposition. + // On veut calculer la racine carré 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 ! + // 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); } -- cgit v1.2.3