- 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 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.