„Rust ist die Zukunft der systemnahen Programmierung, C ist der neue Assembler“ – Vortrag eines der fĂŒhrenden Ingenieure von Intel

Auf dem kĂŒrzlich abgehaltenen Gipfel fĂŒr Open-Source-Technologien (Open Source Technology Summit - OSTS) Josh Triplett, leitender Ingenieur bei Intel, erklĂ€rte, dass sein Unternehmen daran interessiert ist, dass Rust in naher Zukunft "ParitĂ€t" mit der weiterhin dominierenden Sprache C im Bereich der System- und Low-Level-Entwicklung erreicht. In seiner PrĂ€sentation mit dem Titel "Intel und Rust: Die Zukunft der Systemprogrammierung" sprach er auch ĂŒber die Geschichte der Systemprogrammierung, wie C zur Standardprogrammiersprache wurde, welche Vorteile Rust gegenĂŒber C bietet und wie es in naher Zukunft C vollstĂ€ndig in diesem Bereich der Programmierung ersetzen kann.

„Rust ist die Zukunft der systemnahen Programmierung, C ist der neue Assembler“ – Vortrag eines der fĂŒhrenden Ingenieure von Intel

Systemprogrammierung ist die Entwicklung und Verwaltung von Software, die als Plattform fĂŒr die Erstellung von Anwendungen dient und die Interaktion der letztgenannten mit dem Prozessor, dem Arbeitsspeicher, den Eingabe-/AusgabegerĂ€ten und der NetzwerkausrĂŒstung ermöglicht. Systemsoftware schafft eine spezielle Abstraktion in Form von Schnittstellen, die dabei helfen, Anwendungssoftware zu erstellen, ohne in die Details einzutauchen, wie die Hardware selbst funktioniert.

Triplett selbst 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 von virtuellen Maschinen. Interessanterweise ist Triplett der Meinung, dass auch ein Webbrowser Systemsoftware ist, 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 von HardwareunterstĂŒ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 Unix-Betriebssystem. Basierend auf der Programmiersprache B, die nicht einmal TypunterstĂŒtzung hatte, war C mit leistungsstarken, hochgradigen Funktionen ausgestattet, die sich hervorragend fĂŒr das Schreiben von Betriebssystemen und Treibern eigneten. Mehrere Komponenten von UNIX, einschließlich des Kerns, wurden schließlich in C neu geschrieben. SpĂ€ter wurden auch viele andere Systemprogramme, darunter die Oracle-Datenbank, ein Großteil des Windows-Quellcodes und das Betriebssystem Linux, in C geschrieben.

C erhielt in diesem Bereich eine enorme UnterstĂŒtzung. Aber was hat die Entwickler wirklich dazu gebracht, zu ihm zu wechseln? Triplett ist der Ansicht, dass ein Entwickler normalerweise motiviert werden muss, von einer Programmiersprache zur anderen zu wechseln, und die neue Sprache muss vor allem neue Funktionen bieten, ohne die alten Möglichkeiten zu verlieren.

Erstens muss die Sprache "ziemlich beeindruckende" neue Funktionen bieten. "Sie kann nicht nur ein bisschen besser sein. Sie muss erheblich besser sein, um die MĂŒhe und die Zeit der Ingenieure zu rechtfertigen, die fĂŒr den Übergang erforderlich sind“, erklĂ€rt er. Im Vergleich zur Assemblersprache hatte C viele Dinge zu bieten. Es unterstĂŒtzte in gewissem Maße sichere Typisierung, bot bessere PortabilitĂ€t und Leistung mit hochgradigen Konstruktionen und generierte insgesamt viel leserlicheren Code.

Zweitens muss die Sprache die UnterstĂŒtzung fĂŒr alte Möglichkeiten gewĂ€hrleisten, was bedeutet, dass die Entwickler beim Übergang zu C sicher sein mussten, dass diese nicht weniger funktional ist als die Assemblersprache. Triplett erlĂ€utert: "Eine neue Sprache kann nicht nur besser sein, sie darf auch nicht schlechter sein." Neben der Tatsache, dass C schneller war und alle Datentypen unterstĂŒtzte, die auch die Assemblersprache verwenden konnte, hatte es auch das, was Triplett als "Notausstieg" bezeichnete, nĂ€mlich die Möglichkeit, Code in Assemblersprache einzufĂŒgen.

„Rust ist die Zukunft der systemnahen Programmierung, C ist der neue Assembler“ – Vortrag eines der fĂŒhrenden Ingenieure von Intel

Triplett ist der Meinung, dass C jetzt das wird, was die Assemblersprache vor vielen Jahren war. „C ist das neue Assembler“, erklĂ€rt er. Jetzt suchen Entwickler nach einer neuen Hochsprache, die nicht nur die angesammelten Probleme von C löst, die bereits nicht mehr zu beheben sind, sondern auch neue beeindruckende Möglichkeiten bietet. Eine solche Sprache muss ĂŒberzeugend genug sein, um Entwickler zum Umstieg zu bewegen, muss sicher sein, automatisches Speichermanagement bieten und vieles mehr.

„Jede Sprache, die besser sein will als C, muss viel mehr bieten als nur Schutz vor PufferĂŒberlauf, wenn sie wirklich eine ĂŒberzeugende Alternative werden möchte. Entwickler sind an Benutzerfreundlichkeit und Leistung interessiert, daran, Code zu schreiben, der ohne ErklĂ€rungen auskommt und mehr Arbeit mit weniger Zeilen erledigt. Auch Sicherheitsprobleme mĂŒssen gelöst werden. Benutzerfreundlichkeit und Leistung sind untrennbar miteinander verbunden. Je weniger Code Sie schreiben mĂŒssen, um etwas zu erreichen, desto weniger Möglichkeiten haben Sie, Sicherheitsfehler zu machen“, erlĂ€utert Triplett.

