Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Alex Gamela

Min Read

28. März 2023

Rost gegen. Go: Unterschiede und Gemeinsamkeiten

Go und Rust sind zwei der beliebteste und beliebteste Programmiersprachen von der Entwickler-Community. Beide sind sehr neu, obwohl sie bereits eine enorme Wirkung haben und die meisten großen digitalen Akteure unterstützen.

Es handelt sich um zwei großartige, moderne Open-Source-Sprachen, die entwickelt wurden, um Software und Anwendungen zu entwickeln, die die Hardwarekapazität optimal nutzen, die Anzahl der verwendeten Maschinen reduzieren und die Geschwindigkeit der verbleibenden erhöhen. Kein Manager wird jemals Leistung UND Einsparungen herabsetzen, daher sieht die Zukunft für beide rosig aus.

„Was ist besser“ ist eine schwer zu beantwortende Frage, da jeder einen anderen Ansatz und eine andere Philosophie hat. Dieser Vergleich könnte bei der Entscheidung helfen welche Sprache soll ich wählen für dein nächstes Projekt, und warum.

blue arrow to the left
Imaginary Cloud logo

Was ist Go

Go — kurz für Golang — ist eine Open-Source-Programmiersprache entwickelt von Robert Griesemer, Rob Pike und Ken Thompson bei Google im Jahr 2007. Es wurde als Äquivalent zu C für das 21. Jahrhundert konzipiert, ist aber einfacher zu erlernen, zu schreiben, zu lesen und einzusetzen. Seit der Veröffentlichung der Version 1.0 im Jahr 2012 wurde Go aufgrund seiner Effizienz schnell zu einer beliebten Wahl für serverseitige Hochleistungsanwendungen.

Es wird häufig zur Unterstützung cloudbasierter Anwendungen verwendet, von E-Commerce-Plattformen bis hin zu Wetter-APIs, oder als Basis für Container-Tools wie Docker. Große Produkte und Dienstleister wie Dropbox, Netflix, PayPal, Twitter und Google verwenden Go als Rückgrat ihrer Systeme.

Go ist eine statisch typisierte, kompilierte Programmiersprache mit einer praktischen und übersichtlichen Syntax ähnlich wie C oder C++. Zu seinen Funktionen gehören Schleifen, Arrays, Maps und Control Flow, die wir auch in vielen anderen Sprachen finden, sodass es für den Eingeweihten nicht fremd aussieht.

Es unterstützt Parallelität durch Goroutinen, Funktionen, die gleichzeitig auftreten können, aber unabhängig voneinander ablaufen. Eine weitere Stärke ist die Speichersicherheit: Die automatische Speicherzuweisung und die automatische Speicherbereinigung sind zwei der Hauptfunktionen von Go, die Speicherlecks vermeiden, die Sicherheit erhöhen und die Portabilität zwischen Betriebssystemen verbessern.

Go-Nutzer werden liebevoll Gophers genannt, das Maskottchen und der Avatar der Sprache.

blue arrow to the left
Imaginary Cloud logo

Was ist Rust

Rost begann 2006 als persönliches Projekt von Graydon Hoare, einem Mozilla-Mitarbeiter. Mozilla sponserte dieses Unterfangen, und Rust erhielt am 15. Mai 2015 die Version 1.0. Rust ist eine universell einsetzbare, statisch typisierte kompilierte Programmiersprache mit einer ähnlichen — aber freundlicheren — Syntax wie C und C++.

Rust wurde für Leistung und Sicherheit in Umgebungen mit hoher Parallelität entwickelt und wird in großen Systemen von Unternehmen und Organisationen wie Firefox, Dropbox, Google und Es wird seit 2016 von Entwicklern zur beliebtesten Programmiersprache gewählt. Nacheinander.

Source: Stack Overflow Developer Survey 2021

