Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2010  »  06  »  Ready, Set, Go!  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

© Helmut-Wegmann, Pixelio.de

Google erfindet neue Programmiersprache

Ready, Set, Go!

von Marcus Nutzinger, Rainer Poisel
Erschienen im Linux-Magazin 2010/06

Von Google sind mehr als nur Suchergebnisse zu erwarten. Nun stellt sich der Suchmaschinenriese sogar bei den Programmiersprachen in die Startblöcke - glückt der schnelle Antritt?

Es gibt systemnahe Programmiersprachen wie C und C++ sowie Sprachen, die unabhängig vom Betriebssystem funktionieren und in einer virtuellen Umgebung laufen wie Java. Zu unterscheiden sind interpretierte Sprachen wie Python und Ruby gegenüber solchen, die von Quell- in Binärcode zu übersetzen sind. Diese Liste lässt sich ziemlich lang fortführen und jeder Entwickler hat sich wohl auch schon mal seine Gedanken über eine von ihm zu erfindende Sprache gemacht.

Neustart

Auf den ersten Blick sieht es daher so aus, als ob der Platzhirsch Google sich nur aus Prinzip in einem weiteren Sektor platzieren wollte. Bei genauerem Hinsehen eröffnen sich jedoch einige interessante Konzepte, die es verdienen, sich näher mit der neuen Programmiersprache Go auseinanderzusetzen.

Der bei Google angestellte C- und Unix-Veteran Rob Pike erklärt in seinem Vortrag [1] das Jahr 2007 zum Geburtsjahr der Idee zu Go. Gemeinsam diskutierte er mit Ken Thompson, mit dem er schon am Betriebssystem Plan 9 arbeitete [2], und anderen Entwicklern, wie sie den Spaß ins Programmieren zurückbringen könnten. Ihr Eindruck war, dass sich an der Art der Programmiersprachen in den letzten Jahren nicht viel geändert hat, die Anforderungen an jene sich hingegen aber sehr wohl verschieben. So begreifen die Entwickler heute das Netzwerk als zentrales Element, setzen Cluster ein und entwickeln in verschiedenen Schichten und Abstraktionsebenen. Besonderes Augenmerk richten sie auf Mehrkernprozessoren und die daraus resultierende Nebenläufigkeit.

Google erklärt daher eine leichtere Kommunikation zwischen Komponenten und eine intuitiv zu verwendende Form der Nebenläufigkeit, in Englisch Concurrency genannt, zum Ziel der Sprache. Außerdem soll ein Garbage Collector und nicht der Programmierer das Aufräumen des Speichers übernehmen. Weitere Anforderung war das schnelle Übersetzen des Quellcode in den durch das System ausführbaren Binärcode [3].

Umgebungsgestaltung

Die Go-Programmierwerkzeuge gibt es im Quelltext aus einem Repository auf der Projekt-Homepage [4]. Nachdem der Anwender die verschiedenen Go-Compiler übersetzt hat (siehe Kasten "Installation"), baut er die Bibliotheken. Da die in Go selbst vorliegen, profitiert der Entwickler bereits von der hohen Geschwindigkeit des Google-Babys - die gesamte Bibliothek lässt sich in wenigen Sekunden übersetzen.

Installation

Blockiert während der Installation eine Firewall den Zugriff auf das Internet, so muss sich der Entwickler zurzeit noch eines Workaround bedienen. Er deaktiviert im Makefile die Tests für die Subsysteme »http« und »net«, sodass deren Ausführungsergebnisse keine Voraussetzung für den Erfolg der Gesamtinstallation sind [5]. Dazu erweitert er den Wert der Variablen »NOTEST« in der Datei »$GOROOT/src/pkg/Makefile« um die Einträge »http« und »net«.

Zum Kompilieren stehen zurzeit zwei Werkzeuge zur Verfügung, der »gc«-Compiler sowie »gccgo«. Letzterer interagiert mit dem C-Compiler von GNU, ist jedoch nicht so weit fortgeschritten wie die »gc«-Werkzeuge, deren Namensschema von Plan 9 herrührt. Die Zahl kennzeichnet die Plattform, wobei »5« für ARM, »6« für 64-Bit- und »8« für 32-Bit-x86-Systeme stehen. Der Buchstabe kennzeichnet das Tool selbst (siehe Tabelle 1).

Tabelle 1:
Ausführbare 64-Bit-Go-Tools

 

Werkzeugname

Kurzbeschreibung

6a

Go-Assembler

6c

Go-C-Compiler (»cgo« benötigt das Tool)

6g

Go-Compiler

6l

Go-Linker

cgo

Erzeugt Pakete und Programme, die C-Code aufrufen

Den Kompilier- und Linkvorgang demonstriert Abbildung 1, das obligatorische Hello-World-Programm zeigt Listing 1. Zeile 3 enthält ein von Python und Java bekanntes »import«-Statement, das dort die Bibliothek »fmt« einbindet. Go fordert, dass das Programm wie bei C oder C++ eine Funktion »main()« als Einsprungspunkt besitzt. Die Funktion »Println()« von »fmt« gibt schließlich den Text aus. Dass die Funktion von den Entwicklern der Bibliothek einen großen Anfangsbuchstaben erhalten hat, ist kein Zufall. Eine wichtige Eigenschaft von Go ist es nämlich, dass Variablen und Funktionen automatisch global sichtbar werden, sofern deren Name einen Großbuchstaben an erster Stelle besitzt.


Abbildung 1: Die Kommandos zum Kompilieren und Linken eines Go-Programms lehnen sich an die zunächst ungewohnte Schreibweise von Plan 9 an.

Listing 1:
»hello.go«

01 package main
02 
03 import "fmt"
04 
05 func main () {
06   fmt.Println("Hallo, Welt!")
07 }
Sie können diesen Artikel als PDF für 99 Cent kaufen. Klicken Sie dazu einfach auf eine der beiden Bezahloptionen Paypal oder ClickandBuy.


Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Vom Thron gestürzt Die besten Lesereinsendungen des Programmierwettbewerbs
Das Log als Ohrwurm Perl-Skript realisiert das singende, klingende Internet
Plasmagie Plasmoide programmieren in C++
Wissenstransfer Aussichtsreiche Würfelkandidaten unter der Lupe
Mit Schutzmantel Gekapselt und überschaubar: Minix 3 strebt nach Sicherheit
Konservierungsmittel Objektdatenbank Db4o für Java und Mono
Whitepaper
Usage Landscape Enterprise Open Source Data Integration

Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.

Download PDF (Registrierung erforderlich)
Daten Migration - Eine Publikation von Bloor Research

Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.

Download PDF (Registrierung erforderlich)
Kommentare (0)