Heim  >  Artikel  >  Backend-Entwicklung  >  Aus welchen Sprachen entlehnt die Go-Sprache?

Aus welchen Sprachen entlehnt die Go-Sprache?

青灯夜游
青灯夜游Original
2023-01-30 18:13:523106Durchsuche

Die Go-Sprache basiert auf C, Pascal und CSP. Viele der Sprachfunktionen von Go sind von seinen drei Vorgängern übernommen: C, Pascal und CSP. Gos Syntax, Datentypen, Kontrollfluss usw. sind von C geerbt; objektorientierte und andere Ideen sind aus dem Pascal-Zweig abgeleitet und Gos größte Sprachfunktion, das auf Pipeline-Kommunikation basierende Coroutinen-Parallelitätsmodell, ist entlehnt der CSP-Zweig.

Aus welchen Sprachen entlehnt die Go-Sprache?

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

1. Die ursprüngliche Absicht des Go-Sprachdesigns

1 Die Go-Sprache wurde entwickelt, um die Probleme zu lösen, auf die die Google-Entwicklung damals stieß:

  • Eine große Menge an C++-Code und gleichzeitig Java und Python wurden eingeführt -Kontrollabhängigkeiten
  • Jeder Ingenieur verwendet nur einen Teil einer Sprache
  • Das Programm ist schwer zu warten (schlechte Lesbarkeit, unklare Dokumentation usw.)
  • Die Kosten für Aktualisierungen werden immer länger
  • Übergreifende Kompilierung ist schwierig

