Difference between join point and pointcut

edit

What's the difference between join point and pointcut? —posted by 80.191.138.131 at 10:54 on 21 April 2008

  • Now that this article defines a pointcut as a set of join-points, the question arises: 1) does any set of arbitrary highly-heterogenous, unrelated join-points form a pointcut or 2), in practice, must the join-point members of the set be related in some established way with some sort of cohesive collective purpose? If so, what is that common purpose that these join-point members share to make a pointcut meaningful (and thus make AOP itself meaningful)? For example, a class in OOP is not merely a set highly-arbitrary, substantially-unrelated data and subroutines; instead, a class is a set of data and subroutines that operate on that data that share a common purpose or mission to model the characteristics of an instance of a entity that has some well-bounded perimeter, where that entity has an internal state that is separate from interactions of that entity with the external world. In other words, in OOP, the strongest emphasis is not on the word "set", but rather the emphasis is on what brings the members of that set together as a recognizable reason to exist together in meaningful communion.—optikos (talk) 13:49, 14 January 2009 (UTC)Reply

[A reply]:

The definition on this page is not at all related to the `common purpose' of the join points - it is an abstract definition of the meaning of a `join point'. A join point is any (arbitrary) execution point in the program (i.e. any point at which code might be injected). Then, a `pointcut' is any (arbitrary) way of selecting or specifying a set of these execution points in a program. That's all there is to it - no assumptions are being made here about *how* one specifies the points of interest, nor is it required that they be in any way homogeneous.

Of course, to be usable by programmers, there must also be some sensible (reasonably concise) way of specifying useful pointcuts - and I believe this is what you are really asking about (pointcut syntax). In many implementations, a pointcut is written using some sort of `template match' on the syntax of the language (eg: `match all calls to functions having any name beginning with set' - for which the injected code might be `... and lock this critical section for the duration of that call'). However, there is nothing to stop me from defining my pointcuts by, say, typing in the memory addresses of the machine code operations that I would like to intercept.

There are various other types of specification that might be useful - especially dynamically scoped ones that are triggered only when some other cutpoint is active, or join points that are triggered conditionally based on some other expression. For example: `call this function whenever you are about to execute the code at address 23, but only if the value in that variable is 0'.

Since each language is different - and has different control flow concepts, etc - different ways of specifying pointcuts will make sense. In a database language, you might want to match on transaction scope, or on `any insert to a table in the audit_trail schema' (of course, SQL variants already have primitive facilities for this - triggers, etc).

97.126.13.112 (talk) 11:05, 3 July 2009 (UTC)Reply

Last paragraph of article

edit

"Conceptually, a join point exists where a precondition for a command in Hoare logic makes an assertion parametric upon the joint and several advice supplied by the different concerns at that point in a generalized abstract process, the unified thing composed from its concrete aspects being the pointcut." I don't consider myself dumb, but this imparts absolutely no knowledge to me. Somebody want to take a shot at reducing the jargon density? Fool4jesus (talk) 22:23, 26 January 2010 (UTC)Reply

Agree with the above. This paragraph is utterly indecipherable for those not experts in AOP and should be either rewritten in human understandable terms or removed completely. It did provide a laugh however, it's a perfect example of how poor wikipedia can be as a learning tool. — Preceding unsigned comment added by 49.255.132.114 (talk) 03:11, 11 September 2018 (UTC)Reply

This issue has been resolved in a simple and direct manner. --147.229.176.19 (talk) 16:45, 16 June 2020 (UTC)Reply

difference between compiler construction meaning and AOP meaning

edit

Potentially the article should be split in two, since the two meanings have absolutely nothing to do with each other. Cfbolz (talk) 17:13, 21 July 2017 (UTC)Reply

Most definitely --147.229.176.19 (talk) 16:45, 16 June 2020 (UTC)Reply