(illustration générée avec ChatGPT)
Ce dépôt rassemble les exemples de code et les slides de ma conférence sur les itérateurs Go, introduits en 2024 dans la version 1.23.
Il y a 3 grandes parties
-
Illustration du mécanisme de base, en parcourant un tableau à l'envers à l'aide d'un générateur
iter.Seq
puis d'un itérateuriter.Pull
. -
Application à un générateur de mots issus d'un fichier texte, et comparaison des performances avec la méthode naïve, ainsi qu'avec l'utilisation d'un channel.
-
Application au décompte des mots distincts d'un fichier, de façon exacte sans limitation, ou approximativement dans un espace mémoire contraint, à l'aide de l'algorithme probabiliste CVM.
Cette conférence a été présentée :
- au meetup Golang Rennes le 19 novembre 2024
🔎 slides
- Contexte et décisions, dans la proposition initiale : golang/go#56413
- Article du blog Golang qui détaille le fonctionnement des itérateurs : https://go.dev/blog/range-functions
- Discussions avec Thibaut Rousseau, notamment pour les tests unitaires
- Arguments contre l'ajout des itérateurs : https://itnext.io/go-evolves-in-the-wrong-direction-7dfda8a1a620
- Publication scientifique présentant l'algorithme CVM : https://arxiv.org/pdf/2301.10191
- Article décrivant l'intérêt et les cas d'usage du nouveau package
unique
, introduit également dans Go 1.23, que je n'ai pas réussi à utiliser de façon efficace dans cette démo : https://medium.com/google-cloud/interning-in-go-4319ea635002