Freitag, 26. November 2010

Funktionale Programmierung mit Java

Java zählt zu den imperativen Programmiersprachen, wie die meisten verbreiteten Programmiersprachen. Was ich beim schreiben von Java-Methoden anstrebe, ist die Vermeidung jeglicher Seiteneffekte, d.h. eine Methode benutzt nur die Übergabeparameter. Dies erhöht erheblich die Verständlichkeit und die Wartbarkeit des Codes. Damit kann man solche Methoden als statisch deklarieren. Damit bezieht sich Methode nicht mehr auf Objekt sondern auf die Klasse. Damit könnte man die Methode auch an einen beliebigen Ort verschieben, davon rate ich im Allgemeinen ab, weil dies der Verständlichkeit des Codes abträglich wäre. Ich nenne diese Art der Programmierung neoprozedurale Programmierung. Beim Einhalten dieses simplen Paradigmas wird man sehen, dass sich sowohl der Code als auch die Denkweise des Programmierers sich positiv verändert. Wenn man bei Webservices den Transportaspekt vernachlässigt, dann erinnert die neoprozedurale Programmierung an die Webservice-Idee. Wenn man dann die neoprozedurale Programmierung mit dem Test-Driven-Programming kombiniert, kommt man der funktionalen Programmierung schon näher. Aber funktionale Programmierung ist mehr. Ein leichte, praktische Einführung gibt im Blog von Alexander Pohl N blog N. Was für ein toller Name für ein Blog, ich bin neidisch, das so ein Name nicht auch mir eingefallen ist. Welche Frage ich mir stelle, ist die funktionale Programmierung ein Ziel der agilen Softwareentwicklung? Ich höre jetzt die HASKELL-Programmierer schon lästern. Und die Java- und C-Programmierer werden schimpfen über die Verschwendung von Speicherplatz (Ups, Stack Overflow: also -Xss benutzen) und Rechenzeit, wenn man Schleifen durch Rekursionen ersetzt. Dem kann ich natürlich die Optimierung von Endrekursionen (Tail Recursion) entgegenhalten, allerdings weiss ich nicht ob Java (Compiler, JVM) solche Optimierungen macht. Ich bin mir nicht ganz sich, was der aktuelle Stand bei Java ist, aber es steht bei OpenJDK (Da Vinci Machine) auf dem Plan (Link). Ich bin gespannt, wie es weitergeht. Ich würde mir wünschen, Java in eine Art funktionalen Compiler-Modus zu versetzen um in Java funktional zu programmieren.

Keine Kommentare:

Kommentar veröffentlichen