生产代码中的面向方面 C(不是 C++)
这是从上一个问题进一步衍生出来的问题: https://stackoverflow.com/questions/1834485/aspect-oriented-programming-aop-in-c-not-c-anyone-doing-it
这个问题的答案向我们指出了一些研究实践:皇后大学在这里: http://sailhome.cs.queensu.ca/~bram/aspicere/索引.html。
除了这些研究工作之外,还有人知道在生产代码中面向方面的 C 的实际用法吗?如果不是,您认为困难在哪里?如果是的话,是什么障碍让它不受欢迎呢?
我认为AOP的好处是显而易见的。但在AOP-Java流行了十年之后,AOP-C仍然几乎不存在,这一定是有原因的。您对此有何见解?
This is a question further derived from a previous one: https://stackoverflow.com/questions/1834485/aspect-oriented-programming-aop-in-c-not-c-anyone-doing-it
The answers to that question point us to some research practices at queens university here:
http://sailhome.cs.queensu.ca/~bram/aspicere/index.html.
Beyond that research effort, does anyone know of real world usage of Aspect Oriented C in production code? If no, where do you think the difficulty is? If yes, what's the hurdle that makes it unpopular yet?
I think the benefit of AOP is obvious. But after AOP-Java becoming popular for a decade, AOP-C is still almost non-existent, there must be some reason. What's your insight on this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
经过一番思考,我相信答案是 C 缺乏可以连接方面横切的结构构造。
为了解决这个问题,项目必须施加严格的结构约定,而程序员很难达成一致。如果确实有程序员同意这样的约定,那么该项目很可能会选择更好的语言。
After some thinking I believe the answer is that C lacks the structural constructs where you can hook up your aspect cross-cuts.
To get around of this problem, a project would have to impose strict structural conventions that is not easy to have programmers to agree on. If you do have programmers to agree on to such a convention, the chance is that the project would have chosen a better language.
我认为主要原因是用 C/C++ 实现 AOP 的传统方法需要一个复杂的框架才能工作。
另外,C++是严格类型语言,这使得实现比C更困难。
但是,这是旧时代了。新的 C++ 11~17 提供了一些非常强大的功能,供您完成所有技巧。
你可以检查这个:https://github.com/whitebob/qaop
一个非常轻量级、仅包含头文件的 AOP 框架,并且易于使用。
我是这个正在进行的项目的作者,所以如果您有任何建议或抱怨,请与我联系:p
I think the main reason is that traditional method to implement the AOP in C/C++ needs a complex framework to make things work.
Beside, the C++ is strict type language, which makes the implementation even harder than C.
But, It is the old time. new C++ 11~17 provides some really powerful features for you to do all the tricks.
You could check this one: https://github.com/whitebob/qaop
A very light-weight, header-only AOP framework, and it is easy to use.
I am the author of this on-going project, so if you have some suggestions or complains, just contact me :p