Outils pour utilisateurs

Outils du site


issue161: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
issue161:c_c [2020/09/29 12:03] auntieeissue161:c_c [2020/10/01 16:21] (Version actuelle) andre_domenech
Ligne 17: Ligne 17:
 Note that the arrow is not ‘=>’ like we used before. But that is also not where the odd things end; if you want to return a value, you do not end the statement with a semicolon.** Note that the arrow is not ‘=>’ like we used before. But that is also not where the odd things end; if you want to return a value, you do not end the statement with a semicolon.**
  
-Quand nous avons besoin d'exécuter plusieurs instructions à la suite, nous les mettons dans une fonction. Depuis le début, vous avez vu des fonctions, car main() est une fonction. Les fonctions prennent la forme : fn nom(arguments) et, pour appeler la dite fonction, vous l'utilisez sans la partie « fn ». Jusqu'ici, nous n'avons utilisé que la fonction main et aucune fonction définie par l'utilisateur. Les fonctions ne font pas qu'afficher quelque chose à l'écran, comme nous l'avons fait ; les fonctions peuvent recevoir des arguments et renvoyer des valeurs. Cependant, à l'inverse du C, ou d'autres anciens langages de programmation, vous n'avez pas à spécifier D'ABORD ce que vous attendez en retour, mais vous utilisez une flèche pour lui dire ce que devrait être la sortie. Elle ressemblerait à quelque chose comme ça :+Quand nous avons besoin d'exécuter plusieurs instructions à la suite, nous les mettons dans une fonction. Depuis le début, vous avez vu des fonctions, car main() est une fonction. Les fonctions prennent la forme : fn nom(arguments) et, pour appeler ladite fonction, vous l'utilisez sans la partie « fn ». Jusqu'ici, nous n'avons utilisé que la fonction main et aucune fonction définie par l'utilisateur. Les fonctions ne font pas qu'afficher quelque chose à l'écran, comme nous l'avons fait ; les fonctions peuvent recevoir des arguments et renvoyer des valeurs. Cependant, à l'inverse du C, ou d'autres anciens langages de programmation, vous n'avez pas à spécifier D'ABORD ce que vous attendez en retour, mais vous utilisez une flèche pour lui dire ce que devrait être la sortie. Elle ressemblerait à quelque chose comme ça :
  
 fn average(x: i32, y: i32, z: i32 ) -> i32 fn average(x: i32, y: i32, z: i32 ) -> i32
Ligne 27: Ligne 27:
 In the beginning, when crates were mentioned, I thought of them as packages. But in Rust, we need to be clear: A package is one or more crates that provide a set of functionality. A package contains a ‘cargo.toml’ file that describes how to build those crates.** In the beginning, when crates were mentioned, I thought of them as packages. But in Rust, we need to be clear: A package is one or more crates that provide a set of functionality. A package contains a ‘cargo.toml’ file that describes how to build those crates.**
  
-Ces points m'ont posé un problème ; mais, si vous y réfléchissez bien, ça a tout son sens. Je sais que je nous revenons à la section 3.3 du livre, mais je pense qu'il est important de le souligner, car il est indiqué, mais souvent négligé. Maintenant, nous pouvons passer à la partie 7.+Ces points m'ont posé un problème ; mais, si vous y réfléchissez bien, ça a tout son sens. Je sais que nous revenons à la section 3.3 du livre, mais je pense qu'il est important de le souligner, car il est indiqué, mais souvent négligé. Maintenant, nous pouvons passer à la partie 7.
  
 Au début, quand les « crates » ont été citées, je les voyais comme des paquets. Mais, dans Rust, nous devons être clair : un « Package » (paquet) est un ou plusieurs « crates » (cagette) qui fournissent un ensemble de fonctionnalités. Un paquet contient un fichier « cargo.toml » qui décrit comment construire les crates. Au début, quand les « crates » ont été citées, je les voyais comme des paquets. Mais, dans Rust, nous devons être clair : un « Package » (paquet) est un ou plusieurs « crates » (cagette) qui fournissent un ensemble de fonctionnalités. Un paquet contient un fichier « cargo.toml » qui décrit comment construire les crates.
