Rust hier, Rust da, überall redet man über Rust. Aber warum sollte ich mir diese Sprache überhaupt anschauen? Es gibt doch schon so viele andere Sprachen, mit denen ich alles schaffe, was ich und meine Kunden wollen …
Warum also Rust?
Die Aussage ist richtig, nur wie immer ist das auch nur die eine Seite der Medaille.
Eine neue Sprache lernen heißt meist auch neue Paradigmen lernen. Das ist der Punkt mit der konstanten Weiterbildung in unserer Branche. Diese Paradigmen, Ideen und Lösungsansätze scheinen einem in der aktuellen Arbeit nicht zu fehlen, aber wenn man sie einmal kennt, fragt man sich, wie man so lange ohne sie ausgekommen ist.
Ich möchte damit jetzt nicht sagen das alle Probleme mit Rust viel einfacher und eleganter zu lösen sind. Aber eventuell ist doch das eine oder andere Problem mit Rust gar keins mehr.
All inclusive
Außerdem ist, obwohl Rust noch eine relativ junge Sprache ist, doch schon eine Menge an Funktionalität in die Sprache und ihr Ökosystem geflossen, die das tägliche Arbeiten mit ihr um einiges erleichtert.
Zu nennen sind hier der Paketmanager „Cargo“, Dokumentationslösungen, Unit Test und Performance Testing – alles das ist in das Grundpaket der Sprache eingebaut.
One argument to rule ´em all
Aber nun zum allgemeinen Totschlagargument für Rust: die Speichersicherheit.
Jeder, der schon einmal ein paar Zeilen C oder C++ geschrieben hat, hat bestimmt auch schon einen Speicherüberlauf oder den einen oder anderen nicht initialisierten oder schon wieder freigegebenen Pointer eingebaut. Diese Klasse von Fehlern gibt es in „sicherem“ Rust einfach nicht.
Warum ich hier nochmal explizit sicher erwähne, ist, dass es doch so eine Möglichkeit gäbe, diese einzubauen.
Als Beispiel sei hier genannt, dass es die Möglichkeit gibt, bestehende C/C++ (und kompatible kompilierte) Bibliotheken in ein Rust-Programm einzubauen. In solchen Fällen muss man auch mit den Unsicherheiten dieser externen Helfer leben und sie am besten in kleine, abgeschlossene Blöcke kapseln. Hierfür nutzt Rust das Schlüsselwort unsafe
.
Diese Blöcke sagen dem Kompiler, das sich der Entwickler hier um Speichersicherheit kümmert und verspricht, dass die Daten, die diesen Block verlassen, sicher sind. Dadurch können unsichere aber evtl. schnellere Programmierweisen in einen sehr kleinen und abgeschlossenen Bereich gekapselt werden. Und die kognitive Last, sich in diese Probleme einzudenken, ist dadurch auch auf diese kleinen Bereiche isoliert.
Rust und Fehlermeldungen
Der Rust-Compiler versucht einen immer wieder mit hilfreichen Meldungen auf den richtigen Pfad zu bringen. Den meisten Anfängern ist das Beheben dieser Fehler unter dem Namen „Fight the Borrow checker“ bekannt.
Man sollte es jedoch nicht als Kämpfen gegen den Compiler als eher das Beheben von Fehlern mit dem Compiler sehen. Denn „rustc“ will nicht, das wir uns in den Fuß schießen.
Sytemprogrammierung
Wenn man Rust liest, denkt man immer zuerst an Systemprogrammierung, also die Entwicklung von lokalen Programmen oder Serversoftware. Natürlich ist das auch ein großer Teil des aktuellen Rust-Ökosystems. Aber es gibt auch andere Felder, die immer größer werden. Hier seien unter anderem WASM oder auch WebAssembly genannt.
Mit WASM können wir die Performance von kompilierten Sprachen in den Browser bringen. Dabei werden kleine Programme in ein spezielles Bytecode-Format kompiliert, die dann innerhalb des Browsers – mit ähnlichen Sicherheitseinschränkungen wie JavaScript – ausgeführt werden können. WASM wird aber auch immer mehr als 100 Prozent portables Binärformat gesehen und findet in Cloud und/oder Edge-Lösungen seinen Einsatz.
Außerdem wurden Fokus-Teams zur Embedded Entwicklung mit Rust gegründet – und hier gibt ebenfalls schon diverse Meilensteine zu verzeichnen. Vor allem die Entwicklung auf ARM-basierten Cortex-M-Mikrocontrollern steht im Fokus, aber auch Texas Instruments MPS430 oder die neue Open-Source-Architektur RISC-V werden unterstützt.
Das Streben nach mehr
Wie man sieht, ist mit Rust der Weg in viele Richtungen möglich; und dabei muss man nicht mal unbedingt bei Systemprogrammierung bleiben.
Es lohnt sich also gleich mehrfach, einen Blick auf Rust zu werfen – so wie das generell eigentlich für fast alle (neuen) Technologien und Sprachen gilt. Und das sogar, wenn die Sprachen auf den ersten Blick nicht in unser angestammtes Umfeld passen. Ein paar neue Konzepte hier, ein paar neue Paradigmen dort … das hat das Potenzial, uns auch in anderen Situationen weiterzubringen.
Und das ist es schließlich, wonach wir streben.
Schreibe einen Kommentar