Vergleich zwischen 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 BedĂŒrfnisse zu sponsern und erweiterte zudem das Team fĂŒr die Weiterentwicklung der Sprache.

Ein Grund, warum Mozilla an einer neuen Sprache interessiert war, ist, dass Firefox aus ĂŒber 4 Millionen Zeilen C++-Code geschrieben wurde und ziemlich viele kritische SicherheitsanfĂ€lligkeiten hatte. Rust wurde mit dem Fokus auf Sicherheit und ParallelitĂ€t entwickelt, was es zur idealen Wahl macht, viele Komponenten von Firefox im Rahmen des Quantum-Projekts fĂŒr eine vollstĂ€ndige Neugestaltung der Browserarchitektur neu zu schreiben. Außerdem verwendet Mozilla Rust, um Servo zu entwickeln, eine HTML-Rendering-Engine, die in Zukunft die aktuelle Rendering-Engine von Firefox ersetzen wird. Viele andere Unternehmen haben ebenfalls begonnen, Rust fĂŒr ihre Projekte zu nutzen, darunter Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu und viele andere.

Rust löst eines der wichtigsten Probleme der Programmiersprache C. Es bietet eine automatische Speicherverwaltung, sodass Entwickler den Speicher fĂŒr jedes Objekt in der Anwendung nicht manuell zuweisen und anschließend freigeben mĂŒssen. Was Rust von anderen modernen Sprachen unterscheidet, ist, dass es keinen Garbage Collector hat, der ungenutzte Objekte automatisch aus dem Speicher entfernt, sowie keine Laufzeitumgebung, die wie die Java Runtime Environment fĂŒr Java benötigt wird. Stattdessen verfĂŒgt Rust ĂŒber Konzepte von Besitz, Ausleihe, Referenzen und Lebensdauer. „In Rust gibt es ein Objektaufruf-Deklarationssystem, das es ermöglicht anzugeben, ob es sich um einen Besitz handelt oder ob es sich nur um eine Ausleihe handelt. Wenn Sie ein Objekt lediglich ausleihen, wird der Compiler dies ĂŒberwachen und garantieren, dass das Original an seinem Platz bleibt, solange Sie darauf verweisen. Außerdem wird Rust dafĂŒr sorgen, dass das Objekt sofort nach Beendigung seiner Nutzung aus dem Speicher entfernt wird, indem es den entsprechenden Aufruf zur Kompilierzeit ohne zusĂ€tzliche Zeitkosten in den Code einfĂŒgt“, erklĂ€rt Triplett.

Das Fehlen einer eigenen Laufzeitumgebung kann ebenfalls als positiver Aspekt von Rust betrachtet werden. Triplett ist der Ansicht, dass Sprachen, die damit arbeiten, sich schwer als Werkzeuge fĂŒr Systemprogrammierung nutzen lassen. Wie er erklĂ€rt: „Sie mĂŒssen diese Laufzeitumgebung initialisieren, bevor Sie irgendeinen Code aufrufen können, Sie mĂŒssen diese Laufzeitumgebung verwenden, um Funktionen aufzurufen, und die Laufzeitumgebung selbst kann im Hintergrund zusĂ€tzlichen Code zu unerwarteten Zeitpunkten ausfĂŒhren.“

Rust strebt außerdem an, sicheres paralleles Programmieren zu gewĂ€hrleisten. Die gleichen Funktionen, die es speichersicher machen, ĂŒberwachen Dinge wie, welchem Thread welches Objekt gehört und welche Objekte zwischen Threads ĂŒbertragen werden können und welche gesperrt werden mĂŒssen.

All diese Funktionen machen Rust zu einer ĂŒberzeugenden Wahl fĂŒr Entwickler, die es als neues Werkzeug fĂŒr die Systemprogrammierung wĂ€hlen möchten. Aus der Sicht paralleler Berechnungen hinkt Rust jedoch noch etwas hinter C hinterher.

Triplet plant eine spezielle Arbeitsgruppe zu grĂŒnden, die sich mit der Implementierung notwendiger Funktionen in Rust beschĂ€ftigen wird, damit es C im Bereich Systems Programmierung vollstĂ€ndig gleichziehen, ĂŒbertreffen und ersetzen kann. In einem Thema auf Reddit, das seiner PrĂ€sentation gewidmet ist, teilte er mit, dass die „FFI/C Parity-Gruppe im Prozess der Erstellung ist und noch nicht begonnen hat zu arbeiten“, wĂ€hrend er bereit ist, alle Fragen zu beantworten, und in Zukunft auf jeden Fall die nĂ€chsten PlĂ€ne zur Weiterentwicklung von Rust im Rahmen seiner Initiative fĂŒr alle Interessierten veröffentlichen wird.

Es kann angenommen werden, dass sich die FFI/C Parity-Gruppe zunĂ€chst der Verbesserung der UnterstĂŒtzung fĂŒr Mehrkernverarbeitung in Rust, der Implementierung von BFLOAT16, einem Format fĂŒr die Darstellung von Gleitkommazahlen, das in neuen Intel Xeon Scalable-Prozessoren eingefĂŒhrt wurde, sowie der Stabilisierung von Inline-Assembly-Code widmen wird.



Quelle: 3dnews.ru
ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster