Note : 5 ; Une présentation du langage par des exemples clairement découpés et expliqués, mais à laquelle il manque une approche structurée et systématique.
C’est une chose claire en 2015 : Go est le langage qui monte. Difficile encore d’affirmer que c’est la star de demain, mais porté par Docker, le projet phare écrit avec ce langage, il a supplanté Scala mais la route reste longue pour faire la peau à Java !
Le présent ouvrage comporte 228 pages séparées en 9 chapitres et ne compte pas d’annexes. Le premier d’entre-eux ne compte que 8 chapitres et introduit tout en douceur les premiers principes du languages et nous gratifie du célèbre « hello, world ! ». Disons que c’est le tour de chauffe et il est sympa !
Les choses sérieuses commencent au chapitre 2, généreusement intitulé « quick start ». Il compte 29 pages et s’appuie copieusement sur un petit programme destiné à faire des recherches sur un feed RSS. Pour un début, on se prend la totale, avec lancement de fonctions asynchrones, mapping XML, for… range, multiples valeurs de retours, multiples objets, receivers, etc… On a déjà dans cet exemple quasiment tout ce que l’on va voir par la suite. Impossible évidemment de voir tout cela en détail, mais je concède les excellents efforts pour l’explication de texte. Bref un chapitre bien trop fouillis sinon indigeste.
Les 18 pages du chapitre 3 consacré à l’outillage vont nous faire côtoyer les aspects les plus archaïques du langages : les imports qui nous ramènent à l’ère du C et la gestion de dépendance … euh, vraiment très rudimentaire ! Les auteurs ne sont qu’à moitié clairs pour expliquer le principe du « vendoring » et on est laissé un peu à nous même pour organiser nos sources (car c’est quand même un peu le far west comparé à Java).
On attaque la gestion des tableaux, des slices et des maps au chapitre 4, et on en prend pour 30 pages. C’est un régal, probablement le meilleur chapitre du livre. Si tout le reste du texte avait été ainsi, celui-ci aurait gagné pas mal de points, avec beaucoup de petits exemples et d’illustrations.
Avec le chapitre 5, on attaque un élément majeur du langage : le système de types ! Il va falloir compter pour cela près de 40 pages. Le sujet semble bien couvert (je dis « semble », car il fait l’impasse sur certaines subtilités), de manière bien systématique. On découvre enfin les subtilités des receiver « par valeur » et « par pointeur » qui me troublaient jusqu’ici ! Bon chapitre !
Encore une bonne réussite avec le chapitre 6 qui couvre bien les éléments liés à la concurrence : mutex, goroutines, et surtout les channels bufferisés ou non qui sont bien passés en revue (les diagrammes avec les bonhommes m’ont paru inutiles).
Par contre le chapitre 7 qui évoque les « patterns de concurrence » est de mon point de vue un parfait ratage pour un ouvrage d’introduction. Il s’agit en fait d’une pénible explication de texte du code de la librairie standard. Je n’ai même pas eu le courage d’aller au bout ! Zéro pointé, et 30 pages qui auraient été mieux consacrées à autre chose !
Le chapitre 8 traite justement de la librairie standard. Enfin de quelques éléments de la librairie standard, comme le logging, le décodage JSON (déjà aperçu de manière cryptique au chapitre 2 et enfin expliqué ici) et les reader/writers. On en aurait voulu plus et j’aurais volontiers troqué le chapitre 7 contre plus de librairie standard !
Enfin le chapitre 9 traite du volet testing, avec les outils standard de Go. On a de quoi mettre le pied à l’étrier sur le sujet.
Mon sentiment à la fin de l’ouvrage est assez mitigé. Les explications sont claires, les exemples de codes sont vraiment très décomposé, trop pourrait-on dire, mais il suffit de passer outre si on le souhaite. Par contre le langage n’est pas passé en revue de manière systématique si ce n’est aux chapitre 4, 5 et 6. Certains pans de fonctionnalité comme l’introspection sont carrément oubliés, même pas évoqués ! Bref un ouvrage honnête, mais il doit y avoir mieux pour commencer avec Go.
Référence complète : Go in Action – William Kennedy, Brian Ketelsen & Erik St. Martin – Manning 2016 – ISBN : 978 1 61729 178 4