Welche Programmiersprache für ein Betriebssystem?

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo, habe mich etwas in Java eingelesen und immer wieder gelesen, dass C Libraries aufgerufen werden, die zum BS gehören. Deswegen meine Frage direkt zu C. C/C++ wird immer mehr durch andere Sprachen ersetzt. C wird durch C++ ersetzt oder System C. C++ mehr und mehr durch Java/.Net...
Auf lange Sicht kann doch aber C/C++ nicht aussterben. Denn die BS Routinen müssen doch überwiegend in hardwarenahem, schnellen C/C++ geschrieben werden, oder? Aber wird heute noch ein so großes BS (bzw. der Kern) wie Vista oder Xp mit C/C++ geschrieben?



L-ectron-X hat diesen Beitrag am 21.05.2008 um 21:52 Uhr editiert.
Titel des Themas angepasst.
 
Was für ein Topic...

Manchmal frage ich mich, ob Topics nicht bald am besten abgeschafft werden sollten, wenn sowieso keiner was sinnvolles einträgt..
 
Es wird irgendwie immer mehr zur Seuche. Auch beim E-Mail Verkehr stelle ich gehäuft das Vorkommen von Betreff-Verweigerern fest. Vielleicht sollte man sich mal fragen, ob man auch Zeitschriften und Bücher mit leeren / nichtssagenden Umschlägen kaufen und lesen würde...
 
Hi,

vielleicht hilft diese Sicht. Es gibt immer "low-level" und "mainstream" Programmmierung. "low-level" programmiert man, wenn man hardwarenah programmieren muss (Treiber z.B.) oder besondere Geschwindigkeitsanforderungen bestehen. "mainstream" seien der große Haufen an Applikationssoftware, der so tagtäglich geschrieben wird.

Über die Zeit wird das, was mal "mainstream" war, zur "low-level"-Programmierung, d.h. die Kategorien ändern sich über die Zeit. C war eine lange Zeit lang die Standardsprache, die auch zur Programmierung von normalen Applikationen eingesetzt wurde, und zwar hauptsächlich aus Geschwindigkeits- und Platzgründen. Eine Effizienz eines Bytecodeinterpreters (java virtual machine) von selbst 50% im Vergleich zu C wäre vor noch 10 Jahren für viele Applikationen nicht akzeptabel gewesen. Und erst eine Java Virtual Machine für ein kleines Kommandozeilentool laden zu müssen, hätte bedeutet, dass niemand dieses Tool benutzt.

Deswegen hat man "normale Applikationen" früher in C geschrieben, hat sich damit natürlich aber auch die ganzen C-spezifischen Probleme eingehandelt, speziell das Speichermanagement war lange Zeit ein echtes Problem. Dieses Problem taucht bei Java nicht auf (automatische Freigabe von Speicher), wie auch diverse andere Probleme nicht, weshalb Java viel sicherer zu programmieren ist. Für "mainstream"-Programme ist Java daher momentan die Sprache der Wahl.

C ist deshalb inzwischen zur "low-level"-Sprache "degradiert", und hat die Rolle, die früher Assembler hatte. Es wird also dort eingesetzt, wo hardwarenah programmiert werden muss oder besondere Geschwindigkeitsanforderungen bestehen, und denk dabei nicht nur an Treiber oder Videocodecs, denk auch an langsamere Chips in Handys, PDAs etc.

Ich persönlich glaube, dass C diese Rolle auch weiterhin beibehalten wird, weil es unter den "low level"-Sprachen diejenige ist, für die es für jede Prozessor/Betriebssystem-Kombination einen Compiler gibt. Assembler hingegen programmiert man heutzutage eigentlich gar nicht mehr, auch weil es relativ einfach ist, einen C Compiler (die "toolchain") für einen neuen Prozessor zu schreiben, weil nur noch das sog. "backend" angepasst werden muss.

Die Zukunft? Java wird "low level", und Web 2.0 zum Mainstream. Oder ich täusche mich komplett und Java stirbt einfach aus. 😉

Grüße,
Wolfram
 
In was werden eigentlich Betriebssysteme entwickelt? Die Kerne sind ja auch sehr hardwarenah bzw. die ganze Threadverarbeitung muss sehr schnell ablaufen. Also wird wohl C++ nie aussterben. Ebenso die Treiberprogrammierung, da diese ja möglichst effizient sein müssen, werden diese auch immer in C++ geschrieben, oder?
 
lhe hat gesagt.:
Bald? VM in der VM gibts schon lange...
Screenshot
🙂
Ich teste meine Java-Webapps mit Tomcat in einer Linux-Virtual Environement (Centos mit OpenVz) deren Host-OS wieder rum in VmWare auf MacOSX läuft.

