Posted on 1 Comment

Die Programmiersprache Go

Die Programmiersprache Go

Wenn Sie damit beginnen möchten, eine Programmiersprache zu erlernen, besteht die erste Entscheidung jedoch darin, eine passende Sprache auszuwählen. Das Angebot hierbei ist riesig. Sprachen wie Python, C++, C# oder Java sind beispielsweise sehr weit verbreitet und kommen daher häufig zum Einsatz. Für die Webentwicklung bieten sich auch PHP und JavaScript an und wenn Sie sich in die Systemprogrammierung einarbeiten möchten, stellt auch C eine gute Wahl dar. Die genannten Sprachen sind sehr weit verbreitet und selbst Menschen, die sich bisher noch nicht sehr intensiv mit der Informatik beschäftigt haben, kennen deren Namen. Aufgrund der großen Bekanntheit wählen die meisten Anfänger eine der genannten Programmiersprachen aus.

Allerdings gibt es auch einige neuere Entwicklungen, die bislang noch nicht den Bekanntheitsgrad der oben genannten Sprachen erreicht haben. Eine dieser Möglichkeiten ist Go. Diese Programmiersprache entstand erst 2009. Die erste stabile Version wurde sogar erst 2012 veröffentlicht. Daher liegt es auf der Hand, dass die Verbreitung und der Bekanntheitsgrad noch gering sind. Dennoch bietet diese Sprache ein enormes Potenzial. Gerade für Programmieranfänger stellt das auch die Möglichkeit dar, sich in einen Bereich einzuarbeiten, der noch ausgesprochen dynamisch ist und daher hervorragende Entwicklungschancen bietet. Dieser Artikel stellt daher die Programmiersprache Go vor.

Die Entstehungsgeschichte der Sprache

Die Idee, die Programmiersprache Go zu entwickeln, entstand 2007 im Google-Konzern. Der Grund dafür bestand darin, dass die Entwickler mit den Programmiersprachen, die dort bislang zum Einsatz kamen, nicht zufrieden waren. Diese wiesen beispielsweise bei Netzwerkdiensten, an denen mehrere Server beteiligt waren, sowie bei Cloud-Anwendungen erhebliche Schwächen auf. Es kam hinzu, dass bei Google damals viele unterschiedliche Programmiersprachen zum Einsatz kamen – in erster Linie C++ und Java, aber auch Python, JavaScript und einige weitere. Das führte zu einem Mix aus vielen verschiedenen Technologien, der die Produktivität beeinträchtigte.

Das Ziel bei der Entwicklung von Go bestand darin, die jeweiligen positiven Eigenschaften der einzelnen Programmiersprachen, die hier bislang zum Einsatz kamen, zu bündeln und um einige weitere Vorteile zu ergänzen. Beispielsweise sollten die statische Typisierung und die hohe Effizienz bei der Ausführung von C++ übernommen werden. Darüber hinaus sollte die einfache Lesbarkeit und Anwendbarkeit von Programmiersprachen wie Python oder JavaScript erhalten bleiben. Des Weiteren sollte die neue Programmiersprache Verbesserungen bei Programmen für Netzwerke und Multiprozessor-Systeme bieten.

Die Initiative für dieses Projekt ging auf ein Team prominenter Informatiker zurück. Dabei ist insbesondere Ken Thompson zu nennen, der bereits maßgeblich an der Entwicklung des Betriebssystems Unix und der Programmiersprache C beteiligt war. Hinzu kamen Rob Pike und Robert Griesemer – beides Informatiker mit internationalem Renommee.

Die erste Ankündigung für Go erfolgte im Oktober 2009 im Rahmen eines Google TechTalks. Bereits wenige Tage später folgte die Veröffentlichung als freie Software. Bis die erste stabile Version erschien, sollten jedoch noch drei weitere Jahre vergehen. Mittlerweile kommt Go bei vielen internen Prozessen von Google zum Einsatz. Im Bereich der Datenverarbeitung in großem Maßstab sowie beim Site Reliability Engineering bezeichnet der Konzern Go sogar als Schlüsselsprache. Auch viele weitere Unternehmen und Organisationen setzen mittlerweile auf Go.

Go und GoLang: Gibt es einen Unterschied?

Neben dem Begriff Go stößt man häufig auch auf die Ausdrücke Go Language und GoLang. Das führt häufig zu Missverständnissen und viele Menschen sind sich nicht sicher, ob all diese Begriffe die gleiche Programmiersprache bezeichnen.

Der offizielle Name dieser Programmiersprache lautet Go. Dabei handelt es sich jedoch auch um ein gebräuchliches Wort in der englischen Sprache und außerdem gibt es noch einige weitere Objekte mit dieser Bezeichnung. Das führte häufig zu Verwechslungen und auch eine präzise Internet-Suche nach der Programmiersprache ist aufgrund der großen Anzahl der dabei auftretenden Ergebnisse sehr schwierig. Um den Bezug klar zu machen, verwendeten viele Informatiker und Autoren daher den Zusatz language – auf Deutsch Sprache. So kam es zum Ausdruck Go Language. Dieser wurde dann immer häufiger abgekürzt – als Golang oder GoLang. Diese Ausdrücke kommen mittlerweile oftmals als Synonyme für die Programmiersprache Go zum Einsatz. Dabei handelt es sich jedoch um keine offizielle Bezeichnung.

Die wesentlichen Eigenschaften von Go

Wenn Sie mit dem Gedanken spielen, die Programmiersprache Go zu erlernen, ist es wichtig, sich mit deren Eigenschaften zu befassen. Auf diese Weise stellen Sie fest, ob diese die richtige Wahl für Ihre Projekte darstellt. Darüber hinaus wird daran auch ersichtlich, für welche Aufgaben sich Go eignet.

Die Syntax

Die Syntax von Go orientiert sich grundsätzlich an der Programmiersprache C. Allerdings gibt es dabei auch einige wichtige Abweichungen. Von Bedeutung ist beispielsweise, dass das Semikolon, das bei C jeden Befehl abschließen muss, in Go häufig optional ist. Außerdem müssen Sie beachten, dass bei Go zwingend die Angabe eines Pakets notwendig ist. Dieses wird mit dem Ausdruck package gekennzeichnet. Jedes Programm muss über ein main-Paket verfügen. Darüber hinaus können Sie zusätzliche Pakete erzeugen, um die Programmdateien zu strukturieren.

Der Einstieg in ein Go-Programm erfolgt wie bei C und C++ über die main-Funktion. Diese muss hierbei allerdings zusätzlich im Paket main stehen. Außerdem müssen Sie beachten, dass Sie alle Funktionen in Go mit dem Schlüsselbegriff func auszeichnen müssen. Ein einfaches Beispielprogramm in Go könnte etwa so aussehen:

Eine wichtige Eigenschaft dieser Programmiersprache besteht darin, dass sie mit nur 25 Schlüsselwörtern auskommt. Das ist deutlich weniger als beispielsweise bei C oder C++.

Objektorientierung

Die Objektorientierung stellt eines der wichtigsten Programmierparadigmen in der modernen Informatik dar. Auch Go unterstützt diese Vorgehensweise. Allerdings gibt es bei der Umsetzung deutliche Unterschiede zu den meisten anderen Programmiersprachen. Dabei ist insbesondere hervorzuheben, dass Go bewusst auf Klassen verzichtet. Stattdessen nutzt Go Interfaces und Mixins. Wichtig ist es, zu beachten, dass Go zwar die Polymorphie unterstützt, nicht jedoch die Vererbung.

Diese kurze Darstellung zeigt, dass es bei der Objektorientierung in Go erhebliche Unterschiede zu anderen objektorientierten Sprachen gibt. Das kann die Umstellung etwas erschweren.

Zeiger

