Rust: sicher ohne Müllabfuhr
- Rust:bei Mozilla entstanden, Version 1.0 seit 2015; kompiliert und etwa so schnell wie C und C++.
- Speicherfehler:in C/C++ kann ein Programm auf bereits freigegebenen Speicher zugreifen — das führt zu Abstürzen und Sicherheitslücken.
- Garbage Collector:Java, C#, Go und Python räumen unbenutzten Speicher automatisch auf; das kostet Rechenzeit.
- Ownership:in Rust hat jeder Wert genau einen Besitzer; verlässt der Besitzer seinen Block, wird der Speicher sofort freigegeben.
- Move:
let b = a;übergibt den Besitz einesStringanb— danach istaungültig. - Borrowing:
&aleiht den Wert nur aus;ableibt Besitzer. - Borrow Checker:prüft diese Regeln schon beim Kompilieren — ein Verstoß ist ein Übersetzungsfehler, kein Absturz.
Ziehe die Besitz-Marke 🔑 zu a, b oder in die Funktion drucke — mit der Maus oder mit Fokus auf der Marke und den Pfeiltasten ↑ ↓. Schalte dann auf „leihen (&)“ um und vergleiche, welche Zeilen der Compiler annimmt.
Halte fest: Ein String hat immer genau einen Besitzer. Wer ihn weitergibt, kann ihn danach nicht mehr benutzen — wer ihn nur mit & verleiht, schon.
Go: einfach und nebenläufig
- Go:2009 bei Google vorgestellt; kompiliert, mit bewusst wenigen Sprachelementen und sehr schnellem Übersetzen.
- Kurzschreibweise:
x := 5legt eine Variable an, der Typintwird abgeleitet. - Strenger Compiler:eine angelegte, aber nie benutzte Variable ist in Go ein Übersetzungsfehler.
- Goroutine:
go f()startet die Funktionfnebenläufig; Tausende davon können gleichzeitig laufen. - Channel:Goroutinen schicken sich über Kanäle Daten zu:
ch <- 5senden,x := <-chempfangen. - Einsatz:Server und Cloud-Werkzeuge — Docker und Kubernetes sind in Go geschrieben.
fn main() { let x = 5; for i in 1..=x { println!("{}", i); } }
package main import "fmt" func main() { x := 5 for i := 1; i <= x; i++ { fmt.Println(i) } }
Rust und Go: Rust: Ownership und Borrow Checker sorgen für Speichersicherheit ohne Garbage Collector. Go: einfache Syntax und Goroutinen für viele gleichzeitige Aufgaben.
Allgemeine Hinweise
Zahlen werden kopiert
Bei let y = x; mit einer Zahl (i32) bleibt x gültig — kleine Werte fester Größe werden kopiert, nicht verschoben.
Go ist streng mit Resten
Eine unbenutzte Variable oder ein unbenutzter import verhindert in Go das Übersetzen. Lösche sie oder benutze sie.
Ohne Installation ausprobieren
Im Rust Playground (play.rust-lang.org) und im Go Playground (go.dev/play) läuft Code direkt im Browser.
