Auf dem kĂŒrzlich stattgefundenen Open Source Technology Summit (OSTS) , leitender Ingenieur bei Intel, erklĂ€rte, dass sein Unternehmen daran interessiert ist, dass Rust in naher Zukunft âParitĂ€tâ mit der nach wie vor dominierenden Sprache C in der System- und Niedrig-Level-Entwicklung erreicht. mit dem Titel âIntel und Rust: Die Zukunft der Systemprogrammierungâ sprach er zudem ĂŒber die Geschichte der Systemprogrammierung, darĂŒber, wie C zur Standard-Sprache der Systemprogrammierung wurde, welche Vorteile Rust gegenĂŒber C bietet und wie es in naher Zukunft C in diesem Bereich der Programmierung vollstĂ€ndig ersetzen könnte.

Systemprogrammierung umfasst die Entwicklung und Verwaltung von Software, die als Plattform fĂŒr die Erstellung von Anwendungsanwendungen dient. Sie gewĂ€hrleistet die Interaktion dieser Anwendungen mit dem Prozessor, dem Arbeitsspeicher, den EingabegerĂ€ten und der Netzwerkausstattung. Systemsoftware schafft eine spezielle Abstraktion durch Schnittstellen, die die Erstellung von Anwendungssoftware erleichtern, ohne dass tiefgehende Kenntnisse ĂŒber die Funktionsweise der Hardware erforderlich sind.
Triplet definiert Systemprogrammierung als "alles, was keine Anwendung ist". Dazu gehören Dinge wie BIOS, Firmware, Bootloader und Betriebssystemkerne, verschiedene Arten von eingebettetem Low-Level-Code sowie Implementierungen virtueller Maschinen. Interessanterweise betrachtet Triplet auch Webbrowser als Systemsoftware, da der Browser lĂ€ngst mehr ist als "nur ein Programm" und sich zu einer eigenstĂ€ndigen "Plattform fĂŒr Websites und Webanwendungen" entwickelt hat.
In der Vergangenheit wurden die meisten Systemprogramme, einschlieĂlich BIOS, Bootloader und Firmware, in Assemblersprache geschrieben. In den 1960er Jahren begannen Experimente zur Bereitstellung hardwarebasierter UnterstĂŒtzung fĂŒr Hochsprachen, was zur Entwicklung von Sprachen wie PL/S, BLISS, BCPL und ALGOL 68 fĂŒhrte.
In den 1970er Jahren entwickelte Dennis Ritchie die Programmiersprache C fĂŒr das Betriebssystem Unix. C, das auf der Programmiersprache B basierte, die noch nicht einmal TypunterstĂŒtzung hatte, war mit leistungsstarken hochgradigen Funktionen ausgestattet, die sich besonders gut fĂŒr das Schreiben von Betriebssystemen und Treibern eigneten. Mehrere Komponenten von UNIX, einschlieĂlich des Kerns, wurden letztendlich in C neu geschrieben. Auch viele andere Systemprogramme, darunter die Oracle-Datenbank, der GroĂteil des Quellcodes von Windows und das Betriebssystem Linux, wurden ebenfalls in C entwickelt.
C erhielt in diesem Bereich erhebliche UnterstĂŒtzung. Aber was hat die Entwickler dazu gebracht, zu wechseln? Triplet erklĂ€rt, dass eine Programmiersprache, um Entwickler zu motivieren, von einer Sprache auf eine andere zu wechseln, zunĂ€chst neue Funktionen bieten muss, ohne dabei die alten Möglichkeiten zu verlieren.
Erstens muss die Sprache "ausreichend beeindruckende" neue Funktionen bieten. "Sie kann nicht nur etwas besser sein. Sie muss erheblich besser sein, um den Aufwand und die Zeit der Ingenieure zu rechtfertigen, die fĂŒr den Wechsel erforderlich sind", erklĂ€rt er. Im Vergleich zur Assemblersprache bot C viele Vorteile: Es unterstĂŒtzte teilweise sichere Typisierung, bot bessere PortabilitĂ€t und Leistung mit hochgradigen Konstruktionen und erzeugte insgesamt viel lesbareren Code.
Zweitens muss die Sprache die UnterstĂŒtzung fĂŒr Ă€ltere Funktionen gewĂ€hrleisten, was bedeutet, dass die Entwickler beim Ăbergang zu C sicherstellen mussten, dass sie nicht weniger funktional ist als die Assemblersprache. Triplett erklĂ€rt: âEine neue Sprache kann nicht nur besser sein, sie darf auch nicht schlechter sein.â Abgesehen davon, dass C schneller war und alle Datentypen unterstĂŒtzte, die in der Assemblersprache verwendet werden konnten, hatte es auch das, was Triplett als âNotausstiegâ bezeichnete, nĂ€mlich die Möglichkeit, innerhalb von C Assembler-Code einzufĂŒgen.

Triplett ist der Meinung, dass C jetzt das wird, was die Assemblersprache vor vielen Jahren war. âC ist der neue Assemblerâ, erklĂ€rt er. Jetzt suchen die Entwickler nach einer neuen Hochsprache, die nicht nur die in C angesammelten Probleme lösen soll, deren Behebung bereits unmöglich ist, sondern auch neue beeindruckende Funktionen bietet. Eine solche Sprache muss ĂŒberzeugend genug sein, um die Entwickler zu einem Wechsel zu bewegen, sicher sein, automatisches Speichermanagement bieten und vieles mehr.
âJede Programmiersprache, die besser sein möchte als C, muss wesentlich mehr bieten als nur Schutz vor PufferĂŒberlĂ€ufen, wenn sie wirklich eine ĂŒberzeugende Alternative werden will. Entwickler legen Wert auf Benutzerfreundlichkeit und Leistung, darauf, Code zu schreiben, der selbsterklĂ€rend ist und mehr Arbeit mit weniger Zeilen erledigt. Sicherheitsprobleme mĂŒssen ebenfalls angegangen werden. Benutzerfreundlichkeit und Leistung sind untrennbar miteinander verbunden. Je weniger Code Sie zum Erreichen eines Ziels schreiben mĂŒssen, desto geringer ist die Wahrscheinlichkeit, Sicherheitsfehler zu machenâ, erklĂ€rt Triplett.
Vergleich von Rust und C
Bereits 2006 begann Graydon Hoare, ein Mitarbeiter von Mozilla, Rust als persönliches Projekt zu entwickeln. 2009 begann Mozilla, die Entwicklung von Rust fĂŒr eigene Zwecke zu sponsern und erweiterte das Team, um die Sprache weiterzuentwickeln.
Ein Grund, warum Mozilla sich fĂŒr die neue Programmiersprache interessiert, ist, dass Firefox aus mehr als 4 Millionen Zeilen C++-Code besteht und zahlreiche kritische SicherheitsanfĂ€lligkeiten aufwies. Rust wurde mit Blick auf Sicherheit und ParallelitĂ€t entwickelt, was es zur idealen Wahl macht, um viele Komponenten von Firefox im Rahmen des Quantum-Projekts zur vollstĂ€ndigen Ăberarbeitung der Browserarchitektur neu zu implementieren. Zudem nutzt Mozilla Rust zur Entwicklung von Servo, einer HTML-Rendering-Engine, die in Zukunft die bestehende Rendering-Engine von Firefox ablösen wird. Viele andere Unternehmen haben ebenfalls begonnen, Rust fĂŒr ihre Projekte einzusetzen, darunter Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu und viele mehr.
Rust löst eines der bedeutendsten Probleme der Programmiersprache C. Es bietet automatisches Speichermanagement, sodass Entwickler nicht manuell fĂŒr jedes Objekt in der Anwendung Speicher zuweisen und diesen anschlieĂend wieder freigeben mĂŒssen. Was Rust von anderen modernen Sprachen unterscheidet, ist, dass es keinen Garbage Collector gibt, der ungenutzte Objekte automatisch aus dem Speicher entfernt, sowie keine Laufzeitumgebung, die fĂŒr seine AusfĂŒhrung erforderlich ist, wie z.B. die Java Runtime Environment fĂŒr Java. Stattdessen hat Rust Konzepte wie Besitz, Ausleihe, Referenzen und Lebenszeiten. "In Rust gibt es ein System zur Deklaration von Objektaufrufen, das angibt, ob es sich um den Besitzer oder nur um eine Ausleihe handelt. Wenn Sie nur ein Objekt ausleihen, wird der Compiler dies ĂŒberwachen und sicherstellen, dass das Original an seinem Platz bleibt, solange Sie darauf verweisen. Zudem wird Rust dafĂŒr sorgen, dass das Objekt sofort aus dem Speicher entfernt wird, sobald es nicht mehr verwendet wird, indem es den entsprechenden Aufruf wĂ€hrend der Kompilierung in den Code einfĂŒgt, ohne zusĂ€tzliche Zeitkosten", erklĂ€rt Triplett.
Das Fehlen einer eigenen Laufzeitumgebung kann ebenfalls als Vorteil von Rust betrachtet werden. Triplet ist der Meinung, dass Sprachen, die durch sie ausgefĂŒhrt werden, als Werkzeuge fĂŒr die Systemprogrammierung schwer zu verwenden sind. Er erklĂ€rt: âSie mĂŒssen diese Laufzeitumgebung initialisieren, bevor Sie jeden Code aufrufen können. Sie mĂŒssen diese Laufzeitumgebung verwenden, um Funktionen aufzurufen, und selbst die Laufzeitumgebung kann zu unerwarteten Zeiten zusĂ€tzlichen Code im Hintergrund ausfĂŒhren.â
Rust zielt auch darauf ab, sicheres paralleles Programmieren zu gewĂ€hrleisten. Die gleichen Funktionen, die es speichersicher machen, verfolgen Dinge wie zu welchem Thread welches Objekt gehört und welche Objekte zwischen Threads ĂŒbertragen werden können, wĂ€hrend andere blockiert werden mĂŒssen.
All diese Funktionen machen Rust zu einer ĂŒberzeugenden Wahl, sodass Entwickler ihn als neues Werkzeug fĂŒr die Systemprogrammierung wĂ€hlen können. Aus der Perspektive der parallelen Berechnungen hinkt Rust jedoch noch etwas hinter C hinterher.
Triplet plant eine spezielle Arbeitsgruppe, die sich mit der Implementierung der benötigten Funktionen in Rust beschĂ€ftigen wird, damit es mit C im Bereich der Systemprogrammierung vollstĂ€ndig gleichziehen, es ĂŒbertreffen und ersetzen kann. In , der sich seinem Vortrag widmet, teilte er mit, dass "die FFI/C Parity-Gruppe in der Entstehung ist und noch nicht mit der Arbeit begonnen hat". Er ist bereit, alle Fragen zu beantworten und wird in Zukunft sicher die nĂ€chsten Schritte zur Weiterentwicklung von Rust im Rahmen seiner Initiative fĂŒr alle Interessierten veröffentlichen.
Es kann davon ausgegangen werden, dass sich die FFI/C Parity-Gruppe zunĂ€chst auf die Verbesserung der UnterstĂŒtzung fĂŒr Multithreading in Rust, die Implementierung der UnterstĂŒtzung fĂŒr BFLOAT16 â ein Format fĂŒr die Darstellung von FlieĂkommazahlen, das in den neuen Intel Xeon Scalable-Prozessoren eingefĂŒhrt wurde â sowie die Stabilisierung der Einbettung von Assembly-Code konzentrieren wird.
Quelle: 3dnews.ru
