编译原理实战课
宫文学
北京原点代码 CEO
26066 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 55 讲
真实编译器解析篇 (19讲)
编译原理实战课
15
15
1.0x
00:00/00:00
登录|注册

36 | 高级特性(一):揭秘元编程的实现机制

模板元编程技术
通过宏功能操纵AST
动态生成程序的文本字符串
注解功能和反射机制
在运行期起作用,如Java的反射机制
在编译期起作用,如C++的模板技术
M3层:Meta-Metamodel,描述关系数据模型和其他的元模型
M2层:Metamodel,描述关系数据模型
M1层:Metadata,描述数据库中表的结构
M0层:关系数据库中的数据
Meta来自希腊文,意思是“在……之后”和“超越……”
如何用你熟悉的语言实现ORM功能
思维导图供复习和参考
推荐思维模型:Meta的层次概念
了解不同语言的元编程机制
元编程是把程序当做数据来处理的技术
C++的元编程技术
Julia等类Lisp语言的元编程技术
Python、JavaScript等脚本语言的元编程技术
Java的元编程技术
动态元编程技术
静态元编程技术
通过字节码操纵技术来生成字节码
通过文本字符串来生成程序
通过生成AST来生成程序
生成语义层对象来生成程序
Meta在计算机语言领域的应用
Meta的层次
Meta的含义
元编程技术通常是指用语言本身提供的功能,处理它自己的程序
采用元编程技术,可以把一个程序变换成另一个程序
把程序当做数据来处理的技术
一课一思
课程小结
不同语言的元编程技术
元编程技术起作用的时机
元编程技术的分类
理解Meta的含义、层次以及作用
什么是元编程(Meta-Programming)?
元编程的实现机制

该思维导图由 AI 生成,仅供参考

你好,我是宫文学。
作为一名技术人员,我想你肯定知道什么是编程,那你有没有听说过“元编程(Meta-Programming)”这个概念呢?
元编程是计算机语言提供的一项重要能力。这么说吧,如果你要编写一些比较厉害的程序,像是 Java 世界里的 Spring、Hibernate 这样的库,以及 C++ 的 STL 库等这样级别的程序,也就是那些通用性很强、功能强大的库,元编程功能通常会给予你巨大的帮助。
我还可以从另一个角度来评价元编程功能。那就是善用计算机语言的元编程功能,某种意义上能让你修改这门语言,让它更满足你的个性化需求,为你量身打造!
是不是觉得元编程还挺有意思的?今天这一讲,我就带你来理解元编程的原理,并一起探讨如何用编译技术来支持元编程功能的实现。
首先,我们需要透彻地了解一下什么是元编程。

什么是元编程(Meta-Programming)?

元编程是一种把程序当做数据来处理的技术。因此,采用元编程技术,你可以把一个程序变换成另一个程序。
图 1:元编程处理的对象是程序
那你可能要问了,既然把程序作为处理对象的技术就是元编程技术,那么编译器不就是把程序作为处理对象的吗?经过处理,编译器会把源代码转换成目标代码。类似的还有对源代码的静态分析工具、代码生成工具等,都算是采用了元编程技术。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

元编程技术是一种将程序视为数据进行处理的技术,通过元编程技术,可以将一个程序转换成另一个程序。不同编程语言提供了各种元编程技术,如C语言的宏功能、Java的注解和反射机制,以及Python和JavaScript等脚本语言的灵活性。元编程技术可以通过生成语义层对象、AST、文本字符串或字节码操纵技术来生成程序,同时还可以分为静态元编程和动态元编程。在Java中,元编程技术包括注解处理和反射机制,而脚本语言如Python和JavaScript则以灵活获取对象元数据和修改对象属性方法为特点。尽管脚本语言的元编程技术灵活,但通常会付出性能的代价。总体而言,元编程技术为程序员提供了强大的工具,但需要注意性能和安全隐患。 本文介绍了Julia等类Lisp语言的元编程技术,以及C++的模板元编程技术。Julia等类Lisp语言将程序视为数据,通过宏功能实现了灵活的元编程,而C++的模板元编程技术则在编译期进行计算,增强了语言的功能。通过这些例子,读者可以了解不同语言中元编程技术的应用和特点。 文章还提到了元编程与编译原理的关系,指出编译器就是做元编程的软件,而各门语言中的元编程特性,本质上就是对编译器的能力的释放和增强。最后,文章提出了一个思考问题,即如何用熟悉的语言实现ORM功能,鼓励读者分享观点和内容。 总的来说,本文深入剖析了元编程技术,对于程序员来说具有很高的参考价值,尤其是对于想深入了解编译原理和元编程的读者。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《编译原理实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • yamakasiluke
    没人留言?学了编译才能懂得全部。感谢老师分享。

    作者回复: 谢谢! 嗯,元编程值得每个程序员弄明白。

    2021-06-09
  • ifelse
    新知识
    2022-01-28
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部