Hi Andreas,
C/C++ wird wohl verhältnismäßig schnell sein, da
maschinennäher, da es ja vorher kompiliert wird.
Java ist da ja so ein Zwischending, wenn ich das
richtig verstanden habe, also schon "halb-
kompiliert", muß aber noch teilweise interpretiert
werden, oder so ähnlich.
PHP muß komplett vom Interpreter übersetzt werden,
keine dieser Aussagen ist korrekt, wenn Du es genau
nimmst. Überhaupt ist die ganze Fragestellung sinnlos.
Eine Sprache ist niemals "schnell" oder "langsam".
Was Du vergleichst, sind nicht Sprachen, sondern Dir
bekannte, real existierende Implementierungen zur Ver-
arbeitung von Programmen in diesen Sprachen. Davon
aber gibt es pro Sprache erheblich mehr als eine.
Eine Sprache wird aber nicht durch eine Implementie-
rung, sondern durch ihre Spezifikation definiert.
Niemand hindert Dich daran, einen Compiler oder Inter-
preter für eine beliebige Sprache zu schreiben, auch
wenn das vor Dir noch niemand getan haben sollte.
Jede Programmiersprache ließe sich auch in den Maschi-
nencode einer beliebigen, Dir genehmen Hardware über-
setzen. (Stell Dir einfach vor, Dein Compiler würde den
bisher existierenden Interpreter generieren, _der_ wäre
also das 'compilierte' Programm und Dein Programm seine
Eingabedatei, welche alternativ in Form von Konstanten
in dieses Programm eingebunden sein könnte.)
Und das kann man mehr oder weniger gut tun, so daß ein
mehr oder weniger schnelles und dabei mehr oder weniger
gut funktionierendes (!) Programm dabei herauskommt.
Lies Dir mal die Dokumentation der Optimierungstufen
eines üblichen C-Compilers durch ... es gibt Grenzen,
an denen der Optimierer zugunsten von Geschwindigkeit
das Risiko eingeht, falschen Code zu erzeugen.
Sogar derselbe Compiler angewendet auf denselben Quell-
text kann also ein unterschiedlich schnelles Resultat
produzieren!
Und wenn also nicht mal für ein konkretes Programm ei-
ner konkreten Sprache so etwas wie "die Geschwindigkeit
dieses Programms" definiert ist, wie soll da ein Ver-
gleich _verschiedener_Sprachen_ sinnvoll sein?
Es mag natürlich sein, daß ein Programm, das von einem
exotischen anderen Programm übersetzt wurde, dann dem
Charakter der entsprechenden Sprache nicht in dem Maße
entspricht, wie das vom Erfinder gedacht war.
Ein echter Java-Compiler würde natürlich keinen platt-
formunabhängigen, dafür aber sehr schnellen Code er-
zeugen, wenn man es 'richtig macht', d. h. wenn die Ge-
schwindigkeit der ausgeführten Programme das alleinige
Optimierungsziel dieses Compilers sein sollte.
Daß die real existierenden Java-Compiler das nicht tun,
hängt damit zusammen, daß die Geschwindigkeit bei der
Ausführung von Java-Programmen als weniger wichtig
angesehen wird im Vergleich zur Verwendbarkeit des
Codes auf vielen Plattformen. (Auch Sicherheitsaspekte
spielen dabei eine erhebliche Rolle - die Fähigkeiten
eines bekannten Interpreters sind besser abschätzbar
als die Fähigkeiten beliebig vieler völlig unbekannter
kompilierter Programme.)
Und es ist in bestimmten Fällen einfacher, bessere oder
sogar auf Java optimierte Hardware zu kaufen, als die
verfügbaren Ressourcen der eigenen Programmierer zu
erhöhen - es kann also billiger sein, das Tempo über
die Hardware statt über die Software zu holen, falls
die Programmierung hinreichend teuer genug ist (weil
die Problematik beispielsweise in den Inhalten steckt
und nicht in der Basis-Codierung).
Statt also Sprachen miteinander vergleichen zu wollen,
ist es schon sehr viel sinnvoller, verschiedene Imple-
mentierungen _derselben_ Sprache miteinander zu ver-
gleichen - beispielsweise Perl via CG-Schnittstelle
mit Perl als Modul: Ist der Geschwindigkeitsgewinn der
Modul-Lösung den zusätzlichen Aufwand für die sorg-
fältigere Programmierung wert, die bei Verwendung von
mod_perl notwendig ist? (Antwort: Das hängt davon ab,
wie weit der eigene Programmierstil von den Anforde-
rungen von mod_perl entfernt ist ... ;-)
Geschwindigkeit der Ausführung ist nicht alles - bei
der heutigen Leistungsfähigkeit verfügbarer Hardware
ist sie sogar in vielen Bereichen nahezu vernachlässig-
bar geworden. Ob Dein 50-Zeilen-Programm eine halbe
oder eine Viertelsekunde braucht, interessiert nieman-
den (es sei denn, es wird jeden Tag ein paar tausendmal
gestartet); aber ob Du es in 6 Monaten innerhalb von
Minuten oder Tagen (50 Zeilen voller regular expres-
sions sind viiiel Holz ...) wieder verstehst und an-
passen kannst, das ist ein meßbarer Unterschied.
Und der hängt eher von der Art der Dokumentation ab
als von der verwendeten Sprache ...
Viele Grüße
Michael