31/10/2018
dotGo Europe 2015
David Crawshaw, lead developpeur du projet Gomobile qui à pour vocation de faire tourner Go sur Android et IOS. Ce projet semble très prometteur, car il permettrait de centraliser du code métier go et réutilisable sur plusieurs plateformes. David, nous a parlé des problématiques techniques à faire cohabiter deux langages : C et Go. Gomobile utilise une lib C pour la partie OpenGL.
Marty Schoch nous a parlé de Bleve; une librairie de recherche en Go. Le projet n’a pas vocation à fournir une solution complète de recherche comme ElasticSearch mais permet d’inclure dans vos binaires go une brique de recherche complète. À vous de gérer les problématiques liées à un moteur de recherche : redondance, exposition via une api restful, scalabilité, etc…
Peter Bourgon, le créateur de Gokit, une librairie de support pour la création de microservices, nous a parlé des avantages et des inconvénients des microservices. Mais également de la complexité d’implémenter ce pattern correctement : gestion des versions, déploiement, détection des anomalies.
Fransesc Campoy, excellent expert improvisé de la programmation fonctionnelle, nous a expliqué simplement ce pattern en Go. La conclusion assez rapide est que Go n’est pas prévu pour ce type de programmation : code complexe coté librairie (Map, Many, One, Each) et non optimisé par le compilateur. Les fonctions récursives sont à éviter en Go.
“Le code source est la sérialisation d’un modèle mental.” Voilà la phrase d’Alan Shreve à propos de la compréhension d’un code source. Celui-ci se compose en deux parties : la fonctionnalité core et les bugs fixes liés aux particularités des services tiers : navigateur, api et lib externe. Le code final contient donc des éléments qui empêchent d’avoir cette représentation mentale. Via une suite d’outil, en majorité disponible dans l’écosystème Go, Alan nous a montré comment il est possible d’enlever certaines portions. Ce nouveau code contient l’essence de la fonctionnalité et donc correspond sensiblement à la représentation mentale. Il rajoute également une chose importante : le code doit être optimisé pour la lecture, car un développeur passe plus de temps à lire du code que d’écrire du code.
Certains de ces outils nous ont été rapidement décrits par Fatish Arslan car il est le mainteneur du plugin go-vim. Au-delà des classiques comme “go vet”, “gotfmt” et “go fix”. La présentation de l’outil Oracle est assez intéressante. Cet outil permet de faire de l’analyse de code et permet de mieux comprendre les workflows présents dans le code. Plus d’information sur go oracle: user manual.
La conférence est restée très haut niveau par rapport au langage go, certaines présentations pourraient s’appliquer à d’autres langages. Je suis resté un peu sur ma faim au niveau des usages réels sur langage : API Web, Cli, best practices, retours d’expérience ou encore la gestion des vendors. Une des choses intéressantes qui est ressortit des différentes présentations est la possibilité de compiler go pour différents usages : plugin pour chrome, extension python, cross compilation pour différentes plateformes : arm et x86 et bien sûr le mobile. Cela représente une vraie force pour optimiser certains socles applicatifs et rajouter des fonctions riches comme la recherche avancée sur mobile grâce à Bleve par exemple.