《东南大学 编译原理 64讲》 学习笔记

简介
闭包

IPB Image
 

编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的通常原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。

编译原理是计算机专业设置的一门重要的专业课程。虽然只有少数人从事编译方面的工做,可是这门课在理论、技术、方法上都对学生提供了系统而有效的训练,有利于提升软件人员的素质和能力。

编译:就是将程序语言进行翻译,生成可供用户直接执行的二进制代码,便可执行文件。学习

所有内容大体如课程目录所示。

本视频的配套教程可使用陈火旺版的编译原理,习题也基本一致。

课程主讲人: 廖力。我的感受这个老师讲的很不错,条理清晰,逻辑分明。推荐一下。

编译原理通常认为是较难的一门课.从网上的评论来看,有人说学了一年半软件理论,就一门编译看不懂;有人甚至说它是大本软件课程里最难的一门;有人抱怨国内的编译教材没有一本容易懂的。 从笔者学习实践来看,第一次学了一个多月,理论部分只知其一;不知其二,第二次学了一星期,基本看懂词法分析的理论部分,语法分析就只知其一;不知其二了,第三次学了一星期,才基本看懂词法分析和语法分析.由此看来,这门课确实有难度.网上有的帖子,把编译器的编写搞得高深莫测通常,彷佛难度极大,很是人能及.   优化

编译原理究竟难在哪里?笔者的体会,主要在这几点:   spa

1.错误认识: 不少人觉得编译原理只能应用在写程序语言的编译器上,以为用处不大,学习兴趣不高.并且可能以为写编译器就必须彻底手工来写.   翻译

2.自动机理论: 象NFA,DFA之类,比较抽象,要费些脑子,特别若是学离散数学时没有学自动机理论的话,更是须要多花点时间.   视频

3.集合论的推演: 主要是一些闭包运算之类,数学基础很差的话,学起来也会感到吃力.   blog

4.LR文法: 主要是又引入了自动机   教程

无论哪本编译教材,即便是绝对经典”龙书”也不例外,都要涉及到这几个难点.因为这些内容自己很差懂,做者有再大的本事,也很难把书写得象小说那么流畅好懂.  明确了难点,接着想对策.大体有这么几种:   递归

1.端正认识: 编译原理在静态文本处理上有普遍的应用,举个简单的例子,把HTML文件转化为纯文本,利用编译原理来实现”很是”简单.理解了编译原理的实用性,大概能够提升学习兴趣.   ip

2.反复看书: 这个办法看起来最笨,倒是基本的方法.忘了是哪位名人说过,书只要多看,总能看得懂的.   

3.结合源码来看: 这是经典教材Compiler Design in C的做者Allen Hollub建议的方法.这本教材的特点就是包含了大段yacc,lex的代码.这也是个好方法,并且,只有看懂了代码,才能说在根本上理解了理论.固然,要彻底看懂yacc的代码,工做量是很大的,并且一样要先理解理论.   

4.删繁就简,拈轻怕重.网上流传较广的一篇《编译原理学习导论》(做者四川大学唐良)就基本是这种思路,对于词法分析,做者避免了自动机理论和集合论推演的介绍,直接搬出源码来,大大下降了理解难度,对于语法分析,做者介绍了递归降低和LL文法及相应的源码,而对LR文法,只说”理解理论就能够了”.虽然这种方法回避了对于难点的学习,可是用这种方法学习,能够在较短期内编写出一个可以运行的词法分析器和语法分析器,能够大大提升学习积极性.

 



相关文章
相关标签/搜索