Crysis nerd
Freizeitschrauber(in)
Hi Leute!
Heute ist endlich der Tag, an dem die erste "stabile" Version der Programmiersprache Rust veröffentlicht wird. Und ich wollte diese Gelegenheit nutzen, um euch Rust mal kurz vorzustellen! Warum? Einfach nur, weil ich von der Sprache sehr begeistert bin und mir denke, dass einige von euch auch Gefallen daran finden könnten.
Also: Was ist Rust?
"Rust is a systems programming language that runs blazingly fast, prevents nearly all segfaults, and guarantees thread safety. " -- das steht zumindest auf der offiziellen Website. Das hört sich ja schon mal gut an, aber was genau bedeutet es? Man könnte es auch so sagen: Rust möchte C++ ablösen, oder zumindest eine moderne Alternative zu C++ sein. In vielen Anwendungsbereichen ist es (trotz Prophezeiungen) immer noch notwendig, maximale Performance zu haben oder direkt auf die Hardware zuzugreifen. In solchen Fällen soll man in Zukunft neben C++ auch noch zu Rust greifen können.
Aber ich möchte nicht lange reden, ihr wollt sicher alle mal Code sehen. Also das klassische "Hello World":
So gut, so langweilig. Naja, was geht hier vor? "fn main()" definiert eine Funktion namens "main", das ist bereits aus vielen anderen Sprachen bekannt. Wichtig ist hier, dass "fn" ein Keyword ist, um Funktionen zu definieren. Man nutzt hier also nicht die C-Form, bei der man den Rückgabewert an den Anfang schreibt. "println!" ist ein Makro... was das ist, ist an dieser Stelle erstmal egal, stellt euch einfach vor, es sein ein Funktionsaufruf. "println" ist Teil der Rust Standardbibliothek... aber wo ist das "#include"/"import"? Braucht man in diesem Fall nicht... die Standardbibliothek hat einen besonderen Bereich namens "Prelude", welcher automatisch importiert wird und somit nutzbar ist. Dort sind aber nur sehr oft verwendete Komponenten drin.
Den Code gibt es auch auf Rust Playground. Dort könnt ihr ihn anpassen und direkt ausführen!
Ein komplexeres Beispiel:
Playground
Hier passiert einiges. Ganz am Anfang bauen wir uns eine Funktion "add_seven", die auf den Parameter einfach nur 7 addiert und das Ergebnis zurück gibt. Ein paar Dinge fallen hier auf:
An der zweiten Funktion kann eine weitere Sache erkennen: Es gibt in Rust sog. "Tupel"-Typen... das sind Typen, die aus mehreren Typen bestehen. Geschrieben werden sie einfach nur durch "(typ1, typ2, ...)".
Funktion "get_greeting" hat jetzt weitere neue Dinge. Zum einen ein "match"-Block. Das ist sowas wie "switch", nur deutlich besser. Wie man sieht, kann man Bereiche angeben und mit "|" kann man mehrere Möglichkeiten angeben. Nun wundert man sich eventuell über das "to_string()" am Ende... das ist eine Sache, die am Anfang ein wenig verwirrend ist. Nur so viel: Strings sind kompliziert, wenn man sie schnell haben möchte. Daher gibt es in Rust zwei String-Typen: "String" und "&str". Weil wir es einfach haben wollen, nehmen wir hier "String"... das geben wir mit "to_string()" an.
Fehlt nur noch die main-Funktion: Dort sehen wir erstmal, dass println erlaubt, Argumente mit auszugeben... und zwar indem man ein "{}" in den sog. Format-String schreibt. Erinnert z.B. an printf() aus C. Und am Ende sehen wir noch eine for Schleife... for Schleifen in Rust sind quasi immer "for each" Schleifen. Eine Schleife, die einfach Zahlen hochzählt wäre z.B. "for i in 1..9 { }".
Und nun?
Das waren jetzt nur zwei Beispiele. Ich könnte euch natürlich noch sehr vieles über Rust erzählen, aber ich möchte nicht zu viel auf einmal schreiben.
Was habt ihr für einen ersten Eindruck? Wollt ihr mehr darüber erfahren oder lässt euch das kalt?
Wenn ihr Fragen zu meinen Beispielen habt, raus damit. Wenn ihr ein paar mehr Infos von mir wollt, kann ich gerne noch was schreiben. Wenn ihr selber lernen wollt, könnt ihr mal das Rust Book durchlesen. Das sollte eine komplette Einführung sein.
Bin auf eure Meinungen gespannt!
Viele Grüße
Heute ist endlich der Tag, an dem die erste "stabile" Version der Programmiersprache Rust veröffentlicht wird. Und ich wollte diese Gelegenheit nutzen, um euch Rust mal kurz vorzustellen! Warum? Einfach nur, weil ich von der Sprache sehr begeistert bin und mir denke, dass einige von euch auch Gefallen daran finden könnten.
Also: Was ist Rust?
"Rust is a systems programming language that runs blazingly fast, prevents nearly all segfaults, and guarantees thread safety. " -- das steht zumindest auf der offiziellen Website. Das hört sich ja schon mal gut an, aber was genau bedeutet es? Man könnte es auch so sagen: Rust möchte C++ ablösen, oder zumindest eine moderne Alternative zu C++ sein. In vielen Anwendungsbereichen ist es (trotz Prophezeiungen) immer noch notwendig, maximale Performance zu haben oder direkt auf die Hardware zuzugreifen. In solchen Fällen soll man in Zukunft neben C++ auch noch zu Rust greifen können.
Aber ich möchte nicht lange reden, ihr wollt sicher alle mal Code sehen. Also das klassische "Hello World":
Code:
fn main() {
println!("Hello World!");
}
Den Code gibt es auch auf Rust Playground. Dort könnt ihr ihn anpassen und direkt ausführen!
Ein komplexeres Beispiel:
Code:
fn add_seven(number: i32) -> i32 {
number + 7
}
fn divide_remainder(a: i32, b: i32) -> (i32, i32) {
(a / b, a % b)
}
fn get_greeting(hour_of_day: i32) -> String {
match hour_of_day {
6 ... 11 => "Guten Morgen",
12 ... 14 => "Mahlzeit",
21 ... 23 | 0 ... 5 => "Na, so spät noch wach?",
_ => "Hallo",
}.to_string()
}
fn main() {
println!("5 + 7 is: {}", add_seven(5));
let (div, remainder) = divide_remainder(13, 3);
println!("13 / 3 = {}, 13 % 3 = {}", div, remainder);
// Wir treffen eine Person um eine Uhrzeit (Stunde ist angegeben)
let persons = vec![("Torben", 8),
("Willi Wacker", 13),
("Susi Sorglos", 23)];
for (name, hour) in persons {
println!("{} {}", get_greeting(hour), name);
}
}
Hier passiert einiges. Ganz am Anfang bauen wir uns eine Funktion "add_seven", die auf den Parameter einfach nur 7 addiert und das Ergebnis zurück gibt. Ein paar Dinge fallen hier auf:
- Argumente werden, wie in vielen Sprachen, in die runden Klammern geschrieben... aber anders. Erst kommt der Variablenname, dann ein Doppelpunkt und danach der Typ.
- Der Rückgabewert wird mit einem "->" angegeben
- "i32" ist also scheinbar ein Typ. Richtig. Und zwar ein Integer-Typ mit 32 bits. In Rust gibt es tatsächlich keinen Typen, der "int" heißt. Es gibt nur sog. fixed size integer (i32, i64, u64, u8) und die CPU-Abhängigen Typen (isize und usize). Dabei steht das "u" immer für unsigned. In vielen Systemsprachen ist "int" quasi "isize".
- Der Funktionsname ist in snake_case ... das ist kein Muss aber eine Konvention in Rust.
- Kein "return"? Richtig: In Rust wird automatisch das letzte Statement zurückgegeben. Hier ist "number + 7" das letzte Statement, also wird genau das zurück gegeben.
An der zweiten Funktion kann eine weitere Sache erkennen: Es gibt in Rust sog. "Tupel"-Typen... das sind Typen, die aus mehreren Typen bestehen. Geschrieben werden sie einfach nur durch "(typ1, typ2, ...)".
Funktion "get_greeting" hat jetzt weitere neue Dinge. Zum einen ein "match"-Block. Das ist sowas wie "switch", nur deutlich besser. Wie man sieht, kann man Bereiche angeben und mit "|" kann man mehrere Möglichkeiten angeben. Nun wundert man sich eventuell über das "to_string()" am Ende... das ist eine Sache, die am Anfang ein wenig verwirrend ist. Nur so viel: Strings sind kompliziert, wenn man sie schnell haben möchte. Daher gibt es in Rust zwei String-Typen: "String" und "&str". Weil wir es einfach haben wollen, nehmen wir hier "String"... das geben wir mit "to_string()" an.
Fehlt nur noch die main-Funktion: Dort sehen wir erstmal, dass println erlaubt, Argumente mit auszugeben... und zwar indem man ein "{}" in den sog. Format-String schreibt. Erinnert z.B. an printf() aus C. Und am Ende sehen wir noch eine for Schleife... for Schleifen in Rust sind quasi immer "for each" Schleifen. Eine Schleife, die einfach Zahlen hochzählt wäre z.B. "for i in 1..9 { }".
Und nun?
Das waren jetzt nur zwei Beispiele. Ich könnte euch natürlich noch sehr vieles über Rust erzählen, aber ich möchte nicht zu viel auf einmal schreiben.
Was habt ihr für einen ersten Eindruck? Wollt ihr mehr darüber erfahren oder lässt euch das kalt?
Wenn ihr Fragen zu meinen Beispielen habt, raus damit. Wenn ihr ein paar mehr Infos von mir wollt, kann ich gerne noch was schreiben. Wenn ihr selber lernen wollt, könnt ihr mal das Rust Book durchlesen. Das sollte eine komplette Einführung sein.
Bin auf eure Meinungen gespannt!
Viele Grüße