Rust legt auch Wert auf Speichersicherheit, hat aber keine Garbage-Collection, ein großer Unterschied im Vergleich zu Go. Rust verwendet die Borrow Checker-Funktion, um sicherzustellen, dass Referenzen die Daten, auf die sie sich beziehen, nicht überleben, was die Speichernutzung und den Speicherzugriff verbessert.

Rust hat eine wildere Seite. Standardmäßig funktioniert es im sicheren Schreibmodus, ermöglicht aber auch den Modus für unsicheres Schreiben von Code. Safe Rust erzwingt strenge Regeln für den Programmierer, um sicherzustellen, dass der Code ordnungsgemäß funktioniert, während Unsafe Rust weniger experimentiert, aber es besteht die Gefahr, dass der Code kaputt geht.

Rust wird verwaltet von der Stiftung Rust, eine gemeinnützige Organisation, die von einigen der größten Interessengruppen des digitalen Universums gegründet wurde: Mozilla Foundation, Amazon Web Services, Google, Huawei und Microsoft.

Ferris ist das inoffizielle Maskottchen von Rust. Es ist eine freundliche Krabbe, die dem Spitznamen der Rust-Entwickler, Rustaceans, entspricht.

Ferris and Gopher
blue arrow to the left
Imaginary Cloud logo

Gemeinsamkeiten — Warum jeder Rust and Go liebt

Die Ähnlichkeiten zwischen Go und Rust gehen über süße Maskottchen und lebendige Gemeinschaften hinaus. Es handelt sich um leistungsstarke Softwaresprachen, die auf die modernen, umfangreichen Anforderungen der heutigen digitalen Umgebung zugeschnitten sind und Sicherheit, Skalierbarkeit und Produktivität bieten.

Als Allzweck-Programmiersprachen Sie werden verwendet, um alles zu entwickeln, von Webanwendungen bis hin zu Netzwerkdiensten, und ihre allgemeine Implementierung sagt eine lange Lebensdauer voraus. Ihre Gemeinschaften sind stark und engagiert und bieten eine große Anzahl von Bibliotheken und Support von Drittanbietern. Beide Sprachen gelten als Programmiersprachen, die man unbedingt lernen muss, was eine solide Zukunft für ihre Entwicklung voraussagt.

Sie haben aber auch andere Stärken gemeinsam, die sie heute zu den beliebtesten Programmiersprachen machen.

Leistung und Geschwindigkeit

Die Bedeutung dieser Merkmale wird manchmal synonym verwendet, und sie werden oft zu derselben Definition zusammengemischt. Aber sie implizieren verschiedene Dinge.

Als kompilierte Sprachen, das heißt, sie übersetzen direkt in ausführbaren Maschinencode. Sie können Programme als einzelne Binärdatei bereitstellen und so die Anzahl der Abhängigkeiten und Bibliotheken reduzieren, auf die sie angewiesen sind. Das macht sie schneller als interpretierte Sprachen wie Rubin, Python, oder Perl.

Die Ausführungsgeschwindigkeit ist für beide Sprachen hoch. Rust hat eine bessere Laufzeitgeschwindigkeit (und es wird schneller) ist aber komplexer als Go, das Einfachheit der Leistung vorzieht, obwohl der Unterschied kaum wahrnehmbar ist. Und wenn Sie mit Tausenden von Dateien und Commits in einer großen Codebasis arbeiten, ist die Build-Geschwindigkeit von Go unschlagbar.

IBM berichtete“ein außergewöhnlicher Anstieg von 1200-1500%„schnell mit Rust, WebAssembly und Node.js zusammen, während Go immer wieder dafür verantwortlich ist, die Anzahl der Server auf fast ein Zehntel der ursprünglichen Kapazität zu reduzieren, während es gleichzeitig abnimmt.“Laufzeiten von 90 Sekunden bis nur 3 Sekunden„.

Skalierbarkeit

Ihre Fähigkeit, mehrere gleichzeitige Funktionen bei optimaler Nutzung der CPU-Ressourcen zu handhaben, macht Rust and Go zu den perfekten Programmiersprachen für die Entwicklung umfangreicher Anwendungen, insbesondere wenn diese wachsen und komplexer werden sollen.

Rust neigt eher zu Anwendungen, die Geschwindigkeit bevorzugen, wie Spieleentwicklung, Webbrowser-Komponenten oder Echtzeitsteuerungssysteme. Andererseits ist Go für die Softwareentwicklung in großem Maßstab konzipiert, an der große Codebasen und große Teams beteiligt sind, die enorme Datenmengen in Echtzeit verarbeiten.

Google unterstützt Go, da es zu seiner schnellen, komplexen Infrastruktur und dynamischen Umgebung passt. Geh ermöglicht kurze Iterationsentwicklungsphasen und leidet, da es eine leicht zugängliche Lernkurve hat, nicht unter der Fluktuation der Entwickler. Es ist eine großartige Lösung für dynamische Organisationen, in denen Umfang und Geschwindigkeit den Entwicklungsablauf bestimmen.

Parallelität

Go wurde für Parallelität entwickelt oder, einfach ausgedrückt, um mehrere Dinge gleichzeitig zu erledigen. Die Innovation in Go war die Einführung von Goroutinen. Diese Funktionen werden unabhängig voneinander ausgeführt und laufen gleichzeitig mit anderen Funktionen. Da sie schlank sind und weniger Ressourcen benötigen, können wir eine unglaublich hohe Anzahl dieser Goroutinen ausführen, ohne die Leistung zu beeinträchtigen. Dies ist eine bessere Lösung als das Erstellen neuer Threads (der kleinste Befehlssatz, den ein Scheduler unabhängig verwalten kann).

Als integrierte Funktion ist die Parallelitätsbehandlung von Go stärker als die von Rust, das diese Funktion noch entwickelt. Parallelität in Rust ist nicht so einfach zu implementieren wie in Go, was einige Entwickler davon abhalten kann, sich wieder damit zu beschäftigen, aber der Sicherheitsgewinn kann lauter sprechen.

Werkzeuge

Rust und Go enthalten Standardformatierungstools: gofmt für Go und rostfmt für Rust. Diese Tools erleichtern das Schreiben von Code und schreiben ihn automatisch im kanonischen Stil neu.

Rust beinhaltet auch Cargo, Rusts Buildsystem und Paketmanager. Cargo lädt die Abhängigkeiten des Rust-Pakets herunter, kompiliert und erstellt verteilbare Pakete und lädt sie in die Paketregistrierung der Rust-Community hoch. Aber Cargo geht über diese Funktionen hinaus.

Cargo standardisiert die Befehle, die zum Erstellen eines Programms oder einer Bibliothek benötigt werden. Da derselbe Befehl zum Erstellen verschiedener Artefakte verwendet werden kann, ist es leicht zu sagen, dass, wenn Sie wissen, wie man ein Cargo-basiertes Projekt erstellt, Sie wissen, wie man sie alle baut.

blue arrow to the left
Imaginary Cloud logo

Unterschiede

Philosophie

Die Sprachkonstruktion und der Sprachgebrauch von Rust and Go spiegeln ihre inhärenten Philosophien wider.

Rost ist „näher am Metall“, was bedeutet, dass es eine enge Beziehung zur Architektur der Maschine hat, auf der es läuft, was für zusätzliche Kontrolle und Zuverlässigkeit sorgt. Go verfolgt einen abstrakteren Ansatz und folgt „den natürlichen Konturen der Sprache und des Problems, anstatt zu versuchen, sie abzuschaffen“, wie in der Tao von Go, das de facto Philosophie dieser Programmiersprache.

Beide sind in ihrer Absicht äußerst effektiv.

Sicherheit

Das Hauptanliegen eines jeden Entwicklers ist die Sicherheit, insbesondere bei komplexen, umfangreichen Anwendungen. Go und Rust gehen auf diese Bedenken mit einem anderen Ansatz ein.

Der Rust-Compiler ist sehr streng, wenn es um die Validierung von Leihprüfungen und anderen Regeln geht, was den Schwierigkeitsgrad für Programmierer erhöhen kann, aber den zusätzlichen Vorteil hat, dass Fehler und potenzielle Sicherheitslücken erkannt werden, die in anderen Sprachen nicht gemeldet würden.

Go setzt auf automatische Speicherverwaltung, um mögliche Sicherheitslücken und Bugs zu behandeln. Die Hauptmechanismen sind die automatische Speicherzuweisung und die automatische Speicherbereinigung. Obwohl sich der Ansatz dieser beiden Sprachen unterscheidet, priorisieren sie den sicheren Zugriff und die Verwaltung des Speichers, um Sicherheit und Leistung zu gewährleisten, und eignen sich daher perfekt für Cloud-Computing.

Installation

Rust and Go kann dank ihrer integrierten Verwaltungstools einfach eingesetzt werden. Um Rust zu installieren, müssen Sie Rustup, das Installationsmanager-Tool von Rust, verwenden. Rustup herunterladen und führen Sie Folgendes in Ihrem Terminal aus (wenn Sie auf einem Mac sind).

Folgen Sie dann den Anweisungen auf dem Bildschirm. Die Verfahren können je nach Betriebssystem variieren.

Go wird als ausführbare Datei geliefert, die auf allen gängigen Betriebssystemen ausgeführt werden kann. Herunterladen, installieren und ausführen; einfacher geht es nicht.

Programmierstil und Syntax

Als Reaktion auf die Komplexität von Programmiersprachen wie C++, Go und Rust wurden funktionale Sprachen entwickelt. Ihr Ziel ist es, Probleme für jede Anwendung bestmöglich zu lösen, und zwar auf die sicherste und schnellste Art und Weise.

Rust konzentriert sich auf absolute Kontrolle und macht mehr mit der geringsten Menge an Code, sehr ähnlich wie C++ und Haskell, aber es hat eine steilere Lernkurve als die meisten Sprachen. Diese Komplexität ist sowohl ein Vorteil als auch ein Nachteil, da es deshalb so leistungsfähig ist und mit weniger mehr erreicht. Aufgrund seiner komplexe Syntax und Semantik, Rust benötigt mehr Zeit zum Programmieren, ein Kompromiss für mehr Sicherheit und Leistung.

Die Syntax und die Prozesse von Go sind einfach, mit einem kleinen Sprachkern. Die Einfachheit und Prägnanz von Go sind einige der Gründe, warum es in großen Teams von Programmierern so beliebt ist und eine einfachere Lernkurve hat als Rust.

Hier ist das traditionelle „Hello World!“ Befehl, aber mit einer Schleife, um ihn zehnmal auszudrucken, in beiden Sprachen:

Geh

Rost

Beachten Sie die Syntax „0.. 10“ in Rust, um einen Bereichs-Iterator zu erstellen.

blue arrow to the left
Imaginary Cloud logo

Go vs Rust: Wann man sie benutzt

Das Internet liebt Konkurrenz, und Rust und Go werden oft als Konkurrenten dargestellt. Aber das ist nicht wirklich der Fall. Wie wir bereits gesehen haben, werden sie gleichzeitig von Organisationen für verschiedene Zwecke verwendet. Die Unterschiede zwischen ihnen sind ihre Stärken bei der Zusammenarbeit, und Entwickler auf der ganzen Welt schätzen ihre Bemühungen, die Softwareentwicklung in der gesamten Branche zu modernisieren, indem sie das Beste aus den verfügbaren Hardwareressourcen herausholen.

Allerdings sind einige Situationen besser für eine als für die andere geeignet.

Wann sollte man Rust verwenden

Rust eignet sich perfekt zur Verwaltung von Maschinenressourcen für eine bessere Leistung bei der Verarbeitung großer Datenmengen und anderer CPU-intensiver Operationen.

Es wurde entwickelt, um eine vollständige Hardwaresteuerung zu ermöglichen, sodass Rust-Programme die maximale theoretische Leistung einer Maschine optimal nutzen können. Rust ist auch eine hervorragende Wahl, um die Speichersicherheit in großen komplexen Systemen zu gewährleisten und die Erkennung von Fehlern zu gewährleisten. Entwickler müssen jedoch bereit sein, sich selbst mit einer gewissen Komplexität auseinanderzusetzen. Die strenge Natur des Compilers mag sich etwas überwältigend anfühlen, verhindert aber, dass Bugs und Sicherheitslücken in den endgültigen Code aufgenommen werden. Entwickler, die bessere Codierung einer schnelleren Codierung vorziehen, werden Rust jederzeit bevorzugen.

Wenn du diese Punkte ankreuzt, dann ist Rust wahrscheinlich die richtige Wahl (kein Wortspiel beabsichtigt):

  • Ausführung des Algorithmus
  • Eine schnelle Ausführung ist wichtiger als andere Überlegungen
  • Cloud-Apps, IoT, sicherheitssensitive Apps oder Systemkomponenten sind der Kern des Projekts
  • Verbesserte Speichersicherheit
  • Platz für komplexe Codierungen
  • Verlängerte Entwicklungszeit

Wann sollte man Go verwenden

Go eignet sich perfekt für die Entwicklung serverseitiger Anwendungen, da seine Goroutinen große Mengen gleichzeitiger, unabhängiger Anfragen verarbeiten können. Es kann auch als Microservice zusammen mit einer API ausgeführt werden. Es zielt auf Einfachheit statt auf Leistung ab, was nicht bedeutet, dass es keine schnellen und zuverlässigen Ergebnisse liefert. Sie sollten Go wählen, wenn:

  • Sie arbeiten mit großen, konkurrierenden Datenmengen
  • Ein großes Team ist beteiligt
  • Einfachheit hat Vorrang vor zusätzlichen Funktionen
  • Schnelle Iteration
  • Du arbeitest mit APIs, Web Apps, Datenverarbeitung und Cloud-Apps
  • Flexibilität und Schnelligkeit beim Programmieren sind von entscheidender Bedeutung
blue arrow to the left
Imaginary Cloud logo

Essen zum Mitnehmen

Pitting Go gegen Rust ist nicht fair, da beide Sprachen für sich genommen viel zu bieten haben und sich gegenseitig ergänzen. Gophers und Rustaceans leben glücklich Seite an Seite, weil sie wissen, dass ihre unterschiedliche Philosophie wertvoll und auf unterschiedliche Umstände anwendbar ist.

Alles hängt von den Anforderungen und Zielen jedes Projekts ab. Rust neigt zu Komplexität und Sicherheit und eignet sich daher ideal für große Infrastrukturprojekte, z. B. solche, die mit dem Internet der Dinge oder sicherheitssensiblen Anwendungen zu tun haben.

Go bevorzugt Einfachheit mit einer flexiblen Einstellung, die Fehler und Lücken zulässt, was den iterativen Prozess und eine schnellere Entwicklung fördert. Und seine Leistung ist nicht weit von Rusts Benchmark entfernt.

In jedem Fall gelten Rust und Go als die wertvollsten Programmiersprachen, die es in Zukunft zu lernen gilt. Und sie fangen gerade erst an.

Fanden Sie diesen Artikel hilfreich? Diese könnten dir auch gefallen!

blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
Alex Gamela
Alex Gamela

Inhaltsautor und Produzent digitaler Medien mit Interesse an der symbiotischen Beziehung zwischen Technologie und Gesellschaft. Bücher, Musik und Gitarren sind eine Konstante.

Read more posts by this author

People who read this post, also found these interesting:

arrow left
arrow to the right
Dropdown caret icon