Heim  >  Artikel  >  Backend-Entwicklung  >  Ist Golang chinesisch?

Ist Golang chinesisch?

青灯夜游
青灯夜游Original
2023-01-03 16:43:343896Durchsuche

golang ist kein Chinesisch. Golang ist eine von Google entwickelte statisch stark typisierte, kompilierte, gleichzeitige Programmiersprache mit Garbage-Collection-Funktionen. Golang ist ein weiterer Versuch des Programmiersprachendesigns und eine wesentliche Verbesserung gegenüber C-ähnlichen Sprachen. Es ermöglicht Ihnen nicht nur den Zugriff auf das zugrunde liegende Betriebssystem, sondern bietet auch leistungsstarke Netzwerkprogrammierung und Unterstützung für gleichzeitige Programmierung. Die Go-Sprache hat viele Verwendungsmöglichkeiten und kann für Netzwerkprogrammierung, Systemprogrammierung, gleichzeitige Programmierung und verteilte Programmierung verwendet werden.

Ist Golang chinesisch?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.

golang ist kein Chinesisch.

Golang (auch bekannt als Go- oder Go-Sprache) ist eine statisch stark typisierte, kompilierte, gleichzeitige Programmiersprache mit Garbage-Collection-Funktionen, die von Robert Griesemer, Rob Pike und Ken Thompson von Google entwickelt wurde.

Go-Sprache (oder Golang) entstand 2007 und wurde 2009 offiziell veröffentlicht. Go ist eine sehr junge Sprache und ihr Hauptziel besteht darin, „die Entwicklungsgeschwindigkeit dynamischer Sprachen wie Python mit der Leistung und Sicherheit kompilierter Sprachen wie C/C++ zu kombinieren“.

Go-Sprache ist ein weiterer Versuch des Programmiersprachendesigns und eine wesentliche Verbesserung gegenüber C-ähnlichen Sprachen. Sie ermöglicht Ihnen nicht nur den Zugriff auf das zugrunde liegende Betriebssystem, sondern bietet auch leistungsstarke Netzwerkprogrammierung und Unterstützung für gleichzeitige Programmierung. Die Go-Sprache hat viele Verwendungsmöglichkeiten und kann für Netzwerkprogrammierung, Systemprogrammierung, gleichzeitige Programmierung und verteilte Programmierung verwendet werden.

Die Einführung der Go-Sprache zielt darauf ab, die Komplexität des Codes zu reduzieren, ohne die Anwendungsleistung zu beeinträchtigen. Sie bietet die Vorteile einer „einfachen Bereitstellung, einer guten Parallelität, eines guten Sprachdesigns und einer guten Ausführungsleistung“. Nutzen Sie die Sprache, um Projekte zu entwickeln.

Die Go-Sprache wird manchmal als „C-ähnliche Sprache“ oder „die C-Sprache des 21. Jahrhunderts“ beschrieben. Go erbt ähnliche Ausdruckssyntax, Kontrollflussstruktur, grundlegende Datentypen, Aufrufparameterwertübertragung, Zeiger und viele andere Ideen von der C-Sprache. Es verfügt außerdem über die Laufeffizienz von kompiliertem Maschinencode, die die C-Sprache schon immer geschätzt hat, und stimmt mit dem vorhandenen Seamless überein Anpassung an das Betriebssystem.

Da die Go-Sprache nicht über die Konzepte von Klassen und Vererbung verfügt, sieht sie nicht wie Java oder C++ aus. Aber es erreicht Polymorphismus durch das Konzept der Schnittstelle. Die Go-Sprache verfügt über ein klares und leicht verständliches, leichtgewichtiges Typsystem und es gibt keine Hierarchie zwischen den Typen. Daher kann man sagen, dass die Go-Sprache eine Hybridsprache ist.

Darüber hinaus werden viele wichtige Open-Source-Projekte mit der Go-Sprache entwickelt, darunter Docker, Go-Ethereum, Thrraform und Kubernetes.

Warum sollten Sie die Go-Sprache lernen?

