To ask the ques­tion another way, is there really any point pushing for existing lan­guages to be en­hanced to support AOP when you could just use pub/sub and get nearly all the benefits? With pub/sub you avoid all the syntax weirdness, the source code trans­for­ma­tion weird­ness (if you’re doing it that way), the cul­tural re­sis­tance from in­tro­duc­ing AOP to lan­guage that doesn’t already have it, the need to learn a new syntax/DSL to express join points…

The main dis­ad­van­tage of hooks seems to be that you need to be able to modify ex­ist­ing code to use them. They’re also ugly if you want hooks ab­solutely everywhere, but against this they’re explicit, they can be trig­gered at ab­solutely any point, and they don’t need lan­guage support.