Ein Zeiger ist eine Variable, die nicht einen bestimmten Wert enthält. Stattdessen gibt sie die Adresse im Arbeitsspeicher wieder, an der sich der Wert befindet. Zeiger ermöglichen eine sehr präzise Nutzung des Speichers und stellen eines der wesentlichen Merkmale der Programmiersprachen C und C++ dar.

Auch Go unterstützt Zeiger. Die erforderliche Syntax für die Verwendung der Zeiger ist praktisch identisch wie in C oder C++. Allerdings besteht auch ein wichtiger Unterschied. Im Gegensatz zu den beiden genannten Programmiersprachen unterstützt Go keine Zeigerarithmetik – also das Erhöhen oder Erniedrigen der Adresse oder die Addition zweier Adressangaben.

Nebenläufigkeit

Ein sehr wichtiger Aspekt bei der Entwicklung von Go war die Nebenläufigkeit. Dieser Begriff bezeichnet die Fähigkeit eines Systems, verschiedene Befehle oder Berechnungen gleichzeitig durchzuführen. Manchmal kommt hierfür auch der Begriff Parallelität zum Einsatz.

Go stellt hierfür sogenannte Kanäle zur Verfügung. Darin lassen sich bestimmte Go-Routinen ausführen. Diese Kanäle können miteinander kommunizieren – also Daten austauschen. Dabei ist es möglich, verschiedene Typen von Kanälen zu gestalten, die entweder einen synchronen Zugriff der einzelnen Go-Routinen notwendig machen oder die einen asynchronen Zugriff erlauben.

Garbage Collector

Von Bedeutung ist auch, dass Go über einen Garbage Collector verfügt. Dabei handelt es sich um eine automatische Speicherbereinigung. Bei vielen Programmiersprachen ist der Programmierer selbst für die Speicherbelegung verantwortlich. Das bedeutet, dass er den Speicherplatz, den er belegt, anschließend wieder freigeben muss. Das führt zu einem erheblichen zusätzlichen Aufwand. Go-Programme suchen jedoch selbstständig nach Speicherbereichen, die das Programm zwar belegt hat, die aber nicht mehr erforderlich sind. Diese gibt es dann frei. Das erleichtert nicht nur die Arbeit beim Programmieren. Häufig führt das auch zu einer Verbesserung der Speichereffizienz.

Die Anwendungsmöglichkeiten für Go

Zum Abschluss soll noch darauf eingegangen werden, für welche Art von Programmen sich die Verwendung von Go anbietet. Dabei sei zunächst erwähnt, dass es sich hierbei um eine sogenannte General Purpose Language handelt – also um eine Sprache mit einem allgemeinen Anwendungszweck. Das bedeutet, dass Sie sie für viele verschiedene Aufgaben einsetzen können. Dennoch bietet Go einige Stärken und Schwächen, sodass sich die Sprache nicht für jedes Projekt gleichermaßen eignet.

Besondere Stärken von Go liegen im Bereich der Netzwerkdienste, der Bearbeitung großer Datenmengen und des Cloud Computings. Dabei handelt es sich genau um den Anwendungsbereich, den Google ursprünglich für Go vorgesehen hatte. Der Konzern betreibt beispielsweise mehrere Server mit Programmen, die in dieser Sprache verfasst sind.

Die Unterstützung grafischer Benutzeroberflächen – die die Basis der meisten Anwenderprogramme bilden – ist bislang jedoch nur gering. Daher bietet sich Go zu diesem Zweck nicht besonders gut an. Auch Umsetzungsmöglichkeiten für mobile Apps, die Frontend-Webgestaltung oder Spiele sind bislang kaum vorhanden, sodass es bei diesen Anwendungen sinnvoll ist, eine andere Programmiersprache zu verwenden.

Ähnliche Produkte

1 Kommentar zu “Die Programmiersprache Go

  1. Sehr eingaengige Vorstellung dieser relativ neuen ProgrammierSprache.
    Koennte man sinnvollerweise auf RasPi einsetzten, z.B. private Cloud,
    aber eher nicht auf Arduino… 😉

Schreibe einen Kommentar