token是什么意思_为什么编译原理被称为龙书?

本文深入探讨了编译原理,解释了编译器如何将高级语言转换为机器可理解的代码。文章从词法分析、语法分析、语义分析到中间代码生成、代码优化和代码生成等步骤进行了详细阐述,揭示了编译器内部结构和工作流程。此外,还介绍了程序设计语言的发展历程和基础概念,如静态与动态绑定、静态作用域等。
摘要由CSDN通过智能技术生成

(给程序员的那些事加星标)

作者:Java建设者/cxuan  (本文来自作者投稿)

碎碎念

为什么这本书叫做 龙书(Dragon book)

a8b09cc68cd715f69630bb58ea843265.png

这本书很有意思,它的书名是 《Compilers: Principles, Techniques, and Tools》,也就是编译器的原则、技术和工具。但它却画出了一个恐龙和骑士,恐龙身上写的是 Complexity of Compiler Design,也就是复杂的编译器设计,骑士的盾上写的是 Syntax Directed Granslation,也就是语法翻译。骑士的剑上看的不是很清楚,我猜测应该是优秀的编译器的意思。这是征服复杂性的隐喻。优秀的编译器会直接征服复杂的编译,复杂的编译设计永远无法攻破语法翻译。

什么是编译原理

计算机是只认识二进制的,但是我们平常开发中根本不会使用二进制进行开发,我们使用的都是 Java、C 这类的高级语言,每种语言都会经过一系列的转换才能被计算机识别,那么到底是谁做的这项工作呢?一个被称为 编译器(compiler) 的大佬出场了。

语言处理器

首先考虑一下一个例子,你如何才能和老外对话?你是不是需要学英语?我们有一些同学可能认为英语难学,经常会在英语书上做一些汉语标记方便理解。

b366a675614d5b94778d8fba0883e31b.png

那么,谁做了由英语到方便记忆 的英语之间的转换呢?答案是你的大脑。所以,我们可以归纳一下这个过程。

因为我们懂汉语(自己的一套语法规则),我们把英语(需要学习的语言)转换为我们便于理解的汉语(大脑翻译规则),我们才能学会英语和老外对话(转换为目标语言)。

这里我说一点:昨天晚上外出遛狗有个老黑和中国女生对话,中国女生竟然讲英文??????这可是中国本土好么,为什么外国人来到中国不讲汉语偏要中国人讲英文???你去外国旅游你会讲中文吗???这是一个基本认知问题,别怪我偏执。我认为外国人要来我们国家最基本的一点就是:你要学中文,千万不要抱着英语为上的心态,汉语不输任何语言。

回到正题,我们上面举出的这个学英语的例子,其实就是一个由原程序经过某种机制转换,把它变成目标语言的过程。也就是

6d24693e30675b879bbd9c68341ec052.png

编译器就是一个翻译官的角色,它负责把源程序的语法翻译成目标程序能够理解的语法。

回到计算机中,我们肯定需要目标程序来做一些事情的。

也就是,我们通过某个渠道获得的输入信息,会经过编译器的转换,变为输出信息进行展示。

f1b106fbc0614edb669b90020f5bd4d7.png

除了编译器之外,还有一种称为 解释器(interpreter) 的语言处理器,它不是做翻译工作的,而是把用户提供的输入执行源程序中指定的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值