Heim >Backend-Entwicklung >Golang >Warum beginnen immer mehr große Internetunternehmen, die Go-Sprache zu verwenden?

Warum beginnen immer mehr große Internetunternehmen, die Go-Sprache zu verwenden?

PHPz
PHPzOriginal
2023-03-24 10:58:341580Durchsuche

Warum beginnen immer mehr große Internetunternehmen, die Go-Sprache zu verwenden?

Immer mehr große Internetunternehmen beginnen, Go-Sprache zu verwenden, wie z. B. Tencent, Meituan, Didi, Baidu, Google, bilibili...Go语言了,譬如腾讯、美团、滴滴、百度、Google、bilibili...

还有最初使用Python的字节跳动,甚至已经全面拥向Go了。这么多国内外首屈一指的公司,都在开始使用它了,它到底有什么优势呢?这就得谈谈它的一些优势了。

ps:当然了,还有Go-To-Byte的成员,想要学习go语言,并且用它完成青训营的大项目呐~

Go的一些优势

说起优势,在某些方面多半是因为它有一些别人没有的特性,或者优化了别人麻烦的地方,相比起来,才会更胜一筹。那我们来了解一下Go的一些特点吧,但在了解生硬的特点之前,我们先来看看其它几种常见的语言:

常见的一些语言

这里不是对比哟,不是说谁好谁坏,而是小马过河,因人而异~

1、C/C++

C语言是在1971年的时候,被大神Ken Thompson和Dennis Ritchie发明的,而Go语言的主导开发者之一就是Ken Thompson,所以在很多地方和C语言类似,(比如struct、Printf、&取值符)

C/C++也作为很多初学初学的语言,它们都是直接编译为机器码,所以执行效率会更高,并且都不需要执行环境,用户的使用成本会更低,不像很多语言还需要安装所需的环境。

也因为这些原因,它们的一次编码或编译只适用于一种平台,对于不同操作系统而言,有时需要修改编码再编译,有时直接重新编译即可。

而且对于开发者也"很不友好"?,需要自己处理垃圾回收(GC)的问题。编码时,还需要考虑,堆上的内存什么时候free、delete?代码会不会造成内存泄露、不安全?

2、Java

自己作为一个从Java来学习Go的菜鸟,还未正式开发,就感到开发效率会比Java低了(个人感觉,不喜勿喷)~?

Java直接编译成字节码(.class),这种编译产物是介于原始编码和机器码的一种中间码。这样的话,Java程序就需要特定的执行环境(JVM)了,执行效率相比会低一些,还可能有虚拟化损失。但是这样也有一个好处就是可以编译一次,多处执行(跨平台)。而且它也是自带GC

3、JavaScript

Python一样,JS是一种解释型语言,它们不需要编译,解释后即可运行。所以Js也是需要特定的执行环境(浏览器引擎) 的。

将其代码放入浏览器后,浏览器需要解析代码,所以也会有虚拟化损失Js只需要浏览器即可运行,所以它也是跨平台的。

再谈Go

看完了前面几种常见语言的简单介绍。C/C++性能很高,因为它直接编译为二进制,且没有虚拟化损失,Go觉得还不错;Java自动垃圾回收机制很好,Go觉得也不错;Js一次编码可以适用可以适用多种平台Go觉得好极了;而且Go天然具备高并发的能力,是所有语言无可比及的。那我们来简单总结一下吧!

  1. 自带运行环境Runtime,且无须处理GC问题

Go程序的运行环境可厉害了,其实大部分语言都有Runtime的概念,比如Java,它程序的运行环境是JVM,需要单独安装。对于Java程序,如果不经过特殊处理,只能运行在有JMV

Und ByteDance, das ursprünglich Python verwendete, hat sogar Go vollständig übernommen. Viele führende Unternehmen im In- und Ausland beginnen damit, es zu nutzen. Welche Vorteile bietet es? Lassen Sie uns nun über einige seiner Vorteile sprechen. 🎜🎜ps: Natürlich gibt es auch Mitglieder von Go-To-Byte, die die Go-Sprache lernen und damit große Projekte im Jugendtrainingslager abschließen möchten~🎜

Einige Vorteile von Go

🎜 Apropos Vorteile: In einigen Aspekten liegt es wahrscheinlich daran, dass es einige Funktionen hat, die andere nicht haben, oder dass es die problematischen Bereiche optimiert von anderen. Nur wenn du aufstehst, wirst du besser sein. Dann werfen wir einen Blick auf einige der Funktionen von Go, aber bevor wir die einfachen Funktionen verstehen, werfen wir einen Blick auf einige andere gängige Sprachen: 🎜

Einige gebräuchliche Sprachen

