Entwickler-Liebling aus gutem Grund: Googles Go glänzt durch Einfachheit


Anzeige
Die Google-Mitarbeiter Ken Thompson, Robert Griesemer und Rob Pike waren unzufrieden mit bestehenden Programmiersprachen und Umgebungen für die Systemprogrammierung. Ihnen missfiel, dass Programmierung schwierig geworden war. Man musste sich entscheiden: Entweder eine Sprache für effiziente Kompilierung, effiziente Ausführung oder einfache Programmierung. Eine Sprache, die alle drei Anforderungen erfüllte, gab es nicht. Also entwarfen sie Go, um diese Lücke zu füllen.
Nix mehr verpassen: Die t3n Newsletter zu deinen Lieblingsthemen! Jetzt anmelden Anzeige Go ist eine junge Programmiersprache
Anders als Programmiersprachen wie Java oder Python stammt Go aus einer Zeit, als Computer bereits über mehr als einen Kern verfügten. Go ist eine statisch typisierte Programmiersprache, die zu Maschinencode kompiliert wird. Im Gegensatz zu beispielsweise Rust, einer ebenfalls relativ jungen Sprache, basiert Go nicht auf LLVM, sondern wurde von Grund auf neu entworfen.
Mit Programmiersprachen ist es wie mit allen Werkzeugen: Sie wurden irgendwann entwickelt, um Probleme da zu lösen, wo Bestehendes an seine Grenzen stieß. Im Fall von Go war das die Software-Entwicklung bei Google. Die Sprache wurde von und für Entwickler entworfen, die große Softwaresysteme bauen, warten und debuggen.
Fixes Feature-Set aus gutem Grund
Andere Sprachen bekämen von Version zu Version neue Features, oft inspiriert von anderen Sprachen. Dadurch werden sie sich immer ähnlicher. In ECMAScript wurden mit Version 6 Klassen eingeführt, PHP 8 bekommt einen JIT-Compiler – Beispiele, die diese These belegen, gibt es genug.
Für Go habe man sich absichtlich für einen anderen Weg entschieden, so Rob Pike 2015 bei einem Talk auf der Godot. Als Analogie führt er die Relativität von Sprache an, eine Hypothese, die besagt, dass Sprache die Art, wie wir denken, beeinflusst. Ob haltbar oder nicht, im Fall von Programmiersprachen sei die Theorie plausibel. Wer eine logische Programmiersprache nutze, würde damit andere Probleme lösen und zwangsläufig anders denken als jemand, der mit einer nebenläufigen oder einer objektorientierten Sprache arbeite. Infinitesimalrechnungen löse schließlich auch keiner mithilfe von linearer Algebra. Wenn alle Programmiersprachen sich immer ähnlicher werden würden, würden alle Entwickler in der Folge dieser Entwicklung irgendwann auch alle auf die gleiche Art und Weise denken. Eigentlich wolle man doch verschiedene spezialisierte Tools für verschiedene Problemstellungen nutzen. Sprachen wie Java, JavaScript, C#, PHP oder C++ entwickeln sich weiter, indem sie neue Features implementieren. Damit gewinnen sie zwar an Funktionalität, proportional dazu aber auch an Komplexität. Das sei, als hätte man einen Werkzeugkasten mit verschiedenen Multifunktionstools, mit denen sich alles auf ähnliche Art und Weise lösen lässt, aber keines davon ist wirklich für einen spezifischen Anwendungsfall zugeschnitten, sagt Pike während des Talks.
Keine neuen Features!
Go unterscheidet sich also mit Absicht von anderen Programmiersprachen, die mit jedem neuen Versions-Update neue Features bekommen. Seit dem Launch von Go 1 wurden abgesehen von kleineren Anpassungen so gut wie keine neuen Features eingeführt. Zumindest keine großen. Gos Feature-Set ist fest.
Anzeige
Pike glaubt, neue Funktionalitäten würden die Programmiersprache nicht besser, nur größer und komplexer machen. Die Auswahl an Features, die schlussendlich Teil von Go werden sollten, orientierte sich vor allem an einer Maxime: Lesbarkeit und Einfachheit. Gibt es viele Wege, eine Sache zu lösen, müssen Entwickler sich für einen entscheiden. Diese Entscheidung muss jedes Mal, wenn ihr Code von ihnen selbst oder von anderen gelesen wird, nachvollzogen werden. Zusammengefasst: Der Code wird komplexer, je mehr Features und Auswahl es gibt. In Go wollte man sich auf das Wesentliche beschränken. Einen oder zumindest nur einige wenige statt vieler Lösungswege für ein Problem anbieten. So wird Code leichter zu verstehen, es wird einfacher, ihn zu schreiben und es wird auch einfacher, etwaige Bugs zu fixen.
https://samplecic.ch/entwickler-liebling-aus-gutem-grund-googles-go-glanzt-durch-einfachheit.html
Комментарии
Отправить комментарий