Welche Programmiersprachen sind am besten für ein OS geeignet?

Das Ergebnis basiert auf 16 Abstimmungen

C 50%
C++ 31%
Andere (Bitte ein Kommentar abgeben) 18%
Rust 0%

6 Antworten

C

Deine Frage kann missverstanden werden.

Meinst du am besten geeignet um ein OS von Grund auf zu schreiben?

Dann gehen nämlich nur kompilierbare Sprachen wie C und C++.

Rust geht glaub ich auch, allerdings bin ich mir da nicht sicher wie groß hier die Semantische Lücke ist.

Ein OS hat nämlich die Eigenschaft, dass große Teile nahe an der Hardware entwickelt werden müssen. So muss die Programmiersprache es zB unterstützen Pointer auf irgendwelche Speicheradressen zu setzen unabhängig davon ob der Compiler glaubt, dass auf dieser Adresse etwas ist oder nicht.

Im Grunde kann das C und C++ am ehesten. C++ ist ja genau genommen nur ein Superset von C und damit ist jeder gültige C Code auch gültiger C++ Code und man spricht daher eher von der Sprache C/C++. Viele Embedded Programmierer und auch solche die Betriebssysteme entwickeln verwenden am liebsten C, weil C++ leider einige Features hat die man in dieser Umgebung nicht sonderlich gut nutzen kann. So ist es zB nicht sonderlich gut ohne OS die malloc Funktion (oder ähnliche Funktionen) von C aufzurufen, Stichwort Heap Fragmentation. In C++ wird die malloc Funktion leider implizit von sehr vielen Funktionen und Bibliotheken verwendet. So verwendet zB das new Keyword in C++ implizit malloc und auch die Vector Bibliothek von C++ verwendet das intern.

Daher verwenden viele solcher Projekte, mit vielen Einzelpersonen, nur C, weil es dann eben einfacher ist jedem Programmierer zu sagen, welche Features erlaubt sind und welche nicht. Linus Torvalds hat zB genau darum C gewählt, weil er der Meinung ist, dass es einfacher ist ein Team von Freiwilligen zu koordinieren wenn sie nicht von Haus aus zu viele Funktionen haben welche nicht erlaubt sind. In kleineren Teams und bei kleineren Projekten, bzw in Firmen verwendet man für solche Sachen aber auch gerne C++ und eigene Programmingguides an die sich jeder Entwickler halten muss.

C

C (und/oder) C++. Zumindest beim Kern wird nicht wirklich viel an C vorbeiführen. Ein reduziertes C++ ginge sicher auch, also eines das auf Späße wie Überladung verzichtet - sonst wirds wegen der ABI etwas ekelig, name mangling sei dank. Könnte man bei C++ durch Message Passing und entsprechend einfache Struktur der Nachrichten umgehen, dann kann ich aber auch gleich wieder C nutzen.

Im Prinzip geht aber jede kompilierte Sprache, die eine geeignete ABI hat und Dich direkt genug mit der HW werkeln lässt. Je näher die Sprache die ISA der CPU abbilden kann, umso einfacher wird das ganze. Ich muß vor allem auch in der Lage sein nackten Maschinencode direkt mit dem Compiler erzeugen zu können. Mit nackt meine ich, ohne Struktur einer üblichen ausführbaren Datei, die Linkerinfos etc. enthält.

C

Wenn Du ein OS entwickeln willst, dann am besten C mit Assembler, es geht natürlich auch noch C++ mit Assembler, aber für was. Wenn man ein OS entwickelt, schreibt man in der Regel auch alle Bibliotheken selbst mit, dann kann man auch gleich bei C bleiben, das Compilieren ist dann auch schlanker.

Woher ich das weiß:Eigene Erfahrung – Hobby und teilweise beruflich

Was möchtest Du wissen?