Le
langage Go (sous une
licence de type BSD) est issu d'une discussion entre
Ken Thompson (un des auteurs d'Unix et d'UTF8) et
Rob Pike (un des auteurs de Plan9 et d'UTF8). Nous avons donc affaire a de vrais barbus, des légendes de la communauté des codeurs ce qui explique la curiosité qui entoure ce projet de nouveau langage. Comme Rob Pike travaille chez Google c'est donc avec le puissant soutien de son employeur que le langage Go a été développé avec les contraintes suivantes :
- Go doit pouvoir être utilisé pour de la programmation système donc c'est un langage compilé et pas interprété ;
- La compilation doit être très rapide pour faciliter le développement des projets (l'analyse des dépendances permet une compilation en quelques secondes) ;
- La syntaxe doit être assez proche du C tout en corrigeant ses défauts les plus criants ;
- La gestion de la mémoire doit être automatique (garbage collector) ;
- Le typage doit être statique mais il n'y a pas de hiérarchie des types pour simplifier le langage ;
- La programmation concurrente (pour exploiter les multicores) doit être intégrée au cœur du langage ; cela se fait par l'intermédiaire des « goroutines » qui sont plus légères que les threads ;
Go est le résultat de la très longue expérience de Thompson et Pike et les auteurs semblent assez fiers de leur rejeton :
«
Go has fast builds, clean syntax, garbage collection, methods for any type, and run-time reflection. It feels like a dynamic language but has the speed and safety of a static language. It's a joy to use. »
La
FAQ du projet évoque les questions générales et une
FAQ spécifique est dédiée au langage lui-même.
Un tutoriel est aussi disponible avec, pour mettre en évidence le support d'UTF8, un assez inhabituel « Hello, world; or Καλημέρα κόσμε; or こんにちは 世界 ».
Pour l'instant les remarques sur le web se concentrent sur des points de détail : la syntaxe qui ne plaît pas à tous le monde, l'absence de telle ou telle fonction (comme les exceptions), etc.
Il faut attendre un peu pour que la poussière retombe et pour avoir des analyses qui se concentrent sur les apports spécifiques du langage : les goroutines, la segmentation de la pile d'exécution, la compilation rapide, etc. Il sera également intéressant de lire des comparaisons détaillées avec les autres langages qui veulent s'attaquer au C en apportant des innovations techniques (comme par exemple
le langage D).
NdM :
Merci à patrick_g pour son journal à l'origine de la dépêche.