MINT lernen

Rust und Go: sicher, schnell

Zwei junge Sprachen mit klarer Mission: Rust schützt den Speicher, Go macht Server einfach und schnell.

1

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 eines String an b — danach ist a ungültig.
  • Borrowing:&a leiht den Wert nur aus; a bleibt 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.

Wem gehört der String?

Weitergeben durch

Halte fest: Ein String hat immer genau einen Besitzer. Wer ihn weitergibt, kann ihn danach nicht mehr benutzen — wer ihn nur mit & verleiht, schon.

2

Go: einfach und nebenläufig

  • Go:2009 bei Google vorgestellt; kompiliert, mit bewusst wenigen Sprachelementen und sehr schnellem Übersetzen.
  • Kurzschreibweise:x := 5 legt eine Variable an, der Typ int wird abgeleitet.
  • Strenger Compiler:eine angelegte, aber nie benutzte Variable ist in Go ein Übersetzungsfehler.
  • Goroutine:go f() startet die Funktion f nebenläufig; Tausende davon können gleichzeitig laufen.
  • Channel:Goroutinen schicken sich über Kanäle Daten zu: ch <- 5 senden, x := <-ch empfangen.
  • Einsatz:Server und Cloud-Werkzeuge — Docker und Kubernetes sind in Go geschrieben.
Rust
fn main() {
    let x = 5;
    for i in 1..=x {
        println!("{}", i);
    }
}
Go
package main
import "fmt"
func main() {
    x := 5
    for i := 1; i <= x; i++ {
        fmt.Println(i)
    }
}
Merke

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.

3

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.

Videos