Maison  >  Article  >  développement back-end  >  À quelles langues la langue go emprunte-t-elle ?

À quelles langues la langue go emprunte-t-elle ?

青灯夜游
青灯夜游original
2023-01-30 18:13:523086parcourir

Le langage go s'appuie sur C, Pascal et CSP. De nombreuses fonctionnalités du langage Go sont empruntées à ses trois ancêtres : C, Pascal et CSP. La syntaxe, les types de données, le flux de contrôle, etc. de Go sont hérités du package Go, les idées orientées objet et autres sont dérivées de la branche Pascal ; et la plus grande fonctionnalité du langage Go, le modèle de concurrence de coroutines basé sur la communication par pipeline, est emprunté à la branche CSP.

À quelles langues la langue go emprunte-t-elle ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.

1. L'intention initiale de la conception du langage Go

1 Le langage Go a été conçu pour résoudre les problèmes rencontrés par le développement de Google à cette époque :

  • Une grande quantité de code C++, et en même temps, Java et Python ont été introduits
  • Des milliers d'ingénieurs
  • Des dizaines de milliers de lignes de code
  • Système de compilation distribué
  • Des millions de serveurs

2. Points faibles du développement Google :

  • Compilation lente
  • Manque de -contrôler les dépendances
  • Chaque ingénieur n'utilise qu'une partie d'un langage
  • Le programme est difficile à maintenir (mauvaise lisibilité, documentation peu claire, etc.)
  • Le coût des mises à jour est de plus en plus long
  • La compilation croisée est difficile

3. Comment résoudre les problèmes et points douloureux actuels ?

Go espère 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 estiment que le langage C mérite d'être appris. La popularité durable du langage C réside dans sa simplicité. Par conséquent, le langage Go est assez simple.

Ainsi, leur objectif lors de la conception de Go à cette époque était d'éliminer toutes sortes de lenteurs et de lourdeur, et d'améliorer diverses inefficacités et évolutivité. 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, mais de rendre notre programmation plus confortable et pratique ;

Mais combiné à certaines réalités internes de Google à l'époque, par exemple, de nombreux ingénieurs étaient issus du département C, le langage nouvellement conçu doit donc être facile à apprendre, de préférence un langage similaire au C dans lequel aucun nouveau langage n'a été introduit ; 20 ans, donc le nouveau langage Le langage conçu doit ê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.

4. Caractéristiques du langage Go :

  • Orienté objet sans polymorphisme d'héritage
  • Type fortement cohérent
  • L'interface ne nécessite pas de déclaration explicite (Duck Typing)
  • Aucune gestion des exceptions (l'erreur est la valeur)
  • Basé sur l'en-tête Les fonctionnalités d'accessibilité des lettres
  • Les importations ou variables non utilisées provoquent des erreurs de compilation
  • Package de bibliothèque standard complet et excellent
  • Runtime Go intégré (pour la surveillance des performances, le garbage collection, etc.)

2.

1. Courbe d'apprentissage facile

Le langage Go a une syntaxe simple, y compris une syntaxe de type C. Le langage Go étant facile à apprendre, un étudiant ordinaire peut écrire une application utilisable et performante en quelques semaines. Tout le monde en Chine recherche la vitesse, ce qui est l'une des raisons pour lesquelles le Go est si populaire en Chine.

À quelles langues la langue go emprunte-t-elle ?

Les caractéristiques grammaticales du langage Go sont tout simplement trop simples. C'est si simple que vous ne pouvez pratiquement pas faire de trucs. C'est simple, la courbe d'apprentissage est très faible et vous pouvez commencer très rapidement.

2. Efficacité : temps de compilation rapide, efficacité de développement et efficacité opérationnelle élevées

Par rapport à la vitesse de compilation lente de Java et C++ pendant le processus de développement, le temps de compilation rapide de Go est un avantage majeur en termes d'efficacité. Go a une efficacité opérationnelle proche du C et une efficacité de développement proche de PHP.

À quelles langues la langue go emprunte-t-elle ?

Le concept du langage C est de faire confiance aux programmeurs, de garder le langage petit, de ne pas protéger la couche inférieure et d'être convivial au niveau inférieur, et de prêter attention à l'efficacité d'exécution et aux performances du langage. L'attitude de Python est d'accomplir autant que possible avec le moins de code possible. Je sens donc que le langage Go veut unifier C et Python, ce qui est une bonne chose.

3. Venez d'une famille célèbre et avez une lignée pure

La raison pour laquelle Go est dit appartenir à une famille bien connue peut être vue par le créateur du langage Go. Le langage Go est absolument pur en termes de lignée. Deuxièmement, le langage Go vient de Google. Il va sans dire que la popularité et la force de Google dans l’industrie sont naturelles. Google a rassemblé un groupe de personnes talentueuses pour lancer un nouveau langage de programmation dans une situation où divers langages de programmation se disputent l'hégémonie. Naturellement, cela a ses considérations stratégiques. Et à en juger par la tendance de développement du langage Go, Google attache toujours une grande importance à son nouveau chéri Go qui a naturellement un bon avenir en matière de développement.

À quelles langues la langue go emprunte-t-elle ?

4. Gratuit et efficace : combinaison d'idées, interfaces non intrusives

Le langage Go peut être considéré comme la fusion parfaite de l'efficacité du développement et de l'efficacité opérationnelle, avec un support naturel pour la programmation simultanée. Le langage Go prend en charge tous les paradigmes de programmation actuels, y compris la programmation procédurale, la programmation orientée objet, la programmation orientée interface et la programmation fonctionnelle. Les programmeurs peuvent choisir ce dont ils ont besoin, les combiner librement et jouer à ce qu'ils veulent.

5. Bibliothèque standard puissante

Cela comprend les applications Internet, la programmation système et la programmation réseau. Les bibliothèques standard de Go sont fondamentalement très stables, en particulier les trois bibliothèques que j'ai mentionnées ici, les bibliothèques de couche réseau et de couche système sont très pratiques. **La bibliothèque lib du langage Go est petite mais complète. **La bibliothèque lib du langage Go contient essentiellement la plupart des bibliothèques couramment utilisées. Bien que certaines bibliothèques ne soient pas très bonnes, je ne pense pas que ce soit un problème, car je pense que ces problèmes seront résolus dans le développement futur.

6. Déploiement facile : fichiers binaires, déploiement de copie

C'est la principale raison pour laquelle de nombreuses personnes choisissent Go. Parce que le déploiement est si pratique, de nombreuses personnes utilisent désormais Go pour développer des programmes d'exploitation et de maintenance.

7. Concurrence simple

** La programmation parallèle et asynchrone est presque indolore. **Les deux artefacts du langage Go, Goroutine et Channel, sont tout simplement d'énormes bénédictions pour la programmation simultanée et asynchrone. La concurrence et les méthodes asynchrones des langages tels que C, C++, Java, Python et JavaScript sont trop complexes à contrôler et sujettes aux erreurs, et Go résout ce problème de manière très élégante et fluide. Pour les programmeurs qui souffrent de programmation concurrente et asynchrone depuis de nombreuses années, c'est un sentiment tout à fait accrocheur. Go est un langage très efficace avec une prise en charge élevée de la concurrence. Go est un langage de programmation développé pour le big data, les microservices et la concurrence.

Go as a language s'efforce de rendre les choses simples. Il n'introduit pas beaucoup de nouveaux concepts, mais se concentre sur la création d'un langage simple, incroyablement rapide et facile à utiliser. Ses seules innovations sont les goroutines et les canaux. Les goroutines sont l'approche légère orientée thread de Go, et les canaux sont le moyen privilégié pour communiquer entre les goroutines.

Le coût de création de Goroutines est très faible, ne nécessitant que quelques milliers d'octets de mémoire supplémentaire. De ce fait, il est possible d'exécuter des centaines, voire des milliers de goroutines simultanément. La communication entre les goroutines peut être réalisée à l'aide de canaux. Les Goroutines et l'approche de concurrence basée sur les canaux facilitent grandement l'utilisation de tous les cœurs de processeur disponibles et la gestion des E/S simultanées. Par rapport à Python/Java, l’exécution d’une fonction sur une goroutine nécessite un minimum de code.

À quelles langues la langue go emprunte-t-elle ?

8. Stabilité

Go dispose de puissants contrôles de compilation, de normes de codage strictes et d'outils complets de cycle de vie des logiciels. Il a une forte stabilité, et la stabilité l'emporte sur tout le reste. Alors pourquoi Go est-il plus stable que les autres programmes ? En effet, Go fournit des outils pour chaque aspect du cycle de vie du logiciel (développement, tests, déploiement, maintenance, etc.), tels que go tool, gofmt, go test.

3. Comparaison avec d'autres langages

De nombreuses fonctionnalités du langage Go sont empruntées à ses trois ancêtres : C, Pascal et CSP. La syntaxe de Go, les types de données, le flux de contrôle, etc. sont hérités de C. Le package de Go et les idées orientées objet sont dérivés de la branche Pascal. La plus grande fonctionnalité du langage Go, le modèle de concurrence coroutine basé sur la communication par pipeline, est emprunté à la branche CSP. .

À quelles langues la langue go emprunte-t-elle ?

Java

langage compilé à vitesse modérée (2,67s). 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. En tant que grand nom des langages de programmation. A la plus grande visibilité et base d’utilisateurs. Peu importe comment souffle le vent, je resterai ferme. Qu'il soit fort, qu'il soit fort, et la brise soufflera sur les collines ; qu'il soit horizontal, et la lune brillante brillera sur le fleuve.

c#

La vitesse d'exécution est rapide (4,28), la difficulté d'apprentissage est modérée et la vitesse de développement est 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.

Javascript

Une beauté unique et arrogante dans le langage de programmation. Les capacités de traitement frontal sont inégalées par d’autres langages. Les capacités de traitement back-end en développement de js sont également exceptionnelles. L’avant et l’arrière sont pris en charge, alors qui puis-je faire d’autre ?

Langage de script Python

, 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.

scala

Langage compilé, dix fois plus rapide que python, similaire à java, mais la progression de l'apprentissage est lente, et dans la programmation réelle, si vous ne maîtrisez pas le langage, cela peut facilement entraîner une grave dégradation des performances. Plus tard, par exemple, Yammer a migré de Scala vers Java. Les frameworks de microservices incluent lagom, etc.

Go

Le petit nouveau dans le monde de la programmation. Les capacités de haute simultanéité sont inégalées. Il a le même code concis et la même vitesse de développement que Python, mais a également la même efficacité d'exécution que le langage C, avec des avantages exceptionnels.

Quiconque travaille dans l'industrie du logiciel depuis un certain temps sait qu'il n'existe pas de langage de programmation universel, ni de cadre de développement universel ni de solution universelle. L’émergence de toute nouvelle technologie doit être attribuée au fort mécontentement de certaines personnes à l’égard des anciennes technologies. La langue Go ne fait pas exception. Par exemple, la gestion des dépendances du langage C, le garbage collection du C++, le système de type maladroit de Java et les lourdes spécifications Java EE, ainsi que les performances des langages de script (tels que PHP, Python et Ruby) sont souvent débattus et critiqués. à propos de nombreuses communautés de développeurs.

Développez vos connaissances :

Avantages du langage Go

Le langage Go maîtrise plusieurs paradigmes de programmation, incarnant d'excellentes idées et principes d'ingénierie logicielle, et ses fonctionnalités permettent aux développeurs de développer, tester et déployer rapidement des programmes, améliorant ainsi considérablement efficacité de production. Jetons un coup d'œil aux avantages du langage Go par rapport aux autres langages traditionnels.

1) Comparé au C/C++, le langage Go a une gestion claire des dépendances et un mécanisme de récupération de place entièrement automatique, de sorte que son volume de code est considérablement réduit et l'efficacité du développement est considérablement améliorée.

