Trotz aller Reduktion gibt es in Go auch einige Features, die in anderen Sprachen als modern gelten und von Programmierern gewünscht werden. Ein Beispiel dafür sind die Closures, die in Go anonyme Funktionen sind, die ihre Umgebung speichern.
Das erklärte Ziel der einfachen Programmierung für Multicore-Systeme (Go entstand in der Prä-Cloud-Ära, als Multicore-Prozessoren der letzte Schrei waren) erreicht Go mit einer Abstraktion namens Goroutines, die nach dem Vorbild der Communicating Sequential Processes (CSP) eine Vereinfachung gegenüber der fehlerträchtigen Programmierung mit Threads darstellen [6].
Zum Weiterlesen bietet sich das Online-Dokument "Effective Go" an, das besonders ans Herz gelegt sei, weil es "idomatische", also Go-typische Problemlösungen zeigt [7]. Bücher über Go gibt es mittlerweile schon einige, darunter auch zwei deutschsprachige. Hilfe findet man auch auf der Mailingliste "golang-nuts" (die Liste "golang-dev" ist für Compiler-Entwickler gedacht). Schließlich noch ein Tipp für die Websuche nach Go-Ressourcen: statt "go" als Suchbegriff einfach immer "golang" verwenden. Lokal lässt sich die ganze Dokumentation im Browser lesen, wenn man mit »godoc -http=:8000
«
den Dokumentationsserver startet.
Go selbst bringt schon eine Vielzahl von Bibliotheken mit (Abbildung 2), weitere finden sich zum Beispiel unter [8] [9] und [10]. Größere in Go implementierte Projekte sind beispielsweise der Webserver Falcore [11] oder die Websoftware von Stathat [12].
Go ist ausgereift und dank der Vorwärtskompatibilität, die seine Entwickler garantieren, für professionelle Software-Projekte geeignet. Auch die kurzen Compile-Zeiten sind für größere Projekte nützlich. Die Reduzierung des Sprachumfangs macht die Sprache relativ leicht erlernbar und hilft vor allem dabei, auch fremden Code leicht zu lesen, was letztlich die Wartungsfreundlichkeit von Software fördert. Der Preis für die Reduktion auf das Wesentliche ist der Verzicht, etwa auf klassenbasierte Objektorientierung, die viele Programmierer von ihrer Ausbildung gewohnt sind. Go bietet eigene Features zur ansatzweise objektorientierten Entwicklung, die aber das Eindenken in neue Konzepte erfordern. Es ist zu erwarten, dass sich Go gerade im Bereich der Systemprogrammierung noch weiter verbreiten wird, aber durch den Support auf Googles App Engine könnte auch der Einsatz bei der Webprogrammierung noch interessant werden.
Infos
Am 10. November 2009 wurde die Programmiersprache Go veröffentlicht.