FAQ GoConsultez toutes les FAQ

Nombre d'auteurs : 6, nombre de questions : 45, dernière mise à jour : 20 août 2015  Ajouter une question

 

Cette FAQ a été réalisée essentiellement à partir de la traduction de la FAQ officielle GO.

Nous tenons à souligner que cette faq ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette faq ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.

Sur ce, nous vous souhaitons une bonne lecture.

L'équipe de rédaction Developpez.com


SommaireLes origines (8)
précédent sommaire suivant
 

[Traduction de la FAQ officielle]

Aucun langage système majeur n'est apparu depuis plus d’une décennie, mais au fil du temps le paysage informatique a énormément changé. Il y a plusieurs tendances :

  • les ordinateurs sont considérablement plus rapides, mais le développement de logiciels n’est pas plus rapide qu'alors ;
  • la gestion des dépendances est une grande partie du développement de logiciels aujourd'hui, mais les « fichiers d'en-têtes » en C sont contradictoires avec une analyse propre des dépendances et de la compilation rapide ;
  • il y a de plus en plus de rébellions contre les systèmes lourds comme ceux de Java et C++, qui poussent les gens vers des langages à typage dynamique tels que Python et JavaScript ;
  • certains concepts fondamentaux tels que le ramasse-miettes et le parallélisme ne sont pas bien supportés par les langages système populaires ;
  • l'émergence des ordinateurs multicœurs a généré inquiétude et confusion.
    Nous croyons que ça vaut la peine d'essayer encore avec un nouveau langage, un langage multitâches doté de ramasse-miettes et d'une compilation rapide. Concernant les points ci-dessus :
  • il est possible de compiler un gros programme Go en quelques secondes sur un seul ordinateur ;
  • Go fournit un modèle pour la construction de logiciels qui rend l'analyse des dépendances facile et évite le surcoût dans les fichiers d’en-têtes et des bibliothèques propres à C ;
  • le système de typage de Go n’a pas de hiérarchie, donc pas de temps perdu à définir les relations entre les types. Bien que Go ait un système de type statique, le langage tente de faire des types plus légers que dans les langages orientés objet ;
  • Go utilise le ramasse-miettes et fournit un support fondamental pour l'exécution de tâches en parallèle et la communication entre elles ;
  • Par sa conception, Go propose une approche pour le développement de logiciels sur des machines multicœurs.

Une réponse beaucoup plus large à cette question est disponible dans l'article : Go at Google.

Mis à jour le 14 novembre 2014 BakSh0

[Traduction de la FAQ officielle]

Go est devenu un projet public open source le 10 novembre 2009. Après quelques années de conception et de développement, la version stable de Go 1 a été publiée le 28 mars 2012. Go 1 comprend des spécifications du langage, des bibliothèques standards et des outils personnalisés, fournissant une base stable pour créer des produits, des projets et des publications fiables.

Une fois cette stabilité assurée, nous utilisons Go pour développer des programmes, des produits et des outils plutôt que de changer souvent de langage et de bibliothèques. En fait, le but de Go est de fournir une stabilité à long terme. Aucun changement rompant la compatibilité ne sera fait sur les versions de Go 1. Nous souhaitons utiliser ce que nous avons entre les mains pour apprendre ce qu'il faudrait mettre dans une version à venir de Go, plutôt que de jouer avec le langage sous nos pieds.

Bien sûr, le développement continuera sur Go, mais l'accent sera mis sur les performances, la fiabilité, la portabilité et l'ajout de nouvelles fonctionnalités telles que l'amélioration du support à l'internationalisation.
Il pourrait y avoir un Go 2 un jour, mais pas d’ici quelques années et il sera basé sur ce que nous apprenons aujourd'hui en utilisant Go 1 tel qu'il est actuellement.

Mis à jour le 14 novembre 2014 BakSh0

[Traduction de la FAQ officielle]

« Ogle » serait un bon nom pour un débogueur Go.

Mis à jour le 14 novembre 2014 BakSh0

[Traduction de la FAQ officielle]

La mascotte et le logo ont été conçus par Renée French, qui a également conçu Glenda, le lapin de Plan 9. Le petit rongeur est dérivé d'un autre logo utilisé pour le design d'un T-shirt WFMU d'il y a quelques années. Le logo et la mascotte sont sous licence Creative Commons Attribution 3.0.

Mis à jour le 14 novembre 2014 BakSh0

[Traduction de la FAQ officielle]

