Alle Pythonistas sollten zu Go wechseln… oder okay, vielleicht nur die Hälfte

Ihr durchschnittlicher Software-Ingenieur ist immer noch in Python verliebt. Sogar verheiratet.

Aber nicht die bei Google, Uber, Dropbox, Soundcloud, Slack und Medium. Die Programmierer der Top-Konzerne sind längst der Sprache verfallen mit das süße Maskottchen.

Das soll nicht heißen, dass Python nicht gut ist. Es ist großartig!

Aber sei es für APIs, Webservices oder Datenverarbeitung – während die meisten Entwickler noch Python verwenden, übernehmen Top-Performer immer mehr Golang oder Go. Weil es rockt.

Go wurde von einem erfunden All-Star-Trio bei Google: Robert Griesemer war einer der Köpfe hinter Googles V8-JavaScript-Maschine und Hauptentwickler von Sawzall, einer weiteren von Google erfundenen Sprache. Rob Pike hat die Unix-Umgebung mitentwickelt und die Programmiersprache Limbo mitentwickelt. Mit Ken Thompson hatte das Team den Erfinder von Unix und den Schöpfer der Sprache B – dem Vorgänger von C – an Bord.

Google war ursprünglich in Python geschrieben — ja, Python ist immer noch cool — aber um 2007 suchten Ingenieure nach einer besseren Sprache, um typische Aufgaben bei Google auszuführen. Laut a . stießen sie auf Probleme wie diese Vortrag von Rob Pike in 2012:

  • Langsame Builds: Es dauerte ewig, neuen Code zu produzieren. Kommt mir bekannt vor!
  • Unkontrollierte Abhängigkeiten: Haben Sie schon einmal versucht, ein Softwarepaket zu installieren, nur um herauszufinden, dass Sie mindestens fünf weitere Abhängigkeiten und zig Unterabhängigkeiten installieren müssen, damit es funktioniert? Es stellt sich heraus, dass sogar Google-Mitarbeiter dieses Problem haben.
  • Jeder Programmierer verwendet eine andere Teilmenge der Sprache: In Python verwendet ein Entwickler möglicherweise das NumPy-Paket, ein anderer bevorzugt SciPy und so weiter. Wenn Programmierer ihren Code zu einem Paket zusammenfügen möchten, wird es chaotisch.
  • Schlechtes Programmverständnis: Leute, die behaupten, Code zu verstehen, sobald sie ihn lesen, lügen. Zumindest, wenn es sich nicht um ein ganz einfaches „Hello World“-Programm handelt. Und die Dokumentation des Codes hilft oft nicht – in den meisten Fällen existiert er gar nicht oder ist schlecht geschrieben.
  • Doppelarbeit: Haben Sie schon einmal ein Stück Code aus einem Teil des Programms kopiert, nur um es woanders hin zu kopieren? Schlechte Praxis. Aber die meisten Programmiersprachen machen es einfach.
  • Kosten für Updates: Überrascht es Sie bei einem solchen Durcheinander wie oben wirklich, dass die Aktualisierung Ihrer Software viel Zeit und Intelligenz in Anspruch nehmen wird? Nicht cool.
  • Versionsverzerrung: Da doppelter Code im Umlauf ist, aktualisieren Ingenieure möglicherweise nur eine Version des ursprünglichen Code-Snippets und vergessen die anderen. Am Ende erhalten Sie also eine Version, die sowohl neuen als auch alten Code enthält. Klingt chaotisch? Es ist.
  • Schwierigkeiten beim Schreiben von automatischen Werkzeugen: Es ist möglich, Programme zu schreiben, die selbst Code schreiben – tatsächlich tun dies die meisten Programme irgendwann. Aber mit modernen Programmiersprachen ist das immer noch schwer zu schaffen.
  • Sprachübergreifende Builds: Sie kennen das Problem – Python eignet sich hervorragend für kleine bis mittlere Skripte, C++ eignet sich hervorragend für ausgefeilte Programme, Java eignet sich hervorragend für die Webentwicklung, Haskell eignet sich hervorragend für faulen, aber robusten Code. Das Ergebnis ist, dass ein einzelnes Programm oft Schnipsel aus vielen verschiedenen Sprachen enthält. Aber zum Kompilieren, Debuggen und aus Gründen der Sauberkeit ist es viel besser, ein Programm in einer einzigen Sprache zu schreiben.

