Maison > Article > développement back-end > Pourquoi de plus en plus de grandes sociétés Internet commencent-elles à utiliser le langage Go ?
De plus en plus de grandes sociétés Internet commencent à utiliser le langage Go
, comme Tencent, Meituan, Didi, Baidu, Google, bilibili...Go语言
了,譬如腾讯、美团、滴滴、百度、Google、bilibili...
还有最初使用Python
的字节跳动,甚至已经全面拥向Go
了。这么多国内外首屈一指的公司,都在开始使用它了,它到底有什么优势呢?这就得谈谈它的一些优势了。
ps:当然了,还有Go-To-Byte
的成员,想要学习go语言,并且用它完成青训营的大项目呐~
说起优势,在某些方面多半是因为它有一些别人没有的特性,或者优化了别人麻烦的地方,相比起来,才会更胜一筹。那我们来了解一下Go
的一些特点吧,但在了解生硬的特点之前,我们先来看看其它几种常见的语言:
这里不是对比哟,不是说谁好谁坏,而是小马过河,因人而异~
C语言
是在1971年的时候,被大神Ken Thompson和Dennis Ritchie发明的,而Go语言
的主导开发者之一就是Ken Thompson,所以在很多地方和C语言类似,(比如struct、Printf、&取值符)
C/C++
也作为很多初学初学的语言,它们都是直接编译为机器码,所以执行效率会更高,并且都不需要执行环境,用户的使用成本会更低,不像很多语言还需要安装所需的环境。
也因为这些原因,它们的一次编码或编译只适用于一种平台,对于不同操作系统而言,有时需要修改编码再编译,有时直接重新编译即可。
而且对于开发者也"很不友好"?,需要自己处理垃圾回收(GC)
的问题。编码时,还需要考虑,堆上的内存什么时候free、delete
?代码会不会造成内存泄露、不安全?
自己作为一个从Java
来学习Go
的菜鸟,还未正式开发,就感到开发效率会比Java
低了(个人感觉,不喜勿喷)
~?
Java
是直接编译成字节码(.class)
,这种编译产物是介于原始编码和机器码的一种中间码。这样的话,Java
程序就需要特定的执行环境(JVM)
了,执行效率相比会低一些,还可能有虚拟化损失。但是这样也有一个好处就是可以编译一次,多处执行(跨平台)
。而且它也是自带GC
的。
和Python
一样,JS
是一种解释型语言,它们不需要编译,解释后即可运行。所以Js
也是需要特定的执行环境(浏览器引擎)
的。
将其代码放入浏览器后,浏览器需要解析代码,所以也会有虚拟化损失。Js
只需要浏览器即可运行,所以它也是跨平台的。
看完了前面几种常见语言的简单介绍。C/C++
性能很高,因为它直接编译为二进制,且没有虚拟化损失,Go
觉得还不错;Java
的自动垃圾回收机制很好,Go
觉得也不错;Js
的一次编码可以适用可以适用多种平台,Go
觉得好极了;而且Go
天然具备高并发的能力,是所有语言无可比及的。那我们来简单总结一下吧!
Runtime
,且无须处理GC
问题Go
程序的运行环境可厉害了,其实大部分语言都有Runtime
的概念,比如Java
,它程序的运行环境是JVM
,需要单独安装。对于Java
程序,如果不经过特殊处理,只能运行在有JMV
Python
, a même pleinement adopté Go
. De nombreuses entreprises leaders au pays et à l’étranger commencent à l’utiliser. Quels sont ses avantages ? Parlons maintenant de certains de ses avantages. 🎜🎜ps : Bien sûr, il y a aussi des membres de Go-To-Byte
qui souhaitent apprendre le langage Go et l'utiliser pour réaliser de grands projets dans le camp d'entraînement des jeunes~🎜Go
, mais avant de comprendre les fonctionnalités simples, jetons un coup d'œil à plusieurs autres langages courants : 🎜langage C
a été développé en 1971 par les maîtres Ken Thompson et Dennis. RitchieInventé, et l'un des principaux développeurs du langage Go
est Ken Thompson, il est donc similaire au langage C dans de nombreux endroits, (comme comme opérateur struct, Printf et Value)
🎜🎜C/C++
est également utilisé comme langage pour de nombreux débutants. Ils sont directement compilés en code machine, Ainsi, l'efficacité d'exécution sera plus élevée, et ils ne nécessitent pas tous d'environnement d'exécution, et le coût d'utilisation pour l'utilisateur sera inférieur, contrairement à de nombreux langages qui nécessitent l'installation des environnements requis. 🎜🎜Pour ces raisons, leur un seul encodage ou compilation n'est applicable qu'à une seule plateforme Pour différents systèmes d'exploitation, il est parfois nécessaire de modifier l'encodage puis de compiler, et parfois il suffit de recompiler directement. . 🎜🎜Et c'est aussi "très peu convivial" pour les développeurs ? Vous devez vous occuper du problème du garbage collection (GC)
vous-même. Lors du codage, vous devez également considérer quand la mémoire sur le tas sera libre et supprimée
? Le code provoquera-t-il des fuites de mémoire et sera-t-il dangereux ? 🎜Go
à partir de Java
Je suis un débutant, mais avant le développement formel, je pense que l'efficacité du développement sera inférieure à celle de Java
(sentiment personnel, ne critiquez pas si vous le faites) Je n'aime pas ça)
~?🎜 🎜Java
est directement compilé en bytecode(.class)
. entre l'encodage d'origine et le code machine. Dans ce cas, le programme Java
nécessite un environnement d'exécution spécifique (JVM)
, et l'efficacité d'exécution sera inférieure à cela, et il peut également y avoir être des pertes de virtualisation. Mais cela présente également l'avantage de pouvoir être compilé une seule fois et exécuté (multiplateforme)
à plusieurs endroits. Et il est également livré avec GC
. 🎜Python
, JS
est un langage interprété. , ilsn'ont pas besoin d'être compilés et peuvent être exécutés après avoir été interprétés. Par conséquent, Js
nécessite également un environnement d'exécution spécifique (moteur de navigation)
. 🎜🎜Après avoir inséré le code dans le navigateur, celui-ci doit analyser le code, il y aura donc également une perte de virtualisation. Js
ne nécessite qu'un navigateur pour s'exécuter, il est donc également multiplateforme. 🎜C/C++
a des performances élevées car il est directement compilé en binaire sans perte de virtualisation Go
pense que c'est plutôt bon Java <. le>mécanisme de collecte automatique des déchets de /code> est très bon, <code>Go
pense également qu'il est bon. Le de Js
peut être appliqué ; à plusieurs codes à la fois. Go
est une excellente plateforme ; et Go
possède naturellement des capacités de simultanéité élevées, inégalées par aucun langage. Alors résumons-le brièvement ! 🎜Runtime
et n'a pas besoin de gérer les problèmes de GC
L'environnement d'exécution du programme Go
est incroyable. En fait, la plupart des langagesont le concept de Runtime
, comme Java
JVM
qui doit être installé séparément. Pour les programmes Java
, sans traitement particulier, ils ne peuvent s'exécuter que sur des machines avec un environnement JMV
. 🎜Le programme Go
est livré avec son propre environnement d'exécution. Le Runtime
du programme Go
sera intégré dans un produit binaire dans le cadre du programme. , avec le programme utilisateur, Run, c'est-à-dire Runtime
est également une série de code .go et code assembleur, etc.
. la fonction du <code>Runtime
(Par exemple, make([]int, 2, 6), cette syntaxe appelle en fait la fonction makeslice dans le Runtime). Pour le programme Go
, en termes simples, il peut s'exécuter sans installer d'environnement d'exploitation supplémentaire. Sauf si vous avez besoin de développer des programmes Go
. Go
程序是自带运行环境的,Go
程序的Runtime
会作为程序的一部分打包进二进制产物,和用户程序一起运行,也就是说Runtime
也是一系列.go代码和汇编代码等
,用户可以“直接”调用Runtime
的函数(比如make([]int, 2, 6),这样的语法,其实就是去调用Runtime中的makeslice函数)
。对于Go
程序,简单来说就是不需要安装额外的运行环境,即可运行。除非你需要开发Go
的程序。
正因为这样,Go
程序也无须处理GC
的问题,全权交由Runtime
处理(反正要打包到一起)
。
不同于C/C++
,对于多个平台,可能需要修改代码后再编译。也不同于Java
的一次编码,编译成中间码运行在多个平台的虚拟机上。Go
只需要一次编码,就能轻松在多个平台编译成机器码运行。
值得一提的就是它这跨平台的能力也是Runtime
赋予的,因为Runtime
有一定屏蔽系统调用的能力。
C++
处理并发的能力也不弱,但由于C++
的编码要求很高,如果不是很老练、专业的C++程序员
,可能会出很多故障。而Go
可能经验不是那么丰厚,也能写出性能很好的高并发程序。
值得一提的就是它这超强的高并发,也是Runtime
赋予的去处理协程调度能力。
对于开发者而言,安装好Golang
的环境后,就能用官方的标准库开发很多功能了。比如下图所示的很多常用包:
而且Go
自身就具有丰富的工具链,(比如:代码格式化、单元测试、基准测试、包管理...)
Go
n'a pas besoin de gérer le problème GC
et laisse tout au Runtime
pour gérer (il doit être regroupé de toute façon)
. Différent du C/C++
, pour plusieurs plateformes, vous devrez peut-être modifier le code avant la compilation. Il est également différent du codage unique de Java
, qui est compilé en code intermédiaire et exécuté sur des machines virtuelles sur plusieurs plates-formes. Go
ne doit être codé qu'une seule fois et peut être facilement compilé en code machine et exécuté sur plusieurs plates-formes.
Il convient de mentionner que sa capacité multiplateforme est également donnée par Runtime
, car Runtime
a la capacité de bloquer les appels système dans une certaine mesure. Prend naturellement en charge les hautes performances et la simultanéité élevée, avec une syntaxe simple et une courbe d'apprentissage douce
C++
à gérer la simultanéité est pas faible non plus. Cependant, en raison des exigences élevées de codage du C++
, si vous n'êtes pas un programmeur C++
très expérimenté et professionnel, de nombreux échecs peuvent survenir. Et Go
n'a peut-être pas beaucoup d'expérience, mais il peut quand même écrire des programmes à haute concurrence avec de bonnes performances. 🎜🎜Il convient de mentionner que sa très haute simultanéité est également la capacité offerte par le Runtime
à gérer la planification des coroutines. 🎜Golang
, de nombreuses fonctions peuvent être développées à l'aide du bibliothèque standard officielle. Par exemple, il existe de nombreux packages couramment utilisés illustrés dans l'image ci-dessous : 🎜🎜🎜🎜Et Go
lui-même possède une chaîne d'outils riche, (telle que : le formatage du code, les tests unitaires, tests de benchmark, gestion des packages...)
🎜🎜🎜. . . . . . 🎜🎜🎜De nombreuses grandes entreprises ont commencé à utiliser le langage Go. La raison pour laquelle notre équipe utilise GoLang a quelque chose à voir avec ces fonctionnalités~🎜🎜Recommandations associées : 🎜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!