🎜Das ist kein Vergleich, es geht nicht darum, wer gut oder wer schlecht ist, es geht darum, wie ein Pony den Fluss überquert, das ist von Person zu Person unterschiedlich~🎜

1. C/C++

🎜C-Sprache wurde 1971 von den Meistern Ken Thompson entwickelt und Dennis RitchieErfunden, und einer der führenden Entwickler der Go-Sprache ist Ken Thompson, daher ähnelt sie an vielen Stellen der C-Sprache, (wie Struktur, Printf und Wertoperator)🎜🎜C/C++ wird auch von vielen Anfängern als Sprache verwendet. Sie werden direkt in Maschinencode kompiliert, sodass die Ausführungseffizienz höher ist, und sie alle keine Ausführungsumgebung erfordern, und die Nutzungskosten für den Benutzer werden niedriger sein, im Gegensatz zu vielen Sprachen, die die Installation erforderlich machen Umgebungen. 🎜🎜Aus diesen Gründen ist ihre eine Codierung oder Kompilierung nur auf eine Plattform anwendbar. Für verschiedene Betriebssysteme ist es manchmal notwendig, die Codierung zu ändern und dann zu kompilieren, und manchmal reicht es aus, direkt neu zu kompilieren . 🎜🎜Und es ist auch „sehr unfreundlich“ für Entwickler? Sie müssen sich selbst mit dem Problem der Garbage Collection (GC) befassen. Beim Codieren müssen Sie auch berücksichtigen, wann der Speicher auf dem Heap frei und gelöscht ist. Verursacht der Code Speicherverluste und ist er unsicher? 🎜

2. Java

🎜Als Person, die Go von Java lernt Ich bin ein Neuling, aber vor der formalen Entwicklung habe ich das Gefühl, dass die Entwicklungseffizienz geringer sein wird als bei Java (persönliches Gefühl, kritisieren Sie nicht, wenn Sie es nicht tun). ~?🎜 🎜Java wird direkt in Bytecode kompiliert(.class). Diese Art von Kompilierungsprodukt ist zwischen Originalkodierung und Maschinencode. In diesem Fall erfordert das Java-Programm eine bestimmte Ausführungsumgebung (JVM), und die Ausführungseffizienz wird geringer sein, und dies kann auch der Fall sein Virtualisierungsverluste sein. Dies hat aber auch den Vorteil, dass es einmal kompiliert und (plattformübergreifend) an mehreren Stellen ausgeführt werden kann. Und es ist auch mit GC ausgestattet. 🎜

3. JavaScript

🎜Wie Python ist JS eine interpretierte Sprache , siemüssen nicht kompiliert werden und können nach der Interpretation ausgeführt werden. Daher erfordert Js auch eine bestimmte Ausführungsumgebung (Browser-Engine). 🎜🎜Nach dem Einfügen des Codes in den Browser muss der Browser den Code analysieren, sodass auch ein Virtualisierungsverlust auftritt. Für die Ausführung von Js ist lediglich ein Browser erforderlich, daher ist es auch plattformübergreifend. 🎜

Lass uns noch einmal über Go reden

🎜Nachdem wir die kurze Einführung der vorherigen gängigen Sprachen gelesen haben. C/C++ hat eine hohe Leistung, da es ohne Virtualisierungsverlust direkt ins Binärformat kompiliert wird. Go hält es für ziemlich gut Der automatische Garbage-Collection-Mechanismus von /code> ist sehr gut, Go findet ihn auch gut anwendbar; Go fühlt sich als Plattform großartig an und Go verfügt natürlich über hohe Parallelitätsfähigkeiten, die von keiner anderen Sprache erreicht werden. Fassen wir es also kurz zusammen! 🎜
  1. Verfügt über eine eigene Laufumgebung Runtime und muss sich nicht mit GC-Problemen befassen
  2. 🎜Die Laufumgebung des Go-Programms ist erstaunlich. Tatsächlich haben die meisten Sprachen das Konzept von <code>Runtime, wie zum Beispiel Javacode>, die Laufumgebung seines Programms ist <code> JVM und muss separat installiert werden. Java-Programme können ohne spezielle Verarbeitung nur auf Maschinen mit einer JMV-Umgebung ausgeführt werden. 🎜

    Das Go-Programm verfügt über eine eigene Laufumgebung. Die Runtime des Go-Programms wird als Teil des Programms in ein Binärprodukt gepackt , zusammen mit dem Benutzerprogramm. Das heißt, Runtime ist auch eine Reihe von .go-Code und Assembler-Code usw. die Funktion von <code>Runtime (z. B. make([]int, 2, 6), diese Syntax ruft tatsächlich die Funktion „makeslice“ in Runtime auf). Einfach ausgedrückt kann das Programm Go ausgeführt werden, ohne dass eine zusätzliche Betriebsumgebung installiert werden muss. Es sei denn, Sie müssen Go-Programme entwickeln. Go程序是自带运行环境的,Go程序的Runtime会作为程序的一部分打包进二进制产物,和用户程序一起运行,也就是说Runtime也是一系列.go代码和汇编代码等,用户可以“直接”调用Runtime的函数(比如make([]int, 2, 6),这样的语法,其实就是去调用Runtime中的makeslice函数)。对于Go程序,简单来说就是不需要安装额外的运行环境,即可运行。除非你需要开发Go的程序。

    正因为这样,Go程序也无须处理GC的问题,全权交由Runtime处理(反正要打包到一起)

    1. 快速编译,且跨平台

    不同于C/C++,对于多个平台,可能需要修改代码后再编译。也不同于Java的一次编码,编译成中间码运行在多个平台的虚拟机上。Go只需要一次编码,就能轻松在多个平台编译成机器码运行。

    值得一提的就是它这跨平台的能力也是Runtime赋予的,因为Runtime有一定屏蔽系统调用的能力。

    1. 天然支持高性能高并发,且语法简单、学习曲线平缓

    C++处理并发的能力也不弱,但由于C++的编码要求很高,如果不是很老练、专业的C++程序员,可能会出很多故障。而Go可能经验不是那么丰厚,也能写出性能很好的高并发程序。

    值得一提的就是它这超强的高并发,也是Runtime赋予的去处理协程调度能力。

    1. 丰富的标准库、完善的工具链

    对于开发者而言,安装好Golang的环境后,就能用官方的标准库开发很多功能了。比如下图所示的很多常用包:

    Warum beginnen immer mehr große Internetunternehmen, die Go-Sprache zu verwenden?

    而且Go自身就具有丰富的工具链(比如:代码格式化、单元测试、基准测试、包管理...)

    Aus diesem Grund muss sich das Go-Programm nicht mit dem GC-Problem befassen und überlässt alles der Runtime, um zu behandeln (Es muss sowieso zusammengepackt werden).
      1. Schnelle Kompilierung und plattformübergreifend

      Im Gegensatz zu C/C++ müssen Sie bei mehreren Plattformen möglicherweise den Code ändern Kompilieren. Es unterscheidet sich auch von der einmaligen Codierung von Java, die in Zwischencode kompiliert und auf virtuellen Maschinen auf mehreren Plattformen ausgeführt wird. Go muss nur einmal codiert werden und kann problemlos in Maschinencode kompiliert und auf mehreren Plattformen ausgeführt werden.

      Erwähnenswert ist, dass die plattformübergreifende Fähigkeit auch durch Runtime gegeben ist, da Runtime die Fähigkeit besitzt, Systemaufrufe bis zu einem gewissen Grad zu blockieren.

        Unterstützt auf natürliche Weise hohe Leistung und hohe Parallelität, mit einfacher Syntax und sanfter Lernkurve

        🎜🎜C++s Fähigkeit, Parallelität zu handhaben, ist Aufgrund der hohen Codierungsanforderungen von C++ können jedoch viele Fehler auftreten, wenn Sie kein sehr erfahrener und professioneller C++-Programmierer sind. Und Go hat vielleicht nicht so viel Erfahrung, kann aber dennoch Programme mit hoher Parallelität und guter Leistung schreiben. 🎜🎜Es ist erwähnenswert, dass die extrem hohe Parallelität auch auf der Fähigkeit von <code>Runtime beruht, die Coroutine-Planung zu handhaben. 🎜
          🎜Reichhaltige Standardbibliothek, vollständige Toolkette🎜🎜🎜Für Entwickler können nach der Installation der Golang-Umgebung viele Funktionen mit entwickelt werden offizielle Standardbibliothek. Im Bild unten sind beispielsweise viele häufig verwendete Pakete dargestellt: 🎜🎜Warum beginnen immer mehr große Internetunternehmen, die Go-Sprache zu verwenden?🎜🎜Und Go selbst verfügt über eine umfangreiche Toolkette, (z. B. Codeformatierung, Unit-Tests, Benchmark-Tests, Paketverwaltung...)🎜🎜🎜. . . . . . 🎜🎜🎜Viele große Unternehmen haben begonnen, Go-Sprache zu verwenden. Warum unser Team GoLang verwendet, hat etwas mit diesen Funktionen zu tun. ~ 🎜🎜 Verwandte Empfehlungen: 🎜 Go-Video-Tutorial 🎜🎜

    Das obige ist der detaillierte Inhalt vonWarum beginnen immer mehr große Internetunternehmen, die Go-Sprache zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn