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

...komplette Frage anzeigen

8 Antworten

Nein, nur mit irgendwelchen Frameworks lösbar. So langsam ist Java aber auch nicht oder hast du jemals eine Java-Anwendung entwickelt, die in C++ geschrieben sichtbar schneller gewesen wäre? Solange man keine zeitkritischen Programme entwickelt, bei denen jede Millisekunde entscheidend ist, dürfte man mit Java, zumindest nicht an der Performance, scheitern.

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.

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.

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.

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.

Jein... Es kommt darauf an was du willst: Es gibt keine Sprache direkt die unabhängig ist, allerdings gibt es frameworks die die Sprache unabhängig machen...

Deine Frage beruht zu 99% auf falschen Vereinfachungen.

Das "Java ist sooo langsam" Märchen erzählen sich nur Anfänger und Minecraft Kiddies, mit langsamen PC.

Klar, in den Anfangszeiten mag das gestimmt haben, aber da wurde seitdem viel optimiert.

Und generell stellt C++ auch nur die nötigen Werkzeuge bereit, was der Entwickler daraus macht ist seine Sache.

Und sehr viele machen dabei sehr viel falsch. Darum würde ich ein sauber entwickeltes Java Programm einem schlechten C++ Programm vorziehen.

Nein leider nicht musst dich entscheiden was du willst ;).

Was möchtest Du wissen?