Was ist Rost? Sichere, schnelle und einfache Softwareentwicklung

Schnell, sicher, einfach zu schreiben - wählen Sie zwei aus. Das ist schon lange der Stand der Softwareentwicklung. Sprachen, die Komfort und Sicherheit betonen, sind in der Regel langsam (wie Python). Sprachen, bei denen die Leistung im Vordergrund steht, sind in der Regel schwierig zu bearbeiten und leicht mit den Füßen zu sprengen (wie C und C ++).

Können alle drei Attribute in einer einzigen Sprache geliefert werden? Noch wichtiger ist, können Sie die Welt dazu bringen, damit zu arbeiten? Die Rust-Sprache, die ursprünglich von Graydon Hoare erstellt und derzeit von Mozilla Research gesponsert wird, ist ein Versuch, genau diese Dinge zu tun. (Die Google Go-Sprache hat ähnliche Ambitionen, aber Rust ist bestrebt, möglichst wenig Zugeständnisse an die Leistung zu machen.)

Zugehöriges Video: Entwicklung sicherer Software mit Rust

Machen Sie sich schnell mit dem Newcomer Rust vertraut, der für die Erstellung schneller Software auf Systemebene entwickelt wurde. Dieser zweiminütige animierte Erklärer zeigt, wie Rust die lästigen Programmierprobleme von Speicher und Verwaltung umgeht.

Rust soll schnell, sicher und relativ einfach zu programmieren sein. Es soll auch weit verbreitet sein und nicht nur als Kuriosität oder als Gewinnspiel in der Sprache enden. Es gibt viele gute Gründe, eine Sprache zu schaffen, in der Sicherheit mit Geschwindigkeit und Entwicklungskraft gleichgestellt ist. Schließlich gibt es eine enorme Menge an Software, von der einige eine kritische Infrastruktur steuern, die mit Sprachen erstellt wurde, in denen Sicherheit nicht das erste Problem war.

Vorteile der Rost-Programmiersprache

Rust begann als Mozilla-Forschungsprojekt, das teilweise dazu diente, wichtige Komponenten des Firefox-Browsers neu zu implementieren. Einige Hauptgründe waren ausschlaggebend für diese Entscheidung: Firefox hat es verdient, moderne Multicore-Prozessoren besser zu nutzen. und die Allgegenwart von Webbrowsern bedeutet, dass sie sicher sein müssen.

Diese Vorteile werden jedoch von jeder Software benötigt, nicht nur von Browsern. Deshalb hat sich Rust aus einem Browserprojekt zu einem Sprachprojekt entwickelt. Rust erreicht seine Sicherheit, Geschwindigkeit und Benutzerfreundlichkeit durch die folgenden Eigenschaften.

Rost ist schnell

Rust-Code wird auf mehreren Plattformen zu nativem Maschinencode kompiliert. Binärdateien sind in sich geschlossen und haben keine Laufzeit. Der generierte Code soll genauso gut funktionieren wie vergleichbarer Code, der in C oder C ++ geschrieben wurde.

Rost ist speichersicher

Rust kompiliert keine Programme, die eine unsichere Speichernutzung versuchen. Die meisten Speicherfehler werden entdeckt, wenn ein Programm ausgeführt wird. Die Syntax- und Sprachmetaphern von Rust stellen sicher, dass häufig auftretende Speicherprobleme in anderen Sprachen - null oder baumelnde Zeiger, Datenrennen usw. - niemals in die Produktion gelangen. Der Compiler kennzeichnet diese Probleme und erzwingt, dass sie behoben werden, bevor das Programm jemals ausgeführt wird.

Rost ist niedrig

Rust steuert die Speicherverwaltung über strenge Regeln. Das Speicherverwaltungssystem von Rust wird in der Syntax der Sprache durch eine Metapher ausgedrückt, die als Besitz bezeichnet wird . Jeder gegebene Wert in der Sprache kann nur von jeweils einer Variablen "besessen" oder gehalten und manipuliert werden.

Die Art und Weise, wie das Eigentum zwischen Objekten übertragen wird, wird vom Compiler streng geregelt, sodass zur Laufzeit keine Überraschungen in Form von Speicherzuordnungsfehlern auftreten. Der Besitzansatz bedeutet auch, dass es keine Speicherverwaltung für Speicherbereinigungen gibt, wie in Sprachen wie Go oder C #. (Dies gibt Rust auch einen weiteren Leistungsschub.) Jedes Stück Speicher in einem Rust-Programm wird automatisch über die Besitzermetapher verfolgt und freigegeben.

Rost ist flexibel

Mit Rust können Sie bis zu einem gewissen Punkt gefährlich leben, wenn Sie müssen. Die Sicherheiten von Rust können teilweise ausgesetzt werden, wenn Sie den Speicher direkt bearbeiten müssen, z. B. indem Sie einen Rohzeiger à la C / C ++ dereferenzieren. Das Schlüsselwort ist teilweise , weil Rusts Speichersicherheitsvorgänge niemals vollständig deaktiviert werden können. Selbst dann müssen Sie für häufige Anwendungsfälle fast nie die Sicherheitsgurte ausziehen. Das Endergebnis ist also Software, die standardmäßig sicherer ist.

Rost ist einfach zu bedienen

Keine der Sicherheits- und Integritätsfunktionen von Rust summiert sich zu viel, wenn sie nicht verwendet werden. Aus diesem Grund haben die Entwickler und die Community von Rust versucht, die Sprache für Neulinge so nützlich und einladend wie möglich zu gestalten.

Alles, was zur Erstellung von Rust-Binärdateien benötigt wird, ist im selben Paket enthalten. Externe Compiler wie GCC werden nur benötigt, wenn Sie andere Komponenten außerhalb des Rust-Ökosystems kompilieren (z. B. eine C-Bibliothek, die Sie aus dem Quellcode kompilieren). Microsoft Windows-Benutzer sind ebenfalls keine Bürger zweiter Klasse. Die Rust-Toolkette ist dort genauso leistungsfähig wie unter Linux und MacOS.

Rost ist plattformübergreifend

Rust funktioniert auf allen drei Hauptplattformen: Linux, Windows und MacOS. Andere werden über diese drei hinaus unterstützt. Wenn Sie Cross-Compilieren oder Binärdateien für eine andere Architektur oder Plattform als die derzeit ausgeführte erstellen möchten , ist ein wenig mehr Arbeit erforderlich, aber eine der allgemeinen Aufgaben von Rust besteht darin, den dafür erforderlichen Aufwand zu minimieren Arbeit. Obwohl Rust auf den meisten aktuellen Plattformen funktioniert, ist es nicht das Ziel seiner Entwickler, Rust absolut überall kompilieren zu lassen - nur auf allen beliebten Plattformen und überall dort, wo sie keine unnötigen Kompromisse eingehen müssen.

Rust verfügt über leistungsstarke Sprachfunktionen

Nur wenige Entwickler möchten mit der Arbeit in einer neuen Sprache beginnen, wenn sie feststellen, dass sie weniger oder schwächere Funktionen aufweist als sie es gewohnt sind. Die Muttersprachenfunktionen von Rust sind im Vergleich zu Sprachen wie C ++ günstig: Makros, Generika, Mustervergleich und Komposition (über „Merkmale“) sind erstklassige Bürger in Rust.

Rust hat eine nützliche Standardbibliothek

Ein Teil von Rusts größerer Mission ist es, C- und C ++ - Entwickler zu ermutigen, Rust nach Möglichkeit anstelle dieser Sprachen zu verwenden. C- und C ++ - Benutzer erwarten jedoch eine anständige Standardbibliothek: Sie möchten in der Lage sein, Container, Sammlungen und Iteratoren zu verwenden, Zeichenfolgenmanipulationen durchzuführen, Prozesse und Threading zu verwalten, Netzwerk- und Datei-E / A durchzuführen usw. All das und noch mehr macht Rust in seiner Standardbibliothek. Da Rust plattformübergreifend konzipiert ist, kann seine Standardbibliothek nur Dinge enthalten, die zuverlässig plattformübergreifend portiert werden können. Plattformspezifische Funktionen wie Linux's Epoll müssen über Funktionen in Bibliotheken von Drittanbietern wie libc, mio ​​oder tokio unterstützt werden. 

Es ist auch möglich, Rust ohne seine Standardbibliothek zu verwenden. Ein häufiger Grund dafür ist das Erstellen von Binärdateien ohne Plattformabhängigkeiten, z. B. eines eingebetteten Systems oder eines Betriebssystemkerns.

