Nur noch knapp zwei Wochen, dann öffnet die JAX 2009 in Mainz seine Pforten. Im Rahmen des JAX-Countdowns sprachen wir diese Woche mit Neal Ford, Application Architect bei ThoughtWorks, der auf der Konferenz Sessions zu den Themen "Pragmatic DSLs" und "BOF: Language Oriented Programming" hält und in seiner Keynote gar die antiken Philosophen zu Rate zieht.
JAXenter: In deiner Keynote verweist du auf die Philosophen der Antike. Platon, Aristoteles & Co. sind die Begründer logischer Formalisierung. Sind ihre Konzepte mit denen der Programmierung vergleichbar?
Neal Ford: Sie sind ergänzend, aber nicht vergleichbar. In meiner Keynote werde ich eine Linie verfolgen, die damit beginnt, wie Platon Probleme löst, über Aristoteles’ "wesentliche" und "zufällige" Eigenschaften, über Ockham, bis ich zum Kernproblem von heutiger Software komme: unbeabsichtigte Komplexität. Ich versuche, zwei Aspekte hervorzuheben: erstens, dass Technologen gefährlicherweise die Vergangenheit ignorieren (und zwar sowohl die antike als auch die aktuelle). Wir scheinen tatsächlich zu denken, dass nur noch das Neue einen Wert besitzt. Zweitens möchte ich beweisen, dass viele der Dinge, von denen wir denken, sie seien einzigartig für Software, in fast gleicher Weise in der "realen" Welt existieren.
JAXenter: Im antiken Athen wurde logisches Denken als eine der höchsten Leistungen des Menschen angesehen. Heute wird das von Computern abgenommen. Was bleibt uns Menschen dann noch übrig?
Ford: Computer denken nicht! Computer folgen wortgetreu ihren Anweisungen, sie können keine logischen Gedankensprünge vollziehen. Logik, die von Stromkreisen vollzogen wird, ist nicht dieselbe Logik, die wir Menschen einsetzen. Tatsächlich ist der uninteressanteste Teil von Programmierung die mechanische Anwendung der Syntax auf das Problem. Die Verstandsgetriebene Entwicklung ist viel interessanter (z.B. Design-Pattern oder unerwartet auftauchendes Design zu finden) – und das ist eine ganz und gar menschliche Aktivität. Wissenschaftler arbeiten schon sehr lange an künstlicher Intelligenz – ohne großen Erfolg. Dass Computer klug genug werden, um irgendetwas Sinnvolles zu machen, fürchte ich noch nicht.
JAXenter: Welche „alten Lektionen“ können noch heute auf moderne Probleme angewandt werden – und welche funktionieren heute definitv nicht mehr?
Ford: Wenn du ein Buch liest wie Fred Brook’s "Mythical Man Month" aus dem Jahre 1975, ist es wirklich auffällig, was auf die heutige Software-Entwicklung noch anwendbar ist und was nicht. Er beschreibt bis zu einem gewissen Punkt, wie man Projekte handhaben muss, die viel Mainframe-Assembly-Sprache brauchen, und er spricht über die Vorteile von Kapselung. Heute haben wir dafür recht gute Lösungen parat, haben Sprachen und Werkzeuge, die uns ermöglichen, dieses Level an Abstraktion weitgehend zu ignorieren (so wie wir auch nicht mehr Hard Drives als sich drehende Platten, sondern eher metaphorisch als Dateien und Ordner sehen). Die Probleme, die wir bislang noch nicht gelöst haben, sind die Prozess- und Management-Probleme. Sogar noch nach über 30 Jahren suchen die Menschen nach den "Silver Bullets", und Fred Brooks wusste schon damals, dass sie nicht existieren. "Those who do not remember the past are doomed to repeat it" (George Santayana). Weisheit ist wichtig bei Software, und das Verstehen der Vergangenheit erlaubt es uns, die Fehler und bereits existierende Erkenntnisse zu unserem Vorteil zu nutzen.
JAXenter: Wenn wir über moderne Programmiersprachen reden, gibt es vom philosophischen Standpunkt aus deiner Meinung nach welche, die mächtiger sind als andere? Oder geht es immer nur um Pragmatismus und Effizienz?
Ford: Wenn man sich moderne Programmiersprachen ansieht, stellt man fest: Ausdrucksstärke spielt eine große Rolle. Eines der bekanntesten Themen bei modernen Sprachen auf der JVM sind höhere Ausdrucksstärke und weniger eingeschränktes Verhalten. Die Java.next-Sprachen versuchen, die Distanz zwischen Vorhaben und Resultat zu verringern. Die Saphir-Whorf-Hypothese besagt, dass die Sprache, die du nutzt, die Art der möglichen Gedanken beeinflusst. Wenn du eine eher expressive Sprache (ob Computer oder anderweitig) nutzt, hast du einen umfangreicheren Wortschatz. Es gibt Gründe, warum Sprachen Phrasen andere Sprachen borgen, und zwar weil diese reicher an Bedeutungsumfang sind. Ausdrucksstärke zählt eben.




