Connaissance de base du langage Go (1) : Introduction de base

1. Introduction

Le langage Go, également connu sous le nom de Golang, a été lancé par Google en 2009. Ces dernières années, il a connu une croissance rapide avec le développement du cloud computing, des microservices et de la distribution, et est devenu l'un des langages de programmation courants. c'est un langage de programmation statique, fortement typé, compilé, né pour la concurrence, il est donc naturellement adapté à la programmation concurrente (programmation réseau).

À l'heure actuelle, le langage Go prend en charge plusieurs plates-formes telles que Windows et Linux, et peut également être directement exécuté sur des terminaux mobiles tels qu'Android et iOS. D'un point de vue commercial, le langage Go est largement utilisé dans le cloud computing, les microservices, le big data, la blockchain, l'Internet des objets, l'intelligence artificielle et d'autres domaines ont un large éventail d'applications. Il est donc temps d'apprendre.

2. L'auteur du langage Go

insérez la description de l'image ici

Les pères du langage Go (de gauche à droite sont Robert Griesemer, Rob Pike et Ken Thompson)

Ken Thompson, l'un des fondateurs du langage C Unix et Plan9, a conçu et mis en œuvre le système d'exploitation Unix dans les années 1970, et a également conçu l'encodage UTF-8 avec Rob Pike.

Rob Pike a non seulement conçu le codage UTF-8, mais a également développé le système d'exploitation distribué multi-utilisateurs Plan9 Inferno et le langage de programmation Limbo.

Robert Griesemer travaille chez Google et est responsable du code du moteur Google V8 dans le navigateur Chrome.

Cet après-midi-là, dans son bureau au siège de Google à Mountain View, Rob Pike a lancé la compilation et la construction d'un projet C++. À en juger par l'expérience passée, cette construction prend environ une heure. Utilisant ce temps, Rob Pike s'est assis avec Robert Grismore et Ken Thompson et a échangé des idées sur la conception d'un nouveau langage de programmation.

La raison de cette idée est qu'à cette époque, Google utilisait principalement le langage C++ pour construire divers systèmes, mais l'énorme complexité de C++, la lenteur de la compilation et de la vitesse de construction, et la prise en charge insuffisante de la concurrence lors de l'écriture de programmes serveur ont fait les trois gros . très gênant, ils ont donc voulu concevoir un nouveau langage. Dans sa conception initiale, ce nouveau langage devrait pouvoir faire le bonheur des programmeurs, correspondre aux futures tendances de développement matériel et être adapté au développement des programmes de services réseau internes à grande échelle de Google.

Ils ont commencé à concevoir le langage Go en 2007 et l'ont officiellement publié en 2009. Le langage Go a non seulement la vitesse de développement des langages dynamiques tels que python, mais a également les performances et la sécurité des langages compilés tels que C/C++. Également connu sous le nom de langage C du 21e siècle, il peut non seulement accéder au système d'exploitation sous-jacent, mais également fournir une programmation réseau puissante, une programmation simultanée et une programmation distribuée.

Après l'open source du projet de langage Go, le langage Go a également inauguré sa propre "mascotte", un gopher conçu par la femme de Rob Parker, Renee French. Il est devenu un symbole des programmeurs Go du monde entier, et les programmeurs Go sont également surnommé Gopher.
insérez la description de l'image ici

3. Aller aux fonctionnalités linguistiques

L'open source Go lui-même est écrit en langage Go.

La vitesse est la seule chose qui ne peut pas être brisée dans les arts martiaux. Choisissez un langage rapide tel que le langage C, mais il est difficile à développer. Il existe de nombreuses erreurs dans la dépendance à la vitesse de compilation et à l'exécution, ou certains langages ont trop de dépendances. La plus importante est l'interpréteur lui-même, comme le langage Java nécessite une machine virtuelle pour exécuter le code, et javascript et node.js sont des cauchemars de maintenance. Surtout avec les rappels. Le langage Go a été conçu avec une compilation rapide à l'esprit. Il peut être comme n'importe quel autre langage interprété, vous ne remarquerez pas qu'il compile. Le langage Go réalise la combinaison parfaite d'efficacité de développement et d'efficacité d'exécution, vous permettant d'écrire du code en langage C (performance) comme écrire du code Python (efficacité).
insérez la description de l'image ici

Sécurité En tant que langage statique fortement typé, il est également sûr car il possède son propre mécanisme de récupération de place. Parce que la conception du langage de Go a la capacité de manipuler des pointeurs comme le langage C, mais ce n'est généralement pas aussi dangereux que le langage C, car sa mémoire est gérée par Go lui-même.

Le langage Concise Code Go est non seulement rapide à compiler, mais aussi concis et facile à lire.