3. Wie können die aktuellen Probleme und Schwachstellen gelöst werden?

    Go hofft, die C-Sprache des Internetzeitalters zu werden. Die grundlegende Programmierphilosophie der meisten Sprachen auf Systemebene (einschließlich Java und C#) stammt aus C++ und entwickelt die objektorientierte Natur von C++ weiter. Aber die Designer der Go-Sprache sind anderer Meinung. Sie glauben, dass die C-Sprache es wert ist, erlernt zu werden. Der Grund für die anhaltende Beliebtheit der C-Sprache liegt darin, dass sie einfach genug ist. Daher ist die Go-Sprache einfach genug.
  • Ihr Ziel bei der Entwicklung von Go bestand damals darin, alle Arten von Langsamkeit und Umständlichkeit zu beseitigen und verschiedene Ineffizienzen und Skalierbarkeit zu verbessern. Go wurde von und für diejenigen entwickelt, die große Systeme entwickeln; es soll technische Probleme lösen, nicht um Sprachdesign zu studieren, sondern um unsere Programmierung komfortabler und bequemer zu machen.
  • Aber in Kombination mit einigen internen Realitäten von Google kamen zum Beispiel viele Ingenieure aus der C-Abteilung, daher muss die neu gestaltete Sprache leicht zu erlernen sein, vorzugsweise eine Sprache, die C ähnelt 20 Jahre, also die neue Sprache Die entworfene Sprache muss modern sein (z. B. integrierter GC) usw. Basierend auf praktischen Erfahrungen entwickelten sie schließlich die Go-Sprache entsprechend ihren Zielen.
  • 4. Merkmale der Go-Sprache:
  • Objektorientiert ohne Vererbungspolymorphismus
  • Stark konsistenter Typ
Schnittstelle erfordert keine explizite Deklaration (Duck Typing)

Keine Ausnahmebehandlung (Fehler ist Wert)

Basierend auf dem Header Die Barrierefreiheitsfunktionen von Buchstaben

Unbenutzte Importe oder Variablen verursachen Kompilierungsfehler

Komplettes und ausgezeichnetes Standardbibliothekspaket

In Go integrierte Laufzeit (zur Leistungsüberwachung, Speicherbereinigung usw.)
  • 2
  • 1. Einfache Lernkurve
  • Go-Sprache verfügt über eine einfache Syntax, einschließlich C-ähnlicher Syntax. Da die Go-Sprache leicht zu erlernen ist, kann ein gewöhnlicher Student in wenigen Wochen eine brauchbare, leistungsstarke Anwendung schreiben. Jeder in China strebt nach Geschwindigkeit, was einer der Gründe ist, warum Go in China so beliebt ist.
  • Die grammatikalischen Merkmale der Go-Sprache sind einfach zu einfach. Sie ist einfach, die Lernkurve ist sehr gering und Sie können sehr schnell loslegen.
  • 2. Effizienz: Schnelle Kompilierungszeit, hohe Entwicklungseffizienz und Betriebseffizienz
Im Vergleich zur langsamen Kompilierungsgeschwindigkeit von Java und C++ während des Entwicklungsprozesses ist die schnelle Kompilierungszeit von Go ein großer Effizienzvorteil. Go hat eine Betriebseffizienz nahe der von C und eine Entwicklungseffizienz nahe der von PHP.

Das Konzept der C-Sprache besteht darin, Programmierern zu vertrauen, die Sprache klein zu halten, die unterste Ebene nicht abzuschirmen und freundlich auf der untersten Ebene zu sein und auf die Ausführungseffizienz und Leistung der Sprache zu achten. Die Einstellung von Python besteht darin, mit so wenig Code wie möglich so viel wie möglich zu erreichen. Ich habe also das Gefühl, dass die Go-Sprache C und Python vereinheitlichen möchte, was eine großartige Sache ist.

3. Stammen aus einer berühmten Familie und haben eine reine Abstammung.

Der Grund, warum Go angeblich aus einer bekannten Familie stammt, lässt sich am Schöpfer der Go-Sprache ablesen, der eine absolut reine Abstammung hat. Zweitens stammt die Go-Sprache von Google, und die Popularität und Stärke von Google in der Branche ist selbstverständlich. Google hat eine Gruppe talentierter Leute versammelt, um eine neue Programmiersprache in einer Situation einzuführen, in der verschiedene Programmiersprachen um die Vorherrschaft konkurrieren. Natürlich hat es seine eigenen strategischen Überlegungen. Und dem Entwicklungstrend der Go-Sprache nach zu urteilen, legt Google immer noch großen Wert darauf, dass sein neuer Liebling Go natürlich eine gute Entwicklungszukunft hat. Aus welchen Sprachen entlehnt die Go-Sprache?

4. Kostenlos und effizient: Kombination von Ideen, nicht aufdringliche Schnittstellen

Go-Sprache kann als die perfekte Kombination aus Entwicklungseffizienz und Betriebseffizienz mit natürlicher Unterstützung für gleichzeitige Programmierung bezeichnet werden.

Go-Sprache unterstützt alle aktuellen Programmierparadigmen, einschließlich prozeduraler Programmierung, objektorientierter Programmierung, schnittstellenorientierter Programmierung und funktionaler Programmierung

. Programmierer können wählen, was sie brauchen, sie frei kombinieren und spielen, was sie wollen. Aus welchen Sprachen entlehnt die Go-Sprache?

5. Leistungsstarke Standardbibliothek

Dazu gehören Internetanwendungen, Systemprogrammierung und Netzwerkprogrammierung. Die Standardbibliotheken in Go sind grundsätzlich sehr stabil, insbesondere die drei hier erwähnten Bibliotheken, die Netzwerkschicht- und Systemschichtbibliotheken, sind sehr praktisch. **Die lib-Bibliothek der Go-Sprache ist klein, aber vollständig. **Die lib-Bibliothek der Go-Sprache enthält im Wesentlichen die meisten häufig verwendeten Bibliotheken. Obwohl einige Bibliotheken nicht sehr gut sind, denke ich nicht, dass dies ein Problem darstellt, da ich glaube, dass diese Probleme in der zukünftigen Entwicklung gelöst werden.

6. Einfache Bereitstellung: Binärdateien, Kopierbereitstellung

Dies ist der Hauptgrund, warum sich viele Menschen für Go entscheiden. Da die Bereitstellung so bequem ist, verwenden viele Menschen jetzt Go, um Betriebs- und Wartungsprogramme zu entwickeln.

7. Einfache Parallelität

** Parallele und asynchrone Programmierung sind nahezu schmerzlos. **Die beiden Artefakte der Go-Sprache, Goroutine und Channel, sind einfach große Segnungen für die gleichzeitige und asynchrone Programmierung. Die Parallelität und die asynchronen Methoden von Sprachen wie C, C++, Java, Python und JavaScript sind zu komplex zur Steuerung und fehleranfällig, und Go löst dieses Problem sehr elegant und reibungslos. Für Programmierer, die seit vielen Jahren unter Parallelität und asynchroner Programmierung leiden, ist dies ein absolut auffälliges Gefühl. Go ist eine sehr effiziente Sprache mit hoher Unterstützung für Parallelität. Go ist eine Programmiersprache, die für Big Data, Microservices und Parallelität entwickelt wurde.

Go ist eine Sprache, die danach strebt, die Dinge einfach zu machen. Es führt nicht viele neue Konzepte ein, sondern konzentriert sich auf die Erstellung einer einfachen Sprache, die unglaublich schnell und einfach zu verwenden ist. Die einzigen Neuerungen sind Goroutinen und Kanäle. Goroutinen sind Gos leichter Thread-orientierter Ansatz, und Kanäle sind die bevorzugte Art der Kommunikation zwischen Goroutinen.

Die Kosten für die Erstellung von Goroutinen sind sehr gering und erfordern nur ein paar tausend Byte zusätzlichen Speicher. Dadurch ist es möglich, Hunderte oder sogar Tausende von Goroutinen gleichzeitig auszuführen. Die Kommunikation zwischen Goroutinen kann mithilfe von Kanälen erreicht werden. Goroutinen und der kanalbasierte Parallelitätsansatz machen es sehr einfach, alle verfügbaren CPU-Kerne zu nutzen und gleichzeitige E/A zu verarbeiten. Im Vergleich zu Python/Java erfordert das Ausführen einer Funktion auf einer Goroutine nur minimalen Code.

Aus welchen Sprachen entlehnt die Go-Sprache?

8. Stabilität

Go verfügt über leistungsstarke Kompilierungsprüfungen, strenge Codierungsstandards und vollständige Software-Lebenszyklus-Tools. Es verfügt über eine starke Stabilität, und Stabilität übertrifft alles andere. Warum ist Go stabiler als andere Programme? Dies liegt daran, dass Go Tools für jeden Aspekt des Software-Lebenszyklus (Entwicklung, Test, Bereitstellung, Wartung usw.) bereitstellt, z. B. Go Tool, Gofmt und Go Test.

3. Vergleich mit anderen Sprachen

Viele Sprachfunktionen von Go sind von seinen drei Vorfahren übernommen: C, Pascal und CSP. Gos Syntax, Datentypen, Kontrollfluss usw. werden von C geerbt. Gos Paket und objektorientierte Ideen werden aus dem Pascal-Zweig abgeleitet. Gos größte Sprachfunktion, das auf Pipeline-Kommunikation basierende Coroutine-Parallelitätsmodell, ist aus dem CSP-Zweig entlehnt .

Aus welchen Sprachen entlehnt die Go-Sprache?

Java

kompilierte Sprache mit mäßiger Geschwindigkeit (2,67 Sekunden). Derzeit sind große Websites in Java geschrieben, wie Taobao, JD.com usw. Seine Hauptmerkmale sind Stabilität, gutes Open Source, eigene Schreibspezifikationen, mäßige Entwicklungseffizienz und es ist derzeit die am weitesten verbreitete Sprache. Als großer Name in Programmiersprachen. Hat die größte Sichtbarkeit und Benutzerbasis. Egal wie stark der Wind ist, ich bleibe standhaft und unbeweglich. Lass ihn stark sein, lass ihn stark sein, und der Wind wird auf den Hügeln wehen; lass ihn horizontal sein, und der helle Mond wird auf dem Fluss scheinen.

c#

Die Ausführungsgeschwindigkeit ist hoch (4,28), die Lernschwierigkeit ist moderat und die Entwicklungsgeschwindigkeit ist moderat. Aufgrund der vielen Mängel von C# wurden die Vorgänger großer Websites wie JD.com und Ctrip jedoch alle in C# entwickelt, jetzt aber auf Java migriert.

C/C++

Der Vorfahr der bestehenden Programmiersprachen, aus dem alle anderen Sprachen hervorgegangen sind. Die schnellste Ausführungsgeschwindigkeit ist unübertroffen. Aber es ist am kompliziertesten zu schreiben und am schwierigsten zu entwickeln.

Javascript

Eine einzigartige und arrogante Schönheit in der Programmiersprache. Die Front-End-Verarbeitungsfunktionen werden von anderen Sprachen nicht erreicht. Hervorragend sind auch die Back-End-Verarbeitungsfunktionen des sich entwickelnden js. Sowohl das Front- als auch das Back-End werden betreut. Wen kann ich sonst noch tun?

Python

Skriptsprache, die langsamste (258 Sekunden), prägnanter Code, kurzer Lernfortschritt und schnelle Entwicklungsgeschwindigkeit. Douban ist in Python geschrieben. Zu den bekannten Server-Frameworks für Python gehören Django und Flask. Allerdings ist Python für große Projekte nicht stabil, sodass einige Unternehmen, die Python verwenden, später auf Java umgestiegen sind.

scala

Eine kompilierte Sprache, die zehnmal schneller als Python ist und Java ähnelt, aber der Lernfortschritt ist langsam, und wenn Sie die Sprache nicht beherrschen, kann es bei der eigentlichen Programmierung leicht zu ernsthaften Leistungseinbußen kommen. Später wurde beispielsweise Yammer von Scala auf Java migriert. Zu den Microservice-Frameworks gehören Lagom usw.

Go

Der Neue in der Programmierwelt. Hohe Parallelitätsfähigkeiten sind unübertroffen. Es hat den gleichen prägnanten Code und die gleiche Entwicklungsgeschwindigkeit wie Python, aber auch die gleiche Ausführungseffizienz wie die C-Sprache, mit herausragenden Vorteilen.

Jeder, der schon länger in der Softwarebranche tätig ist, weiß, dass es keine universelle Programmiersprache, kein universelles Entwicklungsframework und keine universelle Lösung gibt. Das Aufkommen jeder neuen Technologie sollte auf die starke Unzufriedenheit einiger Menschen mit der alten Technologie zurückgeführt werden. Go-Sprache ist keine Ausnahme. Beispielsweise werden das Abhängigkeitsmanagement der C-Sprache, die Garbage Collection von C++, das klobige Typsystem von Java und die umfangreichen Java EE-Spezifikationen sowie die Leistung von Skriptsprachen (wie PHP, Python und Ruby) häufig diskutiert und beklagt von vielen Entwicklergemeinschaften ein Problem.

Wissen erweitern:

Vorteile der Go-Sprache

Die Go-Sprache beherrscht mehrere Programmierparadigmen und verkörpert hervorragende Ideen und Prinzipien der Softwareentwicklung. Ihre Funktionen ermöglichen es Entwicklern, Programme schnell zu entwickeln, zu testen und bereitzustellen, was zu erheblichen Verbesserungen führt Produktionseffizienz. Werfen wir einen Blick auf die Vorteile der Go-Sprache im Vergleich zu anderen Mainstream-Sprachen.

1) Im Vergleich zu C/C++ verfügt die Go-Sprache über ein klares Abhängigkeitsmanagement und einen vollautomatischen Speicherbereinigungsmechanismus, sodass das Codevolumen erheblich reduziert und die Entwicklungseffizienz erheblich verbessert wird.

