Go (langage)

Go (langage)
Page d'aide sur l'homonymie Pour les articles homonymes, voir GO.
Go
Go-logo-black.png

Apparu en 11 novembre 2009
Auteur Google
Paradigme Programmation concurrente, compilé
Influencé par C, Pascal
Système d'exploitation Linux, Mac OS X, FreeBSD
Licence Licence BSD
Site web golang.org
Page d'aide sur l'homonymie Cet article concerne le langage de programmation open source créé par Google en 2009 . Pour le langage de programmation créé en 2003 , voir Go! (langage de programmation). Pour go dans d'autres contexte, voir GO.

Go est un langage de programmation compilé et concurrent inspiré de C et Pascal. Ce langage a été développé par Google[1] à partir d'un concept initial de Robert Griesemer, Rob Pike et Ken Thompson. Go possède deux implémentations, la première utilise gc, le compilateur Go et la seconde utilise gccgo un « frontend » GCC écrit en C++. Gc est écrit en C en utilisant yacc et GNU Bison pour l'analyse syntaxique[2]

Logo de Google Go
Mascotte de Google Go

Go a pour but la rapidité d'exécution indispensable pour la programmation système. La compilation est de 80 % à 90 % plus rapide que la compilation classique du C[3].

Sommaire

« Hello, world »

Voici un exemple d'un programme Hello world typique écrit en Go.

package main
 
import "fmt"
 
func main() {
        fmt.Printf("Hello, World\n")
}

Caractéristiques

Le langage Go a été créé pour la programmation système et a depuis été étendu aux applications, ce qui constitue la même cible que le C et surtout le C++. Il s'agit d'un langage impératif et concurrent.

Concurrence

Go intègre le parallélisme en son cœur, permettant très facilement d’exécuter du code en parallèle. Il suffit d'utiliser le mot clé go pour qu'un simple appel de fonction puisse être exécuté en parallèle du thread courant. Ce code exécuté en parallèle s'appelle une goroutine par analogie avec les coroutines. Le programme prendra alors avantage de la topologie de l'ordinateur pour exécuter au mieux les goroutines, pas forcément dans un nouveau thread, mais il est aussi possible qu'un groupe de goroutines soit multiplexé sur un groupe de threads.

Les goroutines peuvent communiquer entre elles par passage de messages, en envoyant ou en recevant des messages sur des canaux.

Système de types

Go a un système de type statique, fortement typé et sûr, basé sur l'inférence de types avec la possibilité d'utiliser un typage explicite.

La compatibilité des types composés est basée sur les propriétés plutôt que sur le nom. C'est-à-dire que deux types composés seront équivalents si leurs propriétés sont équivalentes: même nom pour la propriété et équivalence de type.

Cela a pour conséquence que le langage n'est pas objet au sens classique (soit avec classes, soit avec prototype), cependant les concepteurs du langage ont fait un choix plus original pour un langage statique. Il est possible de définir des interfaces portant des méthodes décrivant le comportement d'un objet (Il est aussi facilement possible de mélanger plusieurs interfaces en une seule). Les fonctions Go peuvent déclarer accepter un argument de cette interface. Un objet déclarant toutes les méthodes de cette interface, avec la même signature, peut être passé en argument de cette méthode. La vérification du type est effectuée statiquement par le compilateur.

Le fait que Go ne soit pas objet au sens classique fait que Go n'a pas d'héritage de type et pas de sous-classage. Ceci permet de contourner les problèmes posés par ces systèmes tels l'héritage multiple dans les langages qui le permettent (en C++ par exemple), ou l'héritage simple (en Java par exemple). Grâce a l'équivalence de types basée sur les propriétés, Go n'a pas besoin d'héritage de type. Le sous-classage est émulé par l'« embarquement de type ».

La visibilité des structures, attributs, variables, constantes, méthodes, types de haut niveau et des fonctions hors de leur paquetage de déclaration est définie par la casse du premier caractère de leurs identificateurs.

Divers

Dans Go, la gestion de la mémoire est laissée à un ramasse-miettes.

Il n'y a pas encore de programmation générique même si les concepteurs du langage y réfléchissent. Il n'y a pas de surcharge de méthodes ou d'arithmétique des pointeurs. Enfin, il n'y a pas d'assertions ou d'exceptions. Pour remplacer ces deux derniers, Go fournit les mots clés defer, panicking et recover qui donnent des mécanismes similaires aux systèmes de gestion des exceptions de langages tels que C++ et Java (mots clés try, catch, finally et throw).

Notes et références

Liens externes

Sur les autres projets Wikimedia :


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Go (langage) de Wikipédia en français (auteurs)

Игры ⚽ Нужно сделать НИР?

Regardez d'autres dictionnaires:

  • langage — [ lɑ̃gaʒ ] n. m. • v. 1160; lengatge v. 980; de langue I ♦ 1 ♦ Fonction d expression de la pensée et de communication entre les hommes, mise en œuvre au moyen d un système de signes vocaux (parole) et éventuellement de signes graphiques… …   Encyclopédie Universelle

  • LANGAGE (PHILOSOPHIES DU) — L’intérêt pour la langue est un trait dominant de la philosophie contemporaine. Non que nos contemporains soient les premiers à découvrir le langage. Celui ci a toujours été à la place d’honneur dans la philosophie, tant il est vrai que la… …   Encyclopédie Universelle

  • Langage De Programmation — Un langage de programmation est un langage informatique, permettant à un être humain d écrire un code source qui sera analysé par une machine, généralement un ordinateur. Le code source subit ensuite une transformation ou une évaluation dans une… …   Wikipédia en Français

  • Langage Humain — Le langage est la faculté de mettre en œuvre un système de signes linguistiques (qui constituent la langue) permettant la communication et l expression de la pensée, ce qui est privatif des humains, et des sentiments, ce qui est commun aux… …   Wikipédia en Français

  • Langage oral — Langage humain Le langage est la faculté de mettre en œuvre un système de signes linguistiques (qui constituent la langue) permettant la communication et l expression de la pensée, ce qui est privatif des humains, et des sentiments, ce qui est… …   Wikipédia en Français

  • Langage quotidien — Langage humain Le langage est la faculté de mettre en œuvre un système de signes linguistiques (qui constituent la langue) permettant la communication et l expression de la pensée, ce qui est privatif des humains, et des sentiments, ce qui est… …   Wikipédia en Français

  • Langage traditionnel — Langage humain Le langage est la faculté de mettre en œuvre un système de signes linguistiques (qui constituent la langue) permettant la communication et l expression de la pensée, ce qui est privatif des humains, et des sentiments, ce qui est… …   Wikipédia en Français

  • Langage Formel — Dans de nombreux contextes (scientifique, légal, etc.), on désigne par langage formel un mode d expression plus formalisé et plus précis (les deux n allant pas nécessairement de pair) que le langage de tous les jours (voir langage naturel). En… …   Wikipédia en Français

  • Langage sms — « Bonjour, ça va ? » écrit en langage SMS. Manifeste contre le langage SMS …   Wikipédia en Français

  • Langage texto — Langage SMS « Bonjour, ça va ? » écrit en langage SMS. Manifeste contre le langage SMS …   Wikipédia en Français

  • Langage Des Fleurs — Un bouquet savamment composé porte un message. Le don de fleurs existe dans la plupart des civilisations, qu il constitue un cadeau ou un acte religieux. Dans certaines cultures, on accorde aux fleurs une symbolique particulière, en donnant à… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”