Rust hat viele Bibliotheken oder Kisten von Drittanbietern.

Ein Maß für den Nutzen einer Sprache ist, wie viel dank Dritter damit getan werden kann. Cargo, das offizielle Repository für Rust-Bibliotheken („Kisten“ genannt), listet etwa zehntausend Kisten auf. Eine gesunde Anzahl von ihnen sind API-Bindungen an gängige Bibliotheken oder Frameworks, sodass Rust mit diesen Frameworks als praktikable Sprachoption verwendet werden kann. Die Rust-Community bietet jedoch noch keine detaillierte Kuration oder Rangfolge von Kisten basierend auf ihrer Gesamtqualität und ihrem Nutzen an. Sie können also nicht sagen, was gut funktioniert, ohne die Dinge selbst auszuprobieren oder die Community abzufragen.

Rust hat eine gute IDE-Unterstützung 

Auch hier möchten nur wenige Entwickler eine Sprache mit wenig oder keiner Unterstützung in der IDE ihrer Wahl verwenden. Aus diesem Grund hat Rust kürzlich den Rust Language Server eingeführt, der IDEs wie Microsoft Visual Studio Code Live-Feedback vom Rust-Compiler bietet.

Nachteile der Rost-Programmiersprache

Neben all seinen attraktiven, leistungsstarken und nützlichen Funktionen hat Rust auch Nachteile. Einige dieser Hürden stoßen sowohl auf neue „Rustaceans“ (wie sich Rust-Fans nennen) als auch auf alte Hasen. 

Rost ist neu

Rust ist noch eine junge Sprache, die ihre Version 1.0 erst im Jahr 2015 ausgeliefert hat. Obwohl ein Großteil der Syntax und Funktionalität der Kernsprache verbessert wurde, sind viele andere Dinge in der Umgebung immer noch fließend.

Beispielsweise sind asynchrone Operationen in der Syntax der Sprache immer noch nicht gut dargestellt. Es wird daran gearbeitet, asynchrone Vorgänge über asyncund awaitSchlüsselwörter zu implementieren .

Rost ist schwer zu lernen

Wenn etwas an Rust am problematischsten ist, ist es, wie schwierig es sein kann, Rusts Metaphern zu verstehen. Eigentümer, die Kreditaufnahme, und Rust andere Speicherverwaltung conceits Reise alle bis das erste Mal. Viele Rust-Programmierer-Neulinge haben einen gemeinsamen Übergangsritus: „Kampf gegen den Leihprüfer“, bei dem sie aus erster Hand herausfinden, wie akribisch der Compiler ist, veränderliche und unveränderliche Dinge getrennt zu halten.

Rost ist komplex

Einige der Schwierigkeiten ergeben sich daraus, wie Rusts Metaphern im Vergleich zu anderen Sprachen zu ausführlicherem Code führen. Beispielsweise ist die Verkettung von Zeichenfolgen in Rust nicht immer so einfach wie string1+string2. Ein Objekt kann veränderlich und das andere unveränderlich sein. Rust neigt dazu, darauf zu bestehen, dass der Programmierer erklärt, wie er mit solchen Dingen umgeht, anstatt den Compiler raten zu lassen.

Ein weiteres Beispiel: Wie Rust und C / C ++ zusammenarbeiten. In den meisten Fällen wird Rust zum Einbinden in vorhandene Bibliotheken verwendet, die in C oder C ++ geschrieben sind. Einige Projekte in C und C ++ werden in Rust von Grund auf neu geschrieben. (Und wenn sie es sind, werden sie in der Regel schrittweise umgeschrieben.)

Die Roadmap in Rust-Sprache

Das Rust-Team ist sich vieler dieser Probleme bewusst und arbeitet daran, sie zu verbessern. Um Rust die Arbeit mit C und C ++ zu erleichtern, untersucht das Rust-Team beispielsweise, ob Projekte wie bindgen erweitert werden sollen, wodurch automatisch Rust-Bindungen an C-Code generiert werden. Das Team hat auch Pläne, die Kreditaufnahme und die Lebensdauer flexibler und verständlicher zu gestalten. 

Dennoch gelingt es Rust, eine sichere, gleichzeitige und praktische Systemsprache bereitzustellen, wie dies in anderen Sprachen nicht der Fall ist, und dies auf eine Weise zu tun, die die Arbeitsweise der Entwickler ergänzt.