Vorteile und Nachteile von Golang: Go die Google Programmiersprache

Die Frequenz, mit der neue Programmiersprachen das Licht der Welt erblicken, wird immer höher.

Auch Go ist eine relative Neuentwicklung, obwohl bereits im Jahre 2007 mit ihr begonnen wurde.

Aufgrund der Ähnlichkeiten zum Brettspiel Go wird sie auch Golang genannt. Die Sprache, die erst im November 2009 der Öffentlichkeit vorgestellt und im Mai 2010 für produktionsreif erklärt wurde, erfreut sich seit einiger Zeit einer immer größer werdenden Beliebtheit.

Denn mit jeder technischen Weiterentwicklung und jedem neuen Programmierkonzept offenbaren die etablierten, alten Programmiersprachen Defizite. So konnte keine andere Sprache in letzter Zeit so stark wachsen.

Die kompilierbare Programmiersprache mit ihrer hohen Übersetzungsgeschwindigkeit wurde auf Initiative von Google-Mitarbeitern entwickelt und forciert. Golang unterstützt Multithreading (s.u.), verfügt über eine automatische Speicherbereinigung und hat Ähnlichkeiten mit C++ und Java.

Hauptantrieb für die Entwicklung war die Unzufriedenheit mit bestehenden Programmiersprachen speziell im Hinblick auf skalierbare Netzwerkdienste, Cluster- und Cloud Computing. Eines der Probleme, das sie lösen will, ist die Ineffizienz des Compilers in C und C++.

Golang ist OpenSource und kann so von der Homepage golang.org direkt heruntergeladen werden. „Go by Example“ (gobyexample.com) bietet dazu eine praktische Einführung mit kommentierten Beispielprogrammen. Tipps durch die Community und alle Ergebnisse der Google-Umfrage sind außerdem auf dem Golang-Blog zu sehen.

Besonderheiten und Sprachmerkmale

Golang ist syntaktisch auf die Programmiersprache C ausgerichtet, mit etwas Einfluss von Pascal, Modula und Oberon. Neben einem eigenen Garbage Collector, erlaubt es die Verwendung von Pointern, verzichtet aber auf Pointer-Arithmetik.

Es gibt weniger Schleifen und weniger Variablendeklarationen. Golang hat einige interessante neue Features im Vergleich zu den alten Programmiersprachen oder kombiniert die Vorteile einzelner Sprachen.

Eine Besonderheit ist, dass Golang das Konzept der Vererbung nicht unterstützt. Das macht es einfach, den Programmcode zu ändern. In anderen Sprachen gilt: Wenn die Klasse ABC die Klasse XYZ erbt und man Änderungen in XYZ vornimmt, dann kann das unter Umständen Nebenwirkungen in anderen Klassen verursachen, die XYZ erben. Durch das Entfernen der Vererbung macht Golang es einfach, auch den Code zu verstehen, da es keine Superklasse gibt, die man sich ansehen muss.

Es unterstützt stattdessen eine Form der Einbettung: Eine Datenstruktur kann beliebig viele andere Datentypen einbetten, so dass sie ihre Methoden und Datenfelder erhält. Weitere Merkmale:

  • Es gibt (noch) keine generischen Typen.
  • Polymorphie wird über Schnittstellen erreicht, über die Methodenaufrufe zur Laufzeit an die konkrete Implementierung gebunden werden (dynamische Bindung).

Syntax

Obwohl die Golang-Syntax auf der klassischen C-Syntax basiert, enthält sie viele kleine Verbesserungen und ist deutlich reduziert. So werden beispielsweise keine obligatorischen runden Klammern verwendet und es ist auch nicht notwendig, Anweisungen mit einem Semikolon zu beenden.

In Deklarationen werden Datentypen nach dem Identifikator statt vor ihm geschrieben, um die Deklaration von Funktionstypen zu vereinfachen. Codeblöcke werden durch geschweifte Klammern begrenzt. Neben dem einfachen Gleichheitszeichen als Zuweisungsoperator gibt es auch den Operator :=, der Deklaration mit Typbezug und Zuweisung kombiniert.

Das Sonderpaket ‚main‘ mit der Funktion ‚main ()‘ dient als Einstiegspunkt des Programms, so wie es bereits in anderen jüngeren Programmiersprachen wie Java oder Python realisiert ist.

Praktisch sind auch „rohe“ Zeichenketten, die keine Masken enthalten dürfen. Dies spart viele Schrägstriche mit regulären Ausdrücken. Es gibt ein Formatierungswerkzeug, das ein einheitliches Aussehen für den Programmcode bietet – und tatsächlich sieht Go-Code aus verschiedenen Projekten immer ziemlich ähnlich aus.

Multithreading

Multithreading oder Parallelität bezeichnet die Fähigkeit, mehrere Berechnungen gleichzeitig auszuführen. Die meisten modernen Programmiersprachen (wie Java, Python usw.) unterstützen es. Aber das eigentliche Problem liegt in der gleichzeitigen Ausführung mit speziellen Problemen wie Threading-locking, Race Conditions und Deadlocks. Diese Dinge machen es schwierig, eine Multithreading-Anwendung für die Sprachen zu erstellen. In Golang können dagegen Tausende von Routinen gleichzeitig und sogar auf einem einzigen Prozessor ohne Probleme laufen.

In Golang wird dabei das Konzept der Kanäle verwendet, das eine relativ abstrakte Möglichkeit der synchronen oder asynchronen Kommunikation zwischen Go-Routinen bietet. Ein Kanal ist eine abstrahierte Möglichkeit der Kommunikation, die einen Warteschlangenkanal oder eine Schnittstelle bereitstellt.

Nur Daten eines festen Typs können über sie übertragen werden. Sie wird durch den Aufruf des Befehls „make“ erzeugt. Dann können Go-Routinen in den Kanal schreiben, von ihm lesen und ihn auch wieder schließen.

Bei synchronen Kanälen blockiert ein Lesezugriff, bis eine andere Go-Routine in sie schreibt, oder ein Schreibzugriff, bis eine andere Routine liest. Eine Go-Routine kann das select-Konstrukt verwenden, um auf mehreren Kanälen gleichzeitig zu hören, oder zu versuchen, auf mehrere Kanäle zu schreiben. Dabei gibt es keine Begrenzung auf eine maximale Anzahl der Routinen, die lesen und schreiben können.

Einsatz

Golang wurde von Google entwickelt, um die Probleme der Unterstützung von Skalierbarkeit und Effektivität auf seiner Cloud-Infrastruktur zu lösen. Das macht Go zu einem mächtigen Werkzeug für diesen Bereich. In einer großen Nutzerbefragung von Google kristallisierten sich interessante Ergebnisse für die Praxis heraus – so wird Go vor allem privat von Entwicklern genutzt.

Im Dezember letzten Jahres ergab die Umfrage, dass 66 Prozent der Teilnehmer Go in privaten Projekten nutzen. Nur 23 Prozent der Befragten nutzen es vor allem in ihrem beruflichen Umfeld. Dazu gibt es mindestens eine halbe Million Programmierer in der Go-Community.

Bild: Vorteile

Vorteile

Die Einfachheit einer aufgeräumten Syntax und die sehr performante Leistung sind die größten Vorteile von Go. Go läuft direkt auf der darunter liegenden Hardware und wird nicht wie zum Beispiel Java auf einer Virtual Machine ausgeführt, was bedeutet, dass Programmcode direkt zu einer Binärdatei kompiliert wird und damit schneller ist.

Der geringe Speicherbedarf der Go-Programme und die integrierte Parallelisierung machen die Programmiersprache zu einer besonders geeigneten Sprache für bestimmte Anwendungsbereiche wie zum Beispiel dem Einsatz in der Cloud.

Die Sprache ist schnell zu erlernen, insbesondere dann, wenn man bereits eine andere Programmiersprache beherrscht.

Go-Code enthält dazu praktisch keine Überraschungen: Seine begrenzten Sprachressourcen führen auch zu einer gewissen Einheitlichkeit des Quellcodes unabhängig vom Autor, was die spätere Pflege erleichtert. Dazu ist es plattformunabhängig und auf verschiedenen Betriebssystemen einsetzbar.

Nachteile

Dagegen hat Go Schwächen bei der generischen Programmierung. Weiterhin gibt es im Vergleich zu anderen Programmiersprachen wenig Datenstrukturen, was man allerdings in Bezug auf Einfachheit und Verschlankung auch als einen Vorteil betrachten kann.

Der größte Nachteil ist aber das Problem, das jede neu entwickelte Programmiersprache mit sich herum schleppt: Es gibt vergleichsweise wenige Softwarepakete, eine kleine Community und eine wenig ausgereifte Dokumentation.

Offizielle Seite von Golang
Ist Golang das neue Java, einige Informationen auf Entwickler.de

Bilder: Canva


Der Autor: Sascha Thattil arbeitet bei YUHIRO und hilft Unternehmern und Unternehmen beim einfachen Aufbau von Programmier-Teams in Indien. YUHIRO ist ein deutsch-indisches Unternehmen welches IT Firmen, Agenturen und IT Abteilungen Softwareentwickler bereitstellt.

Schreibe einen Kommentar