vendredi 13 novembre 2009

Go: Un nouveau langage par Google

Google communique sur son nouveau langage maison : GO.
Avant même le lancement du projet, le sujet a déclenché une polémique sur web en raison de son appellation déjà utilisée par une autre équipe:
Voir le fil de discussion ici:



Go est un langage compilé comme le C ou le C++. Il est aussi orienté traitement concurrent (dans le sens de parallélisation des traitements) comme Erlang. Ainsi les processus dialoguent entre eux par des 'Channels' ex:
chan1 <- "exemple"

Ici la chaine "exemple" est envoyée à un autre processus branché en entrée du canal "chan1"

On utilise le mot réservé 'go' pour lancer un processus , avec souvent comme paramètre le canal à brancher en entrée et en sortie :
ex:
go ma_fonction(ch_in, ch_out,un_paramètre)
Ici ma_fonction pourra lire des données à partir de ch_in et écrire des données en sortie sur ch_out

i := <-ch_in; // Receive value of new variable 'i' from 'ch_in'. ch_out <- i // Send 'i'

Les nostalgiques du Pascal retrouveront le signe ':=' qui ici permet la déclaration et le chargement d'une variable: c'est l'initialisation.

Le blog du langage go (golang) propose une illustration des processus concurrents basée sur la recherche des nombres premiers par le Crible d'Ératosthène


C'est un excellent exercice à faire en Erlgan, sur lequel je vais passer plusieurs soirées.




Le langage est fortement typé, avec des types basiques permettant de construire des structures.
Il est possible de manipuler des types originaux comme les 'channel' (type chan) et les slices : tranches de tableau. A noter qu'il n'existe que les boucles 'for' , pas de 'while' ou de 'do'.

Je suis un peu déçu de l'ensemble. Maintenant que je connais mieux les langages fonctionnels, je persiste à croire qu'il faut éviter de partager des ressources si on désire vraiment paralléliser les processus. Pour cela comme dans les langages fonctionnel il ne faut pas d'effet de bord.
Le caractère immuable des variable en Haskell ou en Erlang est très déconcertant mais c'est solution la plus simple.

Pour terminer, je suis très étonné de google sorte un nouveau langage alors que le gourou du Python est son employé. Et que dire de cette remarque relevée sur le site de Google: depuis 10 ans aucun langage ne s'est distingué.. Merci Guido.“No major systems language has emerged in over a decade, but over that time the computing landscape has changed tremendously. "

Aucun commentaire: