Rob Pike Interview

Rob Pike im Interview: „Go wurde in der Tat zur Sprache der Cloud-Infrastruktur“

Vorwort

Wir haben mit Rob Pike, Co-Autor der Programmiersprache Go, über eine vier Jahrzehnte lange Karriere und die Entwicklung von Go in den letzten zehn Jahren und in der Zukunft gesprochen.

Das Interview

Evrone: Im Gegensatz zu vielen heutigen Entwicklern haben Sie Ihre Karriere vor Jahrzehnten bei Bell Labs begonnen. Was war Ihrer Erfahrung nach die größte Veränderung in der Herangehensweise, wie wir Software entwickeln?

Rob: Das Ausmaß ist heute viel größer. Nicht nur im Bezug auf Computer und Netzwerke, sondern auch auf die Programme selbst. Die gesamte Unix-Version 6 (ca. 1975) passt bequem auf ein einziges RK05 Disk Pack, das etwas mehr als 2 MB Speicherplatz hat. Da bleibt viel Platz für Anwendersoftware übrig. Das schien zumindest damals eine ausreichende Entwicklungsumgebung zu sein. Obwohl ich natürlich vieles von dem Wachstum erklären kann, ist es dennoch erstaunlich, und vielleicht ist auch nicht alles davon gerechtfertigt.

 

Evrone: Wie sehen Sie Im Hinblick auf eine fehlende Akzeptanz bezüglich Änderungen und Kompatibilitätsversprechen die nächsten 10 Jahre für die Programmiersprache Go und ihr Ökosystem? Wie sieht die optimale Zukunft aus, die Sie sich für Ihre Technologie ausmalen?

Rob: Obwohl es bei weitem nicht sicher ist, sieht es nach mehr als einem Jahrzehnt Arbeit nach einem Entwurf für parametrischen Polymorphismus aus. Was umgangssprachlich aber irreführenderweise als Generika bezeichnet wird, kommt in den nächsten ein oder zwei Jahren. Es war eine große Herausforderung, ein Design zu finden, das innerhalb der bestehenden Sprache funktioniert und sich so anfühlt, als gehöre es dazu. Ian Taylor hat allerdings phänomenal viel Energie in das Projekt investiert, und es sieht so aus, als seien wir fast am Ziel angelangt.

Wie sich dies auf die Bibliotheken, das Ökosystem und die Community auswirkt, wird faszinierend zu beobachten sein.

 

Evrone: Mit der Einführung der „graduellen Typisierung“ in die „dynamisch typisierenden“ Sprachen und der „Typinferenz“ in die „statisch typisierenden“ Sprachen gleichen sich die beiden immer mehr. Was ist Ihre Meinung zur Typisierung in modernen Programmiersprachen?

Rob: Ich bin aufgrund der Stabilität und Sicherheit, die sie mit sich bringt, ein großer Fan der statischen Typisierung.

Ich bin allerdings auch ein großer Fan der dynamischen Typisierung, weil sie Spaß macht und ein Gefühl von Leichtigkeit mit sich bringt. (Als Randbemerkung sei angemerkt, dass das große Interesse an integrierten Unit-Tests Sprachen wie Python zugeschrieben werden kann. Python hat das Testing vorangetrieben, um die Korrektheit zu demonstrieren, die das Typisierungssystem nicht liefern konnte.)

Ich bin kein Fan von typengesteuerter Programmierung, Typhierarchien und Klassen mit Vererbung. Obwohl viele äußerst erfolgreiche Projekte auf diese Weise gebaut wurden, bin ich der Meinung, dass dieser Ansatz wichtige Entscheidungen zu früh in die Entwurfsphase drängt, bevor die Erfahrung, die man sammelt, eine Rolle spielt. Mit anderen Worten, ich ziehe Komposition der Vererbung vor.

Denjenigen jedoch, die sich damit wohlfühlen, die Vererbung zur Strukturierung ihrer Programme zu nutzen, gebe ich den Hinweis: Nutzen Sie bitte weiterhin das, was für Sie am besten funktioniert.

 

Evrone: Manchmal nutzen Menschen Technologien auf seltsame Weise. Ein Beispiel ist das Generieren effizienten Go-Codes aus einem High-Level-Python- oder Ruby-Code. (Ja, das geht!) Was war im Laufe der Jahre die seltsamste, kreativste oder amüsanteste Verwendung von Go, die Sie je gesehen haben? Was hat Sie am meisten überrascht?

Rob: Die größte Überraschung war, als wir erfahren haben, dass Go zum Schreiben von Malware verwendet wurde. Man kann nicht kontrollieren, was mit der eigenen Arbeit am Ende alles angestellt wird.

 

Evrone: Sie haben eine Reihe von Texteditoren erstellt. Was halten Sie von Visual Studio Code? Mit Technologien wie LSP ist die Grenze zwischen „Texteditor“ und IDE noch mehr verschwommen. Denken Sie, dass Software-Entwickler voll funktionsfähige IDEs wie GoLand benötigen oder dass beispielsweise VSCode ausreicht?

Rob: Ich komme aus einer anderen Zeit, in der es noch keine IDEs gab. Es stand allerdings schon in der Anfangszeit zur Diskussion, ob Go eine IDE braucht, um erfolgreich zu sein. Keiner im Team hatte jedoch die richtigen Kenntnisse, deshalb haben wir nie versucht, eine IDE zu entwickeln. Wir haben jedoch Kernbibliotheken zum Parsen und Printen von Go-Code erstellt, die hochwertige Plugins für alle Arten von Editoren und IDEs ermöglicht haben. Damit waren wir glücklicherweise erfolgreich.

In der letzten Zeit haben wir viel an einem LSP-Server für Go gearbeitet. Er trägt den Namen gopls und kann von jedem Editor oder jeder IDE, die dieses Protokoll unterstützt, verwendet werden, um das Arbeiten mit der Sprache zu erleichtern.

Vielleicht hat uns das komfortable Arbeiten mit einfacheren Editoren dazu gebracht, Go so zu entwickeln, dass man auf einfache Weise programmieren kann, ohne viel auf die Programmierumgebung auszulagern. Eine IDE kann aber sicherlich helfen: die meisten, die ich heute mit Go arbeiten sehe, benutzen eine IDE oder einen Editor mit benutzerdefinierter Go-Unterstützung, und sie profitieren davon sehr.

Die Frage nach dem richtigen Editor ist eine Geschmacksfrage, die durch die Kultur der Sprache, in der man arbeitet, beeinflusst wird.

 

Evrone: Software-Entwickler neigen dazu, Dinge zu labeln, wie z. B. Dart als „Frontend-Sprache“ und C als „Low-Level System-Sprache“ etc. Wie würden Sie Go jetzt nennen, angesichts des Funktionsumfangs und der Verwendung der Sprache?

Rob:Go ist eine Allzweck-Programmiersprache. Man kann damit schreiben, was immer man will, und man muss sich keine Gedanken darüber machen, die Sprache – oder irgendeine andere Form von Technologie – an eine einzige Problemdomäne zu binden.

 

Evrone: Welche anderen modernen Programmiersprachen gefallen Ihnen persönlich?

Rob: Die Erfahrung mit Go hat mich gelehrt, dass die Menschen es lieben, Ihre Meinung zu Sprachen kund zu tun. Vielleicht sogar mehr als zu fast jedem anderen Element unseres Fachgebiets. Ich zähle mich da auch dazu. Aber ich habe diese Negativität, die oft entsteht, satt. Deshalb versuche ich jetzt zu vermeiden, Sachen im Auftrag anderer zu beurteilen.

In den letzten etwa 10 Jahren gab es, in einer Zeit mit sehr wenigen neuen, erfolgreichen Sprachen, eine echte Renaissance des Sprachdesigns. Das ist großartig und bringt viele neue Innovationen.

 

Evrone: Wie hilft Ihnen Ihr Job als Google-Mitarbeiter bei der Entwicklung der Go-Sprache? Was für eine Rolle spielt es, auf Twitter fragen zu können „wie verwendet ihr unsere Programmiersprache?“ und eine Antwort von den größten Unternehmen weltweit zu erhalten? Ist so etwas nur ein nettes Gimmick oder wesentlicher Teil der Sprachentwicklung? Wie profitieren Sie von Google?

Rob: Google war sehr großzügig bei der Unterstützung des Go-Projekts, wofür ich sehr dankbar bin. Und natürlich wurde die Sprache entwickelt, weil wir der Meinung waren, dass Google sie braucht. Das, was als „Cloud Computing“ bezeichnet wurde, benötigte unter anderem eine Sprache für einfaches Deployment und einer Unterstützung von Parallelität. Google hat das Projekt allerdings auf keine nennenswerte Weise gesteuert. Google unterstützt uns und lässt uns das tun, was wir für richtig halten.

Was andere Unternehmen und andere Benutzer betrifft, so ist der Beitrag der Community essenziell, um zu verstehen, wie das Projekt, d. h. die Sprache, der Compiler, die Tools, die Laufzeit, die Bibliothek und die Umgebung sich entwickelt.

 

Evrone: Was würden Sie sagen ist nach 10 Jahren Go-Entwicklung der größte Designerfolg, und was war der größte Misserfolg? Die stärksten und schwächsten Punkte der Sprache?

Rob: Ich möchte zwei Dinge hervorheben, ein technisches und ein politisches.

Die technische ist eine erstklassige Unterstützung paralleler Berechnungen. Go ist erst etwa ein Jahrzehnt alt, aber als es entwickelt wurde, waren „Threading“ und Parallelität in der Community nicht sehr beliebt. Tatsächlich war zu dieser Zeit ein Hauptgrund für die Entwicklung von Go das Problem, parallele Berechnungen in C++ durchzuführen. Schon kurz nach dem Start wurde uns klar, dass das Unterstützen paralleler Berechnungen enorm wichtig war und für viele User andere Schwachstellen kompensierte. Die Parallelität hat einen Nerv getroffen. Nachdem die Nutzer mit der Parallelität experimentiert hatten, haben sie angefangen, einen genaueren Blick auf die Sprache zu werfen und konnten feststellen, dass doch mehr dahintersteckt, als ursprünglich angenommen. Die Unterstützung von Parallelität war unser Gateway.

Wie John Graham-Cumming von Cloudflare sagt:, " „Ich bin wegen der einfachen Parallelität gekommen, und ich bin wegen der einfachen Komposition geblieben“".

Go hat verändert, wie wir über die Programmierung von Multicore-Computern denken.

Der politische Erfolg war das feste Kompatibilitätsversprechen für Go Version 1. Nachdem wir und die Community Go einige Jahre lang benutzt hatten, entstand eine lange Liste von Dingen, um die wir uns kümmern wollten. Veränderungen können allerdings das Ökosystem stören. Also haben wir uns ein sorgfältiges Aktualisierungsprogramm überlegt, mit dem wir die Community mit dem Befehl „go fix“ mitziehen konnten. Anschließend haben wir versprochen, mit den Updates aufzuhören. Diese Stabilität – Go-Programme, die 2012 geschrieben wurden, können auch heute noch compiled werden und werden perfekt laufen – war eine enorme Triebfeder für das Wachstum der Sprache. Jedes Unternehmen konnte die Sprache mit der Gewissheit verwenden, dass wir ihre Software nicht kaputt machen würden. Die Adoptionsrate ist dramatisch angestiegen, nachdem Version 1 und ihr Kompatibilitätsversprechen an die Öffentlichkeit gingen. Und obwohl wir inzwischen viele neue Dinge entdeckt haben, die wir gerne ändern würden, können wir bestehende Programme nicht einfach kaputtmachen. Und das ist völlig in Ordnung für uns.

 

Evrone: Wie sieht Ihre Work-Life-Balance aus? Es wird derzeit viel über Burnouts gesprochen, und die aktuelle Epidemie bringt da keinen Trost. Irgendwelche Tipps aus Ihrer 40-jährigen Reise für die neue Generation von Entwicklern?

Rob: Der beste Weg, Burnouts zu vermeiden, ist etwas zu tun, das wirklich Spaß macht, und zwar in einer Umgebung, die einem gut tut. Ich hatte in dieser Hinsicht während meiner gesamten Karriere sehr viel Glück, aber mir ist bewusst, dass es nicht jedem so ergeht. Wer sich durch die Arbeit gestresst fühlt, sollte sich die Zeit für eine Pause nehmen oder eine andere Richtung einschlagen, besonders in unserer aktuellen Situation.

 

Evrone: Rückblickend kann man sagen, dass die Popularität vieler Technologien den so genannten „Killer-Apps“ zugeschrieben wird, die sie populär gemacht haben. Können Sie eine solche Killer-App für die Go-Programmiersprache nennen? Und was halten Sie von der Idee solcher Apps im Allgemeinen?

Rob:Vor ein paar Jahren hat Danny Berkholz Go „die aufstrebende Sprache der Cloud-Infrastruktur“ genannt, und das war kein Zufall. Go wurde von Google-Mitarbeitern entwickelt, um das Schreiben Google-relevanter Software, insbesondere von Servern im Netzwerk, zu erleichtern. Das nennen wir heute „Cloud“. (Ein Teil der Motivation für das Design findet sich in meiner Splash-Keynote von 2012: Go at Google: Language Design in the Service of Software Engineering.)

Obwohl es also erfreulich und wichtig war, Docker, Kubernetes und viele andere Komponenten von Cloud Computing in Go geschrieben zu sehen, war es vielleicht auch nicht allzu überraschend. Go ist in der Tat zur Sprache der Cloud-Infrastruktur geworden.

 

Evrone:Welche Konkurrenz sehen Sie derzeit für die Programmiersprache Go und in welchem Bereich? Was halten Sie von Rust, dem „Keine Garbage Collection“-Ansatz und den Kompilierzeit-Garantien der Sprache?

Rob: Rust ist eine faszinierende Sprache, und ich verfolge ihre Entwicklung mit großem Interesse. Abgesehen davon will ich mich dazu – wie zuvor schon erwähnt – nicht weiter im Detail äußern.

 

Evrone: Go hat vor Kurzem 70k Sterne auf GitHub erreicht! Wie beeinflussen Ihrer Meinung nach verschiedene soziale Aktivitäten wie GitHub, Reddit, Twitter, Offline- und Online-Konferenzen, Webinare usw. die Sprache? Sind sie wichtig für den Erfolg der Sprache oder spiegeln sie ihn nur wider?

Rob:Die Menschen, die wir durch Konferenzen und Social Media kennen gelernt haben, waren ein entscheidender Teil der Entwicklung von Go und all ihren Bestandteilen. Sehr viele Mitwirkende haben die Entwicklung in positiver Weise beeinflusst, darunter die ursprüngliche Portierung auf Windows sowie eine Reihe von nicht-x86-Architekturen, die Entwicklung von Tools und Bibliotheken, durchdachte Diskussionen über technische Vorschläge und noch viel mehr.

Umgekehrt bezieht das Go-Team die Community in Diskussionen mit ein, stellt Fragen und sucht nach Anregungen sowie Unterstützung.

Eine Sache, die ich für wichtig halte, ist es, als Team mit der Community zu kommunizieren, nicht als Einzelpersonen. Konsistente Informationen seitens des Go-Teams sind für die Benutzer leichter zu verstehen.

 

Evrone: Wie hat die Tatsache, Autor einer der populärsten Programmiersprachen zu sein, Ihr Leben verändert?

Rob: Ich bin Co-Autor, nicht Autor. Ken Thompson und Robert Griesemer haben das Projekt mit mir begonnen, und viele andere haben massiv dazu beigetragen. Also nennen Sie mich bitte nicht „den Autor“.

Um Ihre Frage zu beantworten: Go hat sicherlich mein öffentliches Profil gepushed und mir eine neue und lebendige Community beschert, aber darüber hinaus hat sich mein Leben nicht sonderlich verändert. Ich habe eine lange Karriere mit anderen Erfolgen (und unzähligen Misserfolgen) hinter mir.

 

Evrone:Stellen Sie sich vor, Sie hätten die Möglichkeit, in der Zeit zurückzureisen und Ihrem jüngeren Ich nur einen einzigen Ratschlag zu geben. Etwa zu der Zeit, als Sie mit dem Entwurf der Go-Sprache begonnen haben. Welchen Rat würden Sie sich selbst und Ihren Kollegen geben?

Rob:Das ist einfach: Ignoriere die Hater. Hör nur auf die Menschen, die deine Ziele verstehen und teilen. Sie sind diejenigen, um die man sich kümmern muss. Nicht jeder stimmt dem zu, was du tust, und das ist okay. Aber diejenigen, die sich dafür engagieren, das voranzubringen, was du zu erreichen versuchst, können eine wahnsinnige Ideen-, Energie- und Inspirationsquelle sein.

Wir werden unserer leidenschaftlichen Community immer dankbar sein.

 

Wir bei Evrone sind stolz darauf, stets die besten Tools zu verwenden, sei es Ruby on Rails, Python, Elixir, oder natürlich Go. Wir haben stets die neuesten Technologien im Blick, um die besten und geeignetsten Lösungen für die Bedürfnisse unserer Kunden anbieten zu können. Und wir setzen alles daran, Entwickler-Communitys zusammenzubringen.

Kontaktieren Sie uns
Schwebt Ihnen ein Projekt vor?
Setzen wir es gemeinsam um
Datei anhängen
Die Dateien müssen kleiner als 8 MB sein.
Zulässige Dateierweiterungen: jpg jpeg png txt rtf pdf doc docx ppt pptx.
Diese Website wird durch reCAPTCHA geschützt. Es gelten die Datenschutzerklärung und die Nutzungsbedingungen von Google.