2) Im Vergleich zu Java verfügt die Go-Sprache über ein prägnantes Typensystem, ein funktionales Programmierparadigma und ein fortschrittliches Modell für die gleichzeitige Programmierung. Dadurch sind seine Codeblöcke kleiner, prägnanter, wiederverwendbar und laufen in Multi-Core-Computing-Umgebungen schneller.

3) Für PHP ist die Go-Sprache vielseitiger und standardisierter. Dadurch eignet es sich besser zum Erstellen großer Software und zur besseren Organisation der verschiedenen Module. Leistungstechnisch kann PHP nicht mit Go mithalten.

4) Für Python/Ruby liegen die Vorteile von Go in seiner prägnanten Syntax, dem nicht aufdringlichen und flachen Typsystem und dem natürlichen Multiparadigmen-Programmiermodell. Python und Ruby sind wie PHP dynamisch typisierte interpretierte Sprachen, was bedeutet, dass sie viel langsamer laufen als statisch typisierte kompilierte Sprachen.

Kurz gesagt, der größte Vorteil der Go-Sprache gegenüber den meisten aktuellen Mainstream-Sprachen ist ihre hohe Produktionseffizienz, das fortschrittliche Abhängigkeitsmanagement und Typsystem sowie die native Unterstützung für gleichzeitiges Rechnen. Daher hat die Go-Sprache seit ihrer Veröffentlichung Aufmerksamkeit und Gunst von Entwicklern in verschiedenen Bereichen erhalten.

