Rust gibt es seit 2006. Die Programmiersprache entstammt den Tasten eines Mozilla-Entwicklers. Seit ihrem Launch wächst die Nutzerbasis der Sprache – mittlerweile findet sie Anwendung beim Bauen von Webanwendungen, Command-Line-Tools oder verteilten Services.
Low-Level-Sprache mit Abstraktionen von Higher-Level-Sprachen
Die Low-Level-Sprache Rust ist so effizient, dass sie ohne automatische Speicherbereinigung auskommt. Dennoch bietet sie die Performance von C und C++, allerdings ohne die Stolperfallen, die Entwickler bei der Arbeit kennen und beachten müssen.
Die Entwickler hinter Rust wollten eine Sprache kreieren, mit der Systemprogrammierung sicherer und Nebenläufigkeit, also die gleichzeitige Ausführung mehrerer Berechnungen, Anweisungen oder Befehle, einfacher wird. Sowohl Speichersicherheits- als auch Nebenläufigkeitsfehler entstehen, wenn Code auf Daten zugreift, auf die er zum jeweiligen Zeitpunkt nicht zugreifen soll.
Das zentrale Konzept: Ownership
Das erreicht Rust über sein zentrales Feature, die sogenannte Ownership. Wer mit Rust arbeitet, muss sich darum allerdings nicht selber kümmern, der Rust-Compiler checkt das statisch für euch. Das ist auch der Grund, warum Rust ohne Garbage-Collector (automatische Speicherbereinigung) auskommt und ihr euch über Speicherzugriffsfehler – anders als zum Beispiel in C – keine Sorgen machen müsst. Bezogen auf das Konzept der Nebenläufigkeit bedeutet das, dass ihr nach verschiedensten Paradigmen arbeiten könnt. Message-Passing, geteilter State, Lock-Free- oder auch komplett funktionale Programmierung sind in Rust möglich. Das Design der Programmiersprache hilft euch dabei, gängige Fehlerquellen zu vermeiden.
Nebenläufigkeit in Rust
Werden Messages entlang eines Channels versandt, wird deren Ownership mit transferiert. Das ermöglicht es, einen Pointer von einem zum anderen Thread zu schicken, ohne befürchten zu müssen, dass die Threads später versuchen, über diesen Pointer auf den Speicher zuzugreifen. Die Channels in Rust forcieren isolierte Threads. Ein Lock weiß, welche Daten es schützt. Die Datentypen in Rust wissen, ob sie zwischen mehreren Threads verschickt werden dürfen und ob mehrere Threads sicher auf sie zugreifen können – Rusts Design erzwingt diese sichere Nutzung. Ihr könnt sogar Stack-Frames zwischen Threads teilen – Rust sorgt dafür, dass die Frames aktiv bleiben, während andere Threads auf sie zugreifen. Alle diese Benefits gehen auf Rusts Ownership-Modell zurück. Locks, Channels und Datenstrukturen ohne Lock sind übrigens außerhalb der Kernsprache in Bibliotheken definiert.
Fokus auf Sicherheit
Der Rust-Compiler ist strikter und bietet sichere Speicherverwaltung ohne Runtime-Overhead. Generell hat Rusts Lifetime-Management einen starken Fokus auf Sicherheit: Die Thread-Safety in Rust ist aus genannten Gründen im Vergleich zu anderen Sprachen deutlich höher. Dem Sicherheitsgedanken tragen auch Features wie Sum-Types und die generelle Unveränderlichkeit der Sprache Rechnung.
Interessante Features und nützliche Bibliotheken
Die Sprache bietet so interessante Features wie Cross-Compilation, Web-Assembly-Targets für die Frontend-Entwicklung, Unterstützung für die Entwicklung mobiler Anwendungen und mittlerweile einige nützliche Libraries. Rust-Code ist – im Vergleich zu Code in C++ – relativ einfach zu lesen. Die Sprache verfügt über funktionale Features wie map()
, find()
oder filter()
. Rust ist eine Programmiersprache mit imperativer Syntax. Higher-Order-Funktionen könnt ihr trotzdem definieren.
TL;DR: Wer mit Rust arbeitet, ist gezwungen, sich über Speicherbelegung Gedanken zu machen. Smart Pointer und Referenzen sind quasi die Basis von Rusts Speichermanagement. Wer von C++ kommt, dürfte sich hier relativ schnell einarbeiten können. Wer von Python oder JavaScript kommt, braucht wahrscheinlich etwas länger, um mit den Konzepten vertraut zu werden. Der daraus resultierende Code ist quasi „clean by default“. Was den Speicher angeht, habt ihr mit Rust sehr genaue Kontrollmöglichkeiten – bei mehr Sicherheit im Vergleich zu Sprachen wie zum Beispiel C.
Finde die breite Nutzungsmöglichkeiten gut, so wird ja z.B. Fuchsia als Betriebssystem in Rust geschrieben, genauso können Rust-programme als webassembly erzeugt werden, so dass fast jeder Browser die Programme nativ ausführen kann.
Guten Abend,
ich bin Laie und wage die Frage ob in PP erstellte Daten und Entwürfe in eine Homepage übertragen werden könnten. Kurze Antwort mit JA oder NEIN wäre ok.
Danke im Voraus.
Ja, hat aber nichts mit Rust zu tun.