AOP?
-
Hallo zusammen,
ich lerne grad mal wieder für ne Prüfung und hab mich da einfach mal gefragt, was haltet ihr von Aspekt-Orientierter-Programmierung? Meint Ihr das wechselt irgendwann mal ersthaft OOP ab?
hier mal nen link dazu http://de.wikipedia.org/wiki/Aspektorientierte_Programmierung
-
ConfusedGuy schrieb:
Meint Ihr das wechselt irgendwann mal ersthaft OOP ab?
Wie kommst du auf die Idee das AOP und OOP inkompatibel miteinander sind?
-
finix schrieb:
ConfusedGuy schrieb:
Meint Ihr das wechselt irgendwann mal ersthaft OOP ab?
Wie kommst du auf die Idee das AOP und OOP inkompatibel miteinander sind?
hab ich das da hingeschrieben?
-
Ja. Wie soll man sonst "abwechseln" verstehen?
-
genauso wie zb. prozedurale sprachen durch oop abgewechselt wurden. außerdem sind aop und oop genauso kompatibel wie es prozedurale und oop es sind.
cpp wurde früher auch erst in c übersetzt und dann in maschinencode. ähnlich ist es gegenwärtig ja auch mit aop.
warum haltet ihr euch an dem wort "abwechseln" so auf. ist doch eigentlich klar was ich will wissen will.
und ich kenne gegenwärtig keine firma die aop ernsthaft produktiv einsätzt. würde mich interessieren ob ihr denkt, dass halt oop irgendwann durch aop abgewechselt wird. klar soweit?
-
Der erste denkfehler ist zu glauben, OOP habe prozedurales Programmieren "abgewechselt", denn das ist einfach nicht der Fall. Prozedurales Programmieren hat nach wie vor seine Daseinsberechtigung, seine Einsatzgebiete und seine Zukunft. Für bestimmte Probleme und Situationen ist es schlicht die optimale Lösung. So ist z.B. der Linux Kernel nach wie vor in C geschrieben und soll da auch weiterhin bleiben.
Sicher hat OOP als Programmierungsprinzip einen echten Siegeszug gemacht und wird in vielen Bereichen zu Recht eingesetzt, eben weil es für bestimmte Aufgaben eine sehr gute bis optimale Lösung ist.
Sollte AOP "Marktanteile" erobern wollen, dann muß es erstmal beweisen das es für bestimmte Aufgabenstellungen einen besseren Lösungsweg bietet als bestehende Ansätze. Wenn es das schafft, wird es in diesen Bereichen zu einem Erfolg werden. Wenn nciht, wird es sich halt in die schier endlose Reihe interessanter, aber letzten Endes doch erfolgloser Programmeirsprachen einreihen von denen wir schon sehr viele gesehen haben.
Es reicht _nicht_ das eine Sprache etwas anders macht als andere Sprachen, Sie muß es besser machen, ansonsten besteht schlicht kein Anreiz Jahrzehnte von Erfahrung, Schulung und Wissen in die Tonne zu kloppen um etwas neues zu beginnen...
Nebenbei, die Nachteile von AOP empfinde ich als echt heftig:
Als Nachteil der aspektorientierten Programmierung sei hier insbesondere der Overhead erwähnt, der nach dem Weaving im generierten Programm entsteht. Dies führt im Allgemeinen zu Performance-Einbußen. Des Weiteren reduziert aspektorientierte Programmierung die Nachvollziehbarkeit von Programmverhalten, da die Stellen, an denen ein Aspekt zuständig ist, im betroffenen Code nicht direkt erkennbar sind. Debugging wird so stark erschwert, allerdings kann dieser Nachteil durch Unterstützung einer IDE neutralisiert oder zumindest reduziert werden, indem das Debugging ebenso mehrdimensional vor sich geht wie das Entwickeln des Codes.
Ein weiterer Nachteil ist, dass bei zu starkem Einsatz dieser Technik unerwünschte und sehr schwer nachvollziehbare Wechselwirkungen zwischen einzelnen Aspekten auftreten können. Daher empfiehlt es sich AOP sparsam einzusetzen.
Besonders der zweite Abschnitt kann einem Angst machen wenn man sich vorstellt was das für große Projekte bedeutet...
-
skals schrieb:
So ist z.B. der Linux Kernel nach wie vor in C geschrieben und soll da auch weiterhin bleiben.
Und was hat die verwendete Programmiersprache mit dem verwendeten Paradigma zu tun? zB gilt das VFS in Linux als OO.
-
ConfusedGuy schrieb:
warum haltet ihr euch an dem wort "abwechseln" so auf. ist doch eigentlich klar was ich will wissen will.
Weil AOP vornehmlich im Zusammenspiel mit OOP verstanden werden will - zumindest hat es für mich auf den ersten Blick diesen Anschein. Außerdem halte ich "abwechseln" für eine recht kuriose Alternative zu "ablösen"

btw, Gregor Kiczales' GoogleTalk zum Thema: http://video.google.de/videoplay?docid=8566923311315412414
-
rüdiger schrieb:
skals schrieb:
So ist z.B. der Linux Kernel nach wie vor in C geschrieben und soll da auch weiterhin bleiben.
Und was hat die verwendete Programmiersprache mit dem verwendeten Paradigma zu tun? zB gilt das VFS in Linux als OO.
Sorry, falsche Wortwahl. Der Kernel selbst ist nicht OOP, das VFS schon.