Beim Aufräumen meiner Webseite muss diese Seite weg. Aber vielleicht hat jemand was davon?
Aspect Oriented Programming
Neuer Nachricht, 22-Sep-2006
Leider kann ich diesem Thema nicht so viel Aufmerksamkeit widmen wie ich will, aber so ab und zu finde ich noch was richtig spannendes. So wie: http://www.AspectC.net, eine AOP Implementierung fuer ANSI C. Zitat der Autoren: AspectC.net wird sich ausschlieszlich auf AOP-Unterstuetzung fuer C konzentrieren um AOP fuer C-basierte Systeme moeglich zu machen. Wir habe lange gewartet damit jemand anders das macht, leider wurde immer nur versprochen. Dann haben wir die Sache erstmal selbst in die Hand genommen. Das gefällt mir.
Mein Alter Artikel
Seit Dijkstra in 1976 ein „Separation of Concerns“ eingefordert hat, sind die Möglichkeiten zur Modularisierung von Programme stark gewachsen. Aber im Allgemeinen zielt die Modularisierung stark auf dem funktionalen Aspekt eines Programs. Andere Aspekte, wie zB Sicherheit, Nebenläufigkeit und Persistenz, kommen an vielen Stellen im Quelltext vor. Aspect Oriented Programming (AOP) zielt auf dieses Problem, und hat seinen Namen hierher.
Xerox PARC
AOP wurde entwickelt am Xerox Palo Alto Research Center (Xerox PARC), unter Leitung von Gregor Kiczales. Die bekannteste Implementierung von AOP, AspectJ, wurde hier entwickelt.
Analyse und Vokabular
Am besten kann man die ausgereifte Dokumentation zu AspectJ lesen. Kurz zusammengefasst geht es darum, erst die (nicht-funktionale) Aspekte (aspect
) aus einem Programm heraus zu destilieren. Dann sollte man heraus finden, an welche stellen diese Stellen sich verflechten mit der Programmlogik (pointcut
). Und dann kann man definieren was es da zu tun gibt (advice
). Ein Artkel zu Sally (PDF) fasst die Aspektorientierte Analyse gut zusammen.
Implementierungen
AspectJ, natürlich. Der Compiler ajc
ist javac
-kompatibel. In dem Moment, dass man javac
verwendet, werden nur die core-java Elemente einer Anwendung kompiliert, setzt man ajc
ein, dann werden die AspectJ Extras miteinkompiliert.
In der C++-Welt ist natürlich versucht, Aspektorientierte Programmierung mit Bordmitteln herzustellen. Und das klappt natürlich auch, wie in den folgenden Links deutlich wird:
Lutz Dominick führt in ein ECOOP-Artikel einen extra Abstraktionsschicht ein in der Code
In einer Artikelreihe in iX [1] [2] [3] arbeiten Krzysztof Czarnecky, Lutz Dominick und Ulrich Eisenecker mit namespace
s
AspectC orientiert sich an AspectJ.
Am TRESE Institut der Technische Universität von Twente ist SINA entwickelt worden, als Überbau über Smalltalk.
Links
Der Homepage von Pascal Constanza, der seine Aktivitäten in diesem Bereich vorführt.
Die Uni Essen engagiert sich auch in diesem Bereich.
Die Gesellschaft für Informatik hat eine Tagung zu diesem Thema abgehalten.