Talk:Aspect-oriented programming

message: The article puts a lot of emphasis on the fact that a patent covering AOP exists without a good justification for such emphasis.
The article right now starts with: 
'In computing, aspect-oriented programming (AOP) is a patented programming paradigm [...]'
Some problems with that:
# US-centric point of view. Only a US patent is cited. Those don't necessarily apply outside of US. Some jurisdictions outright prohibit software or idea patents. 
# Questionable relevance. Many software and idea patents granted in US might be invalid or are held for defensive purposes and are unlikely to be pursued. A lot of concepts and algorithms are patented and if you wanted to be consistent, you'd have to start many articles on programming related subjects by mentioning that the subject is patented, which would be rather superfluous.
Then, in the criticism section there's:
'Firstly, aspect-oriented programming is patented, and thus not freely implementable.'
That looks like original research. The only citation is to the patent itself, which proves that it in fact exists. But claims as to how much of a problem it is in practice and whether it has actually impacted adoption of the technology -- all things which are implied by that statement -- go beyond the mere existence of a patent.
Unless there are sources showing actual impact of the patent on companies using AOP or providing AOP tools, the criticism part, and the mention at the top probably too, should be removed.
188.146.76.208 (talk) 14:54, 17 August 2015 (UTC)
thread_title:  Patent 

message: "Introduced after object-oriented programming (OOP), it is a post-object-oriented programming paradigm." - The second half of the sentence repeats the first half, adds nothing further to the explanation, and uses unnecessary jargon "post-object-oriented programming paradigm" (I count 2-3 buzzwords in 5 words total); it should be either clarified or removed.  Any thoughts? --216.165.132.252 (talk) 14:38, 1 June 2009 (UTC)
thread_title:  Jargon in the intro 

message: In the introduction there's a line that says "Because it is a paradigm that was introduced historically after OOP it is a Post-OOP or Post-object programming paradigm, and because it is the best known, it is sometimes confused with the entire class of paradigms."  However the link from "Post-object" goes right back to this page, which doesn't agree with the aforementioned statement. 72.195.134.236 (talk) 23:44, 8 February 2009 (UTC)
thread_title:  Post-OOP 

message: Designers have considered alternative ways to achieve separation of code, such as C#'s partial types, but such approaches lack a quantification mechanism that allows reaching several join points of the code with one declarative statement.
:Could someone please elaborate on how the 'partial' capability of C# could be used to achieve aspect-oriented effects?  I'm not quite seeing it.  All the partial keyword allows is for you to define a single class in n parts (and possibly n different files).  How does this even approximate aspect-oriented programming?
Isn't CL/CLOS Aspect oriented because of Multimethods and method wrappers
Methinks AOP should be related to the concepts of a database trigger and event-driven programming. I don't see that connection being made in the current article text. By the way, there is a Google Techtalk from May 2006 with Gregor Kiczales titled Aspect Oriented Programming: Radical Research in Modularity --LA2 20:08, 4 July 2007 (UTC)
thread_title:  Comparison to other programming paradigms 

message: The following text (from the end of "Motivation and basic concepts") does not read like an article - it reads more like a discussion. It simply does not belong there as it is, so I have removed it. If it is useful and informative, please integrate it properly. Hairy Dude 20:12, 16 April 2006 (UTC)
thread_title:  Removed talk-like text 

message: Why someone removed an easy tutorial to AOP http://www.alnaja7.org/AOP.ppt ? It tooked someone days to do a simple tutoril , but some don't like others to benefit ? Alhoori 01:24, 21 May 2006 (UTC)
replies: text: This has already been discussed in your talk page. OhNoitsJamieTalk 03:11, 21 May 2006 (UTC)
replies: text:  Is wikipedia a personal thing , so that you people can't decide whether the topics/links can remain or no ? How can I make vote on that ? Alhoori 09:15, 21 May 2006 (UTC)
thread_title:  Removing Tutorials 

message: Would it be accurate to consider the desire for multiple inheritance to be a desire for aspect-orientation? That is, If I have a drawable class and a shape class, I might make a class that inherits both to create a "drawable shape". —Ben FrantzDale 17:27, 13 June 2006 (UTC)
thread_title:  Multiple Inheritance 

message: IP address 128.122.253.228 wrote
[It would be useful if these examples were concluded with a parallel example of the aspect-oriented solution to these cross-cutting problems in the same JAspect/Pseudo Java, so that readers some reference points as they read the descriptions below.]
under the "Motivation and basic concepts" header. I'm assuming that person simply didn't know about the talk pages, and so I removed the comment.
However, I think question is still valid, although it was posted in the wronge place. It would be helpful--if possible--for somebody more knowledgable about AOP to post a solution to the problem raised. michaelb Talk to this user 15:29, 28 June 2006 (UTC)
thread_title:  Adding example 

message: The sample of transfer method shows clears where the problem is without AOP. Can someone provide an "after version" of the same method with AOP? Thanks.--Mongol 17:46, 1 August 2006 (UTC)
thread_title:  sample code with AOP 

message: The hypothetical programmer in this section is a bit one-sided and I think the entire section should be rewritten.  It also should probably be renamed "Criticisms of Aspect Oriented Programming", to go along with most other articles that use that naming. -- Davetron5000 17:50, 22 August 2006 (UTC)
replies: text: Full ACK, "problems adopting" implies that there is nothing fundamentally wrong with AOP. I found the following paper, which criticizes AOP and should be mentioned: http://portal.acm.org/citation.cfm?id=1167514 --Schoelle (talk) 18:06, 23 May 2009 (UTC)
thread_title:  "Problems adopting" and weasel words 

