„Rust ist die Zukunft der Systemprogrammierung, C ist der neue Assembler“ – eine Rede eines der führenden Ingenieure von Intel

Beim jüngsten Open Source Technology Summi (OSTS) Josh Triplett, ein leitender Ingenieur bei Intel, sagte, sein Unternehmen sei daran interessiert, dass Rust in naher Zukunft „Parität“ mit der C-Sprache erreicht, die immer noch Systeme und Low-Level-Entwicklung dominiert. In seiner Rede Unter dem Titel „Intel und Rust: Die Zukunft der Systemprogrammierung“ sprach er auch über die Geschichte der Systemprogrammierung, wie C zur Standard-Systemprogrammiersprache wurde, welche Funktionen Rust ihm einen Vorteil gegenüber C verschaffen und wie es dies vollständig konnte Ersetzen Sie C in diesem Bereich der Programmierung.

„Rust ist die Zukunft der Systemprogrammierung, C ist der neue Assembler“ – eine Rede eines der führenden Ingenieure von Intel

Systemprogrammierung ist die Entwicklung und Verwaltung von Software, die als Plattform für die Erstellung von Anwendungsanwendungen dient und sicherstellt, dass diese mit dem Prozessor, dem RAM, den Eingabe-/Ausgabegeräten und der Netzwerkausrüstung interagieren. Systemsoftware schafft eine besondere Abstraktion in Form von Schnittstellen, die dabei helfen, Anwendungssoftware zu erstellen, ohne sich mit den Details der Funktionsweise der Hardware selbst zu befassen.

Triplett selbst definiert Systemprogrammierung als „alles, was keine Anwendung ist“. Es umfasst Dinge wie BIOS, Firmware, Bootloader und Betriebssystemkerne, verschiedene Arten von eingebettetem Low-Level-Code und Implementierungen virtueller Maschinen. Interessanterweise glaubt Triplett, dass ein Webbrowser auch Systemsoftware ist, da der Browser längst mehr als „nur ein Programm“ und eine eigenständige „Plattform für Websites und Webanwendungen“ geworden ist.

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.

Dann, in den 1970er Jahren, entwickelte Dennis Ritchie die Programmiersprache C für das Unix-Betriebssystem. C wurde in der Programmiersprache B erstellt, die nicht einmal über Schreibunterstützung verfügte, und war mit leistungsstarken High-Level-Funktionen gefüllt, die sich am besten zum Schreiben von Betriebssystemen und Treibern eigneten. Mehrere Komponenten von UNIX, einschließlich des Kernels, wurden schließlich in C neu geschrieben. Anschließend wurden auch viele andere Systemprogramme, darunter die Oracle-Datenbank, ein Großteil des Windows-Quellcodes und das Linux-Betriebssystem, in C geschrieben.

C hat in dieser Richtung enorme Unterstützung erhalten. Aber was genau hat Entwickler dazu bewogen, darauf umzusteigen? Triplett ist davon überzeugt, dass, um Entwickler zum Wechsel von einer Programmiersprache zu einer anderen zu motivieren, diese zunächst neue Funktionen bereitstellen muss, ohne alte Funktionen zu verlieren.

Erstens muss die Sprache „ziemlich beeindruckende“ neue Funktionen bieten. „Er könnte nicht besser sein. „Es muss deutlich besser sein, den Aufwand und die technische Zeit zu rechtfertigen, die für die Umstellung erforderlich sind“, erklärt er. Im Vergleich zur Assemblersprache hatte C eine Menge zu bieten. Es unterstützte einigermaßen typsicheres Verhalten, sorgte für eine bessere Portabilität und Leistung bei High-Level-Konstrukten und generierte insgesamt viel besser lesbaren Code.

Zweitens muss die Sprache Unterstützung für alte Funktionen bieten, was bedeutet, dass Entwickler in der Geschichte des Übergangs 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 muss auch genauso gut sein.“ C war nicht nur schneller und unterstützte jeden Datentyp, den die Assemblersprache verwenden konnte, sondern verfügte auch über das, was Triplett als „Notausstieg“ bezeichnete – nämlich, dass es das Einfügen von Assemblersprachencode in sich selbst unterstützte.

„Rust ist die Zukunft der Systemprogrammierung, C ist der neue Assembler“ – eine Rede eines der führenden Ingenieure von Intel

Triplett glaubt, dass C nun zu dem wird, was Assemblersprache vor vielen Jahren war. „C ist der neue Assembler“, erklärt er. Nun sind Entwickler auf der Suche nach einer neuen Hochsprache, die nicht nur die in C angehäuften und nicht mehr behebbaren Probleme löst, sondern auch spannende neue Features bietet. Eine solche Sprache muss überzeugend genug sein, um Entwickler zum Umstieg zu bewegen, sie muss sicher sein, eine automatische Speicherverwaltung bieten und vieles mehr.

„Jede Sprache, die besser als C sein will, muss viel mehr als nur Pufferüberlaufschutz bieten, wenn sie wirklich eine überzeugende Alternative sein will. Entwickler sind an Benutzerfreundlichkeit und Leistung interessiert und schreiben Code, der selbsterklärend ist und mehr Arbeit in weniger Zeilen erledigt. Auch Sicherheitsfragen müssen angegangen werden. Benutzerfreundlichkeit und Leistung gehen Hand in Hand. Je weniger Code Sie schreiben müssen, um etwas zu erreichen, desto geringer ist die Möglichkeit, Fehler zu machen, ob sicherheitsrelevant oder nicht“, erklärt Triplett.

Vergleich von Rust und C

Bereits 2006 begann Graydon Hoare, ein Mozilla-Mitarbeiter, Rust als persönliches Projekt zu schreiben. Und im Jahr 2009 begann Mozilla, die Entwicklung von Rust für den eigenen Bedarf zu sponsern und erweiterte außerdem das Team, um die Sprache weiterzuentwickeln.

Einer der Gründe, warum Mozilla an der neuen Sprache interessiert war, ist, dass Firefox in über 4 Millionen Zeilen C++-Code geschrieben wurde und einige kritische Schwachstellen aufwies. Rust wurde mit Blick auf Sicherheit und Parallelität entwickelt und ist daher die ideale Wahl für das Neuschreiben vieler Firefox-Komponenten im Rahmen des Quantum-Projekts, um die Architektur des Browsers komplett neu zu gestalten. Mozilla nutzt Rust auch zur Entwicklung von Servo, einer HTML-Rendering-Engine, die schließlich die aktuelle Firefox-Rendering-Engine ersetzen wird. Viele andere Unternehmen haben begonnen, Rust für ihre Projekte zu verwenden, darunter Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu und viele mehr.

Rust löst eines der wichtigsten Probleme der C-Sprache. Es bietet eine automatische Speicherverwaltung, sodass Entwickler ihn nicht für jedes Objekt in der Anwendung manuell zuweisen und dann freigeben müssen. Was Rust von anderen modernen Sprachen unterscheidet, ist, dass es weder über einen Garbage Collector verfügt, der ungenutzte Objekte automatisch aus dem Speicher entfernt, noch über die dafür erforderliche Laufzeitumgebung wie die Java Runtime Environment für Java. Stattdessen verfügt Rust über die Konzepte Eigentum, Ausleihe, Referenzen und Lebensdauer. „Rust verfügt über ein System zum Deklarieren von Aufrufen eines Objekts, um anzuzeigen, ob der Eigentümer es nutzt oder nur ausleiht. Wenn Sie ein Objekt einfach ausleihen, behält der Compiler dies im Auge und stellt sicher, dass das Original so lange an seinem Platz bleibt, wie Sie darauf verweisen. Rust sorgt außerdem dafür, dass das Objekt aus dem Speicher entfernt wird, sobald seine Verwendung abgeschlossen ist, indem es zur Kompilierungszeit ohne zusätzliche Zeit einen entsprechenden Aufruf in den Code einfügt“, sagt Triplett.

Auch das Fehlen einer nativen Laufzeit kann als positives Merkmal von Rust gewertet werden. Triplett glaubt, dass die Sprachen, auf denen es läuft, schwierig als Systemprogrammierwerkzeuge zu verwenden sind. Er erklärt: „Sie müssen diese Laufzeit initialisieren, bevor Sie Code aufrufen können. Sie müssen diese Laufzeit zum Aufrufen von Funktionen verwenden, und die Laufzeit selbst kann zu unerwarteten Zeiten zusätzlichen Code hinter Ihrem Rücken ausführen.“

Rust ist außerdem bestrebt, eine sichere parallele Programmierung bereitzustellen. Dieselben Funktionen, die es speichersicher machen, verfolgen Dinge wie etwa, welcher Thread welches Objekt besitzt und welche Objekte zwischen Threads weitergegeben werden können und welche eine Sperre benötigen.

All diese Funktionen machen Rust so überzeugend, dass Entwickler es als neues Tool für die Systemprogrammierung auswählen. Allerdings liegt Rust beim Parallelrechnen immer noch etwas hinter C zurück.

Triplett beabsichtigt, eine spezielle Arbeitsgruppe zu gründen, die sich auf die Einführung der notwendigen Funktionen in Rust konzentrieren wird, damit es C im Bereich der Systemprogrammierung vollständig ebenbürtig, übertreffen und ersetzen kann. IN Thread auf RedditIn seiner gewidmeten Rede sagte er, dass „die FFI/C-Paritätsgruppe sich im Gründungsprozess befindet und noch nicht mit der Arbeit begonnen hat“. Derzeit sei er bereit, alle Fragen zu beantworten, und in Zukunft werde er auf jeden Fall unmittelbare Pläne veröffentlichen für die Entwicklung von Rust im Rahmen seiner Initiative für alle Interessierten.

Es ist davon auszugehen, dass sich die FFI/C Parity-Gruppe zunächst auf die Verbesserung der Multithreading-Unterstützung in Rust, die Einführung der Unterstützung für BFLOAT16, ein Gleitkommaformat, das in den neuen Intel Xeon Scalable-Prozessoren erschienen ist, sowie die Stabilisierung der Assembly konzentrieren wird Code-Einfügungen.



Source: 3dnews.ru

Kommentar hinzufügen