À propos de ces notes
Ce cours ne vous apprend pas à programmer : il suppose que vous savez déjà écrire une boucle et une fonction. Il vous apprend à programmer correctement et efficacement — deux mots qui n'ont de sens que si l'on sait les vérifier.
D'où la structure : on commence par les tests, parce qu'un programme non testé ne fonctionne pas ; puis le contrôle de version, parce qu'un programme évolue ; puis les types et les bits, parce que c'est là que vivent les bogues étranges ; puis la mesure, parce qu'on n'optimise pas ce qu'on n'a pas mesuré ; et enfin les structures de données et la concurrence.
Le langage est Go, choisi parce que son outillage — tests, mesures, détecteur de courses, formatage — est intégré au compilateur. Rien à configurer : on peut parler du fond dès la première heure. Chaque chapitre se termine par un laboratoire aux réponses dépliables et par un court quiz.
Le manuel de référence est Maîtriser la programmation : des tests à la performance en Go. Ces notes en suivent le plan et le complètent ; elles ne le remplacent pas.
Le manuel du cours — à lire en premier
Maîtriser la programmation
Des tests à la performance en Go — Daniel Lemire
Chaque chapitre de ces notes accompagne un chapitre du manuel : lisez le chapitre, faites ses exercices, puis revenez ici. 312 pages, PDF de 1,2 Mo. Le PDF suffit pour tout le cours ; si vous préférez lire sur papier ou sur liseuse, le manuel se vend aussi en version papier et en version numérique.
Télécharger le PDF Chapitre par chapitre Version papier ou numérique sur Amazon.ca
Module 1 — La correction du logiciel
Module 2 — La collaboration
Module 3 — Les données
Les types de données
Tailles et unsafe.Sizeof, complément à deux et débordement, IEEE 754 et NaN, tableaux, tranches, chaînes et pointeurs.
Les bits et l'Unicode
Masques et opérateurs binaires, x & (x-1), math/bits, points de code, UTF-8, UTF-16 et paires de substitution.
Module 4 — Le hasard et la performance
Hachage, hasard et cardinalité
Fonctions de hachage et collisions, SHA-256, tables de hachage, mélange de Fisher–Yates, échantillonnage de réservoir, estimation de cardinalité.
Lire le chapitre 5Mesurer la performance
go test -bench et -benchmem, benchstat, hiérarchie de caches, prédiction de branchement, allocations et chiffres significatifs.
Module 5 — Structures et concurrence
Les structures de données
Ce qu'est vraiment une tranche, la croissance d'append, le partage et les fuites par sous-découpage, les cartes, et comment choisir.
La programmation concurrente
Goroutines et WaitGroup, canaux tamponnés ou non, mutex et atomiques, courses de données et -race, interblocages.
Outils et références
Maîtriser la programmation
Le manuel du cours en PDF — 312 pages — et la correspondance chapitre par chapitre avec ces notes. C'est la lecture principale ; le reste l'accompagne.
Ouvrir le manuelL'environnement de travail
Installer Go, vérifier son installation, configurer son éditeur, et écrire sa documentation en Markdown plutôt qu'en traitement de texte.
Préparer sa machineLaboratoires interactifs
Calculateur 32 bits, analyseur Unicode, table de hachage à collisions, calculateur de différences et lecture d'un historique Git.
Ouvrir les laboratoiresPense-bête
Les commandes go et git, la syntaxe essentielle, les idiomes sur les bits, les verbes de formatage et les schémas de concurrence.
Glossaire
Du complément à deux à l'interblocage : les termes du cours, définis brièvement et renvoyant au passage qui les développe.
Consulter le glossaireBibliowebographie
Le manuel du cours, la documentation Go, Pro Git, Hacker's Delight et les articles fondateurs.
Voir les référencesRechercher dans les notes
Un moteur qui parcourt les huit chapitres, section par section, sans quitter le navigateur ni solliciter de serveur.
Ouvrir la recherche