am 17. Dezember 2009
Ok, ihr kennt mich von provokativen Überschriften und natürlich soll auch diese provozieren. Aber eigentlich meine ich es ernst. Ja ich weiß, das ist ein PHP Blog und wir sind alle PHP Entwickler und wollen das auch bleiben. Zumindest ist das bei mir so. Aber warum sollte ich dann Java lernen, fragt ihr euch? Eigentlich ganz einfach. (Anmerkung: Wer will kann jetzt im Hintergrund “Know your enemy” von “rage against the machine” anmachen)
Meine Theorie hat zwei Säulen, auf die sie sich stützt. Die erste ist der Spruch “Du kannst eine Sprache erst beherrschen, wenn du mindestens eine zweite Sprache kannst” und die zweite ist ganz einfach “Java hat ein paar nette OOP Konzepte und ist PHP sehr ähnlich”. Jetzt muss ich das auch noch erklären, oder? Kein Problem.
Lerne eine zweite Programmiersprache. Bei mir hat es eine Weile gedauert, bis ich gemerkt habe, dass die meisten Probleme, die ich habe, gar keine PHP Probleme, sondern allgemeine Programmierprobleme sind. Ich glaube auch, dass ich fast jede OOP Sprache innerhalb eines Monats einigermaßen lernen könnte. Natürlich würde ich nicht so schnell so gut sein, wie ich es in PHP bin, aber eigentlich ist es doch in allen Sprachen das Gleiche. Zumindest sind die richtig fiesen Probleme in allen Sprachen gleich fies. Wer das Buch “Mythos Mann Monat” kennt, der kennt vielleicht auch den Essay “No Silver Bullet“. Dort wird ein Teil meiner These aufgenommen. Also was bringt es hier Java zu lernen? Wir können besser zwischen Sprach- und essentiellen Problemen unterscheiden.
Der zweite, vielleicht noch wichtigere Grund, sind die Entwicklungsparadigmen hinter Java. Ich habe das Gefühl Java Code ist viel objektorientierter strukturiert. Man sieht viel mehr Muster in dem etwas programmiert wurde und man hält sich öfter an Standards. Meist ist man auch viel strikter an Vorgaben gebunden. Die Frameworks, die existieren sind sehr gut durchdacht, bis auf das kleinste in Objekte gekapselt und für die meisten Fälle vorbereitet. Ok, vielleicht übertreibe ich gerade, aber der meiste Java Code, den ich bis jetzt gesehen habe, war durch die OOP Brille betrachtet sauberer. Wenn man Java beherrscht, dann ist meistens das Verständnis von Objekten ein besseres. So … bevor ihr nun eure Fackeln anzündet und der Lynchmob loszieht noch eine kleine Ergänzung.
Wenn mein OOP gut genug ist, dann kann ich wieder zu PHP wechseln. PHP hat den große Vorteil, dass ich schön pragmatisch an Dinge rangehen kann. Ich muss nicht die OOP Lösung wählen, wenn es keinen Sinn macht. Wenn ich jetzt also OOP beherrsche, weiß ich auch, wann ich es besser nicht einsetzen sollte. Manchmal schießt man nämlich auch mit Kanonen auf Spatzen und das ist eines der ganz großen Probleme von Java (unbedingt lesen: “Why I hate frameworks“). Was ich also sagen will. Lerne die Regeln, um sie dann zu brechen (Lerne die Regeln, damit du sie richtig brechen kannst!, Dalai Lama). Seid selbstbewusst genug auch mal was nicht in OOP umzusetzen. Dafür müsst ihr aber OOP können, denn sonst wird es derzeit schwer.