Autsch.
rob- schrieb:
Interpreter sind lahm, aber laufen auf allen Betriebssystemen, z.B. Java. C# weniger da MS rum blökt.
Java und C# sind keine Interpretersprachen.
C# wird überhaupt nirgends interpretiert, sondern nach CIL kompiliert, welches per JIT-Compiler auf der Zielmaschine direkt in nativen, ausführbaren Code übersetzt wird. Ein Programmteil wird aber immer erst ausgeführt, nachdem er übersetzt wurde, interpretiert wird nie.
Java wird zu Bytecode kompiliert, welcher im Sinne eines schnellen Starts erst mal interpretiert wird. Nichtsdestrotrotz übersetzt ein JIT-Compiler wie HotSpot den Code nach und nach in nativen Code, sodass auch in der JVM nach einer gewissen Aufwärmphase nichts mehr interpretiert wird. Vor allem bei Java-typischen, lang laufenden Serveranwendungen fällt das kurze Interpretieren zu Beginn überhaupt nicht mehr ins Gewicht.
Interpretierung wäre sowieso nicht der Grund gewesen, warum Java und C# langsamer sind als von Haus aus native Sprachen. Am meisten zu Buche schlägt hier der permanent überwachte und verwaltete Speicherbereich, der einerseits ordentlich Overhead erzeugt, andererseits aber auch sehr viel Sicherheit bringt.
Die meisten Skriptsprachen werden hingegen interpretiert und von Java und C# locker abgehängt (von wegen "lahm"). Bytecode-Caches sind bei den meisten Skriptsprachen das Höchste der Gefühle. Es gibt des Weiteren wenige Ausnahmen, die auch direkt oder per Jit nativen Code erzeugen, beispielsweise Node/V8 für Javascript oder HHVM für PHP. Generell ist zu beobachten, das Dinge wie JIT auch in den Skriptsprachen-Runtimes am kommen sind.
rob- schrieb:
Kompiler Sprachen werden für EIN Betriebssystem optimiert und laufen nur dort.
Das ist ja interessant. Wurde die
Sprache C++ nun für Windows oder Linux optimiert?
Formale Sprachen zur Beschreibung eines Programms, der erstellte Code sowie die daraus resultierenden Kompilate sind völlig verschiedene Ebenen, die man unterscheiden muss. Die
Sprache C++ an sich ist genau so plattformunabhängig wie Java oder C#, oder kannst du mit C++ nur Programme für ein einziges Betriebssystem formulieren? Die Abhängigkeit zur Zielplattform entsteht erst einen Schritt später. C++ Code, der systemspezifische APIs benutzt, oder das am Ende fertige Kompilat sind dann nicht mehr plattformunabhängig, aber dafür kann die Sprache nichts.
rob- schrieb:
Skriptsprachen sind nur dazu da kleinere Sachen zu erledigen, Skripts, Automatisierung, Admin Aufgaben, bischen Web Kram, Daten verarbeiten etc. Zu mehr sind sie nicht tauglich.
Gängige Skriptsprachen wie Python sind genau so Multi Purpose wie andere höhere Programmiersprachen. Dass man damit keine Treiber, Maschinen und Computerspiele programmiert sollte klar sein, aber "nur für kleinere Sachen" ist dann doch untertrieben.
rob- schrieb:
Dennoch haben sich gewisse Abwandlungen entwickelt die passabel Webauftritte ermöglichen, wie Ruby on Rails für die Skriptsprache Ruby und wie Django für die Skriptsprache Python....Ruby on Rails kann man in der Tat ernst nehmen, dennoch hat es nicht die Möglichkeiten der üblichen Web-Sprachen wie PHP, Javascript usw.
Wenn du willst, dass die Leute die Sprachtypen unterscheiden, dann unterscheide du bitte Sprachen und Frameworks ("Abwandlungen") und Vergleiche beispielsweise nicht Rails mit PHP.