Ligne 33: Ligne 33:
 **You will notice that the book refers us back to chapter 2, where we used the ‘rand’ crate, for random numbers. TL;DR we had to add a [dependencies] section and add rand. We also needed to build our file to reflect the changes with: ‘cargo build’. We used the random generator with ‘use rand::Rng’. However, as I understand it, it is better to add the crate right at the beginning. Simply add: ‘extern crate rand;’ before you use it as above. Now, obviously crates.io is not the be-all and end-all of crates, as you can roll your own. Noobs like me get tripped up on this one, as our [dependencies] section now needs to contain the path to our home-rolled crate. In Linux, we use ./ for the same directory and ../ for the directory above, so triple-check your paths before building! Because rust’s error output is so nice and verbose, we should catch this immediately, so build it without specifying the path, to see what the error looks like, and this will help you in the future when you are trying to figure out what went wrong. The great chess players do not only think about moves, but study patterns on the board, that is how they become great. You too will become a great programmer if you can spot an error and immediately recognise it and know how to remedy it.** **You will notice that the book refers us back to chapter 2, where we used the ‘rand’ crate, for random numbers. TL;DR we had to add a [dependencies] section and add rand. We also needed to build our file to reflect the changes with: ‘cargo build’. We used the random generator with ‘use rand::Rng’. However, as I understand it, it is better to add the crate right at the beginning. Simply add: ‘extern crate rand;’ before you use it as above. Now, obviously crates.io is not the be-all and end-all of crates, as you can roll your own. Noobs like me get tripped up on this one, as our [dependencies] section now needs to contain the path to our home-rolled crate. In Linux, we use ./ for the same directory and ../ for the directory above, so triple-check your paths before building! Because rust’s error output is so nice and verbose, we should catch this immediately, so build it without specifying the path, to see what the error looks like, and this will help you in the future when you are trying to figure out what went wrong. The great chess players do not only think about moves, but study patterns on the board, that is how they become great. You too will become a great programmer if you can spot an error and immediately recognise it and know how to remedy it.**
  