2) Comparé à Java, le langage Go possède un système de types concis, un paradigme de programmation fonctionnelle et un modèle de programmation simultanée avancé. En conséquence, ses blocs de code sont plus petits, plus concis, plus réutilisables et s'exécutent plus rapidement dans les environnements informatiques multicœurs.

3) Pour PHP, le langage Go est plus polyvalent et standardisé. Cela le rend plus adapté à la création de logiciels volumineux et à une meilleure organisation des différents modules ensemble. En termes de performances, PHP ne peut pas rivaliser avec Go.

4) Pour Python/Ruby, les avantages de Go résident dans sa syntaxe concise, son système de types non intrusif et plat et son modèle de programmation naturel multi-paradigmes. Comme PHP, Python et Ruby sont des langages interprétés à typage dynamique, ce qui signifie qu'ils s'exécutent beaucoup plus lentement que les langages compilés à typage statique.

En bref, le plus grand avantage du langage Go par rapport à la plupart des langages grand public actuels est sa haute efficacité de production, sa gestion avancée des dépendances et son système de type, ainsi que sa prise en charge native du calcul simultané. Par conséquent, le langage Go a reçu l'attention et la faveur des développeurs dans divers domaines depuis sa sortie.

Inconvénients du langage Go

Maintenant, jetons un regard objectif sur les domaines dans lesquels le langage Go actuel doit être renforcé ou amélioré (bien que certains Gophers ne le pensent pas).

