PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welchen Sprachen Sind alles problemlos Portierbar???



McSnoop
23-09-2004, 15:17
Welchen Sprachen sind alles problemlos Portierbar???

Java ist denk ich die bekannteste, welche gibt es noch, wenn es noch weitere gibt???

mfg
Snoop

Boron
23-09-2004, 15:57
Perl, Python, Ada.

C/C++ bei Beschränkung auf Standard Bibliotheken.
C++ mit Qt auf Linux, Mac und Windows und Embedded Linux

Lin728
23-09-2004, 16:06
Hmm, Sprachen und portierbar, ich nehme an es geht dabei um source-portabilität.

Hmm, sogesehen ist nahezu jeden Sprache portabel oder wie du es ausdrücks "sind alles problemlos portierbar", wenn du keine schmutzigen Sachen wie sich auf byte-odering verlassen machen tust, eigentlich jede Sprache für die der selbe Compiler für mehrer Platformen verfügbar ist.

Das problematische sind meistens die zusätzlichen Bibliotheken welche man verwendet. Mit C/c++/python/perl kann man z.B. ohne zusätzliche Bibliotheken keine GUIs machen, mit java geht das, ....

Wenn alle bibliotheken die du verwendest platformunabhngig sind, stehen die chancen hoch, dass auch ein C-Programm sich auf den unterschiedlichsten Platformen kompilieren lässt.
Wenn du aber mit JNI in Java auf win32-schnittstellen zugreifst, läuft das Java-Programm halt nur noch auf windows...

locus vivendi
23-09-2004, 17:58
Wie ceisserer schon erwähnte, es gibt einen großen Unterschied zwischen Portierbarkeit der Sprache (oder besser einer Implementierung) selber, und der Portierbarkeit von Programmen die man in der Sprache schreibt. Bei ersterem ist "gute" Portierbarkeit dann gegeben, wenn die Sprache geringe Anforderungen an die Umgebung stellt. So gesehen ist Java relativ schlecht portierbar, da es z.B. ein graphisches Ausgabegerät voraussetzt. Der Aspekt der Portierbarkeit von Programmen ist ähnlich zu beantworten. Weil jede getroffene Annahme über die Umgebung die Portierbarkeit erschwert, unterstützt eine Programmiersprache dann gut portable Programmierung, wenn man die Annahmen über die Umgebung möglichst fein gestalten kann. Ich möcht dazu ein Beispiel geben, um das zu verdeutlichen. Angenommen eine Sprache soll den Umgang mit Dateien ermöglichen, weil dem Programmierer die Möglichkeit gegeben werden soll, Daten dauerhaft zu speichren, so dass andere Programme, die innerhalb der ausführenden Umgebung laufen, diese Daten ebenfalls lesen können. Außerdem sollen verschiedene Programme verschiedene Namen für ihre Daten wählen können. (Das ist ungefähr das, was ich mir unter dem Begriff "Datei" vorstelle.) Um dieses Konzept umzusetzen, reicht es aus zwei Funktionen zum Lesen und zum Schreiben einer Anzahl von Bytes bereitzustellen, ergänzt durch Funktionen zum Feststellen von Fehlern. Eine schlecht portierbare Umsetzung ist es, die Schnittstelle, also z.B. die Funktionen zum Lesen und Schreiben so zu gestalten, das ein wahlfreier Zugriff auf einzelne Bytes in einer Datei möglich ist. Denn was ist z.B. die Daten auf einem Bandlaufwerk gespeichert werden. Ein wahlfreier Zugriff gestaltet sich dann schwierig. Mann kann sich auch Speicherverfahren vorstellen, bei denen ein wahlfreier Zugriff unmöglich ist.
So gesehen unterstützt z.B. Java die portable Programmierung nicht wirklich gut, weil einige (wichtige) Schnittstellen so umfangreich gehalten sind, das sie auf vielen existierenden System nicht voll Implementiert werden können, oder nur eine "Emulation" des gewünschten Verhaltens möglich ist.

Um dir aber auch ganz konkret zu antworten, mein Tipp ist: Verwende eine Sprache die im Kern sehr portabel ist (wie z.B. C++) und ansonsten kann ich mich nur ceissere anschließen, verwende Bibliothken die möglichst für viele verschiedene Plattformen angepasst ("portiert") worden sind.

Lin728
23-09-2004, 18:45
Hmm, ich glaube du verwechselst die portierung der platform/des compilers/ der std-bibliotheken mit der Portierung der Anwendung?

fs111
23-09-2004, 18:51
Das problematische sind meistens die zusätzlichen Bibliotheken welche man verwendet. Mit C/c++/python/perl kann man z.B. ohne zusätzliche Bibliotheken keine GUIs machen, mit java geht das, ....


Für Python stimmt das nicht, Tkinter ist immer dabei, zumindest auf Plattfomen, die eine normale Grafischnittstelle bieten, bei Handys sieht das anders aus, aber darum ging es auch wohl weniger.

fs111