Heim > Backend-Entwicklung > C++ > [Rust-Selbststudium] . Einführung

[Rust-Selbststudium] . Einführung

Susan Sarandon
Freigeben: 2024-12-30 15:04:10
Original
812 Leute haben es durchsucht

[Rust Self-Study] . Intro

1.0.1 Vorwort

Dieses Projekt (sowohl Code als auch Notizen) wurde während meiner Selbstlernreise mit Rust dokumentiert. Es kann zu Ungenauigkeiten oder unklaren Ausdrücken kommen, daher bitte ich um Ihr Verständnis. Wenn Sie davon profitieren, umso besser.

1.0.2 Warum Rust verwenden?

  • Rust ist zuverlässig und effizient.

  • Rust kann C und C mit ähnlicher Leistung, aber höherer Sicherheit ersetzen und erfordert keine häufige Neukompilierung, um auf Fehler wie C und C zu prüfen. Zu den wichtigsten Vorteilen gehören:

    • Speichersicherheit (verhindert die Dereferenzierung von Nullzeigern, baumelnde Zeiger und Datenrennen).
    • Thread-Sicherheit (stellt sicher, dass Multithread-Code vor der Ausführung sicher ist).
    • Vermeidet undefiniertes Verhalten (z. B. Array außerhalb der Grenzen, nicht initialisierte Variablen oder Zugriff auf freigegebenen Speicher).
  • Rust bietet moderne Sprachfunktionen (z. B. Generika, Merkmale, Mustervergleich).

  • Rust bietet eine moderne Toolchain. Rusts Cargo teilt ähnliche Prinzipien mit Pythons Pip. Im Gegensatz zur umständlichen Abhängigkeitskonfiguration von C/C bietet Cargo eine benutzerfreundliche Abhängigkeitsverwaltungserfahrung ähnlich wie Python und behält gleichzeitig die Leistung auf C/C-Ebene bei.

1.0.3 Anwendbare Szenarien

  • Wenn Leistung erforderlich ist: Rust kann den Speicher genauso präzise steuern wie C (unter Verwendung von Unsafe) und bietet gleichzeitig moderne Annehmlichkeiten (z. B. Besitzsystem und Mustervergleich). Python hingegen priorisiert die Entwicklereffizienz, opfert jedoch die Leistung.

  • Wenn die Speichersicherheit von entscheidender Bedeutung ist: Die statischen Prüfungen von Rust zur Kompilierungszeit gewährleisten eine hohe Speichersicherheit und eignen sich daher hervorragend für Szenarien, die Fehlervermeidung erfordern, wie z. B. Betriebssysteme, eingebettete Systeme und Netzwerkserver .

  • Wenn eine effiziente Nutzung von Multi-Core-Prozessoren erforderlich ist: Rust unterstützt nativ effiziente Parallelität und Multi-Core-Programmierung ohne Einbußen bei der Sicherheit, was es besonders vorteilhaft in Szenarien macht, die einen hohen Durchsatz und gleichzeitige Aufgaben erfordern ( z. B. Webserver, verteilte Systeme, Echtzeit-Computing).

Rust zeichnet sich in den folgenden Bereichen aus:

  • Webdienste
  • WebAssembly (Rust und C/C übertreffen C# und Java deutlich in Bezug auf die Leistung)
  • Befehlszeilentools
  • Netzwerkprogrammierung
  • Eingebettete Geräte
  • Systemprogrammierung

1.0.4 Vergleich mit anderen Sprachen

Category Language Features
Machine Code Binary Closest to hardware, executed directly by CPU.
Assembly Assembly Uses mnemonics to replace machine code, e.g., MOV AX, BX.
Low-level C, C Close to hardware, provides limited abstraction.
Mid-level Rust, Go Performance similar to low-level languages with higher abstraction.
High-level Python, Java Higher-level abstraction, easier to read and use.

Hoch- und Niedersprachen sind nicht streng gegensätzlich, sondern existieren in einem kontinuierlichen Spektrum:

  • Sprachen auf niedrigerer Ebene bieten eine bessere Kontrolle über die Hardware, erfordern jedoch eine komplexere Codierung und eine geringere Entwicklungseffizienz.

  • Sprachen auf höherer Ebene bieten eine größere Abstraktion und Automatisierung, können aber zu Laufzeit-Overhead führen und die feinkörnige Hardwaresteuerung verlieren.

Rusts Vorteile:

  • Hohe Leistung
  • Starke Sicherheitsgarantien
  • Hervorragende Unterstützung für Parallelität

Rusts Position als Mittelsprache bietet die folgenden Vorteile:

  • C/C : Hervorragende Leistung, aber mangelnde Sicherheit; Rost sorgt für Sicherheit bei vergleichbarer Leistung.

  • Java/C#: Gewährleistet Speichersicherheit (mittels Garbage Collection) und bietet zahlreiche Funktionen, aber die Leistung ist schwächer; Rust erreicht ein ähnliches Sicherheitsniveau bei überlegener Leistung.

1.0.5 Geschichte von Rust

Rust entstand als Forschungsprojekt von Mozilla, wobei der Firefox-Browser ein bemerkenswertes Anwendungsbeispiel ist.

Mozilla hat die experimentelle Browser-Engine Servo mit Rust entwickelt (initiiert im Jahr 2012, erste Vorschau im Jahr 2016 veröffentlicht). Die Architektur von Servo ist vollständig parallelisiert. Leider hat Mozilla im August 2020 den Großteil des Servo-Entwicklungsteams entlassen. Ab dem 17. November 2020 wurde Servo an die Linux Foundation übertragen. Teile der Servo-Funktionalität sind bereits in Firefox integriert.

Die Quantum-Version von Firefox enthält die CSS-Rendering-Engine von Servo. Rust hat Firefox erhebliche Leistungsverbesserungen gebracht.

1.0.6 Rust-Benutzer und Fallstudien

  • Google: Das Fuschia-Betriebssystem, bei dem Rust 30 % der Codebasis ausmacht.

  • Amazon: Ein Linux-basiertes Betriebssystem, das für die direkte Ausführung von Containern auf Bare-Metal- oder virtuellen Maschinen entwickelt wurde.

  • System76: Entwickelte das sichere Betriebssystem Redox der nächsten Generation vollständig in Rust.

  • Stanford und University of Michigan: Ein eingebettetes Echtzeitbetriebssystem, das in den kryptografischen Produkten von Google verwendet wird.

  • Microsoft: Bestimmte Low-Level-Komponenten in Windows mit Rust neu geschrieben.

  • Microsoft: Das WinRT/Rust-Projekt.

Das obige ist der detaillierte Inhalt von[Rust-Selbststudium] . Einführung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage