Le langage
go est open source. Le langage go a été officiellement annoncé en novembre 2009 et est devenu un projet open source. Il a été implémenté sur les plates-formes Linux et Mac OS X, puis ajouté au système Windows. Le langage go adopte le protocole open source BSD. Le protocole open source BSD est un protocole qui donne aux utilisateurs une grande liberté. Ils peuvent l'utiliser librement, modifier le code source et rééditer le code modifié sous forme de logiciel open source ou propriétaire.
L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.
Go (également connu sous le nom de Golang) est un langage de programmation statiquement fortement typé, compilé, concurrent et de récupération de place développé par Google.
Robert Griesemer, Rob Pike et Ken Thompson ont commencé à concevoir Go en septembre 2007, et ont ensuite été rejoints par le projet Ian Lance Taylor et Russ Cox. Go est développé sur la base du système d'exploitation Inferno. Go a été officiellement annoncé en novembre 2009, devenant un projet open source et implémenté sur les plates-formes Linux et Mac OS X, puis ajouté une implémentation sous les systèmes Windows.
Pour faire simple : le langage Go est open source et adopte la licence BSD.
Le protocole open source BSD est un protocole qui laisse aux utilisateurs beaucoup de liberté. Vous pouvez l'utiliser librement, modifier le code source et rééditer le code modifié en tant que logiciel open source ou propriétaire. Lorsque vous publiez du code qui utilise le protocole BSD, ou développez votre propre produit basé sur le code du protocole BSD, vous devez remplir trois conditions :
Si le produit réédité contient du code source, alors le code source Le protocole BSD dans le code original doit être inclus.
Si vous redistribuez uniquement des bibliothèques/logiciels de classes binaires, vous devez inclure le protocole BSD dans le code original dans la documentation et la déclaration de droits d'auteur de la bibliothèque/du logiciel de classes.
Vous ne pouvez pas utiliser le nom de l'auteur/de l'organisation du code open source et le nom du produit original à des fins de marketing.
Le code BSD encourage le partage de code, mais les droits d'auteur de l'auteur du code doivent être respectés. BSD est un protocole convivial pour l'intégration commerciale car il permet aux utilisateurs de modifier et de redistribuer le code, et permet également de publier et de vendre des logiciels commerciaux en utilisant ou en développant du code BSD. De nombreuses entreprises préfèrent le protocole BSD lorsqu'elles choisissent des produits open source, car elles peuvent contrôler entièrement ces codes tiers et peuvent les modifier ou les redévelopper si nécessaire.
En 2007, l'ingénieur logiciel en chef de Google, Rob Pike, qui en avait assez du C++, a réuni deux personnes talentueuses, Robert Griesemer et Ken Thompson, et a décidé de créer un nouveau langage pour remplacez C++. C'est Golang. Bien que le langage GO apparu au 21e siècle ne puisse pas remplacer le C++ comme prévu, ses performances d'exécution proches du C, son efficacité de développement de langage quasi analytique et sa vitesse de compilation quasi parfaite sont devenus populaires dans le monde entier. Surtout dans les projets cloud, la plupart d'entre eux sont développés avec Golang. Il faut dire que Golang est depuis longtemps profondément ancré dans le cœur des gens. Pour un nouveau projet sans fardeau historique, Golang peut être le meilleur choix.
Rob Pike, connu comme le père du langage GO, a déclaré que votre accord avec le langage GO dépend de votre accord sur le fait que moins c'est plus ou moins c'est moins (Moins c'est plus ou moins c'est moins). Rob Pike résume toute la philosophie de conception du langage GO d'une manière très simple - incarnant au maximum la simplicité et la praticité.
Beaucoup de gens appellent le langage GO le langage C du 21e siècle, car GO possède non seulement la simplicité et les performances du C, mais fournit également diverses fonctionnalités pratiques pour le développement côté serveur dans l'environnement Internet du 21e siècle, permettant aux développeurs de obtenez facilement ce que vous voulez au niveau linguistique.
Le langage Go est le deuxième langage de programmation open source lancé par Google en 2009. Le langage Go est spécialement optimisé pour la programmation d'applications système multiprocesseurs. Les programmes compilés à l'aide de Go peuvent être aussi rapides que le code C ou C++, sont plus sécurisés et prennent en charge les processus parallèles.
1. Équipe de développement
Le camp de développement du langage GO peut être considéré comme d'une puissance sans précédent parmi les principaux membres figurent des personnalités historiques de l'industrie des logiciels informatiques, qui ont une profonde influence sur le développement de l'ordinateur. logiciel. Ken Thompson, des Bell Labs, a conçu le langage B et créé le système d'exploitation Unix (initialement implémenté dans le langage B). Plus tard, lors du développement d'Unix, il a conçu le langage C avec Dennis Ritchie, puis l'a reconstruit en utilisant le langage C. langue du système d’exploitation Unix. Dennis Ritchie et Ken Thompson sont connus comme les pères d'Unix et du langage C et ont reçu conjointement le prix Turing en 1983 en reconnaissance de leurs contributions exceptionnelles au développement de logiciels informatiques. Rob Pike, également des Bell Labs, est un membre important de l'équipe Unix. Il a inventé le langage Limbo et a co-conçu l'encodage UTF-8 avec Ken Thompson. Il est l'un des auteurs de "Unix Programming Environment" et "Programming". Pratique".
2. Caractéristiques du langage go
Le garbage collection automatique réduit la difficulté de développement
La gestion de la mémoire et des ressources a toujours été un problème très frustrant. Dans d'autres langages (comme le C ou le C++), cette mémoire doit être allouée avant de l'utiliser, puis libérée après utilisation. Un petit oubli peut provoquer une fuite de mémoire, provoquant un crash du programme ou même du système. Le mécanisme moderne de récupération de place du langage Go réduit considérablement la difficulté de développement, laissant la gestion de la mémoire sans intérêt aux compilateurs professionnels, permettant ainsi aux programmeurs de se concentrer sur des choses plus intéressantes.
Prise en charge de plusieurs valeurs de retour pour les fonctions
Actuellement, la plupart des langages courants, à l'exception de Python, ne prennent fondamentalement pas en charge plusieurs valeurs de retour pour les fonctions, mais dans de nombreux cas, les développeurs ont vraiment besoin de cette fonctionnalité. La fonction de valeurs de retour multiples du langage Go permet aux développeurs de ne plus avoir à définir une
belle spécification de gestion des erreurs
juste pour renvoyer plusieurs valeurs. Le langage Go introduit le mot-clé defer pour le processus standard de gestion des erreurs et fournit le build. -in les fonctions panic et recovery sont utilisées pour terminer le lancement et la capture des exceptions. Par rapport au mécanisme de capture d'exceptions dans des langages tels que C++ et Java, le mécanisme de gestion des erreurs du langage Go peut réduire considérablement la quantité de code. Les développeurs n'ont plus besoin d'ajouter simplement un grand nombre d'instructions try-catch. pour la sécurité du programme.
Golang ne prend pas en charge les méthodes structurées de résolution d'exceptions telles que try...catch, car il estime que cela augmentera la quantité de code et sera abusé, quelle que soit la taille de l'exception, elle sera levée. La méthode de gestion des exceptions préconisée par golang est :
Programmation simultanée
Le langage Go est beaucoup plus simple que la plupart des langagesen termes de programmation simultanée. C'est l'un de ses plus grands points forts et une monnaie d'échange importante pour entrer dans la haute concurrence et les hautes performances. scénarios dans le futur.
Différente du multi-processus ou du multi-thread traditionnel, l'unité d'exécution simultanée de Golang est une coroutine appelée goroutine.
À l’ère du multicœur d’aujourd’hui, l’importance de la programmation simultanée est évidente. Bien sûr, de nombreux langages prennent en charge la programmation multithread et multi-processus, mais malheureusement, sa mise en œuvre et son contrôle n'est pas si simple et agréable. La différence avec Golang est que le niveau de langage prend en charge la simultanéité des coroutines (goroutines) (les coroutines sont également appelées micro-threads, qui sont plus légères, moins coûteuses et plus performantes que les threads). Le niveau de langage fournit. mots-clés (go) Utilisés pour démarrer des coroutines, et des milliers de coroutines peuvent être démarrées sur la même machine.
Programmation réseau
Depuis que Golang est né à l'ère d'Internet, il est intrinsèquement décentralisé et distribué. L'une de ses manifestations spécifiques est qu'il fournit des interfaces de programmation réseau riches et pratiques, telles que socket utilisant net.Dial (basé sur TCP. /udp, qui encapsule les interfaces traditionnelles de connexion, d'écoute, d'acceptation et autres), http utilise http.Get/Post(), rpc utilise client.Call('class_name.method_name', args, &reply), etc.
Compilation
L'exécution d'un programme Go compilé ne nécessite pas l'installation supplémentaire d'un environnement d'exécution tel que le jdk de Java ou le nœud de js. En même temps, Go fournit une prise en charge native de la compilation croisée, ce qui rend le développement et le déploiement multiplateformes très pratiques. .
Bien sûr, la compilation et l'exécution sont également plus faciles à améliorer l'efficacité opérationnelle, mais nous ne devrions pas être superstitieux à cet égard. De plus en plus d'environnements d'exploitation de langage de programmation « interprétés » ont commencé à prendre en charge JIT, ce qui fait que la compilation comme Go apporte The. l’avantage en termes de performances devient moins évident.
3. Scénarios d'utilisation du langage Go
Compte tenu des caractéristiques et de l'intention de conception originale du langage Go, le langage Go, en tant que langage de programmation de serveur, est très approprié pour le traitement des journaux, le conditionnement des données, le traitement des machines virtuelles, systèmes de fichiers, systèmes distribués, agents de base de données, etc. ; en termes de programmation réseau, le langage Go est largement utilisé dans les applications Web, les applications API, les applications de téléchargement, etc. De plus, le langage Go convient également aux bases de données en mémoire et au cloud. Champs de plate-forme. Actuellement, de nombreuses plates-formes cloud étrangères sont développées à l'aide de Go .
Programmation serveur, si vous avez utilisé C ou C++ pour faire ces choses auparavant, Go est très approprié pour le faire, comme le traitement des journaux, le packaging des données, le traitement des machines virtuelles, le système de fichiers, etc.
Systèmes distribués, courtiers de bases de données, middleware, etc., tels que Etcd.
La programmation réseau est actuellement la plus largement utilisée, y compris les applications Web, les applications API, les applications de téléchargement, et le package net/http intégré de Go implémente essentiellement toutes les fonctions réseau que nous utilisons habituellement.
Exploitation de la base de données
Développer une plateforme cloud Actuellement, de nombreuses plateformes cloud étrangères utilisent le développement Go.
Implémente la logique métier des services côté serveur et constitue une bonne alternative au C++, Java, Ruby, Python et Php. Il peut également être utilisé pour implémenter un middleware à haute concurrence.
Efficacité du développement Le langage GO est simple à utiliser, a une efficacité de description de code élevée, des normes de codage unifiées et est rapide à démarrer.
1. Intention originale de la conception du langage Go
Ouvrir go 05. Comparaison entre le langage Go et d'autres langages
URL de référence : https://studygolang.com/articles/24885
Allez espérer Devenir le langage C de l'ère Internet. La philosophie de programmation fondamentale de la plupart des langages au niveau système (y compris Java et C#) provient du C++, développant davantage la nature orientée objet du C++. Mais les concepteurs du langage Go ont un point de vue différent Ils pensent que le langage C vaut la peine d'être appris. La popularité durable du langage C réside dans sa simplicité. Par conséquent, le langage Go est assez simple.
Go a été conçu par et pour ceux qui développent de grands systèmes ; il s'agit de résoudre des problèmes d'ingénierie, pas d'étudier la conception de langages ; il s'agit de rendre notre programmation plus confortable et plus pratique. **
Mais combiné à certaines réalités internes de Google à l'époque, comme de nombreux ingénieurs venant du département C, le langage nouvellement conçu doit être facile à apprendre, de préférence un langage similaire au C dans lequel il n'y a pas eu de nouveau langage ; 20 ans. Le langage nouvellement conçu doit donc être moderne (comme le GC intégré), etc. Enfin, sur la base de leur expérience pratique, ils ont conçu le langage Go en fonction de leurs objectifs.
Langage compilé, vitesse modérée (2,67 s),Actuellement, les grands sites Web sont écrits en Java, comme Taobao, JD.com, etc. Ses principales caractéristiques sont la stabilité, un bon open source, son propre ensemble de spécifications d'écriture, une efficacité de développement modérée, et c'est actuellement le langage le plus courant.
C
a une vitesse d'exécution rapide (4,28), une difficulté d'apprentissage modérée et une vitesse de développement modérée. Cependant, en raison des nombreuses lacunes du C#, les prédécesseurs des grands sites Web tels que JD.com et Ctrip ont tous été développés en C#, mais ils ont maintenant été migrés vers Java.
C/C++
L'ancêtre des langages de programmation existants, dont sont nés tous les autres langages. La vitesse d'exécution la plus rapide est inégalée. Mais c’est le plus compliqué à écrire et le plus difficile à développer.
En termes de caractéristiques du langage, Java et C sont assez différents, tandis que go et C sont plus proches.
Comment choisir entre python, golang, java et c++ en 2019 ?
URL de référence : https://zhuanlan.zhihu.com/p/65177007
Apprentissage comparatif : Golang VS Python3
URL de référence : https://zhuanlan.zhihu.com/p/65613337
Golang et Python sont actuellement en L'un des langages de développement les plus populaires dans leurs domaines respectifs.
La syntaxe efficace et conviviale de Golang a gagné la faveur de nombreux développeurs back-end et est l'un des langages les plus adaptés à la programmation réseau à haute concurrence.
Inutile de préciser que Python, l'un des dix premiers résidents permanents du classement TIOBE, s'est désormais stabilisé dans le top cinq. Il est devenu un langage incontournable dans les domaines de l’apprentissage automatique, de l’IA et de l’analyse de données.
Par rapport à python, go a un net avantage en termes de performance, car la vitesse d'exécution des langages interprétés et des langages compilésn'est pas la même. De plus, go est meilleur que python en termes de. syntaxe concise et conception du système de types.
Bien que les performances soient fortes, l'efficacité du développementn'est pas pire que celle des langages dynamiquestels que Python. Il s'agit généralement d'un ordre de grandeur supérieur à celui des applications Python natives et convient à l'écriture de certains services à goulot d'étranglement. L'utilisation de la mémoire est également très économique.
Python
Langage de script, le plus lent (258 s), code concis, progression d'apprentissage courte et vitesse de développement rapide. Douban est écrit en Python. Les frameworks de serveur célèbres pour Python incluent Django et Flask. Cependant, Python n'est pas stable pour les grands projets, c'est pourquoi certaines entreprises qui utilisent Python ont ensuite migré vers Java.
【Recommandation associée : Tutoriel vidéo Go】
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!