C adé: Go 1.5 ersetzt C durch Go

Michael Thomas
© Shutterstock/B & T Media Group Inc.

Die bei Google entwickelte Programmiersprache Go soll ab Version 1.5 ohne C auskommen bzw. eine Toolchain verwenden, die zumindest teilweise in Go geschrieben ist. Dies geht zumindest aus dem Konzeptpapier „Go 1.5 Bootstrap Plan“ hervor, das von Go-Entwickler Russel Cox verfasst und in der entsprechenden Google-Gruppe veröffentlicht wurde. So hat das Team offenbar schon seit Jahren geplant, alle C-Programme aus Gos Source Tree zu verbannen. Die C-Compiler (5c, 6c, 8c, 9c) hat dieses Schicksal bereits ereilt; alle verbliebenen C-Programme sollen schrittweise nach Go konvertiert werden.

Henne und Ei

Dabei stellt sich die klassische Frage nach Henne und Ei: Damit eine funktionierende Go-Toolchain erstellt werden kann, benötigt man im Grunde bereits eine Go-Toolchain. Um dieses Bootstrapping-Problem zu lösen, wird Cox zufolge auf eine bestehende Installation von Go 1.4 aufgesetzt. Der neue Build-Prozess für Go 1.5 und alle späteren Versionen wird demnach zwei Änderungen mit sich bringen. Erstens wird gcc bzw. clang durch Go 1.4 ersetzt und zweitens wird die Go 1.x-Compiler-Toolchain mit sich selbst kompiliert. Durch die zweite Änderung drohen Cox zufolge zwar Geschwindigkeitseinbußen; so spricht er davon, dass eine bis zu 50 % längere make.bash-Laufzeit zwar möglich ist, glaubt jedoch, dass sie deutlich darunter liegen dürfte. Zudem erwartet er, dass die Ersetzung der I/O-schweren Operationen der C-Kompilierung durch Go-Kompilierungen diesen Nachteil ausgleichen könnte.

Ob das Go-Team sein ehrgeiziges Ziel schon mit Version 1.5 umsetzen kann, lässt Cox offen. Fest steht allerdings, dass die Tage von C gezählt sind.

Überblick

Go wird seit 2007 bei Google entwickelt. Ziel ist die Entwicklung einer modernen Sprache zur systemnahen Programmierung. Die Go-Syntax ist an C angelehnt und durch Elemente aus der Pascal/Modula/Oberon-Familie sowie aus Newsqueak und Limbo (Nebenläufigkeit) angereichert.

Laut Google soll Go die Vorteile einer interpretierten Hochsprache mit der Effizienz und Sicherheit einer statisch typisierten, kompilierten Sprache verbinden. Etwa wird die Speicherverwaltung wie in Java von einem Garbage Collector erledigt. Typensicherheit soll Variablen-Chaos verhindern. Unterstützung für Multikern-Programmierung, Closures, Reflexion und klassenlose Objektorientierung mittels Interfaces und Mixins gehören zu den weiteren Merkmalen der Sprache.

Geschrieben von
Michael Thomas
Michael Thomas
Michael Thomas studierte Erziehungswissenschaft an der Johannes Gutenberg-Universität Mainz und arbeitet seit 2013 als Freelance-Autor bei JAXenter.de. Kontakt: mthomas[at]sandsmedia.com
Kommentare

Hinterlasse einen Kommentar

avatar
4000
  Subscribe  
Benachrichtige mich zu: