Gibt es eine Programmiersprache, die Plattformunabhängig als auch Performance bietet?

9 Antworten

Wenn Du mit C++ ein Multiplatform-Framework verwendest, bekommst Du eigentlich das, was Du willst.

Qt steht beispielsweise neben Windows auch für etliche Linux-Oberflächen und Apple zur Verfügung.

Das ist ein grundsätzlicher Konflikt: Entweder man rückt möglichst nahe an die Hardware heran und bewegt sich auf den hardwarenahsten Ebenen des Betriebssystems - dann kann man maximale Performance herausholen.

Oder man rückt bewusst davon ab und spricht nur über standardisierte Abstraktionsebenen mit Hardware und Betriebssystem - dann kann man Plattformunabhängigkeit erzielen, aber bleibt von der Performance hinter dem Maximum zurück.

Es ist damit nicht nur eine Frage der Programmiersprache, sondern auch des Programmierstils, des Compilers und der verwendeten Frameworks. Damit verbunden sind dann wieder Kosten für Entwicklung, Betrieb und Wartung der Software über den gesamten Lebenszyklus. 

Für Anwender-Unternehmen sind vor allem diese Kosten und der Funktionsumfang entscheidend. Ob eine Lösung maximale Performance aus der Hardware holt und ob sie auf allen nur denkbaren Plattformen läuft, ist dem untergeordnet.

Woher ich das weiß:Berufserfahrung – Langjährige Berufserfahrung als IT-Berater

Seit wann ist C++ plattform-abhängig?

Für die Oberflächenprogrammierung (wenn Du das meinst) kann man Bibliotheken nehmen, welche dann die jeweiligen Schnittstellen ansteuern, wie z.B. Qt mitsamt seinem Creator. Java macht vermutlitch im Prinzip auch nichts anderes, als quasi #if(Betriebssystem) dort einzufügen, wo nötig. Die Unterscheidung wird einfach in die jeweiligen Bibliotheken verfrachtet.

Sofern Du ein Programm erstellst, sollten die Algorithmen-Konzepte sowie nicht sonderlich Plattform-abhängig sein. Bei der Optimierung dieser Algos auf Geschwindigkeit und Speichereffizienz können Code-Teile hardware-näher geschrieben werden, dann bietet sich das #if(Betriebssystem) an. Die Oberfläche, in welchem der Algo aufgerufen werden kann, sollte dann nicht wirklich der Performance-Hemmer sein.

Aber erst das Programmierziel definieren, dann konzeptionieren.

Im Übrigen: Man kann mit C++ Teile schreiben, welche dann von anderen Programmteilen, die in anderen Sprachen geschrieben sein können, aufgerufen werden ("Kombination"). Das kann gut helfen, die auf Effizienz getrimmten Teile mit C++, Assembler etc. zu schreiben, pro Betriebssystem, und den Rest (GUI etc) mit einer "einfacheren" Sprache. Aber wie gesagt, je nach dem, was Du progen willst.

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

Jede höhere Programmiersprache ist plattformunabhängig.

Erst der jeweils verwendete Compiler erzeugt plattformabhängigen Code.

Unter einem Compiler in diesem Sinne verstehe ich Software, die ein in einer höheren Programmiersprache geschriebenes Programm auf Maschinensprache abbildet.

Erst mit der Programmiersprache Pascal kamen Compiler auf, die die höhere Programmiersprache auf eine weniger hohe, aber immer noch plattformunabhängige abbilden. 

Java und C# etwa werden durch ihre Compiler nicht direkt auf Maschinensprache abgebildet, sondern auf einen plattformabhängigen Code, der dann - zur Laufzeit - durch einen plattformabhängigen Interpreter in eine Folge von Aufrufen der von der Maschine zur Verfügung gestellten Befehle abgebbildet werden.

Man kann auch in C++ plattformunabhängig programmieren wenn man die Qt-Bibliothek verwendet. Qt lässt sich kostenlos unter einer Open Source Lizenz lizenzieren (GNU GPL, GNU LPGL) oder unter einer kostenpflichtigen propritären Lizenz.

Dafür gibt es den Qt-Creator. Das ist eine komplette C++ Entwicklungsumgebung bestehend aus Editor mit Syntaxhervorhebung, Debugger, Designer für grafische Anwendungen und der plattformunabhängigen Qt-Bibliothek.

Für Windows benötigt man folgende Dinge:

Der Qt-Creator enthält auch das Qt Installer Framework, damit kann man sein fertig kompiliertes Programm mit allen benötigten Laufzeitbibliotheken in ein Installationspaket verpacken.

Beispiele: Die Software Google Earth, die DJ-Software Mixxx und der VLC-Player wurde mit dem Qt-Creator entwickelt. Diese Programme wurden ohne Änderung des Quellcodes auch nach Mac und Linux portiert.