Wie steht es um Go im Jahr 2016?

Ein Blick auf die Programmiersprache go.

Die Programmiersprache Go, alias GoLang, wird im November diesen Jahres sieben – und es hat schon so einiges geleistet. Mal abgesehen von Google, ist Docker die wohl bekannteste Open-Source-Software für die Bereitstellung von Containern – powered by Go. Auf Wikipedia finden Sie eine detaillierte Liste von hochkarätigen Usern: Wikipedia-Seite zur Programmiersprache Go.

 

Sie beherrschen die wichtigsten Programmiersprachen? Jetzt brandaktuelle Programmierer-Jobs auf Dice.com finden!

 

Die letzten Go-Versionen

Die Release-Termine liegen seit Go 1.2 (Ende 2013) immer etwa sechs Monate auseinander. Die neuste Version 1.6 erschien im Februar und es gibt bereits Downloads für die Version 1.6.2. Ich habe die Linux Version installiert, die bescheidene 81 MB beansprucht. Wenn Sie es direkt aus den Sources erstellen wollen, benötigen Sie nur 12 MB. Die Installationsanleitungen sind ziemlich einfach und ausführlich.

In der vorhergehenden Version (1.5) gelang es Go, von einer Kombination aus C und Go zu fast 100% Go überzugehen – mit minimalem Assembler. Man benötigt keinen C- Compiler mehr. Sie können aber immer noch C- Code über Go aufrufen. Benutzen Sie cgo und Ihr Go-Code verwendet auskommentierten Code, um die enthaltene C-Header-Datei zu identifizieren. Ohne C funktioniert der Garbage Collector besser. Anstelle von Bezeichnungen wie 6g und 8g, heißen diese nun go tool compile, go tool link und go tool asm.

In den letzten paar Jahren gab es verschiedene kleinere und größere Änderungen. Zum Beispiel, vor der 1.3 Release war es möglich, über kleine Maps konsistent zu iterieren (8 oder weniger Einträge) – es konnten jedoch Fehler auftreten. In der Release 1.3 werden kleine Maps nun nach dem Zufallsprinzip iteriert. Die Release 1.2.6 hat Code hinzugefügt, um den zeitgleichen Missbrauch von Maps zu erkennen. Go hat bereits seit mehr als drei Jahren einen Race-Detector. Bei der ersten Einführung hat dieser 42 Races in der Standardbibliothek entdeckt. Ein Data Race tritt auf, wenn zwei Prozesse versuchen, die gleiche Variable zur gleichen Zeit zu schreiben.

Der Release 1.4 hat eine Form ohne Variablen zu for-range Loops hinzugefügt. Jetzt sind folgende Loops möglich:

for range x {
  ...
}

 

Linker Buildmodes

Neben einem ausgereiften Go Linker in der Version 1.5, wurden außerdem Buildmodes eingeführt. Sowohl go build als auch go install benötigen ein -a Buildmode Argument. Dies bestimmt die Art der Objektdatei, die aufgebaut werden soll. Es sei denn, Sie müssen archivierte, c-archivierte, geteilte oder Positions-unabhängige “Executables” aufbauen, können Sie dies ignorieren. Standardmäßig, wenn das Paket primär ist, wird es in eine ausführbare Datei eingebaut. Geben Sie go help buildmode in die Befehlszeile ein, um alle verschiedenen Modes aufzulisten.

 

Die Go Standard Library

Diese umfasst inzwischen mehr als 130 Pakete, die eine große Menge des Codes implementieren, den Sie zur Erstellung von funktionierenden Anwendungen benötigen. Sie wollen bzip, gzip, lzw oder zlib Komprimierung? Alles da! Zur Verschlüsselung gibt es nicht nur aes, des, md5 und sha1 (einige davon sind veraltet), sondern noch viele weitere, einschließlich elliptic und x509.Erstellung einer Logdatei? Check. Automatisierte Prüfung? Check. Es gibt außerdem nicht nur Strings (UTF-8), sondern auch ein UTF-8-spezifisches Package und eins für UTF-16.