-Vous remarquerez que le livre nous fait nous référer au chapitre 2, où nous avons utiliser le crate « rand », pour les nombres aléatoires. En bref : nous avons dû ajouter une section [dependencies] (dépendances) et ajouter rand. Pour refléter les modifications, nous avons dû aussi compiler notre propre fichier avec : « cargo build ». Nous avons utilisé le générateur de nombre aléatoire avec « use rand::Rng ». Cependant, comme je le comprends, c'est mieux d'ajouter le crate tout au début. Ajoutez simplement : « extern crate rand; » avant que vous l'utilisiez comme ci-dessus. Maintenant, évidemment, crates.io n'est pas l'alpha et l’oméga des crates, car vous pouvez empaqueter vos propres crates. Les débutants comme moi sont déroutés sur ce point, car notre section [dependencies] doit maintenant contenir le chemin vers le crate fait-maison. Dans Linux, nous utilisons ./ pour le même répertoire et ../pour le répertoire du niveau supérieur ; aussi, vérifiez bien vos chemins avant de compiler ! Comme la sortie d'erreur de rust est si belle et documentée, nous devons la découvrir tout de suite ; aussi, compilez sans spécifier le chemin, pour voir à quoi ressemble l'erreur ; ça vous aidera par la suite quand vous essaierez de trouver pourquoi ça ne marche pas. Les grands joueurs d’échecs ne pensent pas qu'aux prochains déplacements mais étudient aussi les dispositions sur l'échiquier ; c'est pour ça qu'ils deviennent excellents. Vous aussi, vous deviendrez un excellent programmeur si vous pouvez déceler une erreur, la reconnaître immédiatement et savez y remédier.+Vous remarquerez que le livre nous fait nous référer au chapitre 2, où nous avons utilisé le crate « rand », pour les nombres aléatoires. En bref : nous avons dû ajouter une section [dependencies] (dépendances) et ajouter rand. Pour refléter les modifications, nous avons dû aussi compiler notre propre fichier avec : « cargo build ». Nous avons utilisé le générateur de nombre aléatoire avec « use rand::Rng ». Cependant, comme je le comprends, c'est mieux d'ajouter le crate tout au début. Ajoutez simplement : « extern crate rand; » avant que vous l'utilisiez comme ci-dessus. Maintenant, évidemment, crates.io n'est pas l'alpha et l’oméga des crates, car vous pouvez empaqueter vos propres crates. Les débutants comme moi sont déroutés sur ce point, car notre section [dependencies] doit maintenant contenir le chemin vers le crate fait-maison. Dans Linux, nous utilisons ./ pour le même répertoire et ../pour le répertoire du niveau supérieur ; aussi, vérifiez bien vos chemins avant de compiler ! Comme la sortie d'erreur de rust est si belle et documentée, nous devons la découvrir tout de suite ; aussi, compilez sans spécifier le chemin, pour voir à quoi ressemble l'erreur ; ça vous aidera par la suite quand vous essaierez de trouver pourquoi ça ne marche pas. Les grands joueurs d’échecs ne pensent pas qu'aux prochains déplacements mais étudient aussi les dispositions sur l'échiquier ; c'est pour ça qu'ils deviennent excellents. Vous aussi, vous deviendrez un excellent programmeur si vous pouvez déceler une erreur, la reconnaître immédiatement et savez y remédier.
  
 **Speaking of errors, do section 7.3, to catch that error. Now, when you head to section 7.4, you may be disgusted that they mention the ‘use’ keyword only now, after you have typed so many paths and double-colons you get nightmares about it. That is the reason I mention it now so you do not skip anything in section 7.4. On that note, the book does refer you to chapter 14, cargo workspaces. I suggest that if you are a noob, do not jump here, you need to have worked your way through at least chapter 12, before attempting chapter 14.** **Speaking of errors, do section 7.3, to catch that error. Now, when you head to section 7.4, you may be disgusted that they mention the ‘use’ keyword only now, after you have typed so many paths and double-colons you get nightmares about it. That is the reason I mention it now so you do not skip anything in section 7.4. On that note, the book does refer you to chapter 14, cargo workspaces. I suggest that if you are a noob, do not jump here, you need to have worked your way through at least chapter 12, before attempting chapter 14.**
Ligne 41: Ligne 41:
 **Let us quickly talk about ownership and borrowing. This is one of the legs that Rust stands on. Grasping this will help you a lot. Lots of programming of non-trivial programs will have you getting data, manipulating that data in some way, then outputting the result. This book in your web browser is a nice example. When you click on the link to chapter 14, it figures out where that page is stored, grabs the data and displays it in your browser. The speed of data is usually connected to where it is stored. If your data is on the internet, like a web page, it is slow as it needs to be lifted from long-term memory (disk) to short-term memory (ram), and then sent over the network. If your data is local, it just needs to do the first two steps and if it is in memory, that is only one step. Reading from disk is slower than reading from memory. Speed is not the only consideration here, space is another. Google has millions of gigabytes to store data on. Your hard drive may have only thousands of gigabytes and your memory in the tens column. So, as the speed increases, it becomes necessary to manage the space as you do not have an infinite amount. We can look into the concepts of ownership and borrowing if there is interest, but this is a good topic for you to read up on in your favourite browser as it is covered in section 4, but I suggest adding another source to get a different perspective. ** **Let us quickly talk about ownership and borrowing. This is one of the legs that Rust stands on. Grasping this will help you a lot. Lots of programming of non-trivial programs will have you getting data, manipulating that data in some way, then outputting the result. This book in your web browser is a nice example. When you click on the link to chapter 14, it figures out where that page is stored, grabs the data and displays it in your browser. The speed of data is usually connected to where it is stored. If your data is on the internet, like a web page, it is slow as it needs to be lifted from long-term memory (disk) to short-term memory (ram), and then sent over the network. If your data is local, it just needs to do the first two steps and if it is in memory, that is only one step. Reading from disk is slower than reading from memory. Speed is not the only consideration here, space is another. Google has millions of gigabytes to store data on. Your hard drive may have only thousands of gigabytes and your memory in the tens column. So, as the speed increases, it becomes necessary to manage the space as you do not have an infinite amount. We can look into the concepts of ownership and borrowing if there is interest, but this is a good topic for you to read up on in your favourite browser as it is covered in section 4, but I suggest adding another source to get a different perspective. **
  
