Googles Programmiersprache Go – vier Monate später
2009 als einer der Shooting-Stars unter den Programmiersprachen an den Start gegangen, entwickelt sich Googles Go seitdem in ruhigerem Fahrwasser weiter, wenngleich die Sprache sich durch die hinzugekommenen Neuerungen zunehmend der Produktreife nähert.
- Frank Müller
Die Vorstellung von Googles Programmiersprache Go liegt nun vier Monate zurück. Anfangs belächelt, von TIOBE dann doch wegen des rasanten Einstiegs in den Programmiersprachen-Index als "Programming Language of the Year 2009" gekürt, entwickelt sich Go seitdem in ruhigerem Fahrwasser weiter. Doch das bedeutet nicht, dass es nur wenig Fortschritt gibt. Im Gegenteil, die aktuelle Aktivitätenlage zeigt auf, wie sich Go zunehmend einer Produktreife nähert.
Die Entwickler der Sprache spielen sich inzwischen auf einen Release-Rhythmus von einer bis zwei Wochen ein. Sie haben mittlerweile elf Aktualisierungen veröffentlicht. Die Änderungen umfassen Sprache, Compiler, Pakete, Werkzeuge und Dokumentation. Startete das Entwicklerteam seinerzeit mit Robert Griesemer, Ken Thompson und Rob Pike, wirken inzwischen mehr als 50 Personen, etwa je zur Hälfte Google-Mitarbeiter und freie Beitragende, am Projekt Go mit. Go ähnelt C und Pascal; es bietet klassenähnliche "Packages" mit privaten Variablen und Methoden, jedoch keine Vererbung und damit keine Typhierarchien. Das in objektorientierten Sprachen verbreitete Konzept des Interfaces kennt Go wiederum, sodass sich polymorphe Funktionen schreiben lassen, wie man sie etwa für das Sortieren beliebiger Daten benötigt.
Die Sprache selbst ist zunehmend stabiler und konsistenter geworden. Auf Semikolons lässt sich nahezu vollständig verzichten, der Umgang mit einer variablen Anzahl von Argumenten wurde erleichtert wie auch die Nutzung von Slices, und komplexe Zahlen haben ihren Weg in Go gefunden. Der durch die Compiler erzeugte Code ist inzwischen teilweise doppelt so schnell wie noch im November. Mittlerweile wird neben Linux und Mac OS X auch FreeBSD unterstützt, und eine Portierung nach Windows ist in Arbeit. Interessant ist zudem, dass der Compiler für ARM-Prozessoren mit Android, Googles eigenem Betriebssystem für mobile Plattformen, getestet wird. Möglicherweise spielt Go zukünftig für Android eine ähnliche Rolle wie Objective-C bei der Entwicklung für das iPhone.
Der Umfang der mitgelieferten Pakete ist um mehr als 40.000 "Lines of Code" angewachsen. Eine Vielzahl der Pakete befasst sich direkt oder indirekt mit dem Internet. Neben Protokollen wie HTTP und Web Sockets unterstützt Go weitere im Webumfeld genutzte Techniken. Der Umgang mit UTF-8 und UTF-16 wurde ausgebaut, Kodierung und Kryptologie werden unterstützt und ein einfacher Umgang mit JSON (JavaScript Object Notation) und XML angeboten. Für die Entwicklung von Clustern ist es inzwischen möglich, Channel zur Kommunikation zwischen Go-Routinen auch über das Netzwerk zu verbinden. Zu guter Letzt wurde mit der Entwicklung der Google Protocol Buffers für Go begonnen.
Neben Compiler und Linker wird Go mit einer Vielzahl von Werkzeugen ausgeliefert. Auch wenn sie gerade im Bereich des Debuggings noch nicht vollständig sind, haben die Programmierer sie doch in wichtigen Gebieten weiterentwickelt oder um neue Tools ergänzt. So formatiert gofmt
nicht nur eigene Quellen in das Go-Standard-Format. Es lässt sich auch für die automatische Anpassung von Quellen nach der Änderung von Codestandards nutzen. Hierzu werden dem Tool Regeln mit einfachen Mustern übergeben.
Das Dokumentationswerkzeug godoc
ist flexibler geworden und erlaubt bei einem Einsatz als Server auch Suchanfragen via RPC (Remote Procedure Call). Für die Installation von Paketen in die eigene Umgebung ist das Werkzeug goinstall
hinzugekommen. Über eine eigene Seite findet man im Netz die verfügbaren Bibliotheken.
Die Neuerungen wie auch die Veröffentlichung eines Wikis und – neu – eines Blogs durch das Team, die zunehmende Anzahl der Projekte und der Verkehr zum Thema Go in der Mailing-Liste oder auch Twitter zeigen, dass die Sprache inzwischen mehr als ein Forschungsprojekt ist. (ane)