编译原理实战课
宫文学
北京物演科技CEO
立即订阅
594 人已学习
课程目录
已更新 3 讲 / 共 53 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (2讲)
开篇词 | 在真实世界的编译器中游历
免费
学习指南 | 如何学习这门编译原理实战课?
预备知识篇 (1讲)
01 | 编译的全过程都悄悄做了哪些事情?
编译原理实战课
15
15
1.0x
00:00/00:00
登录|注册

01 | 编译的全过程都悄悄做了哪些事情?

宫文学 2020-06-01
你好,我是宫文学。
正如我在开篇词中所说的,这一季课程的设计,是要带你去考察实际编译器的代码,把你带到编译技术的第一现场,让你以最直观、最接地气的方式理解编译器是怎么做出来的。
但是,毕竟编译领域还是有很多基本概念的。对于编译原理基础不太扎实的同学来说,在跟随我出发探险之前,最好还是做一点准备工作,磨刀不误砍柴工嘛。所以,在正式开始本课程之前,我会先花 8 讲的时间,用通俗的语言,帮你把编译原理的知识体系梳理一遍。
当然,对于已经学过编译原理的同学来说,这几讲可以帮助你复习以前学过的知识,把相关的知识点从遥远的记忆里再调出来,重温一下,以便更好地进入状态。
今天这一讲,我首先带你从宏观上理解一下整个编译过程。后面几讲中,我再针对编译过程中的每个阶段做细化讲解。
好了,让我们开始吧。
编译,其实就是把源代码变成目标代码的过程。如果源代码编译后要在操作系统上运行,那目标代码就是汇编代码,我们再通过汇编和链接的过程形成可执行文件,然后通过加载器加载到操作系统里执行。如果编译后是在解释器里执行,那目标代码就可以不是汇编代码,而是一种解释器可以理解的中间形式的代码即可。
我举一个很简单的例子。这里有一段 C 语言的程序,我们一起来看看它的编译过程。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《编译原理实战课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(3)

  • sugar
    回答课后思考题: 计算机语言编译和自然语言的翻译,做的事情本质上都是输入“遵循某种文法所说出的话”,输出“按照另外一种文法,把同样的话给表达出来”,这么件事~
    如果说区别的话,处理的文法是不一样复杂的,自然语言是0型文法,而计算机语言的处理基本上都是在2型文法和3型文法的层面上,只有涉及意义处理才会做一些1型文法层面的事儿。
    毕竟,计算机语言在设计时就要考虑到可以被计算机去执行,所以其必须考虑逻辑严谨;
    而自然语言,中文、英文这些语言的历史包袱很重,而且语言最初设计的目的也不是为了给机器去跑,而是服务于广大人民群众呀~
    按形式语言这门学科的定义,自然语言对应的是图灵机,所以对自然语言的处理已经是AI领域研究的范畴~
    望老师指点~
    2020-06-01
    1
    1
  • 鱼_XueTr
    自然语言与编程语言翻译基本都是经过相同的步骤流程:词法分词,语法分析,语义分析,token翻译,重组,优化结构,到最后的结果。
    但是编程语言与自然语言相比:
    1. 词汇量:编程语言的关键字等标识有限,自然语言的词汇量巨量无限
    2. 结构化:编程语言是结构化的,自然语言是非结构化
    3. 歧义性:编程语言都有确定的语义表达,自然语言不同语境不同的意思
    4. 容错性:程序必须保证拼写绝对正确,自然语言更随意,也容许有错误表达
    5. 易变性:编程语言的变化缓慢又小,自然语言的变化随着社会发展
    6. 简略性:编程语言要求准确细致满足所有运行条件,自然语言简略干练形式不限
    2020-06-01
  • thomas1994
    赞,希望多点图,有图就直观多了
    2020-06-01
收起评论
3
返回
顶部