Liens connexes

Dépêche modérée par

Dépêche éditée par

: Go : Un nouveau langage chez Google

Posté par Florent Zara (Jabber id, page perso, ). Modéré le 12 novembre 2009.
30
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.

> Lire les commentaires (113 commentaires, moyenne: 3,2).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

un clone de Vala ?

Posté par Loic Dreux () le 12/11/2009 à 11:43. (lien). Évalué à 2.

En lisant la description, ça me fait penser au langage Vala : http://live.gnome.org/Vala

--
http://devlibre.blogspot.com/

Le Monde en parle

Posté par Boa Treize (page perso, ) le 12/11/2009 à 11:58. (lien). Évalué à 6.

... et fait un énorme raccourci qui a l'avantage de donner un gros coup de pub à Python. :-)

« combine certains aspects du Python et du C++, deux des principaux outils de programmation utilisés actuellement »

Article complet : http://www.lemonde.fr/technologies/article/2009/11/12/google(...)

système et garbage collector?

Posté par creak (page perso, ) le 12/11/2009 à 11:59. (lien). Évalué à 4.

Je suis perplexe... Comment peut-on faire un langage système avec un garbage collector. Ca fait peut-être vieux jeu, mais travaillant dans le jeux vidéo, je me vois assez mal utiliser un garbage collector.

Première remarques

Posté par beagf (page perso, ) le 12/11/2009 à 12:43. (lien). Évalué à 10.

J'ai commencé à regarder et ça me semblait pas mal jusqu'à ce que je tombe sur quelques trucs...

Pourquoi avoir enlevé les parenthèses autour des if, for... On obtient des trucs du genre :
for i := 0; i < len(a); i++ {
if a[i] != ' ' {
s += a[i]
}
}

C'est peut-être moi qui suit bigleux mais franchement je trouve ça beaucoup moins clair. Les parenthèse on quand même l'avantage de bien délimiter chaque parties.

Et ensuite, pourquoi suivre la mode qui hélas touche de plus en plus de langage, qui consiste à mélanger la syntaxe et la sémantique. Ici on se retrouve à définir la visibilité des variables, fonctions, membres... en utilisant ou non des majuscules.
Là aussi, je vais peut-être passer pour un con, mais que ce soit le choix des majuscule, des underscores ou de l'indentation ; j'estime que c'est à moi de choisir ce que je trouve le plus lisible, et le langage n'a pas à m'imposer une manière plus qu'une autre.
Le seul avantage, c'est que ça tue le débat entre les partisans du camelcase ou du jesaispasquoi... Mais pour moi, ça donne plus l'impression qu'il veulent imposer leurs conventions et leur style de code.

Donc dommage, encore un langage qui n'est pas pour moi, vieux grincheux que je suis ;-(

Pas de tarball :/

Posté par Misc (page perso, ) le 12/11/2009 à 12:43. (lien). Évalué à 7.

C'est un peu ennuyeux la tendance montante qu'il y a à faire des releases sans fournir de tarball, ni de version.

Je sais que c'est chiant à faire, mais c'est plus propre si quelqu'un veut faire un paquet pour faciliter la vie des autres.

hmmm Android...

Posté par case42 (page perso, ) le 12/11/2009 à 13:16. (lien). Évalué à 5.

J'ai lu en survolant le site qu'il y avait une version du compilateur pour ARM, qui avait été teste sur Android... Vu l'implication de Google dans le développement du langage ca me semble une très bonne nouvelle, Go me semblant vachement plus sexy que Java a première vue...

Python et Google

Posté par neologix (page perso, ) le 12/11/2009 à 13:18. (lien). Évalué à 4.

Je me pose une question : est-ce que ce ne serait pas le début d'un abandon de Python par Google ?
Ils estiment peut-être que les performances de Python ne sont pas suffisantes étant donnés leurs besoins et la montée en charge de leurs plate-formes.
Mais du coup quid de Unladen Swallow ?

Typage statique/dynamique

Posté par snt () le 12/11/2009 à 13:52. (lien). Évalué à 5.

Bonjour à tous,

je suis développeur. Je développe quasiment uniquement avec des langages qui subissent une phase de compilation (C, C++, Java, C# ).

Comme la dépêche mentionne la politique de typage de Go, j'en profite pour poser quelques questions aux utilisateurs de python et ruby au sujet de cette fameuse politique de typage.

D'après ce que j'ai lu, python et ruby sont tout les deux très expressifs : on fait beaucoup avec peu de code. Python et ruby ne m'avertissent qu'au moment de l'exécution de certaines erreurs que je peux avoir commis :
- mauvais nom de variable : afficher (personne.DatttteDeNaissante )
- mauvais type : afficher( divise(entier1, chaine2) )

Du coup, si j'ai bien compris la philosophie, je dois écrire des tests pour tout. Y compris ce qui ne peut échouer que parce que les langages ne m'avertissent de certaines erreurs qu'à l'exécution.
( jusqu'ici j'ai bon ? ).
De mon point de vue, je perds un peu l'avantage de l'expressivité puisque même pour du code trivial, je dois écrire un test si je veux m'assurer que le code est bon.

Alors au quotidien, comment vous faites ? Vous écrivez des tests pour avoir 100% de couverture de votre code ? Vous livrez tel quel et vous corrigez si qqn tombe sur un bug idiot ? Il y'a des outils qui font certaines vérifications ? Eclairez moi.

Parlons du langage D par rapport à Go

Posté par creak (page perso, ) le 12/11/2009 à 14:20. (lien). Évalué à 4.

patrick_g (dont j'adore ses dépêches) en parle à la fin: quid du langage D?

J'ai suivi le langage D quasiment depuis son début. Même si je ne code pas avec, je suis toujours surpris par sa finition. Fini les commandes preprocesseur, gestion des templates, un Garbage Collector désactivable, etc...
C'est, selon moi, ce que le C++ aurait dû être s'il n'y avait pas eu la contrainte de compatibilité avec le C (contrainte qui apporte aussi ses avantages, j'en suis bien conscient).

Du coup, même si j'aime beaucoup ce que fait Google, j'ai peur que le langage Go aie une couverture médiatique plus importante uniquement parce que c'est Google qui est derrière.
Pour ceux qui ont l'habitude du D et qui aurait testé le Go, quels sont les bons/mauvais points que l'on peut compter sur chacun des ces deux langages?

Portage Haiku

Posté par Francois Revol (page perso, ) le 13/11/2009 à 01:45. (lien). Évalué à 6.

sans préjuger des problèmes de syntaxe et autre sémantique, j'ai commencé un portage sur Haiku...
le patch courrant :
http://revolf.free.fr/beos/patches/golang-haiku-002.diff

Rapidité de compilation

Posté par Philippe Martin () le 13/11/2009 à 08:47. (lien). Évalué à 0.

La question que personne ne pose, c'est pourquoi privilégier la vitesse de compilation ? Ils indiquent que la compilation sera 80 à 90% plus rapide, alors que l'exécution sera plus lente, d'environ 10%.

Auraient-ils en tête de lancer des compilations à tire-larigot sur leurs serveurs ? Un service de développement en ligne peut-être ?

Revenir en haut de page