1.编译原理学什么?算法
编译原理这门课主要关注的是编译器方面的产生原理和技术问题,看似和软件开发不沾边,但从本质上来说编译原理是属于一个算法问题。虽然咱们学习的数据结构和算法分析也是在将算法,不过讲的是针对某些特定的问题而总结出的算法,而编译原理则是讲如何将高级计算机语言翻译成计算机能直接读懂的机器语言的算法。数据结构
主要学习的内容则是编译语言及文法的基础知识、词法分析、语法分析、语义分析几中间代码生成、符号表组织、运行时的存储组织分配、代码优化及目标代码生成等。数据结构和算法
2.为何学习编译原理?函数
操做系统和编译系统构成程序开发者与计算机之间的基本交流界面,经过学习编译原理这门课程掌握编译的基本理论、经常使用的编译技术,了解编译过程及编译系统结构和机理。经过学习编译原理能够更好的理解程序语言的内部机制,从而更好的理解和运用程序设计语言。学习
咱们学习一门技术,不但要知其然,还要知其因此然,这样才能应对技术的不断更新,才能不被技术的发展所淘汰。编译原理就是这样一门课程,它教会咱们的不仅是编译器构造的基本原理和流程,同时,还教给咱们如何去严谨的去思考、编写程序。优化
3.怎么学编译原理?操作系统
你们都认为编译原理是一门比较难学的课程,有些学习过的网友甚至说它是大本软件课程里最难的一门课,并且以为学习的实用性并不大,由于这些知识并不能直接的表如今咱们的某个方面,并且使用的频率并不高。翻译
不少人都认为难就说明它确定是没有那么好学的,但既然有这门课。咱们仍是得端正心态,一步一步慢慢学起。设计
因为编译原理在很大程度上偏向理论方面,毕竟咱们学习的是一个原理性的知识,但这并不妨碍咱们将理论和实际相结合。理论难学这是很明显的,但只要咱们可以从实际的代码编写过程当中找到理论的精髓,咱们就能把它融会贯通。开发
4.思考:在没有学习本书理论以前,若是让你写一个编译器,你是什么思路?
首先定义出已知的关键词、函数等,在读取时直接进行匹配,若是相同就直接调用提早定义好的功能,不一样就进行以后的判断。
主要是要正确的定义好每一个函数模块的功能。