Robert Bienert: java anstelle von perl

Beitrag lesen

Hallo,

Moin!

kompilierter Code schneller ist, als "richtig" kompilierter Code?

Fest verdrahteter Code ist noch schneller ;-)

Was verstehst du unter "fest verdrahtetem" Code?

Ein Programm, das direkt in das Silizium des Chips geätzt ist (oder mit diskreten Transistoren aufgebaut).

Der OOP-Teil der Sprache ist SmallTalk, d.h. _zur Laufzeit_ werden Teile des Programmes durch einen SmallTalk-Interpreter gejagt.

Das steht in http://en.wikipedia.org/wiki/Objective_C aber
zum Beispiel nicht. Bist du dir sicher? Habe auch bei Google nichts
in diese Richtung gefunden.

"Objective-C is a dynamically typed language, as is Smalltalk. This means that we can send a message to an object which is not specified in its interface. This may seem a bad idea, but in fact this allows for a great level of flexibility - in Objective-C an object can "capture" this message, and depending on the object, can send the message off again to a different object (who can respond to the message correctly and appropriately, or likewise send the message on again). This behaviour is known as message forwarding or delegation. Alternatively, an error handler can be used instead, in case the message can not be forwarded. However if the object does not forward the message, handle the error, or respond to it, a runtime error occurs." http://en.wikipedia.org/wiki/Objective_C

Das bedingt, dass auch zur Laufzeit etwas geschehen muss, darauf basiert das Konzept.

[...] wirst du sehr schnell merken, daß Java überhaupt
nicht langsam sein kann!

Ich weiß, mein Rechner ist nur zu langsam.

Nein. Du verwechselst einfach Java mit Swing und gute Programmierer
mit schlechten Programmierern.

So, ich habe gestern abend ein _simples_ Hello-World in C (puts("Hello World!\n"), C++ (std::cout << "Hello World!\n"), Java (System.out.println("Hello World!"), Perl (print "Hello World!\n") und PHP (echo "Hello World!\n") geschrieben und mittels des Unix-Programmes time die Laufzeiten ermittelt: Java war mit einer halben Sekunde etwas 5mal langsamer als C, das ca. 0,1 s brauchte. Selbst ein Programm, dass über 10000 Schleifen durchläuft und den aktuellen Schleifenindex mit 2 XORed, ist in C 5mal schneller. Und das war nicht auf meiner alten DOSe mit 1GHz, sondern auf meinem neuem Mac mit GCC 3.3, Java 1.4.2, Perl 5.8.1 und PHP 4.3.2. Auf der DOSe verschiebt sich das ganze noch weiter zum Nachteil von Java.

Glaub mir. Interpretierte Sprachen sind definitiv und immer langsamer
als kompilierte Sprachen.

Ist das nicht meine Rede?

(Java wird im Speicher kompiliert).
Inwieweit es sowas wie einen JIT-Compiler in/für Perl gibt, weiß ich
nicht. Deshalb möchte ich da keine Aussage treffen.

Perl wird bei der Ausführung auf jeden Fall in einen Binärcode kompiliert, ich weiß allerdings nicht, ob das der der jeweiligen Architektur ist oder ein plattform-unabhängiger.

Du kannst davon ausgehen, daß Java schneller ist.

s.o.

Warum sonst wird Perl so häufig benutzt?

Das beantwortet dir wohl jedes Perl-Buch in der Einleitung.

Gegenfrage: Warum ist Java so verbreitet und wird immer beliebter?

Weil es irgendwie cooler ist dem Kunden irgendetwas binäres in die Hand zu drücken, bei Perl und Konsorten hat man ja zwangsläufig Opensource. Außerdem glaube ich, dass sich kommerzielle Sachen in einem kommerziellen Umfeld besser verbreiten als freie.

Warum wird C#, das so ziemlich alles von Java geklaut hat, jetzt
relativ schnell beliebt?

Weil z.B. M$ den Windows-Programmierern "droht", "Wer jetzt nicht auf Managed Code umsteigt, wird es später schwierig haben" (iX 05/2004 oder etwas später).

Ich weiß nicht, was Larry Wall für Optimierungen eingebaut hat, aber mein 1 GHz Rechner führt Perl _subjektiv_ schneller als Java aus.

Du machst was falsch.

Stimmt, Java-Programme ausführen und darüber diskutieren.

Natürlich sind sie das. Genau wie JSP- oder PHP-Programme richtige Programme sind.

Verzeih mir die kleine Spitze mit dem Wort "richtig". Viele "ernsthafte" Programmierer sehen PHP nicht als "richtige" sondern als "Kinder"-Programmiersprache an.

Ach, das wolltest du zum Ausdruck bringen...
Ja, ganz meine Meinung. :-)

Hätte mich gewundert, wenn wir uns nicht verstehen ;-)

Gruß
Slyh

MfG, Robert