标签:
1.编译原理学什么?
编译原理这一学科,主要学习的是编译器方面的原理与技术,我们能从中学会各种算法与代码的原理,明白计算机是如何“听懂人话”,我们的代码是如何经过编译器转换成机器语言,这样不仅能实现自己去编写简单的小编译器,也能通过此学科去接触已有各编译器的思想,认识到编程方面更多要注意的问题以及解决的方向,站在本质的角度看代码,从而更能成就计算机专业人员的计算机逻辑思维。
2.为什么要学编译原理?
说到编译原理,人们喜欢把这门学科比作人体解剖和造轮子,是计算机中和代码作斗争的一门学科。据本人理解,学编译原理是为了让计算机专业人员更清楚计算机的工作过程,追溯更底层的编译原理,使人不再局限于已有的死性代码形式的约束,让编程人员有更饱满更独立的编程思维。就像画家学解剖那样,我们学编程也许不是为了做编译器,而是从学习编译的原理去掌握更多计算机本质的东西,这样有利于我们脱离对代码的过度依赖,从而写出更优质、更适合编译器的代码。按个人的理解是,没学编译原理,程序员只能是代码的奴隶,学了编译原理,代码才是你的工具,你才能真正明白代码和编译器是怎么一回事,从而更好地利用它们,玩转它们。此外,编译原理作为计算机中“追本溯源”的一门接地气学科,掌握它还能提高自己对程序的检查和分析能力,虽说我们不一定学了编译原理都能做一个强大而创新的编译器,但通过学习编译原理,我们能对编程有一种全新的认识,从完全的被动到思想上的主动,这就是所谓工人与工程师的区别吧。
3.怎么学编译原理?
编译原理作为一门本质性与理论性较强的学科,可能一开始入门的时候会略感枯燥难懂,因而需要做好心理准备,明白这一学科的实际上实用意义与重要性,从而提高自己的兴趣,然后就是需要有一定的耐心,弄懂各种学术性词句的意义与作用,这样有利于对知识的透彻掌握。当然,任何理论都离不开实践,尤其是编译原理,在学习的过程中我们更应该多动手,根据自己的想法去实践,把课本上的知识转换成属于我们自己的工具。
4.思考:在没有学习本书理论之前,如果让你写一个编译器,你是什么思路?
我们都知道,机器语言其实只是0和1的组合,在不了解任何已有理论的情况下,我觉得编译器是将我们编写的代码或命令转化成不同的0、1组合,从而让计算机实现工作。所以,如果我要做一个编译器,我首先要知道我所编译计算机的工作需求,然后把这些需求分类,从大分类到小分类,就像树状图那样越分越细。分类好工作需求后,又去分类二进制数字的组合,也是从大类到小类,最后把分类号的工作需求和二进制组合有规律地对应起来,举个例子说,假如安排到00开头是表示让计算机输出,那么001是输出数字,002是输出个字符,后面数据越长,目的就越清楚,直到二进制数字长度足够表达程序员的意思。就这样,我们就能成功地把二进制数据与工作需求建立起一个线性的关系,而这时候再去科学地制定代码,根据有规律的语法让我们的代码转换成相应的二进制数据,二进制数据作为计算机语言控制计算机的高低电频率,从而实现不同的工作执行。
设计过程:
需求分类-->制定有规律二进制数据组合-->制定能编译出相应二进制数据的代码语法。
运行原理:
有规律的代码-->有规律的二进制数据组合-->相应的高低电频-->计算机实现工作。
标签:
原文地址:http://www.cnblogs.com/liangzhilin/p/4799271.html