Entwickeln leicht gemacht – mit Golang Warum ist Go als Programmiersprache erfolgreich?
Anbieter zum Thema
Go ist nicht nur eine vergleichsweise verständliche Sprache, sondern liefert mit einem kompletten Satz einfach zu bedienender Werkzeuge auch überraschend schnell erstaunliche Ergebnisse. Damit soll ein Maximum an Effizienz und Produktivität für unterschiedliche Einsatzmöglichkeiten erzielt werden.

Go – oder Golang, wie es auch oft genannt wird – wurde zwar von Google-Mitarbeitern entwickelt, gilt aber strenggenommen nicht als „Google-Projekt“. Vielmehr wurde Go als ein Open-Source-Projekt ausgearbeitet, das vor allem einfach zu erlernen, unkompliziert in der Anwendung und leicht von anderen Entwicklern zu lesen sein sollte.
Go verfügt daher nicht über einen großen Funktionsumfang, insbesondere im Vergleich zu Sprachen wie C++. Die Syntax von Go erinnert an C, so dass sie für langjährige C-Entwickler und -Entwicklerinnen relativ leicht zu erlernen ist. Dennoch erinnern viele Funktionen von Go, insbesondere die Gleichzeitigkeit und die funktionale Programmierung, an Sprachen wie Erlang.
Als C-ähnliche Sprache für die Erstellung und Pflege plattformübergreifender Unternehmensanwendungen aller Art hat Go viel mit Java gemeinsam. Und als Mittel zur schnellen Entwicklung von Code, der überall ausgeführt werden kann, könnte man eine Parallele zwischen Go und Python ziehen, obwohl die Unterschiede viel größer sind als die Ähnlichkeiten.
Go hat viele Talente
Die Dokumentation beschreibt Go als eine schnelle, statisch typisierte, kompilierte Sprache, die einer dynamisch typisierten, interpretierten Sprache ähnelt. Selbst ein großes Go-Programm lässt sich in wenigen Sekunden kompilieren. Außerdem vermeidet Go einen Großteil des Overheads von Include-Dateien und Bibliotheken im Stil von C. Go wurde mit Skriptsprachen wie Python verglichen, weil es viele gängige Programmieranforderungen erfüllt.
Einige dieser Funktionen sind in die Sprache selbst eingebaut, wie beispielsweise „goroutines“ für Gleichzeitigkeit und Thread-ähnliches Verhalten; derweil sind zusätzliche Fähigkeiten in Go-Standardbibliothekspaketen verfügbar, wie zum Beispiel das http-Paket von Go. Wie Python bietet Go automatische Speicherverwaltungsfunktionen einschließlich Garbage Collection.
Im Gegensatz zu Skriptsprachen wie Python lässt sich Go-Code zu einer schnell laufenden nativen Binärdatei kompilieren; und im Gegensatz zu C oder C++ kompiliert Go extrem schnell. So schnell, dass sich die Arbeit mit Go eher wie die Arbeit mit einer Skriptsprache als mit einer kompilierten Sprache anfühlt. Außerdem ist das Build-System von Go weniger komplex als das anderer kompilierter Sprachen. Es erfordert nur wenige Schritte, um ein Go-Projekt zu erstellen und auszuführen.
Go macht gehörig Dampf
Die Go-Binärdateien laufen langsamer als ihre C-Pendants, aber der Geschwindigkeitsunterschied ist für die meisten Anwendungen vernachlässigbar. Die Leistung von Go ist für die allermeisten Aufgaben mindestens genauso gut wie die von C und im Allgemeinen viel schneller als die anderer Sprachen wie beispielsweise JavaScript, Python und Ruby, die für ihre Entwicklungsgeschwindigkeit bekannt sind.
Mit der Go-Toolchain erstellte ausführbare Dateien können eigenständig ausgeführt werden, ohne dass externe Abhängigkeiten bestehen. Die Go-Toolchain ist für eine Vielzahl von Betriebssystemen und Hardwareplattformen verfügbar und kann zum Kompilieren von Binärdateien auf verschiedenen Plattformen verwendet werden.
Interoperabilität ist Trumpf
Go bietet alle oben genannten Vorteile, ohne den Zugriff auf das zugrunde liegende System zu beeinträchtigen. Go-Programme können mit externen C-Bibliotheken kommunizieren oder native Systemaufrufe tätigen. In Docker zum Beispiel arbeitet Go mit Low-Level-Linux-Funktionen, cgroups und Namespaces zusammen, um die „Magie von Containern“ zu nutzen.
Die Go-Toolchain ist als Linux-, MacOS- oder Windows-Binary oder als Docker-Container frei verfügbar. Go ist standardmäßig in vielen beliebten Linux-Distributionen wie Red Hat Enterprise Linux und Fedora enthalten, was die Bereitstellung von Go-Quellcode auf diesen Plattformen etwas einfacher macht. Auch viele Entwicklungsumgebungen von Drittanbietern, von Microsoft Visual Studio Code bis hin zur Komodo IDE von ActiveState, unterstützen Go in hohem Maße.
Idealtypische Anwendungsfelder
Keine Sprache eignet sich für jede Aufgabe, aber einige Sprachen eignen sich für mehr Aufgaben als andere. Go qualifiziert sich vor allem für folgenden Anwendungstypen:
Cloud-native Entwicklung
Go eignet sich aufgrund seiner Gleichzeitigkeits- und Netzwerkfunktionen sowie seiner hohen Portabilität gut für die Entwicklung Cloud-nativer Anwendungen. Tatsächlich wurde Go zur Entwicklung mehrerer Eckpfeiler des Cloud-nativen Computings verwendet, darunter Docker, Kubernetes und Istio.
Verteilte Netzwerkdienste
Netzwerkanwendungen leben und sterben durch Gleichzeitigkeit, und die nativen Gleichzeitigkeitsfunktionen von Go – vor allem Goroutinen und Channels – eignen sich gut für solche Aufgaben. Folglich sind viele Go-Projekte auf Netzwerke, verteilte Funktionen und Cloud-Dienste ausgerichtet: APIs, Webserver, Minimal-Frameworks für Webanwendungen und dergleichen.
Dienstprogramme und eigenständige Tools
Go-Programme lassen sich zu Binärdateien mit minimalen externen Abhängigkeiten kompilieren. Dadurch eignen sie sich ideal für die Erstellung von Dienstprogrammen und anderen Werkzeugen, da sie schnell gestartet und für die Weiterverteilung leicht verpackt werden können. Ein Beispiel ist ein Zugangsserver namens Teleport (zum Beispiel für SSH). Teleport kann schnell und einfach auf Servern eingesetzt werden, indem man es aus dem Quellcode kompiliert oder eine vorgefertigte Binärdatei herunterlädt.
(ID:48565237)