Plattformunabhängige Software?

Hi!
Mal ´ne ganz andere Frage:
Gibt es eigentlich völlig plattformunabhängige Software, also Programme die auf allen Betriebssystemen (alle windows-versionen, linux, bsd, solaris, was-auch-immer) läuft - und zwar ohne „Hilfsprogramme“ wie z.B. „wine“ oder ´nem Internet-Browser? Ich meine hier - selbstverständlich - auch nicht ´ne Software, die es in verschiedenen „Varianten“ für die einzelnen OS gibt, wie z.B. OpenOffice oder Inkscape, Adobe Reader usw…

Wenn ja, welche? Wenn nein, warum eigentlich nicht?

Gruß
Dirk - der nur mal seinen Wissensdurst ein bischen stillen möchte…

Java.

Braucht aber die entsprechende „Software“, die aber bei fast allen Betriebssystemen dabei ist.

Hi,

Gibt es eigentlich völlig plattformunabhängige Software, also
Programme die auf allen Betriebssystemen (alle
windows-versionen, linux, bsd, solaris, was-auch-immer) läuft

  • und zwar ohne „Hilfsprogramme“ wie z.B. „wine“ oder ´nem
    Internet-Browser? Ich meine hier - selbstverständlich - auch
    nicht ´ne Software, die es in verschiedenen „Varianten“ für
    die einzelnen OS gibt, wie z.B. OpenOffice oder Inkscape,
    Adobe Reader usw…

Wenn ja, welche? Wenn nein, warum eigentlich nicht?

Jein. Ein Programm durchläuft ja immer mehrere Stufen:

Bspw. C:
Source-Code in einer Hochsprache -> [Compiler] -> Objektcode -> [Ausführung durch Betriebssystem]

Alternativ bspw. Perl:
Source-Code in einer Hochsprache -> [Interpreter] -> Objektcode -> [Ausführung durch Betriebssystem]

Alternativ bspw. Java:
Source-Code in einer Hochsprache -> [Compiler] -> Bytecode -> [Virtuelle Maschine] -> Objektcode -> [Ausführung durch Betriebssystem]

Außerdem gibt es noch ein paar andere Möglichkeiten wie Assembler.

Du siehst bei den obigen Beispielen, daß der Code, der letztlich ausgeführt wird, immer an das Betriebssystem gebunden ist. Das muß prinzipbedingt so sein und ist nicht zu ändern.

Trotzdem gibt es natürlich Software, bei der ein und derselbe Quelltext ohne Anpassungen auf allen Systemen (…für die es entsprechende Compiler/Interpreter/Virtuelle Maschinen gibt…) übersetzt und dann ausgeführt werden kann. Je einfacher die Software, desto eher ist das möglich.

Gruß,

Malte

Disclaimer: Ungenauigkeiten bitte verzeihen, bin kein Coder. Korrektur erwünscht.

Moien

Gibt es eigentlich völlig plattformunabhängige Software, also
Programme die auf allen Betriebssystemen (alle
windows-versionen, linux, bsd, solaris, was-auch-immer) läuft

  • und zwar ohne „Hilfsprogramme“

Nein. Das ist technisch nicht möglich. Es müssen unterschiedliche binären Daten für die unterschiedlichen Systeme zur verfügung stehen.

(Eine windows-exe muss z.B. mit irgendwas-MZ-irgendwas anfangen. Bei linux sieht der Header ganz anders aus. Bei Solaris wieder anders… Wenn du die Header mal alle sehen willst: das package „file“ für linux enthält eine relativ vollständige Liste)

cu

Hi Malte,
zumindest für mich ist diese Erklärung genau genug…
Demnach müsste in eine wirklich plattformunabhängige Software eine eigene Virtuelle Maschine eingebaut sein, die für alle OS übersetzen kann, sowie ein „Scanner“, der erstmal nachsieht, welches OS auf dem Rechner läuft und dann der Virtuellen Maschine sagt, wie sie übersetzen soll…
Wär doch mal ´ne nette Herausforderung für Programmierer… :wink:

Gruß
Dirk

Hi Olaf,

mit „software“ meinst du hier wahrscheinlich die JVM (Java Virtual Machine). Da bin ich mir noch nicht so ganz sicher, ob ich das dann nicht als „Hilfsprogramm“ definieren würde…

Gruß
Dirk

mit „software“ meinst du hier wahrscheinlich die JVM (Java
Virtual Machine).

Die meine ich, war mir aber nicht sicher, ob’s überall JVM heißt.

Hi,

Hallo,

Alternativ bspw. Perl:
Source-Code in einer Hochsprache -> [Interpreter] ->
Objektcode -> [Ausführung durch Betriebssystem]

Perl wird nicht (direkt) interpretiert.

Korrektur erwünscht.

Na, wenn Du drum bettelst…

Gruss vom Frank.

Hallo Dirk,

das ist letzlich Ansichts- und Definitionssache, je nachdem, wo man die Schnittstelle sieht: für HTML ist der Browser das Betriebssystem, für Java ist die JVM, letzlich ist Software immer in Schalen aufgebaut. Auf diese Art ist natürlich Plattformunabhängigkeit möglich, man muss nur eine einheitliche Schnittstelle definieren.

Der Einwand, JVM sei ein Hilfsprogramm, ist nicht haltbar, weil es sich nur um eine Schale unter vielen handelt. Windows selbst besteht aus einem Kernel, aber darum herum liegt die Schale Win32API, die die Programme benutzen, zumindest wenn sie nicht die POSIX-Schale benutzen oder die DOS-Schale oder WoW (Win16 on Win32). Und mit VM und ähnlichen kann man die Betriebssysteme weiter ineinanderschachteln, bekanntlich geht Windows unter Linux genausogut wie umgekehrt.

In der Praxis scheitert die Plattformunabhängigkeit regelmässig an der kommerziellen Wirklichkeit: wer einen Visual-Basic-Interpreter für Solaris schreiben will, ist tapfer, aber verrückt. Theoretisch allerdings liesse sich alles an alles anpassen, aber das wusste schon der alte Turing. Übrigens sind gerade die ganz alten Sprachen wie C, Basic, Pascal, Cobol usw. fast völlig plattformunabhängig.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Malte,

Huch?

zumindest für mich ist diese Erklärung genau genug…
Demnach müsste in eine wirklich plattformunabhängige Software
eine eigene Virtuelle Maschine eingebaut sein, die für alle OS
übersetzen kann, sowie ein „Scanner“, der erstmal nachsieht,
welches OS auf dem Rechner läuft und dann der Virtuellen
Maschine sagt, wie sie übersetzen soll…
Wär doch mal ´ne nette Herausforderung für Programmierer… :wink:

Das wäre in erster Linie vor allem ineffizient und schnarchlangsam. Es spricht wenig dagegen, ersteinmal plattformneutral und portabel zu programmieren und das Programm dann das Programm nicht erst zur Laufzeit zu kompilieren.

Das geht auf standardisierten Umgebungen eher einfacher, IOW: Mit Windows beißt man gerne mal in die Kante.

HTH,

Sebastian