Seitenanfang

Erste Schritte mit Go

Go ist eine vergleichsweise junge Programmiersprache. Entwickelt wurde sie von Google mit dem Ziel, ein perfektes Werkzeug für skalierbare Anwendungen zu schaffen.

NodeJS arbeitet eventbasiert, parallelisiert und schnell. Allerdings ist JavaScript nicht gerade der beste Kandidat einer Programmiersprache und etwas genauer hingeschaut arbeitet der NodeJS-Interpreter auch nur auf einem CPU-Kern. Im Prinzip das gleiche was AnyEvent auch schon macht - nur mit mehr Hype.

Go dagegen arbeitet auf den ersten Blick gar nicht eventbasiert und die Parallelität ist gut versteckt. Dadurch entsteht einfacherer, strukturierterer Quellcode. Ein weiterer Unterschied: Go benutzt bei Bedarf so viele CPU-Kerne wie dem Prozess zugestanden werden. Im Gegensatz zu Java mit seinem klassischen Thread-Modell wird die Ressourcen-Nutzung nach Bedarf automatisiert ausgesteuert. Bei Java obliegt dies dem Programmierer.

Go (on) Tour

gopher.pngFür Go gibt es eine sehr gute Tour durch die Sprache: https://go-tour-de.appspot.com/welcome/1

In fünf Lektionen werden auf jeweils zwischen 11 und 27 Seiten alle wichtigen Elemente der Sprache vorgestellt. Als Besonderheit wartet ein zweigeteilter Bildschirm: Auf der linken Seite steht die Erklärung und auf der rechten Seite wartet ein Quellcode-Schnipsel im Editor. Mit einem Buttonklick wird das dortige Programm auf einem Google-Server ausgeführt und das Ergebnis (Ausgabe oder Fehlermeldung) angezeigt. So wird die Sprache nicht nur theoretisch vermittelt, sondern immer gleich auch praktisch geübt.

Dierekt im Anschluss empfiehlt sich https://golang.org/doc/articles/wiki/ Der Artikel erklärt Schritt für Schritt den Weg zu einem Webserver in Go mit Hilfe des Paketes net/http und führt auch in Go-Templates ein.

Schulfernsehen

Ich bin kein Freund von Video-Tutorials, weil sie meist wenig Information in viel Zeit transportieren. Zu Go gibt es allerdings einige interessante Vorträge, die inhaltlich die Einstiegstour sehr gut ergänzen:

  • https://vimeo.com/53221558
    Andrew Gerrand gibt eine Einführung in Go und zeigt die Entwicklungsgeschwindigkeit am Beispiel eines Frontend-Proxy-Servers in Go.
  • https://www.youtube.com/watch?v=XCsL89YtqCs
    Das kurze 5-Minuten-Video zeigt eine sinnvolle Go - Arbeitsumgebung. Mit entsprechenden Unterverzeichnissen lassen sich so auch nicht-Open-Source - Projekte (vermutlich) ziemlich gut verwalten.
  • https://www.youtube.com/watch?v=f6kdp27TYZs
    Ein Google I/O Vortrag von Rob Pike in dem er anhand einer kleinen "boring function" die Nutzung von Go Channels und Goroutines zur Parallelisierung von Abläufen anschaulich demonstriert. Eindrucksvoll ist das Video auf jeden Fall, aber wer vorher die Einführungstour durchgearbeitet hat, wird hier leichter mitkommen und mehr mitnehmen können.

Where to Go from here?

Auf https://golang.org/doc/editors.html und http://golang.org/wiki/IDEsAndTextEditorPlugins finden sich Listen mit Entwicklungsumgebungen für Go. Ich habe mich wegen der besten Unterstützung für JetBrains Goland entschieden, auch wenn ein guter alter Texteditor für den Anfang auch ausreichen würde.

Jetzt ist der Zeitpunkt gekommen, sich an einer ersten kleinen eigenen Aufgabe in Go zu versuchen. Welche das sein wird, steht noch nicht fest, aber ich habe schon mehrere Ideen bei denen die Parallelisierung von Go Probleme existierender Projekte lösen würde. Dank Memcache, Gearman und Datenbanken sollte die Kommunikation zwischen Perl und Go auch kein Problem darstellen.

 

Noch keine Kommentare. Schreib was dazu

Schreib was dazu

Die folgenden HTML-Tags sind erlaubt:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>