Compilé Ne nécessite pas de prise en charge de la machine virtuelle, peut être directement compilé en code machine et le fichier compilé n'a pas besoin de dépendre d'autres fichiers de package.

Le langage Go multiplateforme a une compilation croisée, qui peut être facilement compilée pour s'exécuter sur une plate-forme spécifiée : comme OS X, Linux, Windows, Arm ou d'autres plates-formes.

Nettoyage automatique de la mémoire Le nettoyage de la mémoire pendant l'exécution du programme relève généralement de la seule responsabilité du système d'exécution Go. Cependant, Go nous permet également d'intervenir dans ce travail.

Packages intégrés Le langage Go possède presque toutes les bibliothèques standard que vous pouvez utiliser. Par exemple, le package de protocole réseau http, le package d'analyse json, le package time time, etc. Ce genre de choses fragmentées prend la plupart du temps dans un système.

Outil de construction complet L'excellent outil de commande intégré du langage Go, il est livré avec de nombreuses commandes et outils puissants, à travers eux, vous pouvez facilement effectuer une série de tâches telles que l'acquisition, la compilation, le test, l'installation, l'exécution et l'analyse des programmes Go . Par exemple, le format du code est automatiquement défini et les problèmes dans le code sont vérifiés. La commande go fmt formate automatiquement le code après chaque enregistrement.

Programmation concurrente native La concurrence est un point fort du langage Go. La plus petite unité de concurrence est une coroutine, qui est un micro-thread mais différent d'un thread. Les coroutines sont créées par le langage Go lui-même et planifiées par l'environnement d'exécution du langage Go lui-même. Problèmes nécessitant des threads pour être résolus dans d'autres langues. Il existe une limite au nombre de threads qu'un ordinateur peut ouvrir. Dans le langage Go, il est facile de démarrer une coroutine pour le traitement, car la coroutine est très petite et n'occupe pas de ressources informatiques. Un ordinateur peut facilement ouvrir des milliers de coroutines.A l'ère du big data, le langage qui peut gérer de grandes quantités de données et qui est simple, rapide et ouvert n'est autre que Go.

4. Quelles entreprises utilisent le langage Go

Il y a au moins 1 million de programmeurs Go dans la communauté Go. De plus en plus d'entreprises adoptent le langage Go, les entreprises les plus connues utilisant le langage Go sont Google, Docker, Dropbox, Heroku, Uber, etc. Des entreprises nationales telles que Didi, Tencent, Ali, JD.com, iQiyi, Xiaomi, 360, Meituan, Lvmama.com, Douyu Live, Tantan, etc. utilisent toutes le langage Go. L'arrière-plan, y compris Bilibili, est également passé de java à Go, ce qui montre la popularité du langage Go. La plupart des travaux populaires et fiables des logiciels d'infrastructure de cloud computing modernes auxquels vous pouvez penser sont écrits en Go, tels que : Docker, Kubernetes, Prometheus, Ethereum (Ethereum), Istio, CockroachDB, InfluxDB, Terraform, Etcd, Consul, etc. . Bien entendu, cette liste ne cesse de s'allonger, ce qui montre que l'influence du langage Go est déjà très forte.

5. Projet de langue GO

docker : Un outil de packaging virtuel basé sur lxc, qui peut réaliser la formation de la plateforme PAAS.

kubernetes : Kubernetes est un moteur d'orchestration de conteneurs open source de Google, qui prend en charge le déploiement automatisé, l'évolutivité à grande échelle et la gestion des conteneurs d'applications. Lors du déploiement d'une application dans un environnement de production, il est courant de déployer plusieurs instances de l'application afin d'équilibrer la charge des demandes d'application

Blockchain : BTCD est une implémentation bitcoin d'un nœud complet implémenté dans le langage go

nsq : système de file d'attente de messages open source de Bitly avec de très hautes performances. Actuellement, ils traitent des milliards de messages chaque jour

packer : utilisé pour générer des fichiers image pour différentes plates-formes, telles que VM, vbox, AWS, etc., l'auteur est l'auteur de vagrant

skynet : framework de planification distribuée

Doozer : outil de synchronisation distribué, similaire à ZooKeeper

Heka : système de traitement de journaux open source mazila

cbfs : système de fichiers distribué open source couchbase

tsuru : Une plateforme PAAS open source, qui a exactement les mêmes fonctions que SAE

groupcache : un système de mise en cache écrit par l'auteur de memcahe pour le système de téléchargement de Google

god : Un système de cache similaire à redis, mais prend en charge la distribution et l'évolutivité

gor : outil de capture et de relecture du trafic réseau

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44816664/article/details/131549728
conseillé
Classement