2003-02-22, 22:50
Java kann ich nicht. Hab zwar schon ein, zwei Progrämmchen geschrieben und auch die Klausur auf an einser gemacht. Aber können tu ich's net.
Mein Problem ist meine Vergangenheit: Ich hab zu Zeiten programmiert, wo du jeden Prozessortakt ausnützen musstest. (Damals brauchte auch ein Prozessor noch mehrere Taktzyklen für einen Befehl. Heute kann er dank Pipelines und die mehrfach parallel einige Befehle pro Takt fertigstellen.) Und damals hab ich eben viel Assembler und C programmiert.
C++ zu aufgebläht kann ich net so nachvollziehen. Ich hab mir damals zwar Gedanken gemacht, ob des schon g'scheit ist, in C++ zu programmieren, wo ja beim Methodenaufruf über den Umweg einer Sprungtabelle gegangen werden muss, um je nach Typ des Objekts die richtige ("virtual") Funktion zu finden.![[Bild: icon_mrgreen.gif]](https://www.downhill-board.com/images/graemlins/icon_mrgreen.gif)
Da kannst dir vorstellen, welche Krisen ich bekomme, wenn ich mit ana Sprache mit Garbage-Collection programmieren muss![[Bild: icon_wink.gif]](https://www.downhill-board.com/images/graemlins/icon_wink.gif)
Vor an dreiviertel Jahr habe ich aber von der Firma einen Auftrag nach genau meinem Geschmack erhalten. Eine fehlertolleranten Dublettensuche für mehrere 100.000 Adressedatensätze. Hab zwar ewig net gewußt, wie ich das machen sollte. Aber nach ein, zwei Wochen - ich sitz grad so in der Sonne - kommt mir ein alter c't Artikel in den Sinn und ich hab die Idee. Nach einigen Stunden war der Protyp fertig. Hatte anfangs noch ziemliche Probleme, weil ich da ziemlich viel mit Zeiger auf Zeiger usw. hantieren musste, und ich davor zwei Jahre nimmer C programmiert hatte. Aber man kommt schnell wieder rein. Der erste Prototyp brauchte hochgerechnet nur mehr 31 Stunden für 400.000 Datensätze (oder 500.000 weiß nimmer genau). Die hatten das ganze vorher mit VB (!!!) probiert und das hätte 100 Tage gedauert. Naja, es hat dann noch ca. 2, 3 Wochen gedauert, bis es auch wirklich mit Echtdaten, Datenbankanbindung und Websteuerung funktioniert hat. War dann allerdings durch Algorithmusoptimierung schon auf 7 Stunden (auf meinem Athlon 800MHz)herunteroptimiert. Wobei es praktisch linear mit Taktfrequenz oder Speicherinterface (was halt der Flaschenhals ist) skaliert.
Freu mich auch schon, wenn ich das ganze auf 64-Bit Prozessoren optimieren kann. Dann kann ich nämlich bei einem sehr oft verwendeten Vergleich 8 Bytes, statt 4 gleichzeitig vergleichen. Das daugt ma halt. Taktzyklen-Schinden.
Bei sowas denke ich, das eben nur C(++) geeignet ist. Ich musste dabei extrem viel im Speicher herumjonglieren. (einige 100MBs). Meistens eben mit Zeiger auf Arrays, oder Arrays von Zeiger. Hat Java überhaupt Zeiger? Und ich denke mit Garbage Collection ginge das nie so schnell. Überhaupt habe ich das Gefühl, dass Java eher speicherhungrig ist. Aber das kann ich nur als Anwender von Java-Programmen beobachten. Meine Erfahrungen mit Javaprogrammen sind leider eher negativ.
Wo Java allerdings hervorragend sein soll, ist der Web-Bereich. Servlets, Java-Beans, .. usw. Aber leider kenn ich mich da auch zuwenig aus.
Und jetzt hat ja da Sun mit .NET eine ziemlich starke Konkurrenz bekommen. Das was ich mir bis jetzt so von .NET angeschaut habe, ist das schon verdammt vielversprechend. Bin echt schon auf die ersten unabhängigen Test gespannt, was schneller ist. Java hat halt in dem Bereich einen großen Vorsprung und hat sich schon bewährt. Ob das Microsoft auch gelingen kann?
Für meine kleinen Sachen (wie z.B die Rangers-Seiten) mache ich alles mit PHP. Mit PHP kann man echt super programmieren. Mit Acceleratoren gibt es Produkte, die den compilierten Code cachen, sodass das ganze schon schneller als mit einem JIT (oder gar Interpreter) läuft. PHP bietet so gut wie alle benötigten Funktionen schon von Haus aus mit und es arbeitet hervorragend mit MySQL zusammen. Und MySQL ist mindestens so schnell, wie die anderen großen DBs, und bei diesen kleinen Projekten braucht man keine Transaktionssicherheit. (Bei den neuesten MySQL-Versionen, sollte das aber auch immer besser funktioniern.)
Aber selbst bei PHP habe ich immer im Hinterkopf: Was macht der Prozesser, wenn ich dieses, oder jenes schreibe![[Bild: icon_wink.gif]](https://www.downhill-board.com/images/graemlins/icon_wink.gif)
Vorteil ist auch, dass die Software gratis ist, und dass es Server mit Linux, Apache, PHP, MySQL und allem drum und dran eigentlich zu Spott-Preisen gibt.
Außerdem sind diese System alle für Fernwartung ausgelegt. Ich weiß nicht, wie das mit Microsoft-Umgebungen (die könnte ich mir sowieso nicht leisten) oder Java-Umgebungen aussieht. Nett wär's natürlich schon, wenn man sich den Server selber zusammenbaut und dann beim Provider um die Ecke reinstellt. Aber in Österreich oder auch Deutschland könnte ich mir den Datentransfer nicht leisten, den unsere Seiten verursachen. Vor allem wennst dann vielleicht auch noch a multihomed burstable Verbindung haben willst...
Mein Problem ist meine Vergangenheit: Ich hab zu Zeiten programmiert, wo du jeden Prozessortakt ausnützen musstest. (Damals brauchte auch ein Prozessor noch mehrere Taktzyklen für einen Befehl. Heute kann er dank Pipelines und die mehrfach parallel einige Befehle pro Takt fertigstellen.) Und damals hab ich eben viel Assembler und C programmiert.
C++ zu aufgebläht kann ich net so nachvollziehen. Ich hab mir damals zwar Gedanken gemacht, ob des schon g'scheit ist, in C++ zu programmieren, wo ja beim Methodenaufruf über den Umweg einer Sprungtabelle gegangen werden muss, um je nach Typ des Objekts die richtige ("virtual") Funktion zu finden.
![[Bild: icon_mrgreen.gif]](https://www.downhill-board.com/images/graemlins/icon_mrgreen.gif)
Da kannst dir vorstellen, welche Krisen ich bekomme, wenn ich mit ana Sprache mit Garbage-Collection programmieren muss
![[Bild: icon_wink.gif]](https://www.downhill-board.com/images/graemlins/icon_wink.gif)
Vor an dreiviertel Jahr habe ich aber von der Firma einen Auftrag nach genau meinem Geschmack erhalten. Eine fehlertolleranten Dublettensuche für mehrere 100.000 Adressedatensätze. Hab zwar ewig net gewußt, wie ich das machen sollte. Aber nach ein, zwei Wochen - ich sitz grad so in der Sonne - kommt mir ein alter c't Artikel in den Sinn und ich hab die Idee. Nach einigen Stunden war der Protyp fertig. Hatte anfangs noch ziemliche Probleme, weil ich da ziemlich viel mit Zeiger auf Zeiger usw. hantieren musste, und ich davor zwei Jahre nimmer C programmiert hatte. Aber man kommt schnell wieder rein. Der erste Prototyp brauchte hochgerechnet nur mehr 31 Stunden für 400.000 Datensätze (oder 500.000 weiß nimmer genau). Die hatten das ganze vorher mit VB (!!!) probiert und das hätte 100 Tage gedauert. Naja, es hat dann noch ca. 2, 3 Wochen gedauert, bis es auch wirklich mit Echtdaten, Datenbankanbindung und Websteuerung funktioniert hat. War dann allerdings durch Algorithmusoptimierung schon auf 7 Stunden (auf meinem Athlon 800MHz)herunteroptimiert. Wobei es praktisch linear mit Taktfrequenz oder Speicherinterface (was halt der Flaschenhals ist) skaliert.
Freu mich auch schon, wenn ich das ganze auf 64-Bit Prozessoren optimieren kann. Dann kann ich nämlich bei einem sehr oft verwendeten Vergleich 8 Bytes, statt 4 gleichzeitig vergleichen. Das daugt ma halt. Taktzyklen-Schinden.
Bei sowas denke ich, das eben nur C(++) geeignet ist. Ich musste dabei extrem viel im Speicher herumjonglieren. (einige 100MBs). Meistens eben mit Zeiger auf Arrays, oder Arrays von Zeiger. Hat Java überhaupt Zeiger? Und ich denke mit Garbage Collection ginge das nie so schnell. Überhaupt habe ich das Gefühl, dass Java eher speicherhungrig ist. Aber das kann ich nur als Anwender von Java-Programmen beobachten. Meine Erfahrungen mit Javaprogrammen sind leider eher negativ.
Wo Java allerdings hervorragend sein soll, ist der Web-Bereich. Servlets, Java-Beans, .. usw. Aber leider kenn ich mich da auch zuwenig aus.
Und jetzt hat ja da Sun mit .NET eine ziemlich starke Konkurrenz bekommen. Das was ich mir bis jetzt so von .NET angeschaut habe, ist das schon verdammt vielversprechend. Bin echt schon auf die ersten unabhängigen Test gespannt, was schneller ist. Java hat halt in dem Bereich einen großen Vorsprung und hat sich schon bewährt. Ob das Microsoft auch gelingen kann?
Für meine kleinen Sachen (wie z.B die Rangers-Seiten) mache ich alles mit PHP. Mit PHP kann man echt super programmieren. Mit Acceleratoren gibt es Produkte, die den compilierten Code cachen, sodass das ganze schon schneller als mit einem JIT (oder gar Interpreter) läuft. PHP bietet so gut wie alle benötigten Funktionen schon von Haus aus mit und es arbeitet hervorragend mit MySQL zusammen. Und MySQL ist mindestens so schnell, wie die anderen großen DBs, und bei diesen kleinen Projekten braucht man keine Transaktionssicherheit. (Bei den neuesten MySQL-Versionen, sollte das aber auch immer besser funktioniern.)
Aber selbst bei PHP habe ich immer im Hinterkopf: Was macht der Prozesser, wenn ich dieses, oder jenes schreibe
![[Bild: icon_wink.gif]](https://www.downhill-board.com/images/graemlins/icon_wink.gif)
Vorteil ist auch, dass die Software gratis ist, und dass es Server mit Linux, Apache, PHP, MySQL und allem drum und dran eigentlich zu Spott-Preisen gibt.
Außerdem sind diese System alle für Fernwartung ausgelegt. Ich weiß nicht, wie das mit Microsoft-Umgebungen (die könnte ich mir sowieso nicht leisten) oder Java-Umgebungen aussieht. Nett wär's natürlich schon, wenn man sich den Server selber zusammenbaut und dann beim Provider um die Ecke reinstellt. Aber in Österreich oder auch Deutschland könnte ich mir den Datentransfer nicht leisten, den unsere Seiten verursachen. Vor allem wennst dann vielleicht auch noch a multihomed burstable Verbindung haben willst...