Outils pour utilisateurs

Outils du site


issue157:c_c

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue157:c_c [2020/06/01 10:40] d52frissue157:c_c [2020/06/05 14:20] (Version actuelle) andre_domenech
Ligne 7: Ligne 7:
 https://doc.rust-lang.org/book/ https://doc.rust-lang.org/book/
  
-OK, bandes de RUST-iques, nous revenons au développement de Rust car @Daredevil14 et Ellin se sont plaints de la direction que prenait le blog de Lucas sur Rust. Il semblerait que vous aimeriez toujours plus de rust et moins de non-sens sur la sécurité. En premier lieu, ne négligez pas la lecture du livre ci-dessus. Si vous êtes complètement débutant dans rust ou même dans la programmation, vous trouverez ce qu'il vous faut ici dans le FCM. Ces articles n'ont pas l'intention de remplacer le livre cité plus haut ; voyez-le plutôt comme une aide en parallèle.+OK, bandes de RUST-iques, nous revenons au développement de Rust car @Daredevil14 et Ellin se sont plaints de la direction que prenait le blog de Lucas sur Rust. Il semblerait que vous aimeriez toujours plus de rust et moins de non-sens sur la sécurité. En premier lieu, ne négligez pas la lecture du livre ci-dessus. Si vous êtes complètement débutant dans rust ou même en programmation, vous trouverez ce qu'il vous faut ici dans le FCM. Ces articles n'ont pas l'intention de remplacer le livre cité plus haut ; voyez-les plutôt comme une aide en parallèle.
  
 Dans ce numéro, nous passerons rapidement sur les types de données, car chaque langage de programmation a sa propre façon de traiter les choses comme des booléens, etc. Dans ce numéro, nous passerons rapidement sur les types de données, car chaque langage de programmation a sa propre façon de traiter les choses comme des booléens, etc.
Ligne 14: Ligne 14:
 **Let’s start with those while we are at it? Booleans in Rust are called ‘bool’. As in other programming languages, it is used in things like loops. However, if you have been following Greg’s excellent Python tutorial, you will know Python uses a capital T for True and a capital F for False. This is not the case with rust. You simply refer to them as ‘true’ or ‘false’. Characters are referenced by ‘char’. A character is always in single quotes and strings are in double quotes. This is a common newbie error as “a” and ‘a’ are NOT the same type. For numbers you need to know integers and floats. I have no doubt that if you have been following Greg, that you know what they are. I must point out, as we learned in the first part, there are ways to refer to them. Obviously, we have signed and unsigned integers, to represent negative numbers. This affects the size of the number you  can use, as they take up a certain amount of space in bytes. You refer to signed  with an ‘i’ and unsigned with a ‘u’. For example i32 or u64 as demonstrated in the last issue. For those of you not familiar with the terminology, signed (i) just means one of the bits is used for a sign. An easy way to remember which is which, is getting the Ace of Base song in your head. “I saw the sign...” or even “I store the sign...” (Yes, we use cheesy song references in our tutorials here at FCM, don’t judge.) ** **Let’s start with those while we are at it? Booleans in Rust are called ‘bool’. As in other programming languages, it is used in things like loops. However, if you have been following Greg’s excellent Python tutorial, you will know Python uses a capital T for True and a capital F for False. This is not the case with rust. You simply refer to them as ‘true’ or ‘false’. Characters are referenced by ‘char’. A character is always in single quotes and strings are in double quotes. This is a common newbie error as “a” and ‘a’ are NOT the same type. For numbers you need to know integers and floats. I have no doubt that if you have been following Greg, that you know what they are. I must point out, as we learned in the first part, there are ways to refer to them. Obviously, we have signed and unsigned integers, to represent negative numbers. This affects the size of the number you  can use, as they take up a certain amount of space in bytes. You refer to signed  with an ‘i’ and unsigned with a ‘u’. For example i32 or u64 as demonstrated in the last issue. For those of you not familiar with the terminology, signed (i) just means one of the bits is used for a sign. An easy way to remember which is which, is getting the Ace of Base song in your head. “I saw the sign...” or even “I store the sign...” (Yes, we use cheesy song references in our tutorials here at FCM, don’t judge.) **
  
-Commençons avec eux pendant que nous y sommes ! Les Booléens dans Rust sont appelés « bool ». Comme dans les autres langages de programmation, ils sont utilisés dans des choses comme les boucles. Cependant, su vous suivez l'excellent tutoriel de Greg sur Python, vous savez qu Python utilise un T majuscule pour True (Vrai) et un F majuscule pour False (Faux). Ce 'est pas le cas dans rust. nous y faisons référence comme « true » ou « false ». La référence pour les caractères est « char » (character). Un caractère est toujours entre des apostrophes (') et les chaînes de caractères entre des apostrophes doubles ("). C'est une erreur courante des débutants de confondre les types DIFFÉRENTS "a" et 'a'. Pour les nombres, vous devez connaître les entiers (integer) et les nombres flottants (float). Si vous avez suivi Greg, je ne doute pas que vous savez ce qu'ils sont. Je dois préciser, comme nous lavons appris dans la première partie, qu'il y a différentes manières d'y faire référence. Évidemment, nous avons des entiers signés et non signés, pour représenter les nombres négatifs. Ça a un impact sur la taille du nombre utilisable,  car ça prend de la place dans les octets. un « i » indique les nombres signés et un « u » les non signés. Par exemple, i32 ou u64 comme montré dans le numéro précédent. Pour ceux d'entre vous qui ne sont pas à l'aise avec la terminologie, l'indication (i) signifie simplement qu'un des bits est utilisé pour le signe. Une façon aisée de se rappeler qui est qui, c'est de chanter la chanson « The sign » d'Ace of Base dans votre tête. « I saw the sign... » ou même « I store the sign... » (Oui, nous faisons référence à des chansons mielleuses dans nos tutoriels, ici au FCM ; pas de commentaires).+Commençons avec eux pendant que nous y sommes ! Les Booléens dans Rust sont appelés « bool ». Comme dans les autres langages de programmation, ils sont utilisés dans des choses comme les boucles. Cependant, si vous suivez l'excellent tutoriel de Greg sur Python, vous savez que Python utilise un T majuscule pour True (Vrai) et un F majuscule pour False (Faux). Ce n'est pas le cas dans rust. Nous y faisons référence comme « true » ou « false ». La référence pour les caractères est « char » (character). Un caractère est toujours entre des apostrophes (') et les chaînes de caractères entre des apostrophes doubles ("). Une erreur courante des débutants est de confondre les types DIFFÉRENTS "a" et 'a'. Pour les nombres, vous devez connaître les entiers (integer) et les nombres flottants (float). Si vous suivez Greg depuis un certain temps, vous savez sans aucun doute ce qu'ils sont. Je dois préciser, comme nous l'avons appris dans la première partie, qu'il y a différentes manières d'y faire référence. Évidemment, nous avons des entiers signés et non signés, pour représenter les nombres négatifs. Ça a un impact sur la taille du nombre utilisable, car ça prend de la place dans les octets. Un « i » indique les nombres signés et un « u » les non signés. Par exemple, i32 ou u64comme montré dans le numéro précédent. Pour ceux d'entre vous qui ne sont pas à l'aise avec la terminologie, l'indication (i) signifie simplement qu'un des bits est utilisé pour le signe. Une façon aisée de se rappeler qui est qui, c'est de chanter la chanson « The sign » d'Ace of Base dans votre tête. « I saw the sign... » ou même « I store the sign... » (Oui, nous faisons référence à des chansons mielleuses dans nos tutoriels, ici au FCM ; pas de commentaires).
  
 **The way the numbering works is for example, i8 refers to; one byte for the sign, plus  seven (7) bytes for the number. 1,2,4,8,16,32,64 = 127 (If you have used binary before, you would know that a row of each of the previous numbers add up to the next one minus one. The next number is 128, so I know that the sequence adds up to 127) If you had 8 bits, like with a unsigned number, (u8), you would move to the next bit, which is 256... (minus one), thus 255. Why? Because we can now use that bit we used for the sign in the signed integer. By default, if you use an integer like we did in the last issue, Rust will make it i32, which is seen as a ‘sane’ default. **The way the numbering works is for example, i8 refers to; one byte for the sign, plus  seven (7) bytes for the number. 1,2,4,8,16,32,64 = 127 (If you have used binary before, you would know that a row of each of the previous numbers add up to the next one minus one. The next number is 128, so I know that the sequence adds up to 127) If you had 8 bits, like with a unsigned number, (u8), you would move to the next bit, which is 256... (minus one), thus 255. Why? Because we can now use that bit we used for the sign in the signed integer. By default, if you use an integer like we did in the last issue, Rust will make it i32, which is seen as a ‘sane’ default.
Ligne 26: Ligne 26:
 OK, I’ll see myself out...** OK, I’ll see myself out...**
  
-La numération fonctionne par exemple de cette façon : i8 réfère à « un octet pour le signe plus 7 (sept) octets pour le nombre. 1,2,4,8,16,32,64 = 127 (si vous avez déjà utilisé le binaire, vous devez savoir que la somme d'une série de chacun des nombres précédents égale le suivant moins un. Le nombre suivant est 128, donc je sais que la série vaut 127). Si vous avez 8 bits, cas d'un nombre non signé, (U8), vous passerez à la valeur suivante, soit 256.. (moins un), soit 255. Pourquoi ? Parce que vous pouvez maintenant utiliser ce bit qui était précédemment pris pour le signe dans l'entier signé. Par défaut, si vous utilisez un entier comme nous l'avons fait dans l'article précédent, Rust en fera un 132, qui est vu comme la valeur par défaut « sûre ».+La numération fonctionne par exemple de cette façon : i8 fait référence à un octet pour le signe plus 7 (sept) octets pour le nombre. 1,2,4,8,16,32,64 = 127 (si vous avez déjà utilisé le binaire, vous devez savoir que la somme d'une série de chacun des nombres précédents égale le suivant moins un. Le nombre suivant est 128, donc je sais que la série vaut 127). Si vous avez 8 bits, cas d'un nombre non signé, (U8), vous passerez à la valeur suivante, soit 256... (moins un), soit 255. Pourquoi ? Parce que vous pouvez maintenant utiliser le bit qui était précédemment pris pour le signe dans l'entier signé. Par défaut, si vous utilisez un entier comme nous l'avons fait dans l'article précédent, Rust en fera un i32, qui est vu comme une valeur par défaut « sûre ».
  
 Même chose avec les « floats » ou nombres décimaux. La valeur par défaut « sûre » est f64. Gardez-le juste à l'esprit si vous êtes sur une machine 32-bit, comme un raspberry pi. Même chose avec les « floats » ou nombres décimaux. La valeur par défaut « sûre » est f64. Gardez-le juste à l'esprit si vous êtes sur une machine 32-bit, comme un raspberry pi.
Ligne 32: Ligne 32:
 Maintenant, un peu plus compliqué. Maintenant, un peu plus compliqué.
  
-Pourquoi le programmeur a quitter son boulot ? .... Il n'a pas trouvé de tableaux (une augmentation - geddit ?)+Pourquoi le programmeur a quitté son boulot ?... Il n'a pas compris les tableaux (arrays) (il n'a pas reçu une augmentation, a raise compris - la prononciation est la même, bref !)
  
 Bon, d'accord, je suis à l'ouest... Bon, d'accord, je suis à l'ouest...
Ligne 47: Ligne 47:
 NOTE: I use the word “position” here, but feel free to substitute it with “index” as newbies find it easier to make the connection that way.** NOTE: I use the word “position” here, but feel free to substitute it with “index” as newbies find it easier to make the connection that way.**
  
-Qu'est-ce qu'un tableau (array) ? C'est une « liste » de regroupement de choses qui sont toutes du même type. Ce que j'entends par là, c'est qu'un tableau ne mélange pas, disons, des chaînes et des des nombres. Vous ne pouvez pas avoir un tableau avec une clé, un sabre, un bouclier et le nombre 250 qui représente votre fortune. Si vous voulez avoir votre salade composée, vous utilisez un tuple(nous y arrivons tout de suite). Le format 'un tableau dans rust est :+Qu'est-ce qu'un tableau (array) ? C'est une « liste » de regroupement de choses qui sont toutes du même type. Ce que j'entends par là, c'est qu'un tableau ne mélange pas, disons, des chaînes et des nombres. Vous ne pouvez pas avoir un tableau avec une clé, un sabre, un bouclier et le nombre 250 qui représente votre fortune. Si vous voulez avoir une salade composée, vous utilisez un tuple (nous y arrivons tout de suite). Le format d'un tableau dans rust est :
 let <nomdevariable> = [élément1, élément2, élément3];  let <nomdevariable> = [élément1, élément2, élément3]; 
  
Ligne 53: Ligne 53:
 let <nomdevariable> = <nomdutableau>[position]; let <nomdevariable> = <nomdutableau>[position];
  
-Ce  qui suit nous montre aussi comment modifier un tableau.+Ce  qui suit nous montre aussi comment modifier un tableau :
 <nomdutableau>[position] = nouvellevaleur; <nomdutableau>[position] = nouvellevaleur;
  
Ligne 74: Ligne 74:
 Again, this will make what you need.** Again, this will make what you need.**
  
-Un mot à ce sujet : vérifiez la position de votre index avant de faire la modification, car la valeur précédente sera remplacée.+Un mot à ce sujet : vérifiez la position ou l'index avant de faire la modification, car la valeur précédente sera remplacée.
  
-Pour modifier un tableau, comme dans le numéro précédent, nous avons besoin du mot-clé « mut », sinon elle est invariable. Ce mot-clé « mut » demande quelques temps pour s'y habituer.+Pour modifier un tableau, comme dans le numéro précédent, nous avons besoin du mot-clé « mut », sinon il est invariable. Il faut sans doute un certain temps pour s'habituer à ce mot-clé « mut ».
  
 Comme pour les entiers, les tableaux possèdent une taille fixe quand il sont créés. Comme pour les entiers, les tableaux possèdent une taille fixe quand il sont créés.
  
-Essayons-le à propos de taille !+Essayons-le !
  
 Naviguez jusqu'à votre dossier des projets rust et ouvrez un terminal à cet endroit. Naviguez jusqu'à votre dossier des projets rust et ouvrez un terminal à cet endroit.
Ligne 88: Ligne 88:
 cargo new --bin lesson2 cargo new --bin lesson2
  
-Une fois encore, ce vous avez besoin sera fait.+Une fois encore, ce dont vous avez besoin sera fait.
  
 **Remove the “hello world” and replace it with the code shown top right. **Remove the “hello world” and replace it with the code shown top right.
Ligne 101: Ligne 101:
  
 Rust suggests we use a vec. With vec’s we push and pop our elements. (More on this later.) By-the-way, at any time you want to know more about something, you can look it up by searching the phrase on doc.rustlang.org – try it: https://doc.rust-lang.org/std/vec/struct.Vec.html ** Rust suggests we use a vec. With vec’s we push and pop our elements. (More on this later.) By-the-way, at any time you want to know more about something, you can look it up by searching the phrase on doc.rustlang.org – try it: https://doc.rust-lang.org/std/vec/struct.Vec.html **
 +
 +Enlevez le « hello world » et remplacez-le avec le code présenté en haut à droite.
 +
 +Saisissez :
 +
 +cargo build
 +
 +Que s'est-il passé ?
 +
 +Et maintenant, mon vieux ?
 +
 +Rust suggère d'utiliser un « vec ». Avec des vec, nous rangeons et reprenons nos éléments. (On en parlera plus tard.) Pendant que j'y suis, chaque fois que vous voulez en savoir plus sur quelque chose, vous pouvez chercher la phrase dans doc.rustlang.org - essayez :  https://doc.rust-lang.org/std/vec/struct.Vec.html
  
 **During the quick once-over on arrays, I mentioned tuples. Again, if you have been following Greg’s Python tutorial, you may know where this is going. A tuple is a collection of things, like an array, but they do not have to be of the same type. (Like an array, indexing starts at 0) The following code is valid: **During the quick once-over on arrays, I mentioned tuples. Again, if you have been following Greg’s Python tutorial, you may know where this is going. A tuple is a collection of things, like an array, but they do not have to be of the same type. (Like an array, indexing starts at 0) The following code is valid:
Ligne 117: Ligne 129:
  
 let (weapon,armour,gold) = mytuple; ** let (weapon,armour,gold) = mytuple; **
 +
 +Pendant le rapide passage sur les tableaux j'ai mentionné les tuples. Là encore, si vous suivez les tutoriels de Greg sur Python, vous pouvez savoir ce qu'il en est. Un tuple est une collection de choses, comme un tableau, mais qui n'ont pas l'obligation d'être du même type. (Comme pour un tableau, l'indexation commence à 0.) Le code suivant est valable :
 +
 +let montuple = (âne, true, 99);
 +
 +Pour faire référence à un élément d'un tuple, nous utilisons une syntaxe légèrement différente de celle d'un tableau. Le format est :
 +
 +let <nomdevariable> = nomdutuple.position;
 +
 +Dans le cas du dessus, pour obtenir 99, nous aurions dit :
 +
 +let x = montuple.2; 
 +
 +nous pouvons même traiter l'ensemble en une fois, simplement avec :
 +
 +let (arme,armure,fortune) = montuple;
  
 **Rust is smart enough to plug in donkey to weapon, true to armour and 99 to gold. Now you can keep your gold in your inventory with that extra shield and sword! (or donkey, *wink* it is your inventory after all) **Rust is smart enough to plug in donkey to weapon, true to armour and 99 to gold. Now you can keep your gold in your inventory with that extra shield and sword! (or donkey, *wink* it is your inventory after all)
Ligne 124: Ligne 152:
  
 Yes, I know it’s a boring example that sucks the marrow from your bones, but it teaches important concepts!** Yes, I know it’s a boring example that sucks the marrow from your bones, but it teaches important concepts!**
 +
 +Rust est assez fûté pour mettre âne dans arme, true dans armure et 99 dans fortune. Maintenant, vous pouvez garder votre or dans vos biens avec cette protection et cette épée supplémentaires ! (ou votre âne ; *clin d'œil*, après tout, ce sont vos possessions !)
 +
 +Allez plus avant et essayez le jeu de devinettes dans le livre :
 +https://doc.rust-lang.org/book/ch02-00-guessing-game-tutorial.html
 +
 +Oui, je sais, c'est un exemple ennuyeux qui suce la moelle des os, mais il vous apprend des concepts importants !
  
 **The reason I am using Geany as my IDE is it comes with Ubuntu and we don’t need to add things to it to make it work with Rust and it will gladly work with toml-files without complaint. It even sports it’s own terminal! All nicely in one place.  **The reason I am using Geany as my IDE is it comes with Ubuntu and we don’t need to add things to it to make it work with Rust and it will gladly work with toml-files without complaint. It even sports it’s own terminal! All nicely in one place. 
Ligne 129: Ligne 164:
 If you have any questions or comments, e-mail us:  If you have any questions or comments, e-mail us: 
 misc@fullcirclemagazine.org** misc@fullcirclemagazine.org**
 +
 +La raison pour laquelle j'utilise Geany comme IDE est qu'il est livré dans Ubuntu et que je n'ai pas besoin de lui ajouter des choses pour qu'il marche avec Rust ; de plus, il fonctionnera bien avec des fichiers toml sans se plaindre. Il a même son propre terminal. Tout se trouve joliment au même endroit.
 +
 +Si vous avez des questions ou des commentaires, envoyez-moi un mail à  : misc@fullcirclemagazine.org
issue157/c_c.1591000823.txt.gz · Dernière modification : 2020/06/01 10:40 de d52fr