message: This page (the actual article, and when editing the article), looks very odd in lynx. can't figure out why. (doesn't happen on other pages). user:Bawolff (I'm not logged in here) 05:48, 22 January 2007 (UTC)
thread_title:  Something wrong with formating 

message: -- Reacton on the text above by TjerkWol 17:43, 24 February 2007 (UTC)
replies: text:  I get everything before this section, in that I understand the problem you are trying to solve.  But your example here is absolutely and completely obtuse.  The language and terminology you use in your comments are themselves undefined and not known by people who are not already experts in AOP.  You've left out a huge number of basic facts that are necessary to understand the example.  You must find a method of explaining step by step what it is you are trying to do, WITHOUT any of the AOP terminology.  This is the type of thing that only some people are good at.  You need to find one of those people.  (I'm good at it, but not knowing a thing about AOP I can't help you.) 72.137.175.104 (talk) 16:10, 17 December 2008 (UTC)
thread_title:  Proposed Example Application 

message: Now suppose you want to log each call to any getArea like this
 double Circle.getArea() {
  log("Get Area Called");
  double area=PI * this.r * this.r;
  log("Area of circle is: "+area);
  return area;
 }
If you want to do something like this for each getArea method of each subclass
of TwoDShape you have a lot of work, and also code entaglement.. 
What if you have added logging for all your getArea methods and someone else
adds its own subclass of TwoDShape and does not implement the logging?
Then you have a problem..
I have a Syslog class (C++) that writes to the syslog by default, and all 
logging in my project is done through a Syslog object.  It's the first object 
built at runtime, and generally the only one, but it doesn't have to be.  
Every object doesn't need to reference it, it just has to be available.  If 
I want it to do something different, I extend the class and change or supplement 
the default behaviour.  Works for me, not sure this is a good example.
Tsingi (talk) 01:35, 24 April 2008 (UTC)
thread_title:  Logging Aspect 

message: AOP deals with this problem by identify this as a seperate concern, or aspect:
a logging aspect. Pseude code for a logging aspect:
 aspect GetAreaLogging {
 
  // this defines all our methods that much be advised by this aspect,
  // it is called a joint point.
  // This one means: All subclasses of TwoDShape where getArea is called
  jointpoint getAreaJoinPoint() :  execution(double TwoDShape+.getArea());
 
 
  // below is the actual advice, it is just a anonymous method of the aspect
  // only the special aspect-enabled-compiler weaves this code in the base code
  double around() : getAreaJointPoint() {
   log("getArea called");
   double area=proceed();
   log("The value of the area is: "+area);
   return area;
  }
 }
Hope you get the point a bit now, i know it is not easy. See aspectj.org for more information.
:: I get everything before this section, in that I understand the problem you are trying to solve.  But your example here is absolutely and completely obtuse.  The language and terminology you use in your comments are themselves undefined and not known by people who are not already experts in AOP.  You've left out a huge number of basic facts that are necessary to understand the example.  You must find a method of explaining step by step what it is you are trying to do, WITHOUT any of the AOP terminology.  This is the type of thing that only some people are good at.  You need to find one of those people.  (I'm good at it, but not knowing a thing about AOP I can't help you.) 72.137.175.104 (talk) 16:10, 17 December 2008 (UTC)
thread_title:  The AOP Solution 

message: Note that logging is the typical example concern to introduce someone to AOP,
much more advance applications with AOP are possible. Read literature and websites
to know more.
TjerkWol 17:43, 24 February 2007 (UTC)
thread_title:  Side Note 

message: How does AOP compare to Python decorators?  (All of the examples seem to be exactly what a decorator would be used for in Python.)
How does AOP compare to Lisp macros?  (Python decorators seem like a subset of Lisp macros, and from the article, so does AOP.)
How does AOP compare to CLOS
:It would also be useful if someone could compare AOP to what you can do with XOTcl mixins and filters. Donal Fellows 22:36, 15 September 2007 (UTC)
thread_title:  Other comparisons (that would be useful to me) 

message: does indeed need a lot of work. For starters, it doesn't cite any sources. Next to that, some of the issues raised in that section apply equally to non-AOP programs or, even, non-Java programs. For example, the following sentence:
"For example, consider the impact of injecting code to return true at the beginning of a password verification function that returns a boolean value."
can just as easily apply to C / C++ code, seeing that anyone can use a profiler (or whatever the name for such a type of program is) to examine the various function calls and whatnot and change the program flow, for example by turning a false to a true in a password verification function.
And besides, hacking into a program like this requires a person distributing a somewhat altered version of the program, seeing that I'm not sure if it's even possible for, say, a virus to alter a Java program while it's running.
It's not an AOP-specific problem, even - with the right tools, anyone can decompile a Java program, insert his own code, and recompile. Or, on a higher level, anyone can alter the memory of a JVM by using special tools. (the last statement is a guess by the way).
The section seems, in my opinion, awfully negative towards aspect-oriented programming, highlighting problems that occur in any form of programming, in any programming language. Also, the advantages don't seem to be weighed in the comparison.  —Preceding unsigned comment added by 62.58.16.59 (talk) 15:34, 13 November 2007 (UTC)
replies: text: I suggest that this "adoption risks" section be removed, because it is factually inaccurate.  Never mind how weasel-ish it is, it just isn't a part of reality.  Jfm3 (talk) 22:11, 16 December 2007 (UTC)
replies: text: I want to object. Rather, the title should be changed to something containing "Criticism". Anyway, including such a praragraph is mandatory IMHO, because AOP is a controversal issue. When you try to introduce AOP into a team, a project or something similar, chances are that you have to face surprisingly strong opposition, mostly using exactly the arguments detailed in this section. In this sense, this paragraph is precise and correct, just lacking quotations. Removing such an paragraph would endanger the whole AOP article to become biassed (towards AOP), as there is an ongoing controversy around this topic. Ichthyostega (talk) 20:14, 4 December 2008 (UTC)
thread_title:  Adoption risks section 

message: So, I studied computer science at MIT, and I find the introduction to be dense and to explain the concept poorly.  If I'm having trouble slogging through it, I'm sure that general-audience readers are completely lost.  This is probably why the  tag was added (but someone has removed it). I've added , though the reason the article is confusing is that it uses too much technical jargon and focuses on detailed technical aspects up front, rather than starting with a simple overview. -- Beland (talk) 08:07, 11 August 2008 (UTC)
replies: text: i also studied computer science, and i completely agree. please start with a gentle, implementation agnostic introduction ("terminology", currently 4 pages down!) and remove implementation specifics. thanks! akmg (talk) 14:53, 3 April 2009 (UTC)

text: I am the creator of PostSharp, a commercial AOP framework for Microsoft.NET. I think this page does not serve the purpose of explaining aspect-oriented programming to mainstream developers. Instead, it is an academic description of the traditional approach to AOP (the AspectJ one). I fully respect the academic community and I give them credit to having developed the AOP concepts, but I think the first 20 lines of the page should focus on a larger audience. Would you agree on us spending some effort working on this page?  — Preceding unsigned comment added by Gfraiteur (talk • contribs) 13:31, 13 February 2011 (UTC)
thread_title:  Quality concerns 

message: === Aspect-Oriented Software Development ===
I am currently editing the Aspect-Oriented Software Development page, to provide a more general overview of AO.
The AOSD and the AOP pages overlap on certain topics, so we should try to coordinate the content.
I put this page under the AOSD category. 
--Cotttho (talk) 23:41, 20 August 2008 (UTC)
replies: text: Last action above taken first, removing the merge tag. 72.228.150.44 (talk) 02:08, 10 January 2009 (UTC)
replies: text:  Also there are some significant distortions in the current text which I am in the process of cleaning. About a fifth thru, the Java/Aspect J orientation needs to be put in its proper scope, as it stands now the article is AOP using Aspect J an advert. 72.228.150.44 (talk) 02:24, 10 January 2009 (UTC)
thread_title:  Merge Proposal 

message: I am currently editing the Aspect-Oriented Software Development page, to provide a more general overview of AO.
The AOSD and the AOP pages overlap on certain topics, so we should try to coordinate the content.
I put this page under the AOSD category. 
--Cotttho (talk) 23:41, 20 August 2008 (UTC)
thread_title:  Aspect-Oriented Software Development 

message: The AOSD article has a good section on AOP that seems to more properly belong in this article and should be merged. --Cybercobra (talk) 00:56, 15 November 2008 (UTC)
thread_title:  AOSD section merge 

message: Preliminary indications: wikify, possible restructure, merge content from § in the AOSD article here, then link this as the main for that section. Lycurgus (talk) 19:25, 9 January 2009 (UTC)
replies: text: Last action above taken first, removing the merge tag. 72.228.150.44 (talk) 02:08, 10 January 2009 (UTC)
replies: text:  Also there are some significant distortions in the current text which I am in the process of cleaning. About a fifth thru, the Java/Aspect J orientation needs to be put in its proper scope, as it stands now the article is AOP using Aspect J an advert. 72.228.150.44 (talk) 02:24, 10 January 2009 (UTC)
thread_title:  Third Response 

message: I changed the first sentence to remove the idea that AOP only modularize "secondary concerns". While it is possible to see that as true of many examples of AspectJ's advice mechanism, it is less true of code that uses AspectJ's inter-type declarations, and not at all true of code that uses Hyper/J. It also isn't true of several of the other systems introduced in the original AOP paper. AOP is about modularizing crosscutting concerns, and crosscutting is an inherently symmetric relationship. The small concern isn't the crosscutting one - two concerns crosscut each other with respect to a given hierarchical representation.
I tried to fix some bugs in this page a few years ago, and someone went and undid the changes right away.  Hopefully that won't happen this time.
GregorKiczales (talk) 18:26, 17 February 2011 (UTC)
thread_title:  crosscutting concerns aren't secondary 

message: I have tried quite hard to get a feeling for what AOP is from the article and various links here.
I am still 99% puzzled and cannot see that it is anyway (as explained) a "paradigm". What relevance has "cross-cutting" (as I understand it) got to do with programming paradigms at all?
If it really is something special or different to other styles of programming, surely those differences can be explained in simple english rather than weasel words or AOP jargon that makes little sense to me. It seems to me that someone who knows what they are talking about should completely re-write this article.  — Preceding unsigned comment added by 81.157.168.203 (talk) 11:29, 30 November 2011 (UTC)
replies: text: I use Spring in my projects and yet I still can’t understand this article’s explanations. The description of the rationale in the lede makes sense. The Motivation and basic concepts portion is just inscrutable. It starts out with a clear example of the problem, but the discussion of the solution rapidly falls apart. It talks about security as an example but then presents a solution around logging instead. That example yields no insight into how the aspect mechanism for logging got invoked or how the original example code would have been modified to take into account the AOP solution. It also has a comment at the end about “Other crosscutting code”, and yet the aspect declaration was specifically for logging. The Join point models discussion again makes sense in some abstract way, but how that translates into anything that a programmer actually does and how the entire structure comes together is completely elusive. Eventually my eyes glazed over and I gave up. I recommend a clear, top-to-bottom example of solving the example problem using AOP in the most primitive, generic way. Strebe (talk) 21:07, 1 October 2014 (UTC)
thread_title:  What is AOP? 

message: "Cross-cutting" and "crosscutting" it seems are used interchangeably in this article (6 for the former, 14 for the latter as of this post -- give or take a few).  In the cross-cutting concern article, the hyphen is used in the title, and the hyphenated version is used around 14 times, where the non-hyphenated is used just once.
We need to pick one and stick with it.  I think that the hyphenated version is far more readable, and probably more correct, as well.  However, I'm not a big Wikipedia buff, so I don't want to do it myself and open up room for controversy.  Anyone care to make this call?  Dugwyler (talk) 20:44, 11 April 2012 (UTC)
thread_title:  "Cross-cutting" vs. "crosscutting" 

message: I don't get it... this article is describing a technique that was commonly used in graphics programming in the 1980's (e.g. the Xt Intrinsics, Xaw, the Motif toolkit, the Andrew toolkit, and also an even older style used on Mac's, OS/2 and the like (though I'm not at all familiar with those).  How does AOP differ from plain-old-fashioned "callbacks" ? linas (talk) 03:31, 16 October 2012 (UTC)
thread_title:  History 

message: Hello fellow Wikipedians,
I have just modified  on Aspect-oriented programming. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
*Added archive https://web.archive.org/web/20090124183215/http://dssg.cs.umb.edu:80/wiki/index.php/Early_Aspects_for_Business_Process_Modeling to http://dssg.cs.umb.edu/wiki/index.php/Early_Aspects_for_Business_Process_Modeling
When you have finished reviewing my changes, please set the checked parameter below to true or failed to let others know (documentation at ).
Cheers.—InternetArchiveBot (Report bug) 23:38, 19 October 2016 (UTC)
thread_title:  External links modified 

message: Hi,
I am going to add new sub-topic "filters" on Aspect-oriented programming. Filters can be applied to exclude unwanted joinpoints from given pointcut expression.
 http://oreilly.com/catalog/9780596006549/ 
https://www.pascaldimassimo.com/2012/09/28/spring-aop-prevent-advising-test-classes/
http://www.aspectc.org/doc/ac-languageref.pdf
http://docs.spring.io/spring/docs/2.5.x/reference/aop.html#aop-pointcuts-combining
Apandey6 (talk) 03:47, 21 February 2017 (UTC)
thread_title:  Adding topic filters  

message: Hello fellow Wikipedians,
I have just modified one external link on Aspect-oriented programming. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
*Added archive https://web.archive.org/web/20030821074213/http://aosd.net/conference/ to http://aosd.net/conference
When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.
Cheers.—InternetArchiveBot (Report bug) 15:45, 27 July 2017 (UTC)
thread_title:  External links modified 

message: Take a little quick look at this interesting bit of gobbledygook:
::In computing, aspect-oriented programming (AOP) is a programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns. It does so by adding additional behavior to existing code (an advice) without modifying the code itself, instead separately specifying which code is modified via a "pointcut" specification, such as "log all function calls when the function's name begins with 'set. This allows behaviors that are not central to the business logic (such as logging) to be added to a program without cluttering the code, core to the functionality. AOP forms a basis for aspect-oriented software development.
Oh brother.  This is supposed to explain what something is to someone who doesn't already *know* what it is.  So let's start with this:
::In computing, aspect-oriented programming (AOP) is a programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns.
The problem is that "cross-cutting concerns" itself is a link to an AOP principal.  This is a sentence trying to describe AOP using AOP, and as such, sets the rest of the paragraph up for failure.  I'm fairly certain that requiring someone to understand subject X before reading what subject X is in the first place isn't a great idea.
𝓦𝓲𝓴𝓲𝓹𝓮𝓭𝓲𝓪𝓘𝓼𝓝𝓸𝓽𝓟𝓮𝓮𝓻𝓡𝓮𝓿𝓲𝓮𝔀𝓮𝓭-𝓟𝓮𝓮𝓻𝓡𝓮𝓿𝓲𝓮𝔀𝓮𝓭𝓜𝓮𝓪𝓷𝓼𝓡𝓮𝓿𝓲𝓮𝔀𝓮𝓭𝓑𝔂𝓟𝓮𝓮𝓻𝓼𝓞𝓷𝓵𝔂 (talk) 22:48, 1 July 2020 (UTC)
thread_title:  Introductory sentence is self referencing. 

message: The list of programming languages implementing some form of AOP in section Implementations seems unreliable. I picked two languages I use often, PHP and JavaScript, and looked at the WP articles for both. Neither article mentions "aspect" or "AOP". Nor am I aware of AOP in my programming or learning experiences with either language. David Spector (talk) 14:12, 6 December 2020 (UTC)
thread_title:  List of programming languages