Go de Google, alternative à C++
Google a créé le langage Go pour pour pouvoir fonctionner avec les processeurs multi-coeurs actuels ce qui est difficile avec les langages actuels. Pour ce faire, il a fait appel à plusieurs vétérans de la programmation ce qui explique la syntaxe vénérable du langage.

Un syntaxe qui date de 40 ans!
- Ken Thompson. Co-auteur de Unix, créateur du langage B auquel a succédé C (par Dennis Ritchie).
- Rob Pike, a créé le système Plan 9 pour Bell.
- Robert Griesemer a contribué au compilateur JavaScript V8 de Chrome et à GCC.
Son objectif est de rester le plus proche possible du langage C tout en améliorant de beaucoup la productivité. Et il veut se substituer à lui pour la programmation système, ce que ni Java ni C# ne peuvent faire.
Go s'inspire de C, Java, Pascal, Python et reprend même des caractéristiques de Scriptol!
Google nous dit dans la présentation:
"Nous affirmons que Go est un langage moderne"
Et c'est vrai quand à ses fonctionnalités, non quand à la syntaxe qui date de 1969 exactement et du langage B!
Il est utilisé en production depuis mai 2010.
Pourquoi utiliser Go?
Conçu pour les programmes parallèles, il peut sur des ordinateurs modernes fournir un traitement accéléré.
Sa syntaxe et la façon dont il traite les objets le destine surtout aux programmeurs système comme remplacement du langage C ou C++. Il permet alors un développement plus rapide.
Il possède d'emblée les fonctionnalités de concurrence et un garbage collector, qu'il faut ajouter à ces langages.
Mais il lui manque des bibliothèques pour l'instant.
On peut l'utiliser pour réaliser des logiciels serveurs et par exemple pour construire un CMS et générer des pages HTML. Le site golang.org est réalisé avec Go.
Caractéristiques de Go
- Point-virgules inutiles sauf pour séparer des instructions.
- map est une table de hâchage et fait partie du langage.
- Multiples threads qui communiquent entre eux.
- Les variables sont déclarées comme en pascal sous la forme:
var nom type
Ex: var x int; - Les fonctions peuvent retourner plusieurs valeurs à la fois.
- Il n'y a pas de parenthèses autour des conditions if ou for, comme en Scriptol.
- break et continue peuvent spécifier un libellé.
- Le structure switch case peut comporter des tests différents comme c'est le cas en Scriptol.
- Un case peut comporter plusieurs alternatives:
case 0, 1, 2: - Une slice est une structure qui reprend une partie d'une liste et pointe sur celle-ci.
- La commande go appelle une fonction en démarrant un thread différent.
- chan est un canal pour communiquer entre goroutines (qui sont les fonctions de threads concurrents).
La technologie CSP, (Communicating Sequential Processes) gère la communication entre programme aide à la gestion des processeurs multi-coeurs.
Différences avec C++
Même s'il reprend la même syntaxe des années 70, Go simplifie beaucoup la programmation par rapport à C++.
Beaucoup de causes d'erreurs fréquentes provenant de la syntaxe sont supprimées.
Le fonctionnement multi-thread devient simple, avec une seule commande.
Le garbage collector évite la gestion de la mémoire par le programmeur.
- Il n'y a pas de classe et d'héritage. Les interfaces sont proches des objets de JavaScript.
- La mémoire est gérée automatiquement par un garbage-collector.
- Les pointeurs ont un type fixé.
- Les tableaux sont passés par valeurs et non comme des pointeurs.
- Des imports de packages comme en Java plutôt que des fichiers d'en-têtes.
- Pas de conversion de types sans passer par une fonction.
- nil remplace null.
- Le symbole de pointeur -> est remplacé par le point.
- Le do while n'existe pas.
- Pas de break dans le switch case (comme en Scriptol).
- Les incréments -- et ++ ne peuvent pas s'utiliser dans des expressions.
- Les constantes peuvent être déclarées sans type.
- new est une fonction et non pas un opérateur.
Go vs. Java
Java a été conçu comme un langage pour le Web et est devenu populaire grâce à cela. Il peut fonctionner sur le serveur ou sur le poste client grâce à des applets.
Son principal intérêt est sa bibliothèque d'interface graphique très étendue.
Go pourrait adopter une approche différente, utiliser Webkit pour l'interface, Native Client ou être intégré au navigateur comme JavaScript pour faire fonctionner des applications Web sur le poste client.
Go vs. C Sharp
C# a été créé par Microsoft comme réponse au langage Java et est conçu pour fonctionner sur le framework .Net. Celui-ci souffre d'un manque de compatibilité. Il fonctionne sur Linux, mais avec des fonctions réduites par rapport à la version de Windows.
C# fonctionne aussi dans Silverlight pour les applications Web.
Polémique sur le nom
Un ticket a été créé sur le forum du langage avec pour code d'identification issue 9.
L'auteur d'un langage totalement inconnu clame que le nom Go est déjà celui de son propre langage.
Le fait est qu'un livre a été écrit sur celui-ci, sous le titre Let's Go!
Notons que ce langage s'appelle Go! et non pas go, et que le mot Go appartient au domaine public: il s'agit d'un jeu de tableau chinois qui existe depuis plusieurs milliers d'années!
Sites et outils pour Go
- Le site officiel.
- Go en ligne. Service en ligne pour exécuter un programme go dans le navigateur. Le programme est compilé sur le server, exécuté et le résultat affiché.
- Liste de ressources.
- App Engine pour Go. Sur l'infrastructure de Google, on peut réaliser des application Web utilisant Go coté serveur.
Exemples de code
Programme Hello:
package main
import fmt "fmt"
func main()
{
fmt.Printf("Hello, world\n");
}
Afficher les caractères d'une chaîne:
package main
import ("os";"flag";)
func main()
{
var s string = "Démonstration";
for i := 0; i < s; i++
{
os.Stdout.WriteString(s[i]);
}
}
L'absence de parenthèses après for est volontaire. Le langage offre quelques progrès dans la syntaxe...
|
|
|