Nachteile der Go-Sprache

Lassen Sie uns nun einen objektiven Blick auf die Bereiche werfen, in denen die aktuelle Go-Sprache gestärkt oder verbessert werden muss (obwohl einige Gophers dies nicht glauben).

1) Aus Sicht des verteilten Rechnens ist die Go-Sprache noch nicht so ausgereift wie Erlang (in dieser Hinsicht sind einige Go-Sprachcodepakete erschienen, und wir können bereits eine glänzende Zukunft sehen).

2) Aus Sicht der Programmlaufgeschwindigkeit ist die Go-Sprache zwar mit Java vergleichbar, aber noch nicht so gut wie C (der Abstand wird immer kleiner).

3) Aus Sicht der Bibliotheken von Drittanbietern ist die Anzahl der Go-Sprachbibliotheken weitaus geringer als die mehrerer anderer Mainstream-Sprachen (wie Java, Python, Ruby usw.). Allerdings gibt es im Vergleich zum Zeitalter der Go-Sprache bereits eine ganze Reihe von Bibliotheken von Drittanbietern, die damit implementiert wurden, und ihre Zahl wächst weiterhin rasant.

Darüber hinaus gibt es auf einer tieferen Ebene auch einige unbefriedigende Aspekte in der Go-Sprachstandardbibliothek, wie unten beschrieben.