Man sollte C und C++ nicht in einen Topf werfen.
Glaube nicht, dass bei der Treiber und OS-Entwicklung objektorientiert entwickelt wird.

ms
 
Anonymous hat gesagt.:
In was werden eigentlich Betriebssysteme entwickelt? Die Kerne sind ja auch sehr hardwarenah bzw. die ganze Threadverarbeitung muss sehr schnell ablaufen. Also wird wohl C++ nie aussterben. Ebenso die Treiberprogrammierung, da diese ja möglichst effizient sein müssen, werden diese auch immer in C++ geschrieben, oder?

In der Allgemeinheit gestellt, ist die Antwort wohl C, und zwar ohne irgendwelche Sonderzeichen dran 🙂 Das hat allerdings nicht mit mangelnder Objektorientierung zu tun - objektorientiert kann man auch in C programmieren, nur muss man die ganze schicke Funktionalität objektorientierter Sprachen halt von Hand ausprogrammieren. Nicht umsonst haben die ersten C++ Compiler nach C compiliert, nicht Maschinensprache (oder P-Code). Wenn sich an Datenstrukturen in Betriebssystemen eine Reihe von Zeigern auf Funktionen finden, handelt es sich um so etwas: Objektorientierte Programmierung in einer nicht-objektorientierten Sprache. Aber das nur am Rande.

Etwas weniger allgemein, ein Betriebssystem hat sehr unterschiedliche Aufgaben, und entsprechend dieser Aufgaben sind die Programmiersprachen und -umgebungen gewählt. Der Kern und die Treiber werden wohl fast ausschließlich in C programmiert, vielleicht mit ein paar eingestreuten Assembler-Anweisungen, so dass z.B. besondere Prozessoreigenschaften ausgenutzt werden können. Aber es gibt auch das große "Randgebiet" außerhalb dieser Schauplätze, Code, der mit Sicherheit Betriebssystemcode ist, aber weder hardwarenah ist noch besonders schnell sein muss.

In welcher Programmiersprache programmiert man am besten den "Datei öffnen"-Dialog?

Wenn Du Windows benutzt, hast Du vielleicht schon mal festgestellt, dass es 3 (oder so?) vom Betriebssystem zur Verfügung gestellte "Datei öffnen"-Dialoge gibt. Es gibt überhaupt keinen Grund, warum so ein Standarddialog in C oder C++ oder irgendwas anderem programmiert werden müsste. Wichtig ist nur, dass es eine bestimmte Methode gibt, diesen Dialog in ein eigenes Programm einzubinden, also nur eine Schnittstelle zu dieser Betriebssystemfunktion. In Windows ist dies die .DLL, die dynamic link library. Es gibt viele Programmiersprachen, die Programmfunktionen mit dieser (oder vergleichbaren, für andere Betriebssysteme) Schnittstelle erzeugen können, und also auch viele Sprachen, in denen "Betriebssysteme" geschrieben werden können.

Diese "Randfunktionen" von Betriebssystemen werden wohl in Zukunft eher weniger in C, und mehr in "managed code"-Sprachen implementiert werden.
 
thE_29 hat gesagt.:
Was für ein Topic...

Manchmal frage ich mich, ob Topics nicht bald am besten abgeschafft werden sollten, wenn sowieso keiner was sinnvolles einträgt..
Und ich frage mich, wozu du Modrechte hast, wenn du nicht mal den Beitrag editierst und einen passenden Titel setzt?
 
Gast hat gesagt.:
Hallo, habe mich etwas in Java eingelesen und immer wieder gelesen, dass C Libraries aufgerufen werden, die zum BS gehören. Deswegen meine Frage direkt zu C. C/C++ wird immer mehr durch andere Sprachen ersetzt. C wird durch C++ ersetzt oder System C. C++ mehr und mehr durch Java/.Net...
Auf lange Sicht kann doch aber C/C++ nicht aussterben. Denn die BS Routinen müssen doch überwiegend in hardwarenahem, schnellen C/C++ geschrieben werden, oder? Aber wird heute noch ein so großes BS (bzw. der Kern) wie Vista oder Xp mit C/C++ geschrieben?



L-ectron-X hat diesen Beitrag am 21.05.2008 um 21:52 Uhr editiert.
Titel des Themas angepasst.


Zur Enwicklung eines komplexeren Systems werden immer verschiedene Programmiersprachen verwendet. Ein gutes Beispiel ist z.B. das neu entwickelte "Handy-Betriebssystem" Google-Android.

code.google.com/android/what-is-android.html

Die Architektur der Plattform enthält einige C/C++ - Bibliotheken. Anwendungen für dies Plattform werden aber ausschließlich in Java programmiert. Von jeder Programmiersprache wird also "das Beste" verwendet. :wink:
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben