Original geschrieben von Dudadida
Dieses Denken, dass man das doch lieber den Compiler machen lassen kann etc. ist meiner Meinung nach grundfalsch. Sieh dir mal Spiele wie Duke Nukem 3D an, das war derart hoch optimiert, dass es auf einem 486 lief, heute würde wahrscheinlich nicht mal mehr ein Taschenrechner auf 'nem 486 laufen, weil der schon wieder 10MB im Arbeitsspeicher belegt. Die Ressourcen sind ja da, reicht ja wenn man lieber "von oben" optimiert, damit man selbst es ein bisschen leichter hat. Nur wenn dann mal die Hightechmaschine auch mal nicht mehr kann, dann muss man doch mal "lowlevelig" werden. Alles integriert, alles erweiterbar, alles übersichtlich,... Das ist meiner Meinung nach pures Verschwenderdenken.
Programme die auf einem 486 oder von mir aus realistischer LowEnd Embedded Systeme laufen müssen sind eher die Ausnahme als die Regel.
Softwareentwicklung ist ein kostspieliger Prozess. Das heisst überhöhte Handoptimierungen mögen Spass machen sind aber zumeist vollkommen kontraproduktiv.
Wie Kachalator schon gesagt hat, eine gute Software bietet Stabilität, Hohewartbarkeit und erweiterbarkeit.
Insbesondere bei der Wartbarkeit sind selbstgeschriebene ASM Algorythmen alles andere als erwünschenstwert.
Zumal der Flaschenhals bei modernen Anwendungen ganz wo anders liegt als in der Durchfühung von z.b Sotieralgorythmen. Der Flaschenhals liegt in Persistenzmodelle, in schlechtem Anwendungsdesign, IO Zugriffe allgemein.
Gutes Anwendungsdesign lässt sich nicht durch ausprobieren lernen, das kann ich dir garantieren. Es gibt Design Patterns die grosse Teile designtechnischer Probleme durch
Musterlösungen abdecken.
Kein Mensch wird ein Erbauer Pattern eben neu Erfinden. Programmieren ohne Bücher, ohne vom Wissen anderer zu lernen ist demnach das Rad immer wieder neu erfinden.
Dieses Denken, dass man das doch lieber den Compiler machen lassen kann etc. ist meiner Meinung nach grundfalsch.
Wenn ich mich auf Algorythmen vertraue die in der J2SE API mitgeliefert werden, dann überlasse ich nicht dem Compiler das denken sondern dem Programmierer der diese Methode geschrieben hat.
Das nennt sich Arbeitsteilung und das ist in der modernen Programmierung das A & O.
Zurückgreifen auf bestehenden Code, und diesen nutzen ist das beste Mittel gegen zu hohen Entwicklungskosten. Nur damit kann dem gut entgegen gewirkt werden.
Wenn ich ein Haus baue, will ich nicht selber einen Zement erfinden, sondern ich greife
auf den Zement zurück der für mein Haus die besten Eigenschafften hat.
Genauso wie ich als Zimmermann dem Mauerer das Mauerwerk überlasse und meine Dachstuhl auf dessen Mauern aufsetze, in dem Vertrauen das er was von seinem Job versteht.
Das Hintergrundwissen in Bücher, das wirklich recht üppig ist, ist aber extrem wichtig.
Ein Beispiel für Hintergrundwissen, welches auf den ersten Blick überflüssig scheint,
wie bei mir immer in Java.
Die VM speichert, zu optimierung, Strings in einem StringPool.
Das erklärt wieso:
Code:
String a = "bla";
String b = "bla";
if(a==b) return true;
mannchmal false und mannchmal true, zurück gibt. Eigentlich vergleicht == die Referenzen und nicht den Inhalt. Da aber a und b Referenzen auf einen String in diesem Stringpool sind ist das ergebnis oftmals true. Wird aber aus irgendeinen Grund ein neuer String im Stringpool angelegt, dann ergibt dies false.
Das verwirrt und erscheint als Bug, ist es aber nicht aufgrund der internen Eigenschafft wie die VM vorgeht.
Wenn ich das weiss werde ich mich viel eher bereierlären grundsätzlich Strings mit der dafür vorgesehenen Methode a.equals(b) zu vergleichen welche mir in diesem Fall immer das gewünschte Ergebnis true zurückgibt.
PS: Die Frage kam schon mehrfach in verschiedenen Foren, Usenetgroups zu Java vor.
Es gibt noch sehr viele Beispiele. Und Bücher haben noch einen ganz entscheidenden Vorteil. Der Code in guten Büchern (ich vertraue OReillys) ist immer etwas an den mann
sich stilistisch halten kann. Ein gutes Beispiel wie ein Code auszusehen hat, wie er designed werden soll.
Das sind Dinge die in Tutorien oftmals komplett ausser acht gelassen werden. Sprich:
Hauptsache es funktioniert und zeigt die Methode.
Das ist das selbe wie in der Schule. Auch gute Schüler aus der 10. 11. könnten einen aus der 8. Klasse in Mathe unterrichten. Das Ergebnis wird unter garantie nicht genauso gut sein wird mit einem ausgebildeten Pädagogen.
Zumal haben Bücher noch einen ganz entscheidenden Vorteil, mann kann sie mit in die Badewanne, Baggersee, Zug, Adriastrand, Puff
nehmen.