Wenn Sie Systemprogramme oder netzwerkbasierte Programme erstellen möchten, ist die Go-Sprache eine sehr gute Wahl. Da es sich um eine relativ neue Sprache handelt, wurde sie von erfahrenen und angesehenen Informatikern entwickelt, um die Herausforderungen bei der Erstellung umfangreicher gleichzeitiger Netzwerkprogramme zu bewältigen.

Vor dem Aufkommen der Go-Sprache standen Entwickler immer vor einer sehr schwierigen Entscheidung: ob sie eine Sprache (wie C++) verwenden sollten, die eine schnelle Ausführungsgeschwindigkeit, aber keine ideale Kompilierungsgeschwindigkeit aufweist, oder ob sie eine Sprache verwenden sollten, die eine schnelle Kompilierung ermöglicht Geschwindigkeit, aber schlechte Ausführungseffizienz (z. B. .NET, Java) oder dynamische Sprachen, die weniger schwierig zu entwickeln sind, aber eine durchschnittliche Ausführungsgeschwindigkeit haben? Offensichtlich erreicht die Go-Sprache die beste Balance zwischen diesen drei Bedingungen: schnelle Kompilierung, effiziente Ausführung und einfache Entwicklung.

Go-Sprache unterstützt Cross-Compilation. Sie können beispielsweise Anwendungen entwickeln, die unter Windows auf einem Computer mit Linux-System ausgeführt werden können. Dies ist die erste Programmiersprache, die UTF-8 vollständig unterstützt. Dies spiegelt sich nicht nur darin wider, dass sie UTF-8-codierte Zeichenfolgen verarbeiten kann, sondern auch, dass ihr Quellcode-Dateiformat UTF-8-Codierung verwendet. Go-Sprache ist wirklich international!

Merkmale der Go-Sprache

Einfache Syntax

Abgesehen vom Syntaxstil weist Go allein in Bezug auf Typen und Regeln viele Ähnlichkeiten mit C99 und C11 auf, weshalb die Go-Sprache als wichtige Gründe bezeichnet wird für den Namen „NextC“.

Die Grammatik der Go-Sprache weist die beiden Extreme Einfachheit und Komplexität auf. Die C-Sprache ist so einfach, dass Sie sich jedes Mal, wenn Sie eine Codezeile schreiben, vorstellen können, wie sie nach der Kompilierung aussehen wird, wie Anweisungen ausgeführt werden, wie Speicher zugewiesen wird usw. Die Komplexität von C besteht darin, dass es zu viele undurchsichtige und irrelevante Regeln enthält, was wirklich Kopfschmerzen bereitet. Im Vergleich dazu beginnt Go bei Null und hat kein historisches Gepäck. Nachdem es viele Erfahrungen und Lektionen gelernt hat, kann es eine Welt mit strengen Regeln und einfacher Organisation von Grund auf planen.

Die grammatikalischen Regeln der Go-Sprache sind streng, es gibt keine Mehrdeutigkeit und es gibt keine Variationen der schwarzen Magie. Der von allen geschriebene Code ist grundsätzlich derselbe, was das Erlernen der Go-Sprache erleichtert. Ich denke, es lohnt sich, einen Teil der „Flexibilität“ und „Freiheit“ im Austausch für eine bessere Wartbarkeit aufzugeben.

Degradieren Sie „++“ und „--“ von Operatoren zu Anweisungen, behalten Sie Zeiger bei, verhindern Sie jedoch standardmäßig Zeigeroperationen, und die Vorteile liegen auf der Hand. Darüber hinaus wird die Verwendung von Slices und Wörterbüchern als integrierte Typen und deren Optimierung auf der Laufzeitebene ebenfalls als „einfach“ angesehen.

Parallelitätsmodell

Heute ist die gleichzeitige Programmierung zu einer Grundkompetenz für Programmierer geworden, und in verschiedenen technischen Communities gibt es viele verwandte Diskussionsthemen. In diesem Fall hat die Go-Sprache etwas sehr Mutiges und Ungewöhnliches getan und grundsätzlich alles gleichzeitig ausgeführt. Sie verwendet Goroutine, um alles während der Laufzeit auszuführen, einschließlich der main.main-Eingabefunktion.

Man kann sagen, dass Goroutine das wichtigste Merkmal von Go ist. Es verwendet einen Coroutine-ähnlichen Ansatz zur Handhabung gleichzeitiger Einheiten, führt aber auch eine tiefere Optimierung auf Laufzeitebene durch. Dies macht die syntaktische gleichzeitige Programmierung extrem einfach. Es besteht keine Notwendigkeit, sich mit Rückrufen zu befassen, keine Notwendigkeit, auf den Thread-Wechsel zu achten, nur ein Schlüsselwort, einfach und natürlich.

Verwenden Sie den Kanal, um das CSP-Modell zu implementieren. Die Entkopplung der Datenkopplung zwischen gleichzeitigen Einheiten und die Möglichkeit, dass jede ihre eigenen Aufgaben ausführen kann, ist eine willkommene Erleichterung für alle Entwickler, die mit Speicherfreigabe und Sperrgranularität zu kämpfen haben. Wenn es irgendwelche Mängel gibt, dann ist es, dass es einen größeren Plan geben sollte, die Kommunikation von innerhalb des Prozesses nach außerhalb des Prozesses auszuweiten, um eine echte Verteilung zu erreichen.

Speicherzuweisung

Parallelität ist gut, bringt aber auch viele Probleme mit sich. Es ist ein schwieriges Problem, die Speicherzuweisung und -verwaltung bei hoher Parallelität zu erreichen. Glücklicherweise entschied sich Go für tcmalloc, eine leistungsstarke Speicherzuweisungskomponente, die auf Parallelität ausgelegt ist.

Man kann sagen, dass der Speicherzuweiser der Teil ist, der sich unter den drei Hauptkomponenten der Laufzeit am wenigsten ändert. Mit Ausnahme des Inhalts, der für die Zusammenarbeit mit dem Garbage Collector geändert wurde, behält der Speicherzuweiser vollständig die ursprüngliche Struktur von tcmalloc bei. Verwenden Sie den Cache, um eine sperrenfreie Zuweisung für den aktuellen Ausführungsthread bereitzustellen, und mehrere Zentraleinheiten, um die Wiederverwendung von Speichereinheiten zwischen verschiedenen Threads auszugleichen. Auf einer höheren Ebene verwaltet der Heap große Speicherblöcke und unterteilt sie in verschiedene Ebenen wiederverwendeter Speicherblöcke. Die schnelle Zuweisung und der sekundäre Speicherausgleichsmechanismus ermöglichen es dem Speicherzuweiser, Speicherverwaltungsaufgaben unter hohem Druck hervorragend zu erledigen.

In neueren Versionen war die Compileroptimierung sehr effektiv. Es wird sein Bestes geben, Objekte auf dem Stapel zuzuweisen, um den Druck der Speicherbereinigung zu verringern, den Verwaltungsverbrauch zu reduzieren und die Ausführungsleistung zu verbessern. Man kann sagen, dass wir, abgesehen von gelegentlichen Leistungsproblemen, die die Verwendung von Objektpools und der autonomen Speicherverwaltung erzwingen, grundsätzlich nicht an Speicherverwaltungsvorgängen teilnehmen müssen.

Müllabfuhr

Müllabfuhr war schon immer ein Problem. In den Anfangsjahren wurde Java wegen seiner ineffizienten Speicherbereinigung lange belächelt. Später integrierte Sun sukzessive viele Menschen und Technologien, um es zu dem zu entwickeln, was es heute ist. Aber selbst dann ist die Speicherbereinigung in Anwendungsszenarien mit großem Speicher wie Hadoop immer noch überlastet und schwierig.

Im Vergleich zu Java ist Go mit größeren Schwierigkeiten konfrontiert. Aufgrund der Existenz von Zeigern kann der zurückgewonnene Speicher nicht verkleinert werden. Glücklicherweise ist die Zeigerarithmetik blockiert, da es sonst schwierig wäre, eine genaue Wiederverwertung zu erreichen.

Bei jedem Upgrade muss der Garbage Collector der am meisten geänderte Teil der Kernkomponente sein. Von der gleichzeitigen Bereinigung über die Reduzierung der STW-Zeit bis hin zur Implementierung der gleichzeitigen Markierung in Version 1.5 von Go und der schrittweisen Einführung von dreifarbigen Markierungen und Schreibbarrieren usw. sollen alle dafür sorgen, dass die Speicherbereinigung besser funktioniert, ohne die Benutzerlogik zu beeinträchtigen. Trotz aller Bemühungen kann die aktuelle Version des Garbage-Collection-Algorithmus nur als brauchbar bezeichnet werden, und sie ist noch weit davon entfernt, nützlich zu sein.

Statische Links

Als Go zum ersten Mal veröffentlicht wurde, wurden statische Links als Vorteile beworben. Es kann lediglich eine kompilierte ausführbare Datei bereitgestellt werden, ohne etwas anzuhängen. Das schien eine gute Idee zu sein, doch dann änderte sich der Trend. In mehreren aufeinanderfolgenden Versionen hat der Compiler die Buildmode-Funktion der dynamischen Bibliothek verbessert, und die Situation ist seit einiger Zeit etwas peinlich.

Lassen Sie den unvollendeten Buildmodus-Modus vorerst beiseite, die Vorteile der statischen Kompilierung liegen auf der Hand. Die Laufzeit- und abhängigen Bibliotheken werden direkt in die ausführbare Datei gepackt, was die Bereitstellungs- und Release-Vorgänge vereinfacht. Es ist nicht erforderlich, die laufende Umgebung im Voraus zu installieren und viele Bibliotheken von Drittanbietern herunterzuladen. Dieser einfache Ansatz ist für das Schreiben von Systemsoftware von großem Vorteil, da Bibliotheksabhängigkeiten schon immer ein Problem darstellten.

Standardbibliothek

Die Standardbibliothek mit vollständigen Funktionen und zuverlässiger Qualität bietet ausreichend Leistung für Programmiersprachen. Die Entwicklung der meisten grundlegenden Funktionen kann ohne die Hilfe von Erweiterungen von Drittanbietern durchgeführt werden, was die Lern- und Nutzungskosten erheblich reduziert. Das Wichtigste ist, dass die Standardbibliothek garantiert aktualisiert und repariert wird und außerdem den Komfort einer umfassenden Optimierung zur Laufzeit nutzen kann, der in Bibliotheken von Drittanbietern nicht verfügbar ist.

Obwohl die Go-Standardbibliothek nicht vollständig abgedeckt ist, ist sie dennoch äußerst umfangreich. Eines der lobenswertesten davon ist net/http, das mit nur wenigen einfachen Anweisungen einen leistungsstarken Webserver implementieren kann. Dies war schon immer ein Höhepunkt der Öffentlichkeitsarbeit. Darüber hinaus hat eine große Anzahl hervorragender Frameworks von Drittanbietern, die darauf basieren, Go zu einem der Web-/Microservice-Entwicklungsstandards gemacht.

Natürlich sind auch hervorragende Ressourcen Dritter ein wichtiger Teil des Sprachökosystems. Unter den verschiedenen Sprachen, die in den letzten Jahren entstanden sind, ist Go einzigartig. Es entstehen häufig zahlreiche hervorragende Werke, die uns auch eine gute Referenz zum Erlernen von Go bieten.

Toolchain

Eine vollständige Toolchain ist für die tägliche Entwicklung äußerst wichtig. Go hat hier ziemlich gute Arbeit geleistet, mit entsprechenden Tools für Kompilierung, Formatierung, Fehlerprüfung, Hilfedokumentation sowie Paket-Downloads und -Updates von Drittanbietern. Seine Funktionen sind vielleicht nicht perfekt, aber zumindest ist es einfach und leicht zu bedienen.

Eingebautes vollständiges Test-Framework, einschließlich Unit-Tests, Leistungstests, Codeabdeckung, Datenwettbewerb und pprof für die Optimierung. Dies sind wichtige Tools, um sicherzustellen, dass der Code korrekt und stabil ausgeführt werden kann.

Darüber hinaus können Laufzeitüberwachungsinformationen auch über Umgebungsvariablen ausgegeben werden, insbesondere über Garbage Collection und Concurrent Scheduling Tracking, was uns dabei helfen kann, den Algorithmus weiter zu verbessern und eine bessere Laufzeitleistung zu erzielen.

【Verwandte Empfehlungen: Go-Video-Tutorial, Programmierunterricht

Das obige ist der detaillierte Inhalt vonIst Golang chinesisch?. 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