31 | 运行时(一):从0到语言级的虚拟化
宫文学
该思维导图由 AI 生成,仅供参考
你好,我是宫文学。今天,我会带你去考察现代语言设计中的运行时特性,并讨论一下与标准库有关的话题。
你可能要问了,咱们这门课是要讲编译原理啊,为什么要学运行时呢。其实,对于一门语言来说,除了要提供编译器外,还必须提供运行时功能和标准库:一是,编译器生成的目标代码,需要运行时的帮助才能顺利运行;二是,我们写代码的时候,有一些标准的功能,像是读写文件的功能,自己实现起来太麻烦,或者根本不可能用这门语言本身来实现,这时就需要标准库的支持。
其实,我们也经常会接触到运行时和库,但可能只是停留在使用层面上,并不太会关注它们的原理等。如果真要细究起来、真要对编译原理有更透彻的理解的话,你可能就会有下面这些问题了:
到底什么是运行时?任何语言都有运行时吗?运行时和编译器是什么关系?
什么是标准库?标准库和运行时库又是什么关系?库一般都包含什么功能?
今天,我们就来探讨一下这些与运行时和标准库有关的话题。这样,你能更加充分地理解设计一门语言要完成哪些工作,以及这些工作跟编译技术又有什么关系,也就能对编译原理有更深一层的理解。
首先,我们来了解一下运行时,以及它和编译技术的关系。
什么是运行时(Runtime)?
我们在第 5 讲说过,每种语言都有一个特定的执行模型(Execution Model)。而这个执行模型就需要运行时系统(Runtime System)的支持。我们把这种可以支撑程序运行的运行时系统,简称为运行时。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了现代语言设计中的运行时特性及标准库相关话题。通过具体语言的例子,介绍了Java、Python、C、C++、Go等语言的运行时特点,并强调了C语言的极简特性和依赖于操作系统的运行机制。此外,文章还介绍了标准库的分类、特殊性以及需要包含的功能,如IO功能、内置数据类型、容器型数据结构等。内容涵盖了运行时系统的运行机制、内存管理机制、并行机制等功能,以及标准库的设计和功能要求。通过本文,读者可以深入了解现代语言设计中运行时和标准库的重要性,为理解编译技术的使用环境提供了重要参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《编译原理实战课》,新⼈⾸单¥59
《编译原理实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(6)
- 最新
- 精选
- yjhmelody严格来说标准库不一定包含io功能,这取决于运行环境或者说宿主,比如浏览器端js,wasm
作者回复: 没错。标准库的定义,每个语言都不一样。我只是说通常的情况。 在早期的语言中,甚至库跟语言的界限也没有划分得很清楚,就像Fortran。有的语言的某些io功能,直接是语言中的一部分。
2021-05-20 - 星空老师,想问下,国内这种以盈利及产生商业价值为首要目的的风气下,抛开一门语言的其他部分不谈,就标准库这块,有多少人能写的出来呢,这得很深厚的功力支撑吧,有20年编程经验的人且技术还高的还有多少人坚持在一线长期编码呢,目前国内有纯自研的语言吗2023-07-08归属地:北京
- Gavinjvm作为进程是在操作系统上运行的,jvm应该也有自己的栈吧,和字节码运行的栈有什么区别?2022-05-21
- Gavinjvm栈和操作系统线程栈有什么区别,操作系统栈分内核态和用户态,jvm怎么区分的2022-05-21
- 浩仔是程序员老师,可以举个例子说说,比如读取一个文件,编译器是怎么实现的吗?2022-02-06
- ifelse🤗2022-01-25
收起评论