1) Aus Sicht der Sprachsyntax gibt es in der Go-Sprachsyntax nicht viel syntaktischen Zucker, weshalb viele Python- und Ruby-Enthusiasten dies ablehnen. Darüber hinaus gibt es so viele Möglichkeiten, Variablen Werte zuzuweisen, dass es etwas umständlich ist. Das Bedauerlichste und was mir am meisten am Herzen liegt ist, dass die Go-Sprache keine benutzerdefinierten generischen Typen unterstützt.

2) Aus Sicht der gleichzeitigen Programmierung ist das von der Go-Sprache bereitgestellte Parallelitätsmodell sehr leistungsfähig, es gibt jedoch auch einige Schreibregeln, die verstanden werden müssen. Ansonsten ist es leicht, in die „Grube“ zu treten. Tatsächlich wird nicht empfohlen, dies als „Grube“ zu bezeichnen. Denn die meisten dieser sogenannten „Gruben“ werden von uns selbst gegraben, weil wir mit den Prinzipien nicht vertraut sind.

3) Aus Sicht der Garbage Collection verwendet die Garbage Collection der Go-Sprache den Concurrent Mark and Sweep-Algorithmus (Concurrent Mark and Sweep, CMS). Obwohl es sich um einen gleichzeitigen Vorgang handelt, der viel weniger Zeit in Anspruch nimmt als ein serieller Vorgang, stoppt er dennoch den Betrieb aller Benutzerprogramme während der Speicherbereinigung. Dies wird teilweise Auswirkungen auf Anwendungen haben, die relativ hohe Echtzeitanforderungen haben. In Versionen nach der Go-Sprache 1.3 wurde dieses Problem jedoch erheblich verbessert.

Obwohl die Go-Sprache immer noch einige Mängel aufweist, ist sie insgesamt bereits eine sehr hervorragende Allzweck-Programmiersprache. Darüber hinaus wird sich die Go-Sprache in ihrer zukünftigen Entwicklung auf Leistung, Zuverlässigkeit, Portabilität und einige Funktionsverbesserungen konzentrieren, sodass die oben genannten Mängel mit fortschreitender Version allmählich schwächer werden und verschwinden.

【Verwandte Empfehlungen: Go-Video-Tutorial, Programmierunterricht

Das obige ist der detaillierte Inhalt vonAus welchen Sprachen entlehnt die Go-Sprache?. 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