Also machte sich das Trio daran, eine klare, einfache und lesbare Sprache zu entwerfen. Eine Sprache, die diese allzu häufigen Probleme in der Softwareentwicklung beseitigen oder zumindest erleichtern würde.

Die Wurzel vieler dieser häufigen Probleme ist die Komplexität moderner Sprachen. Denken Sie an Python oder C – haben Sie jemals versucht, die gesamte Dokumentation zu lesen? Viel Glück damit.

Im Gegensatz dazu ist das größte Merkmal von Go seine Einfachheit. Das bedeutet nicht, dass Sie damit keinen komplizierten Code erstellen können. Aber Go achtet sehr darauf, keine Funktionen zu haben, die mehr Komplexität bringen, ohne das Problem zu lösen.

Zum Beispiel, Go hat keine Kurse wie andere objektorientierte Sprachen. Klassen sind eine häufig verwendete Funktion anderer Sprachen und eignen sich hervorragend, um ein Objekt die Eigenschaften eines anderen Objekts erben zu lassen. Das Problem ist, dass Sie den Code zerstören, wenn Sie versuchen, die Struktur eines Objekts zu ändern, ohne die der anderen zu ändern. Go hat eine Alternative namens struct, die die Komposition der Vererbung vorzieht.

Weitere wichtige Funktionen von Go sind:

  • Typsicherheit: In C können Sie Zeiger verwenden, um fast alles zu tun – einschließlich des Absturzes des Programms. Go lässt dich nicht so herumalbern.
  • Lesbarkeit: Wie bei Python steht bei Go die Lesbarkeit an erster Stelle. Dies macht es anfängerfreundlicher als die meisten Sprachen und erleichtert die Wartung des Codes.
  • Dokumentation: Besonders junge Entwickler finden es mühsam, einen Klappentext über Ihren Code zu schreiben, damit andere ihn verwenden können. Mit Godoc, ist dieser Prozess viel automatisierter als in den meisten Sprachen – und die Entwickler müssen keine wertvolle Zeit damit verschwenden, aufzuschreiben, was sie getan haben.
  • Orthogonalität: Das heißt, wenn Sie ein Objekt in Ihrem Code ändern, ändert sich deswegen kein anderes Objekt. In diesem Sinne a Radio ist orthogonal denn die Lautstärke ändert sich nicht, wenn Sie den Sender wechseln. Ganz im Gegensatz zu C zum Beispiel – wenn Sie eine Sache ändern, können andere davon abhängen und sich auch ändern. Go ist orthogonal, weil es die Dinge einfacher macht.
  • Minimalität: In Go gibt es nur eine Möglichkeit, ein Stück Code zu schreiben. Vergleichen Sie das mit Python, wo Sie unzählige Möglichkeiten haben, eine Sache zu schreiben!
  • Praktikabilität: Wichtige Dinge sollten einfach zu programmieren sein – auch wenn das bedeutet, dass andere Dinge in Go unmöglich sind. Die Logik hier ist, dass Sie die Produktivität eines Entwicklers steigern möchten, indem Sie wiederkehrende Aufgaben schnell und einfach machen. Und wenn es ein komplexeres Problem gibt – was ohnehin selten vorkommt – können sie das immer in einer anderen Sprache schreiben.

All das mag langweilig und unkreativ klingen. Und in gewisser Weise stimmt das – dies ist keine Sprache mit funky Features, mit denen man andere beeindrucken könnte, eine Fülle von Möglichkeiten, ein Problem zu lösen, keine Freiheit ohne Grenzen. Go ist keine Sprache, die zum Erkunden oder Forschen da ist.

Aber es ist erstaunlich, wenn Sie versuchen, etwas zu bauen, das funktioniert. Wenn Sie in einem Team mit vielen verschiedenen Leuten mit unterschiedlichem Hintergrund arbeiten, die an demselben Code arbeiten. Wenn Sie das Durcheinander, das Ihnen mit anderen Sprachen begegnet, satt haben.

…Mit einer blühenden Gemeinschaft

Aufgrund seiner Einfachheit ist Go eine der kollaborativsten Sprachen, die es heutzutage gibt. Die Zeiten, in denen Programmierer in ihren kleinen Kabinen saßen und sich nie begegneten, sind vorbei.

Jetzt haben wir StackExchange, um alle unsere Codierungsprobleme zu lösen. Und wir haben Slack, Zoom, Google Meet und mehr, um mit unserem Team in Kontakt zu bleiben. Aber moderne Sprachen sind immer noch auf den kleinen Nerd in der Kabine zugeschnitten.

Go ändert das. Obwohl es zwanzig Jahre jünger ist als Python, hat es eine lebendige Community.

Kein Wunder also, dass sie Respekt, Offenheit und Freundlichkeit ganz oben auf ihre Verhaltenskodex. Während andere Sprachen, wie Python oder C, vergleichbare Community-Statements haben, wird auf diese Grundwerte weniger Wert gelegt.

Kein Wunder also, dass die Community bei den jährlichen Go-Umfragen eine explizite Rolle spielt – anders als in vielen anderen Sprachen.

Die Fragen zu Community und Leadership aus der Go-Entwicklerumfrage 2020

Die Daten sprechen für sich

Laut 2020 Go-Umfrage, Googles Sprache wird hauptsächlich für die Webentwicklung, Netzwerk- und Systemprogrammierung verwendet. Die Landschaft für Python sieht ziemlich ähnlich aus:

Verwendungen von Python aus der Python-Entwicklerumfrage 2020.

Der einzige auffällige Unterschied besteht darin, wie viel Python für die Datenanalyse und das maschinelle Lernen verwendet wird. Und auf diesen Domains andere heiße neue Sprachen entstehen.

Abgesehen davon können Sie sehen, dass viele der Verwendungen von Python durch Go ersetzt werden könnten. Dazu gehören 50 % in der Webentwicklung, 38 % in der Systemadministration und DevOps und 19 % in der Netzwerkprogrammierung. Selbst wenn Sie davon ausgehen, dass viele Entwickler alle drei dieser Aufgaben erledigen, können Sie davon ausgehen, dass die Hälfte der Pythonistas Dinge tut, die sie in Go tun könnten.

Tatsächlich sind sich Entwickler des enormen Potenzials bewusst, das Go bietet. Entsprechend Hackerrang, wollte im Jahr 2020 etwa ein Drittel aller Programmierer Go lernen.

golang

Der Trend ist real – und da Go kinderleicht zu erlernen ist, sollten wir in den nächsten Jahren einen Wechsel von Python zu Go sehen. Für die meisten Unternehmen – insbesondere für diejenigen, die nicht so groß und finanzstark sind wie Dropbox oder Medium – wird es zu teuer, ihren gesamten Code auf Go umzuschreiben. Aber bei neuen Projekten sollte man es zumindest ausprobieren.

Bei den größten Unternehmen bauen Entwickler bereits mit Go ihren Erfolg auf. Wann wirst du?

Dieser Artikel wurde geschrieben von Rhea Moutafis und wurde ursprünglich veröffentlicht auf Auf dem Weg zur Datenwissenschaft. Du kannst Lies es Hier.


Source: The Next Web by feedproxy.google.com.

*The article has been translated based on the content of The Next Web by feedproxy.google.com. If there is any problem regarding the content, copyright, please leave a report below the article. We will try to process as quickly as possible to protect the rights of the author. Thank you very much!

*We just want readers to access information more quickly and easily with other multilingual content, instead of information only available in a certain language.

*We always respect the copyright of the content of the author and always include the original link of the source article.If the author disagrees, just leave the report below the article, the article will be edited or deleted at the request of the author. Thanks very much! Best regards!