1) Du point de vue de l'informatique distribuée, le langage Go n'est pas aussi mature qu'Erlang (certains packages de code du langage Go sont apparus à cet égard, et nous pouvons déjà entrevoir un avenir radieux).

2) Du point de vue de la vitesse d'exécution du programme, bien que le langage Go soit comparable à Java, il n'est toujours pas aussi bon que le C (l'écart se réduit constamment).

3) Du point de vue des bibliothèques tierces, le nombre de bibliothèques de langage Go est bien inférieur à celui de plusieurs autres langages grand public (comme Java, Python, Ruby, etc.). Cependant, par rapport à l’âge du langage Go, de nombreuses bibliothèques tierces l’utilisent déjà et leur nombre continue de croître rapidement.

De plus, à un niveau plus profond, il existe également des aspects insatisfaisants dans la bibliothèque standard du langage Go, comme détaillé ci-dessous.

1) Du point de vue de la syntaxe du langage, il n'y a pas beaucoup de sucre syntaxique dans la syntaxe du langage Go, ce qui fait que de nombreux passionnés de Python et Ruby la rejettent. De plus, il existe tellement de façons d’attribuer des valeurs aux variables que c’est un peu fastidieux. La chose la plus regrettable et ce qui me tient le plus à cœur, c'est que le langage Go ne prend pas en charge les types génériques personnalisés.

2) Du point de vue de la programmation concurrente, le modèle de concurrence fourni par le langage Go est très puissant, mais il y a aussi quelques règles d'écriture qui doivent être comprises. Sinon, il est facile d’entrer dans le « gouffre ». En fait, il n'est pas recommandé d'appeler cela un « gouffre ». Parce que la plupart de ces soi-disant « fosses » sont creusées par nous-mêmes parce que nous n’en connaissons pas les principes.

3) Du point de vue du garbage collection, le garbage collection du langage Go utilise l'algorithme de marquage et de balayage simultané (Concurrent Mark and Sweep, CMS). Bien qu'il s'agisse d'une opération simultanée et qu'elle prenne beaucoup moins de temps qu'une opération en série, elle arrêtera quand même les opérations de tous les programmes utilisateur pendant le garbage collection. Cela affectera quelque peu les applications qui ont des exigences élevées en temps réel. Cependant, dans les versions postérieures au langage Go 1.3, ce problème a été grandement amélioré.

Bien que le langage Go présente encore quelques défauts, dans l'ensemble, c'est déjà un très excellent langage de programmation généraliste. De plus, le langage Go se concentrera sur les performances, la fiabilité, la portabilité et certaines améliorations de fonctionnalités dans son développement futur, de sorte que les défauts ci-dessus s'atténueront progressivement et disparaîtront au fur et à mesure de la progression de la version.

【Recommandations associées : Tutoriel vidéo Go, Enseignement de la programmation

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn