编译原理课程论文(小编推荐)_编译原理课程教学论文

2020-02-29 其他范文 下载本文

编译原理课程论文(小编推荐)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“编译原理课程教学论文”。

编译原理学习心得

11级计本2班

通过这一学期的学习,我们对于编译原理有了深入的了解。编译原理课程主要介绍的事编译器构造的一般原理、基本设计方法和主要实现技术。编译原理课程通过编译器的各个组成部分来解释高级语言编写的源程序如何翻译成计算机能够执行的机器语言。这个翻译的过程涉及程序设计语言、机器结构、形式语言理论、类型论、算法和软件工程等方面的知识。编译原理的学习对我们有很大的帮助。首先:通过编译原理的学习,有助于大家快速理解、定位和解决在程序编译、测试与运行中出现的问题。另外,编译原理的学习对熟悉编译过程、掌握计算机高级语言的生成机制、理解具体程序的运行状态起着关键作用。

在学习的过程中,很多同学认为我们今后的工作不会涉及到编译原理的理论和技术,编译原理没有实际的用处,学习起来就非常的枯燥无味,因此对这门课没有足够的认识。其实这是对编译原理的一种错误认识。该课程中的原理除了可以用于分析编译器以外,还对诸如人工智能、并行处理技术等课程的学习具有指导作用。与此同时编译原理课程可以帮助哦我我们更进一步地理解和综合应用离散数学、高级语言、数据结构、汇编语言等专业基础课程的知识。例如,编译程序应用了多种数据结构,在词法分析阶段使用状态转换图来识别各种单词;在语法分析中使用语法树等来进行语法分析;在存储分配时使用栈式结构和堆式结构进行存储空间的分配。本门课程学习对其它课程的学习和今后很多领域的理论研究具有深远的意义。

我们学习本门课程需要抓住重点知识,并能够理解和熟练运用。例如就编译原理的语法分析这一章节。

语法分析包括自上而下和自下而上分析。自上而下分析着重掌握LL(1)文法,自下而上分析重点掌握算符优先文法和LR(0)、SLR(1)文法。

语法分析部分就比较麻烦一点了。现在一般有两种语法分析算法,LL自顶向下算法和LR自底向上算法。LL算法还好说,到了LR算法的时候,困难就来了。很多自学编译原理的都是遇到LR算法的理解成问题后就放弃了自学。其实这些东西都是只要大家理解就可以了,又不是像词法分析那样非得自己写出来才算真正的会。像LR算法的语法分析器,一般都是用工具Yacc来生成,实践中完全没有比较自己来实现。对于LL算法中特殊的递归下降算法,因为其实践十分简单,那么就应该要求每个学生都能自己写。当然,现在也有不少好的LL算法的语法分析器,不过要是换在非C平台,比如Java,Delphi,你不能运用YACC工具了,那么你就只有自己来写语法分析器。

等学到词法分析和语法分析时候,你可能会出现这样的疑问:“词法分析和语法分析到底有什么?”就从编译器的角度来讲,编译器需要把程序员写的源程序转换成一种方便处理的数据结构(抽象语法树或语法树),那么这个转换的过程就是通过词法分析和语法分析的。其实词法分析并非一开始就被列入编译器的必备部分,只是我们为了简化语法分析的过程,就把词法分析这种繁琐的工作单独提取出来,就成了现在的词法分析部分。除了编译器部分,在其它地方,词法分析和语法分析也是有用的。比如我们在DOS,Unix,Linux下输入命令的时候,程序如何分析你输入的命令形式,这也是简单的应用。总之,这两部分的工作就是把不“规则”的文本信息转换成一种比较好分析好处理的数据结构。那么为什

么编译原理的教程都最终把要分析的源分析转换成“树”这种数据结构呢?数据结构中有Stack, Line,List„这么多数据结构,各自都有各自的特点。但是Tree这种结构有很强的递归性,也就是说我们可以把Tree的任何结点Node提取出来后,它依旧是一颗完整的Tree。这一点符合我们现在编译原理分析的形式语言,比如我们在函数里面使用函树,循环中使用循环,条件中使用条件等等,那么就可以很直观地表示在Tree这种数据结构上。同样,我们在执行形式语言的程序的时候也是如此的递归性。在编译原理后面的代码生成的部分,就会介绍一种堆栈式的中间代码,我们可以根据分析出来的抽象语法树,很容易,很机械地运用递归遍历抽象语法树就可以生成这种指令代码。而这种代码其实也被广泛运用在其它的解释型语言中。像现在流行的Java,.NET,其底层的字节码bytecode,可以说就是这中基于堆栈的指令代码的。

在学习文法时,对文法的组成,用法都较为明了,而在真正做题时却感到十分吃力。例如给出了一个语言,要求写出它的上下文无关文法,就感到十分棘手,所以今后在这方面要加大练习量,以熟练掌握。

而在之后的词法分析和语法分析中,我感到在看基本原理时十分困难,通常要长时间钻研才能够有所了解,而一旦掌握了基本原理,做题时就感到十分顺畅了。例如,在刚接触到LR(0)文法时,我用了大量的时间去学习它的原理,掌握之后,在列LR(0)分析表和写分析过程时,只要思路清晰,就会比较顺畅,而且不会犯错。

另外我觉得要想学好编译原理这门课,一定要做到以下两点,达到知识的融会贯通。对以后学习其他知识打下基础,同时对以前的一些知识有更深的认识。

首先,整体把握一条主线,领会每个阶段的精髓,再融会贯通。编译器(编译程序)可以分为词法分析、语法分析、语义分析、中间代码生成,代码优化和目标代码生成这六个阶段,每个阶段还会伴有符号表管理和出错管理。在第一章编译器概述中就把编译器化分成这六个阶段,同时还简要的描述了这六个阶段各自的任务,这是贯穿整个课程的一个主线,整个课程就是按这六个阶段组织进行的。所以一开始我们如果能够把握住这条主线,对课程有一个总体的把握,理解编译的过程,然后学习起来也会感觉到比较轻松。当我们从整体上理解编译器的结构之后,然后分章节对各个部分进行细致地阅读理解。按照编译过程的划分,把课程分为六章内容,每章都有它的精髓所在,只要掌握了每章的精髓,就能掌握编译的整个过程。词法分析的精髓主要是词法分析的构造、有限自动机理论的应用;语法分析的精髓主要是语法分析的两种方法——自上而下分析法和自下而上分析法;语义分析主要是属性文法、语法制导定义以及翻译方案;中间代码主要描述了中间代码常见的几种表示形式、各种语法结构如何进行语法制导翻译形成中间代码;代码优化主要围绕如何从时间和空间上进行优化,尽可能提高执行的效率展开,分别讲述了局部优化和循环优化;目标代码生成主要是目标代码生成算法的实现及寄存器的分配。这六个部分相辅相成,互有联系,掌握每个阶段的精髓,各个击破,这样我们大家学习起来就会对整本书有个大概的了解,然后再针对性的坐题目,就会很好的学习到这本书。

其次我们可以多跟老师交流,有什么不懂的问题一定要及时提出来。课后如果还有不懂的问题同学们之间相互讨论,争取把每一个知识点都搞懂,这样做起题目来才能得心应手。在上课的过程中,上面老师讲解的充满激情,下面有的同学听得昏昏欲睡,随着时间的积累,大家不理解的知识越来越多,就会慢慢失去学习的兴趣。所以,我们一定要学会怎么学习,不放弃,遇到不懂问题要及

时解决。在课堂上可以采取互动的方法,有什么问题,我们一定要及时说出自己在学习的过程遇到的问题以及解决问题的方法。

还有一点大家比较容易忽略。那就是《编译原理》对实践的要求比较高,所以实验课是培养大家实践能力的重要环节,是巩固和验证所学理论知识,培养大家分析问题、解决问题能力的重要环节。但是在学习的过程中,一部分无法完成编译原理的实验。即使告诉大家实验的思路和算法,有的还是不知如何入手,整个实验的效果很差。为了提高实验效果,极大地促进大家对原理的理解,我们一定要认真完成经典的实验内容。编译技术中有很多经典的算法,老师给我们的几个实验都是经典的实验。大家一定要做好这几个实验,这对我们对书中的一些知识的理解都有很好的认识。做好了这几个实验,一定可以达到一个新的高度。对具体的一些问题有更深更透彻的认识。

我觉得如果大家能够很认真的做到以上几点,一定可以学好编译原理这门课。世上无难事,只怕有心人,只要我们大家都带着一颗认真,努力的心,就算编译原理这门课再难,我们也有理由相信我们每一个人都能够学好。

《编译原理课程论文(小编推荐).docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
编译原理课程论文(小编推荐)
点击下载文档
相关专题 编译原理课程教学论文 论文 小编 原理 编译原理课程教学论文 论文 小编 原理
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文