Das Internet ist voll von großartigen Codes. Sie bilden das Fundament, auf dem verschiedene Infrastrukturen aufgebaut sind. Sogar die Plattform, auf der Sie dies lesen, wurde mit dem Ziel entwickelt, großartige Codes zu erstellen. Während der Durchschnittsnutzer davon nichts mitbekommt, sind gute Entwickler stets bestrebt, ihre Anwendungen (und damit auch ihren Code) zu verbessern.
Das Fundament, auf dem großartiger Code geschrieben wird, beruht auf den Fähigkeiten des Entwicklers und der von ihm gewählten Sprache. Das führt unweigerlich zu epischen Auseinandersetzungen zwischen Entwicklern, nicht nur wegen ihrer Fähigkeiten, sondern vor allem wegen ihrer bevorzugten Sprache. Zu diesem Ergebnis kommt man höchstwahrscheinlich, wenn man zwei großartige Programmiersprachen wie Golang (Go) und Python nebeneinander stellt.
Lassen Sie uns jedoch einen Schritt zurücktreten und beide Sprachen unter dem Gesichtspunkt ihrer Vorzüge und ihrer Funktionalität bewerten. Lassen wir persönliche Voreingenommenheit und Vorlieben beiseite. Dann gleichen wir das Spielfeld aus, was die Fähigkeiten angeht. Jetzt haben wir nur noch zwei große Möglichkeiten: Go gegen Python. Die Frage ist nun, was ist das Richtige für Sie?
- Die Geschichte von Python
- Apropos Golang (Go)
- Golang vs. Python Leistung
- Binärsuche
- Bubble sort
- Lesen aus Datei
- HTTP Request handling
- Python vs. Golang Web-Frameworks
- Gin
- Echo
- Go-Kit
- Unternehmen, die Golang verwenden
- PayPal nutzt Golang zur Modernisierung und Skalierung
- American Express verwendet Golang für Zahlungen & Belohnungen
- Salesforce hat Python für Golang in Einstein Analytics aufgegeben
- Stream – Warum wir von Python auf Go umgestiegen sind
- Pydio hat unternehmenstaugliches Filesharing in Golang umgeschrieben
- Repustate migrierte die API von Python (zuerst Django, dann Falcon) auf Go
- Welche Wahl?
- Golang ist schnell zu erlernen, zu entwickeln und auszuführen
Die Geschichte von Python
Fragen Sie einige Entwickler und Sie werden hören, dass es nichts vor Python gab und nichts danach geben wird. Im Laufe der Jahre hat es Python geschafft, eine kultähnliche Anhängerschaft zu gewinnen, weil es eine sehr gute Programmiersprache ist. Das Internet ist voll von Wundern, die mit Python erstellt wurden.
Python ist alt, was die Programmierjahre angeht. Es wurde 1991 zum ersten Mal erdacht. Und mit dem Alter kommen gewisse Vorteile. Es hat eine große Anhängerschaft, was dazu führt, dass es stabil und gut dokumentiert ist. In den meisten Fällen finden Sie Bibliotheken für fast alles und Codebeispiele für so ziemlich alles, was Sie sich vorstellen können. Für Entwickler und Unternehmen bedeutet dies, dass die Verwendung von Python eine Fülle von Erfahrungen und Programmierungen mit sich bringt, die nur darauf warten, genutzt zu werden.
Es gibt viele Open-Source-Projekte, die Python als Grundlage verwenden, so dass Sie in den meisten Fällen nicht bei Null anfangen müssen. Python ist gut in Unternehmensanwendungen integriert und kann in Maschinensprache und KI-Anwendungen eingesetzt werden. Aber es hat auch seine Nachteile. Zum einen ist es nicht ideal für speicherintensive Aufgaben, ein bisschen langsam in der Ausführung und ungeeignet für die Entwicklung mobiler Anwendungen.
Apropos Golang (Go)
Es wurde 2009 bei Google entwickelt. Go war eine Lösung für ein Problem. Ziel war es, eine Sprache zu schaffen, die all den Ballast und die Auswüchse von Sprachen wie C++ beseitigt. Dadurch erhält sie einen Leistungs- und Geschwindigkeitsschub, der die Arbeit mit ihr zu einem Vergnügen macht. Außerdem werden die meisten Entwickler, die Go zum ersten Mal verwenden, nicht überfordert sein, denn die vertrauten Elemente und die einfache Bedienung werden sie angenehm überraschen.
Das soll nicht heißen, dass die Sprache in allen Fällen perfekt ist. Sie bringt zwar Geschwindigkeit und Eleganz auf die nächste Stufe, lässt aber auch einige Dinge zu wünschen übrig. Zum einen verfügt sie weder über eine umfangreiche Bibliothek noch über eine Unterstützung für Vererbung. Außerdem gibt es keine GUI-Bibliothek oder Unterstützung für objektorientierte Programmierung. Was für Golang spricht, sind die leichtgewichtigen Threads (Goroutines), die intelligente Standardbibliothek, die starke eingebaute Sicherheit und die einfache Programmierung mit minimaler Syntax.
Golang vs. Python Leistung
Wir können endlos über die Vor- und Nachteile von Golang oder Python reden, aber wenn es darauf ankommt, achten wir alle darauf, wie sie funktionieren. Also haben wir einige Tests auf unserem Testsystem mit einer Intel® Core™ i7-9700K CPU @ 3.60GHz × 8 Kerne durchgeführt. Und der verwendete Code ist hier verfügbar.
Binärsuche
Wir haben Listen von Ints (von 1 bis 100000) erstellt und dann die Binärsuche verwendet, um immer die gleiche Zahl 729 zu finden. Die Ergebnisse sind:
Sprache | Geschwindigkeit |
---|---|
Go | 20.8 ns/op |
Python | 2442.13377 ns/op |
Bubble sort
Wieder haben wir eine Liste von ganzen Zahlen erzeugt (diesmal zufällige, 10000 Elemente lang) und diese mit Bubble-Sort-Algorithmen sortiert.
Sprache | Geschwindigkeit |
---|---|
Go | 90805247 ns/op (0,09s) |
Python | 6708160950.6 ns/op (6,7s) |
Lesen aus Datei
Ein einfacher Test des Lesens einer „lorem ipsum“ Textdatei.
Sprache | Geschwindigkeit |
---|---|
Go | 5305 ns/op |
Python | 58359 ns/op |
HTTP Request handling
Einen HTTP-Server zu bauen ist wirklich einfach, aber wir haben uns die Mühe gemacht und den analogen Server in Python erstellt. Wir haben überprüft, wie lange es dauern würde, eine einfache „Hallo Welt!“-Nachricht zu beantworten.
Sprache | Geschwindigkeit |
---|---|
Go | 0.070 ms/RQ |
Python | 1.261 ms/RQ |
Python vs. Golang Web-Frameworks
Einer der größten Vorteile der Verwendung von Python ist die große Sammlung von Bibliotheken und Frameworks, die verfügbar sind. Django und Flask sind zwei der populärsten Python-Webframeworks, mit denen man in kürzester Zeit eine Webanwendung oder API erstellen kann.
Golang hat kein einziges dominantes Framework wie Django für Python oder Laravel für PHP und die Go-Community ist in gewisser Weise abgeneigt gegenüber Frameworks. Die Ergebnisse der Go-Umfrage 2018 zeigen, dass die Webentwicklung in Golang mit 65 % am weitesten verbreitet ist und ihre Dominanz als primärer Bereich, in dem die Umfrageteilnehmer arbeiten, zugenommen hat (von 61 % im letzten Jahr): die Webentwicklung ist seit 2016 die häufigste Domäne für die Go-Entwicklung.
Hier die beliebtesten Golang-Web-Frameworks:
Gin
Gin ist ein Golang-Web-Framework, das für die Entwicklung hochleistungsfähiger APIs bekannt ist. Es ist auch eines der am einfachsten zu erlernenden Frameworks. Es dauert etwa 10 Minuten, um sich einzuarbeiten. Wenn Sie Leistung und gute Produktivität brauchen, werden Sie Gin lieben.
Features
- Schnellere Leistung: Radix-Baum-basiertes Routing, geringer Speicherbedarf
- Middleware-Unterstützung: Eine eingehende HTTP-Anfrage kann von einer Kette von Middlewares und der endgültigen Aktion bearbeitet werden
- Routen gruppieren: Organisieren Sie Ihre Routen besser
- Fehlerverwaltung: Gin bietet eine bequeme Möglichkeit, alle während einer HTTP-Anfrage aufgetretenen Fehler zu sammeln
- Eingebautes Rendering: Gin bietet eine einfach zu verwendende API für JSON-, XML- und HTML-Rendering
- Erweiterbar: Das Erstellen einer neuen Middleware ist so einfach, schauen Sie sich einfach die Beispielcodes an
Echo
Echo ist ein hochleistungsfähiges, erweiterbares und minimalistisches Go-Webframework, das optimierte HTTP-Router, Gruppen-APIs, Datenbindung für JSON und XML, HTTP/2-Unterstützung und vieles mehr bietet.
Während Gin ein wenig beliebter ist (36k GitHub-Sterne), entscheiden sich viele Entwickler für Echo (16k GitHub-Sterne), weil es eine bessere Dokumentation hat und ein etwas schnelleres Framework ist.
Merkmale
- Optimierter HTTP-Router, der Routen intelligent priorisiert
- Robuste und skalierbare RESTful API, einfach in Gruppen organisiert
- Erweiterbares Middleware-Framework, viele eingebaute Middlewares, Middleware kann auf Root-, Gruppen- oder Routenebene eingestellt werden
- Datenbindung für JSON, XML und Form Payload
- Handliche Funktionen zum Senden einer Vielzahl von HTTP-Antworten, einschließlich JSON, XML, HTML, File, Attachment, Inline, Stream oder Blob
- Angepasste zentrale HTTP-Fehlerbehandlung und leicht erweiterbare API
Go-Kit
Go-Kit ist ein Programmier-Toolkit zum Aufbau von Microservices (oder eleganten Monolithen). Go Kit ist ein eigenwilliges Framework. Es löst häufige Probleme in verteilten Systemen und Anwendungsarchitekturen, damit Sie sich auf die Bereitstellung von Geschäftswert konzentrieren können.
Merkmale
- Betreiben Sie eine heterogene SOA – erwarten Sie die Interaktion mit meist nicht-Go-kit Services
- RPC als primäres Messaging Pattern
- Steckbare Serialisierung und Transport – nicht nur JSON über HTTP
- Betrieb innerhalb bestehender Infrastrukturen – keine Mandate für bestimmte Tools oder Technologien
Unternehmen, die Golang verwenden
Golang wird von vielen Top-Unternehmen eingesetzt. Es gibt über eine Million Entwickler, die Go weltweit nutzen – in den Bereichen Banken und Handel, Spiele und Medien, Technologie und anderen Branchen, in so unterschiedlichen Unternehmen wie PayPal, Capital One, IBM, Salesforce, Twitch, Uber, Dropbox und natürlich Google.
Hier sind einige Fallbeispiele:
PayPal nutzt Golang zur Modernisierung und Skalierung
Go’s Wert bei der Produktion von sauberem, effizientem Code, der leicht skaliert werden kann, wenn die Softwarebereitstellung skaliert, machte die Sprache zu einer guten Wahl, um die Ziele von PayPal zu unterstützen.
Fallstudie ansehen →
American Express verwendet Golang für Zahlungen & Belohnungen
Go bietet American Express die Geschwindigkeit und Skalierbarkeit, die es für seine Zahlungs- und Belohnungsnetzwerke benötigt.
Fallstudie ansehen →
Salesforce hat Python für Golang in Einstein Analytics aufgegeben
Salesforce erklärt, warum Googles Programmiersprache Go für Einstein Analytics besser geeignet ist als Python und C.
Fallstudie ansehen →
Stream – Warum wir von Python auf Go umgestiegen sind
Wir haben ein kleines Entwicklungsteam bei Stream, das Feeds und Chats für über 500 Millionen Endnutzer betreibt. Go’s Kombination aus einem großartigen Ökosystem, einfachem Onboarding für neue Entwickler, schneller Leistung, solider Unterstützung für Gleichzeitigkeit und einer produktiven Programmierumgebung machen es zu einer großartigen Wahl.
Fallstudie ansehen →
Pydio hat unternehmenstaugliches Filesharing in Golang umgeschrieben
Pydio, eine Cloud-Speicherlösung aus der Zeit vor Dropbox, wurde zu einer vollwertigen Sync-and-Share-Plattform und die Anwendung blieb bei ihrem ursprünglichen technischen Stack: LAMP, d. h. Linux/Apache/MySQL/PHP. Lesen Sie einen Artikel über die Beweggründe, die Anwendung komplett in Golang umzuschreiben, die neue Architektur und die Entscheidungen, die dahinter stehen.
Fallstudie ansehen →
Repustate migrierte die API von Python (zuerst Django, dann Falcon) auf Go
Die Migration reduzierte die Anzahl der benötigten EC2-Instanzen um 85 % und die durchschnittliche Antwortzeit eines API-Aufrufs von 100 ms auf 10 ms. Aufgrund der Ähnlichkeit zwischen Python und Go konnten sie unsere in Go geschriebenen Unit-Tests mit ein paar einfachen sed-Skripten schnell an die von Go geforderte Struktur anpassen.
Fallstudie ansehen →
Welche Wahl?
Während Python ein Favorit der Community geblieben ist und im ersten Quartal 2019 den Platz 2 der schnellsten Programmiersprache auf GitHub in Bezug auf Pull-Requests (+17 %) beibehalten hat, ist Golang nicht so weit zurück und ist ihm auf Platz 4 (+8 %) dicht auf den Fersen. Die Entscheidung zwischen Golang und Python wird damit noch unschärfer. Unabhängig davon gibt es ein paar Dinge zu beachten, wenn Sie sich für die richtige Lösung entscheiden.
-
Skalierbarkeit: Golang wurde mit Blick auf Skalierbarkeit entwickelt. Es kommt mit eingebauter Gleichzeitigkeit, um mehrere Aufgaben gleichzeitig zu bearbeiten. Python verwendet zwar Gleichzeitigkeit, aber sie ist nicht eingebaut; es implementiert Parallelität durch Threads. Das bedeutet, dass Golang die bessere Wahl ist, wenn Sie mit großen Datensätzen arbeiten wollen.
-
Leistung: Python ist nicht dafür bekannt, speicher- oder CPU-freundlich zu sein, aber mit seiner großen Anzahl von Bibliotheken ist Python für grundlegende Entwicklungsaufgaben effizient. Golang kommt mit eingebauten Funktionen und ist besser für Microservices-Softwarearchitekturen geeignet.
-
Anwendungen: Python glänzt, wenn es zum Schreiben von Codes für künstliche Intelligenz, Datenanalyse, Deep Learning und Webentwicklung verwendet wird. Während Golang für die Systemprogrammierung verwendet wurde, wird es von Entwicklern geliebt, die es für Cloud-Computing- und Cluster-Computing-Anwendungen verwenden.
-
Community & Bibliothek: Wie bereits erwähnt, bringt das Alter von Python gewisse Vorteile mit sich. Einer davon ist die Anzahl der Bibliotheken, die es hat, und die große Gemeinschaft, die es unterstützt. Golang hingegen ist eine noch wachsende Sprache und verfügt nicht über die Anzahl der Bibliotheken und die Unterstützung der Gemeinschaft, die Python bietet. Dennoch sollten wir Go noch nicht aufgeben. Die Wachstumsrate und die Akzeptanz von Go sind unglaublich und werden täglich größer.
-
Ausführung: Wenn es auf Geschwindigkeit ankommt, dann gewinnt Golang mit Abstand.
Nachdem Sie all diese Punkte berücksichtigt haben, ist Ihr Anwendungsfall der entscheidende Faktor bei der Entscheidung für eine Sprache. In einem Szenario, in dem Sie ein Entwicklungsteam für die Erstellung von Microservices einrichten, wäre Golang die vernünftigere Wahl, da es sowohl schnell und einfach zu programmieren ist als auch hervorragend skalieren kann. Python hingegen ist eher auf KI, ML und Datenanalyse ausgerichtet.
Im direkten Vergleich würde Go in den meisten Fällen die Nase vorn haben und gilt als echte Alternative zu Python. Entwickler müssen bei der Wahl einer Programmiersprache die Art und den Umfang des Entwicklungsprojekts sowie die Fähigkeiten der Beteiligten berücksichtigen.
Die gute Nachricht ist jedoch, dass sich beide Sprachen unabhängig von der Wahl ständig weiterentwickeln. Während Golang in den meisten Fällen wie eine offensichtliche Wahl erscheinen mag, lehnt sich die Python-Gemeinschaft nicht einfach zurück und tut nichts. Beide Sprachen expandieren und wachsen. Das bedeutet, dass wir in Zukunft mehr Funktionalität und Verbesserungen sehen werden.