Wenn Ihnen das alles noch nicht reicht, dann gibt es natürlich auch noch die von Dritten zur Verfügung gestellte Go wiki Projekt-Liste. In komprimierter Form gibt es 15 weitere Packages. Wenn Sie diese durchgehen, bekommen Sie ein Gefühl dafür, wo Go angewendet wird und Internetfunktionalität einschließt (DNS, FTP, HTTP, IMAP, Messaging, P2P). Web Applications, Frameworks und Tool-Kits sind auch sehr beliebt.
Genau wie bei C/C++/Python gibt es keine GUI für Go, deshalb benötigen Sie QT, GTK oder ein anderes Tool-Kit. Einige davon finden Sie hier: Go Wiki Projects. Die Liste enthält auch GXGUI, was ziemlich gut aussah und von ein paar Googlern zusammengestellt wurde, die inzwischen aber nicht mehr die Zeit dazu haben, es zu pflegen. Das letzte Objekt auf der Liste, ui, ist noch in der Entwicklung, sieht aber interessant aus.

 

Fazit

Ohne Zweifel sind die Leistungen immer noch unfertig. So zeigt zum Beispiel die neueste Version (1.6) Leistungsverbesserungen gegenüber der vorherigen, aber diese sind nun schon seit einigen Jahren unverändert. Wirft man einen Blick auf verschiedene Programmiersprachen-Rankings wie Red Monk, oder der Reddit Programming community, befindet sich Go generell (mit einer Ausnahme, dem Tiobe Index) in den Top 20.
Jedenfalls hat Go inzwischen zwei jüngere Konkurrenten: Das ist zum Einen ganz klar Rust von Mozilla und eher überraschend auch Swift. Ja, das Swift von Apple. Sie können Swift Applications auf Linux ausführen, obwohl das Projekt noch in den Kinderschuhen steckt.
Infrastruktur-Sprachen werden in der heutigen Zeit nie die Popularität der allgemeinen Sprachen erreichen, aber sie sind auf jeden Fall nützlich. C war im Grunde nur deshalb erfolgreich, weil es nichts Anderes gab.

 

Sie beherrschen die wichtigsten Programmiersprachen? Jetzt brandaktuelle Programmierer-Jobs auf Dice.com finden!

 

 

Weitere Themen:

Rust vs. Go – Ein Vergleich
Apple Swift vs. Google Go: Wer gewinnt im Programmiersprachen-Ranking?
Beste Karrierechancen mit Nischen-Programmiersprache

 

 

Foto: pexels

About David Bolton

David Bolton begann schon mit dem Programmieren, als er noch zur Schule ging und bevor es überhaupt PCs gab. Es gefiel ihm so sehr, dass er seinen Abschluss in Informatik machte. Er beschäftigt sich seit fast 35 Jahren mit dem Thema Programmieren – sowohl arbeitsbedingt als auch in seiner Freizeit. In dieser Zeit arbeitete er für Price Waterhouse, British Aerospace, MicroProse (wo Sid Maier Civilization kreiert hat), in einer gescheiterten Dotcom (HomeDirectory.com) und bei Morgan Stanley. Mehr als acht Jahre lange programmierte er Spiele, mehr als 12 Jahre Finanz-Software in London. Sein Leben beschreibt er als eine permanente Lernkurve. Er verfügt über umfangreiche Programmiererfahrung in 6502,Z80 und 68000 Assembler, Basic, Pascal, C, C++, C#, Java, PHP, SQL, Fortran, JavaScript und lernt zurzeit R. Außerdem entwickelt er heute mobile Apps in Xamarin (C#) und schreibt für Dice. Er lebt in New York (in Lincolnshire, England, nicht in den USA).
No comments yet.

Leave a Reply