-Parlons rapidement de propriété et d'emprunt. C'est un des piliers sur lesquels Rust prend appui. Comprendre ça vous aidera beaucoup. Beaucoup de programmation de programmes non-triviaux vous amèneront à obtenir des données, à les manipuler d'une façon ou d'une autre, puis à sortir le résultat. Ce livre dans le navigateur Web est un bon exemple. Quand vous cliquez sur le lien vers le chapitre 14, il trouve où cette page est stockée, récupère les données et les affiche dans votre navigateur. La vitesse des données est en général en relation avec l'endroit où elles sont stockées. Si vos données sont sur Internet, comme une page Web, c'est lent car il est nécessaire de les passer d'une mémoire à long-terme (disque) à une mémoire à court-terme (ram), puis de les envoyer sur le réseau. Si vos données sont en local, il est juste nécessaire de les lire dans la mémoire. La vitesse n'est pas la seule considération ici ; l'espace en est une autre. Google a des millions de gigaoctets pour le stockage des données. Votre disque dur n'a peut-être que des milliers de gigaoctets et votre mémoire en a une dizaine. Aussi, quand la vitesse augmente, il devient nécessaire de gérer l'espace car vous n'en avez pas une quantité infinie. Nous pouvons regarder les concepts de propriété et d'emprunt s'il y a de l'intérêt, mais c'est pour vous un bon sujet à lire dans votre navigateur favori car il est traité en section 4 ; mais je vous suggère d'ajouter une autre source pour disposer d'une perspective différente. +Parlons rapidement de propriété et d'emprunt. C'est un des piliers sur lesquels Rust prend appui. Comprendre ça vous aidera beaucoup. Beaucoup de programmation de programmes non-triviaux vous amèneront à obtenir des données, à les manipuler d'une façon ou d'une autre, puis à sortir le résultat. Ce livre dans le navigateur Web est un bon exemple. Quand vous cliquez sur le lien vers le chapitre 14, il trouve où cette page est stockée, récupère les données et les affiche dans votre navigateur. La vitesse des données est en général en relation avec l'endroit où elles sont stockées. Si vos données sont sur Internet, comme une page Web, c'est lent car il est nécessaire de les passer d'une mémoire à long terme (disque) à une mémoire à court terme (ram), puis de les envoyer sur le réseau. Si vos données sont en local, il est juste nécessaire de les lire dans la mémoire. La vitesse n'est pas la seule considération ici ; l'espace en est une autre. Google a des millions de gigaoctets pour le stockage des données. Votre disque dur n'a peut-être que des milliers de gigaoctets et votre mémoire en a une dizaine. Aussi, quand la vitesse augmente, il devient nécessaire de gérer l'espace car vous n'en avez pas une quantité infinie. Nous pouvons regarder les concepts de propriété et d'emprunt s'il y a de l'intérêt, mais c'est pour vous un bon sujet à lire dans votre navigateur favori car il est traité en section 4 ; mais je vous suggère d'ajouter une autre source pour disposer d'une perspective différente. 
  
 **That’s it for now. Next issue we will look at other things. **That’s it for now. Next issue we will look at other things.
issue161/c_c.txt · Dernière modification : 2020/10/01 16:21 de andre_domenech