Robert Griesemer, Rob Pike et Ken Thompson ont commencé à esquisser les objectifs d'un nouveau langage, le 21 septembre 2007. En l'espace de quelques jours, les objectifs s'étaient transformés en un plan afin d’avoir une idée juste de ce que cela pourrait donner. La conception a continué à temps partiel parallèlement à d'autres travaux sans rapport. En janvier 2008, Ken a commencé à travailler sur un compilateur pour explorer ces idées ; ce compilateur générait du code C à sa sortie. Au milieu de l'année, le langage est devenu un projet à temps plein et avait assez progressé pour tenter de créer un compilateur de production. En mai 2008, Ian Taylor a commencé à travailler de façon indépendante sur un front end GCC pour Go sur la base de la spécification initiale. Russ Cox rejoint le projet à la fin de l'année 2008 et a contribué à faire passer le langage et les bibliothèques du prototype à la réalité.

Go est devenu un projet open source public le 10 novembre 2009 ; beaucoup de gens de la communauté y ont contribué grâce à leurs idées, discussions, et à leurs codes.

Mis à jour le 14 novembre 2014 BakSh0

[Traduction de la FAQ officielle]

Go est né de la frustration des langages et des environnements existants pour la programmation système. La programmation était devenue trop difficile et le choix des langages est en partie à blâmer. Il fallait choisir entre une compilation efficace, une exécution efficace, ou la facilité de programmation ; il était impossible de satisfaire ces trois besoins avec un seul langage. Les développeurs qui en avaient la possibilité choisissaient la facilité plutôt que la sûreté et l'efficacité en se tournant vers les langages dynamiques tels que Python et JavaScript plutôt que C ++ ou, dans une moindre mesure, Java.

Go tente de combiner la facilité de la programmation dans un langage interprété et typé dynamiquement avec l'efficacité et la sécurité d’un langage compilé et statiquement typé. Il vise la modernité, avec un support pour des applications fonctionnant en réseau et sur des architectures multicœurs. Enfin, il est destiné à être rapide : il devrait prendre tout au plus quelques secondes pour construire un grand exécutable sur un seul ordinateur. Pour atteindre ces objectifs, il est nécessaire d’aborder un certain nombre de questions linguistiques : un système de type expressif, mais léger ; parallélisme et ramasse-miettes ; spécification de dépendance rigide ; et ainsi de suite. Ces questions ne peuvent pas être résolues à l'aide de bibliothèques ou d'outils ; c’est pour cela qu’un nouveau langage a été créé.

L'article Go at Google examine le contexte et la motivation derrière la conception du langage Go et fournit plus de détails sur un grand nombre de réponses présentées dans cette FAQ.

Mis à jour le 14 novembre 2014 BakSh0

[Traduction de la FAQ officielle]

Go fait partie des langages de la famille C (syntaxe de base), avec une contribution significative de ceux de la famille Pascal/Modula/Oberon (déclarations, paquetages), ainsi que quelques idées provenant des langages inspirés par le concept de Communication Sequential processing (CSP) de Tony Hoare, comme Newsqueak et Limbo (parallélisme). Toutefois, c'est un langage entièrement nouveau à tout point de vue. Le langage a été conçu en pensant à ce que les programmeurs font et comment rendre la programmation, du moins le type de programmation que nous faisons, plus efficace, autrement dit plus amusante.

Mis à jour le 14 novembre 2014 BakSh0

[Traduction de la FAQ officielle]

La programmation aujourd'hui implique trop de comptabilité, de répétition et de travail administratif. Comme le dit Dick Gabriel: « Les anciens programmes se lisent comme des conversations paisibles entre un chercheur qui sait s'exprimer et un collègue ingénieur, non pas comme un débat avec un compilateur. Qui aurait pensé que la sophistication allait apporter autant de bruit ? » La sophistication est utile - personne ne veut revenir aux anciens langages, mais peut-elle être atteinte dans le calme et la sérénité ?

Go essaye de réduire la quantité de frappes au clavier. Tout au long de sa conception, nous avons essayé de réduire l'encombrement et la complexité. Il n'y a pas de déclarations anticipées et pas de fichiers d'en-tête ; tout est déclaré une fois et une seule. L'initialisation est expressive, automatique et facile à utiliser. La syntaxe est propre et n'utilise qu'un nombre limité de mots clés. Le bégaiement (foo.Foo* myFoo = new(foo.Foo)) est réduit par simple dérivation de type en utilisant le := qui déclare et initialise le constructeur. Et plus radicalement, il n'y a pas de hiérarchie de types : les types existent tout simplement, ils n'ont pas à annoncer leurs relations. Ces simplifications permettent à Go d'être expressif et compréhensible sans sacrifices, c’est cela la sophistication.

Un autre principe important est de garder les concepts orthogonaux. Les méthodes peuvent être mises en œuvre pour n'importe quel type ; les structures représentent les données tandis que des interfaces représentent des abstractions ; et ainsi de suite. L'orthogonalité rend plus facile à comprendre ce qui se passe quand les choses se combinent.

Mis à jour le 14 novembre 2014 BakSh0

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2019 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Contacter le responsable de la rubrique Go

Partenaire : Hébergement Web