Gestern bin ich zum ersten Mal so richtig auf die Programmiersprache „Rust“ über die News auf Golem „Rust bedient sich bei der Konkurrenz“ aufmerksam geworden. Rust (Programmiersprache) [auf Wikipedia] ist ursprünglich ein privates Entwicklungsprojekt eines Mozilla-Mitarbeiters, die Mozilla-Foundation hat es seit 2009 gesponsort, die ersten richtigen Alpha-Versionen gibt’s schon seit 2012, seitdem gibt es eine gute Community, und es wurde ständig an der Sprach-Syntax herumgefeilt, alte Prototyp-Module wie „rust-http“ wieder verworfen und durch neue Module ersetzt etc. – Rust hat nichts mit der gleichnamigen Browser-App oder dem Europa-Park Rust zu tun, sondern ist einfach eine neue Programmiersprache.

Rust-Logo

Nun gibt es seit 15. Mai 2015 die Version 1.0.0 bzw. inzwischen auch schon Version 1.1 und 1.2Beta – und das Rennen im Wettlauf gegenüber anderen Programmiersprachen hat begonnen. Ich habe mich gestern ein wenig damit beschäftigt, und Artikel von verschiedenen Leuten verinnerlicht, die in diesem Jahr über Rust Artikel geschrieben haben:

Aus meiner Sicht ist rust klasse.

Es ist eine maschinennahe Sprache – ähnlich wie C. Eine Neuigkeit bei Rust ist z. B. das Verschieben von Werten in eine andere Variable. So bedeutet:

set a = b

dass der Inhalt der Variable b auf die Variable a übergeht, und die Variable b nicht mehr existiert. Das wäre bei klassischen Programmiersprachen in etwa:

a = b; unset b

dort also schon zwei Befehle, bei Rust nur einer. Auf Maschinenebene wird nichts neues auf den Stack geschoben.
Warum Rust

Rust: „die Sprache der Zukunft!“ – Rust will be the language of the future

Rust und Ruby Performancevergleiche- Ruby, Rust, API und JSON zeigt einen schönen Performance-Graphen:

Benchmark-Ruby-Rust

Rust verführt nicht zur Schlamperei: Rust Anti Sloppy Programming Language

aus Vortrag von @cburgdorf zu Rust & Nickel

Erklärung der modernen Sprachkonzepte, die in Rust verankert sind, die man weder bei GO und anderen Sprachen findet: „Why Go is Not Good“ – Vergleich zwischen Rust, Haskell und GO

Rust compiliert schnell, heiße Performance-Diskussionen in einem Blog-Forum:  Rust VS C++ Compile speed

Allerdings gibt’s auch Gegenstimmen. Z. B. wird bei einem großen Vergleich verschiedener Programmiersprachen die Kritik angebracht, dass hinter Rust leider nur die Mozilla Foundation steht, und nicht Google oder Apple. Dadurch wird’s schwer, Foundation für viele Libraries, APIs etc. sehr schnell zu bekommen: Code-Beispiele verschiedenster Programmiersprachen

Noch weiter ins Detail, was Vorzüge von Rust ausmachen:

Sie hat ein gutes Cointainer-Konzept, kapselt gegen typische Fehler sehr gut ab, z. B. gegen Null-Pointer-Verletzungen. Das ist ein starker Mehrwert gegenüber vielen anderen Sprachen wie C++, Swift & Co. Durch die maschinennahe Sprache ist sie sehr schnell. Sie ist universell. Sie ist nebenläufig. Ihr Nachteil ist nur, dass schnelles Prototyping wie bei dynamischen Programmiersprachen wie Python, PHP und Ruby nicht so ohne weiteres möglich ist. Man muss sich dann doch um grundlegende Sachen wie GC (Garbage Collection) etc. kümmern. Man muss sich also auf den Hosenboden hinsetzen und sehr stark am Code feilen, am besten in größeren Programmierteams, sonst ist die Sprache nicht so optimal beherrschbar. Aber dafür gibt es den großen Vorteil einer sehr klaren Sprachstruktur mit modernen Konzepten ohne alten Ballast. Ein großer Vorteil gegenüber Java & Co., die doch ziemlichen Overhead über all die Jahre aufrecht erhalten haben, noch dazu mit p-Code laufen müssen.

Die klassischen Sprachen haben über die Jahre doch eine ganze Menge Module aufgebaut, was ein klarer Vorteil ist. Aber auch dafür bietet rust entsprechende Unterstützung: es gibt entsprechende API-Aufrufe, mit denen man sich an C/C++-Code, an Python-Code etc. ranflanschen kann. D. h. man kann deren Libraries etc. einfach hereinziehen. Natürlich zulasten der wohlgekapselten Architektur.

Installation und Konfiguration:

Als Deployment-Umgebung ähnlich wie „ant“ für Java, „cuba“ für Ruby oder einfaches „make“ für C/C++ bietet sich „cargo“ für Rust an. „cargo“ ist im „Rust“-Standardpaket bereits enthalten.

Erklärung des „Cargo“-Konzepts
cd ~/Install/git/
cargo new nickel-demo –bin && cd nickel-demo
echo ‚[dependencies]‘ >> Cargo.toml
echo ’nickel = „*“‚ >> Cargo.toml
vi src/main.rs
cargo run

Tipps & Tricks für Docker: Deploying Rust on the Server with Docker

Modul zur Anbindung von MySQL an Rust: Rust-MySQL –  gibt’s natürlich auch für Postgres, Sqlite3 und andere Datenbanken.

Aktuell gibt es diverse Parallelentwicklungen für Web-Anwendungen, sinnvoll ist in jedem Fall die Nickel-API als Low-Level-API für GET/POST, Restful-APIs und JSON-Struktur-Parsing. Hier ein allgemeiner Überblick zu den diversen Web-Libraries.

Die derzeit zwei großen Quellen, die Sprache „Rust“ zu lernen:

1. Rust-Lang.ORG Book
2. RustByExample.Com

Erste Ansätze für Mobile Devices:

1. iOS App in Rust
2. Nightly Build for Android

Debugging:  rustc –pretty=expanded

Kurzum – schaut alles ganz toll aus.

C ist wirklich etwas old-fashioned, und C++, ObjectiveC, Swift, GO, C# und D sind nun wirklich keine richtig dauerhaft würdigen Nachfolger zu C.

Ich bleibe im Augenblick ähnlich proklamatisch wie ein anderer Blog-Schreiber und werfe die folgende These in den Raum:

Rust – die Sprache der Zukunft!“ 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.