Go (Programmiersprache)
Go (auch Golang genannt – kurz für Go Language) ist eine Open-Source-Programmiersprache für allgemeine Zwecke. Go wurde von Google-Ingenieuren entwickelt, um zuverlässige und effiziente Software zu erstellen. Es ähnelt stark der Programmiersprache C, ist statisch typisiert und explizit.
Das Ziel beim Erstellen von Go war es, eine Sprache zu schaffen, die unkompliziert und einfach zu erlernen ist, so wie Python und zeitgleich den Funktionsumfang von C bietet. Außerdem sollte die Sprache langsame Erstellungszeiten, unkontrollierte Abhängigkeiten, Doppelarbeit und Schwierigkeiten beim Schreiben automatischer Tools vermeiden und sprachübergreifendes Entwickeln unterstützen.
Go arbeitet mit sogenannten Goroutinen, leichtgewichtigen Prozessen, welche die Effizienz steigern sollen. Es verwendet auch eine Sammlung von Paketen zur effizienten Verwaltung von Abhängigkeiten.
Einige Beispiele für Organisationen, die Go verwenden, sind Google, Cloudflare, Dropbox, MongoDB, Netflix, SoundCloud, Twitch und Uber.
Was kann Go?
Die Sprache umfasst eine Reihe von Funktionen wie die Standardbibliothek, Paketverwaltung, statische Typisierung, Unterstützung für Tests sowie Plattformunabhängigkeit. Die Standardbibliothek von Go verwendet verteilten Pakete. Unter Paketverwaltung versteht man die Unterstützung benutzerbasierter und externer Paketverwaltung. Einige Pakete enthalten einen kleinen Satz von Befehlen. Statische Typisierung ist ein Typsystem, das Konvertierungen und Kompatibilität gewährleistet und gleichzeitig Probleme vermeidet, die mit dynamisch typisierenden Sprachen einhergehen. Go unterstützt auch Unit-Tests, die Entwickler parallel zum geschriebenen Code ausführen können. Darüber hinaus kann der Code aufgrund des modularen Designs von Go auf fast jeder Plattform kompiliert werden.
Genauer gesagt verwendet Go leichtgewichtige Prozesse, die eine gleichzeitige Verarbeitung ermöglichen und sich wie Threads verhalten. Die Syntax ahmt Muster nach, die in dynamischen Sprachen üblich sind. Golang zieht Komposition der Vererbung (Inheritance) vor. Hervorzuheben ist die Gofmt-Funktion von Go, mit der Code automatisch formatiert und zur Lesbarkeit eingerückt wird, Go run, mit dem Code gleichzeitig kompiliert und ausgeführt wird, Go get, das sich nahtlos in GitHub integrieren lässt, und Godoc, das HTML-basierte Dokumentation entsprechend der Code-Struktur und den Entwicklerkommentaren generiert.
Vorteile von Go
Go hat gegenüber anderen Programmiersprachen zahlreiche Vorteile:
- Schnelle Kompilierung und Ausführung
- Keine virtuelle Maschine (VM) erforderlich
- Portabilität
- Goroutinen, die Gleichzeitigkeit unterstützen
- Schnittstellen ermöglichen lose gekoppelte Systeme
- Automatische Speicherbereinigung (Garbage Collection)
- Sicherheit des Speichers
- Unabhängige Fehlerbehandlung
- Umfangreiche eingebaute Bibliotheken
Nachteile von Go
Zu den möglichen Nachteilen gehören:
- Unterstützt nicht das Schreiben vom abstraktem, implizitem Code
- Mangelnde Laufzeitsicherheit
- Erzwingt strenge Regeln
- Inkompatibel mit Funktionsüberlastung
- Nicht konventionell objektorientiert
Anwendungen der Go-Programmiersprache
Go wird von verschiedenen Software-Entwicklungsteams und in verschiedener Software verwendet. Zu den Anwendungen, die Go verwenden, gehören Containerdienste wie Docker und Kubernetes, Cloud-Dienste wie Terraform und OpenShift, Werkzeuge zur Dienstorchestrierung wie Juju und andere Anwendungen wie Bitcoin-Netzwerke – zum Beispiel Lightning Network.
Zu den Unternehmen, die die Go-Programmiersprache verwenden, gehören Couchbase, das Go für Abfrage- und Indexierungsdienste verwendet; Dropbox, das von Python auf Go umgestellt wurde; MongoDB für Werkzeuge im Zusammenhang mit MongoDB-Instanzen; und Netflix mit einigen seiner Serverarchitekturen.
Go im Vergleich zu Konkurrenten
Trotz zahlreicher Ähnlichkeiten zu anderen Programmiersprachen füllt Go seine ganz eigene Marktnische. Das Ziel der Erfinder war es, eine schnellere Kompilierung im Vergleich zu anderen Programmiersprachen zu ermöglichen. Im Vergleich zu C++ reduziert Go die Anzahl von Laufzeitfehlern und Abhängigkeiten und erhöht gleichzeitig die Speichersicherheit und vereinfacht die Speicherverwaltung. Ruby bietet einen sichereren Ansatz, benötigt jedoch einen Interpreter und mehr Zeit beim Kompilieren. Java ist eine weitere verbreitete Programmiersprache; sie erfordert jedoch eine virtuelle Maschine, um den Code auszuführen. Go eliminiert diese Notwendigkeit, sich mit Komplexität und Länge von Java-Codes herumzuschlagen.
Entwickler setzen auf Go, wenn sie eine Programmiersprache brauchen, die gut für Webentwicklung, Front-End-Entwicklung, Befehlszeilen-Scripting und Netzwerkserver-Anwendungen geeignet ist. Aufgrund der schnellen Startzeit der Go-Sprache, des geringen Laufzeit-Overheads und weil es ohne virtuelle Maschine funktioniert, hat sich Go zu einer sehr beliebten Sprache für das Schreiben von Microservices entwickelt. Darüber hinaus kann Go auch für die gleichzeitige Programmierung verwendet werden – eine Strategie zur gleichzeitigen Ausführung mehrerer Aufgaben. Go ist unter den Top-Ten der gefragtesten und beliebtesten Programmiersprachen oft am unteren oder mittleren Ende – typischerweise direkt hinter anderen bekannten Sprachen wie JavaScript und Python.
Die Geschichte von Go
Die Entwicklung von GO wurde angestoßen, um Software-Engineering-Probleme bei Google zu lösen und eine Alternative für C++ anzubieten. Da außerdem Mehrkernprozessoren immer beliebter wurden, war die Entwicklung einer Sprache mit einem höheren Produktivitätsniveau erforderlich.
Die Entwicklung von Go begann bei Google im Jahr 2007. Die Designer wollten eine Programmiersprache entwickeln, die einfacher zu bedienen ist, aber dennoch die nützlichen Eigenschaften anderer Sprachen wie C++, Python oder JavaScript aufweist. Im Jahr 2008 nahm die Sprache Gestalt an, als sie das Prototypenstadium hinter sich ließ und 2009 öffentlich angekündigt wurde. Im selben Jahr wurde Go auch zu einem Open-Source-Projekt, bei dem die Mitglieder der Gemeinschaft mit Ideen und Code beginnen konnten. Version 1.0 wurde später, 2012, veröffentlicht.
Im Laufe der Jahre wurden zahlreiche Aktualisierungen und Funktionen hinzugefügt, wie zum Beispiel 2018, als generische Typen und Fehlerbehandlung hinzugefügt wurden. Das ließ auch in den letzten Jahren die Popularität von Go anwachsen.