欢迎访问发表云网!为您提供杂志订阅、期刊投稿咨询服务!

编译原理论文大全11篇

时间:2023-04-06 18:39:16

编译原理论文

编译原理论文篇(1)

2基于CDIO工程教育模式的编译原理课程教学方法

课程教学改革从以下4个方面展开。1)学生分组,导入项目。课程教学以项目导入的方式开始,首先鼓励学生搜集编译基础理论和技术在计算机应用领域的成功案例;其次引导学生搜集开源的编译工具,按照支持的源语言和语法分析方法分类。以上两项前期工作对应CDIO模式的构思部分,需明确客户的需求,考虑技术、企业战略和制度等因素,不断改进概念、技术和商业计划。项目的最终目标是用C语言编写一个PL/0语言处理系统。在教学过程中,学生分成若干个项目组,在教师的指导下编写项目计划书,划分项目的功能模块;指定各个模块的负责人,模拟实际项目开发,进行分工协作。2)案例驱动,模仿提升。CDIO工程教育模式要充分体现“做中学”,以“项目案例”为载体组织整个教学过程,以案例开发过程安排教学内容,灵活运用启发式和研究性的教学方法。课程教学要为学生构建项目开发的情景,调动学生的主动性与参与性,提高学生的实践创新能力。在编译原理课程教学过程中,我们发现有些学生学习缺乏积极性和主动性,课外缺少自主训练和探索,虽然通过了课程考核,但是实际只了解到一些基本概念和零碎的知识断点,不具备运用所学原理和技术进行编译器开发的能力。为了培养学生“构思—设计—实现—运作”编译系统的技能,我们将编译原理的学习过程分为模仿和提升两个阶段。(1)模仿阶段的主要目标是以PL/0语言处理系统为案例,引导学生学习基础知识,掌握基本算法,激发学生兴趣。项目开发分为8项子任务,这些任务可在教师的指导下完成。任务1:安装测试用C语言实现的PL/0语言处理系统;完成PL/0语言语法的EBNF描述。任务2:PL/0编译程序中词法分析程序的设计和实现。任务3:PL/0编译程序中语法分析程序的设计和实现;自顶向下递归调用子程序的方法。任务4:PL/0编译程序中语义分析和中间代码生成。任务5:PL/0编译程序中符号表的设计与实现。任务6:PL/0编译程序中运行时的存储组织。任务7:PL/0编译程序中的目标代码生成。任务8:PL/0编译程序各阶段整合运行,编写PL/0语言使用说明书。教师可展示用C语言实现的案例,要求学生模仿整个实现过程,用Java语言再次实现PL/0语言处理系统。学生则通过此案例,模拟项目开发全过程。(2)提升阶段的主要目标是让学生学习编译器开发的流程,学会运用编译技术进行项目开发。本阶段分为以下几个步骤。步骤1:编译器程序设计提高。定义一个待实现的源语言,如PL/0语言的扩充或者C语言的一个子集,要求学生用C或者Java实现编译程序。步骤2:编译技术扩展。引导学生学习面向对象语言编译技术,如收集整理开源编译器GCC的资料,描述GCC的总体结构、编译流程、代码组织。步骤3:编译器实用工具。引导学生学习嵌入式系统编译器及其工具的应用开发,包括C和Java编译器开发。步骤4:项目实训。引导学生利用编译技术进行项目开发,如设计开发C语言程序设计自动评分系统、基于语法分析技术的企业名称识别算法、基于语义分析的数据驱动型漏洞检测方法、编译原理在通信协议转换中的应用、编译原理在反病毒技术中的研究和应用等。3)开放资源,自主协作。CDIO注重自主学习能力的培养,提升学生独立解决问题的能力,同时也重视团队协作精神的培养,发挥团队的力量,协同工作完成任务。网络环境下的自主和协作学习要求教师提供充分的网络资源。在教学中,课程组搜集整理了国内外编译原理课程的教学资源,整理了各种实用编程语言及其表示规则,设计了适合学生需要的“做中学”项目和任务,并在课程的教学网络平台共享,通过开放资源和自主协作的学习,鼓励学生在课外通过网络和移动设备开展学习讨论,用课外学习弥补课程学时的不足;通过课外自学,充分发挥学生的主观能动性,锻炼学生“自主设计、自主实现、自由探索”,引导和鼓励学生积极组织并参与项目组的学习和研讨活动,让个人融入项目团队,提升整个团队的工程实践能力。4)考核评价,多点多面。CDIO注重工程实践能力的培养,工程实践能力是各种能力的综合体现,因此考核评价要兼顾这种特性。所谓多点主要是指编译原理具有纷繁复杂的知识点,因此对知识点的考核应以促进学生主动学习、研究性学习为目的,注重对学习过程的考查。教师可通过查看学习记录、平时作业和练习情况,考核学生对基本知识点的掌握情况;通过小组活动记录,查看学生在项目组讨论中的活跃度,了解学生提出问题的数量和质量以及解决问题的思路,考核学生的知识整合和应用能力。所谓多面主要是指编译原理课程在培养学生实践创新能力方面具有多面性,因此考核评价方式要有利于培养创新能力、实践技能、解决实际问题能力,从多个层面开展。教师可通过对项目构思与设计展示、子项目实施情况、项目汇报与答辩、学生的自评与互评、教师与企业工程师的评价等多种方式考核学生的专业知识、个人自身能力、团队合作能力、设计项目和开发系统能力。

3CDIO模式编译原理教学实施过程中存在的问题与对策

1)“双师型”教师队伍的建设问题目前,从事编译理论研究和技术开发的教师不多,有编译器开发经验的教师比较缺乏。编译原理课程“双师型”教师队伍奇缺。湖北省教育厅和湖北工程学院制定政策,资助并鼓励青年教师进入相关企业与工程师合作解决实践中的技术难题。同时,湖北工程学院每年派出专业课青年教师到武汉大学、华中科技大学等高校进修深造。通过这两个途径,学校可以解决“双师型”师资队伍建设的问题。2)学生实习实训平台的建设问题。毕业生就业难和符合市场需求的应用性人才短缺问题一直是高校、用人单位和毕业生共同的困扰。学生综合能力是就业成败的关键因素,CDIO工程教育模式强化工程应用实习实训平台的建设,希望为解决这种困扰提供帮助。湖北工程学院与中国航天三江集团公司合作共建的工程实践教育中心和湖北工程学院部级大学生创新创业训练计划项目已获得教育部批准。在此基础上,计算机学院已经与国内10余家IT企业和科研机构合作共建实习实训基地,校企合作层面深化,操作方案细化,实现与行业需求的无缝对接。

编译原理论文篇(2)

关键词:编译原理;课堂教学;实践教学

中图分类号:G642

文献标识码:B

1“编译原理”课程教学现状

编译原理作为计算机专业的一门核心课程,在教学中占据十分重要的地位。但由于其内容具有较强的理论性和实践性,学生在学习过程中感到内容抽象、算法复杂、难于理解,因此“编译原理”被普遍看作是计算机本科教学中最难讲解、最难学习的课程。总结起来理由如下。

(1) 本课程涉及不少理论知识,如形式语言和自动机理论、语法制导的理论等。这些理论的学习有一定的难度,特别是语法制导定义(或翻译方案)的设计,因为它本质上是一种事件驱动的程序设计,这对于三、四年级的本科生来说还是较难掌握的。

(2) 本课程包含了很多算法,大的有LL(1)分析算法和各种LR(1)分析算法等,小的有DFA化简算法、计算开始符号集合和后继符号集合的算法、各种数据流方程的迭代求解算法。这些算法要比数据结构中接触的算法复杂得多,学生在学习数据结构的时候,接触过很多算法,对于不理解的算法可以跟踪算法的执行过程,而跟踪编译程序中的算法则要麻烦得多,想深刻理解算法的思想很困难。

(3) 编译程序规模大,不可能在一门课的时间内把所有的细节都讲清楚,这使学生对编译程序各逻辑部分之间的接口和一些算法的实现是模糊的。

针对这种情况,如何提高这门课程的教学效果,是一个值得探讨的问题。笔者多年来一直从事“编译原理”课程的教学,对如何改进教学方法和提高教学效果做了一些研究和探索,并取得了良好的效果。

2明确教学目标,提高学生学习兴趣

很多学生认为“编译原理”只能应用在写程序语言的编译器上,而他们以后可能不会在编译器及其相关领域方面钻研,所以学习兴趣不高,其实这是一种误解。编译技术是计算机语言发展的支柱,也是计算机科学中发展最迅速、最成熟的一个分支。通过学习编译程序的构造原理和技术,将有助于深刻理解和正确使用程序设计语言。编译内容涉及到计算机的组织结构、指令系统以及操作系统,掌握编译技术有助于加深对整个计算机系统的理解。另外,由于编译程序作为系统软件在性能上具有严格的要求,这使得它所使用的算法经典、高效,而这些算法、思想和实现技术也可广泛地应用于一般软件的设计实现。如正规式和有穷自动机在文本编辑器中的广泛应用,有穷自动机在字符串查找中的运用,必经节点算法在网络中的运用,由文法来定义网络协议等。在教学中,可以鼓励学生尝试将编译程序中的各种算法和技术应用到各个应用领域,从而激发学生的创造性思维,培养学生的创新能力,为今后的学习打下坚实的基础。

3优化教学内容,搞好课堂教学

由于这门课程理论性强,内容丰富且抽象,具有严密的逻辑性,应用其他课程知识比较多,要在有限课时内很好地完成本课程的教学。教师首先必须吃透教学内容、把握课堂教学环节。这就要求教师对教材非常熟悉,掌握编译原理的主要内容及基本框架,对教材及教学内容作一定的优化。

3.1选取合适的教材

某些“编译原理”教材并不是完全面向学生的,可能是作为这门学科的大全来编写的。例如由美国著名计算机科学家编著的“龙书”《Compilers Principles, Techniques and Tools》,中文译名为《编译原理》,由机械工业出版社出版,这本书是最经典权威的编译教材,应该是教师教学的必备参考用书,但如果将其作为授课的教材,对大部分学生来说都不太适合,因为内容过多,难度过大。

笔者总结了多年的教学经验,编写了一本《编译原理》教材,已由人民邮电出版社出版,我们在教学中采用这本教材。结合教材的特点,我们在教学中力求做到以下几点。

(1) 考虑到学生对C语言较为熟悉,所讲授的主要算法、例题和习题均以C语言为背景。

(2) 把编译原理和编译技术两方面有机地结合起来。将“PL/0语言编译程序”模型的实现过程贯穿于各个章节,这样使学生在掌握相关的编译原理之后,通过阅读理解和扩充此编译程序,加深对所学内容的理解,使所学内容融会贯通,能够建立一个较为完整的编译系统模型。

(3) 对常用分析器的自动生成工具(LEX和YACC)的功能和使用方法做了详细的介绍,并给出了使用LEX和YACC实现的PL/0语言编译器的源程序,从而使学生真正掌握如何借助LEX和YACC实现一个编译器。

3.2抽象内容形象化

编译系统中的一些概念很抽象,学生无法理解,就只会死记硬背,当然更无兴趣可言。在讲解的过程中,可以选用学生最熟悉的一些实例,通过类比使抽象的概念更容易被理解。例如,从理论上来说,编译过程一般包括词法分析、语法分析、语义分析和中间代码生成、代码优化、目标代码生成这五个阶段。学生记住这五个阶段并不难,但理解阶段划分的依据有一定的难度。编译程序的功能是将用高级语言编写的源程序翻译成等价的用机器语言或汇编语言表示的目标程序。既然编译过程是一种语言的翻译过程,那么它的工作过程就类似于外文的翻译过程,不同之处仅在于由哪种语言翻译成另外哪种语言,但其原理是类似的。两者的翻译过程对比如表1所示。

例如,我们要将英文句子“I wish you success”翻译成中文,首先进行词法分析,根据英语的词法规则,识别出四个英语单词,并检查是否有单词的拼写错误。其次是语法分析,根据英语的语法规则,对词法分析后的单词串进行分析、识别,并做出语法正确性检查,看其是否能组成一个符合英语语法的句子。再次进行语义分析,即对语法正确的英文句子分析其含义,并用汉语表示出来。然后对译文进行修饰,根据上下文的关系及汉语语法的相关规则进行综合考虑,对初步翻译后的句子进行必要的修饰。最后翻译成中文,“祝你成功”。学生经常做这种翻译,对翻译过程非常熟悉。将它与编译过程进行类比,既加深了学生的印象,又有助于理解为什么将编译过程划分成这几个阶段。

3.3运用实例教学

编译原理论文篇(3)

0 引言

新闻翻译是一种目的性的行为。由于各民族间语言、风俗、和文化等差异性的不可避免性,源语言文本很难被译者按照字面的意思翻译。因此,完全地重视源语言新闻有时并不能达到理想的信息传播效果,那么译者需要发挥其主观能动性,采取必要的翻译策略,以达到更有效的信息传播的目的。其次,新闻翻译要求目标语言读者能够理解译文,译文在其介入的交际环境和文化中应有一定的意义。新闻译者需要采取目标语言及目标语言文化定位的翻译策略,使得译文在其介入的的交际环境和文化中有一定的意义。因而,以德国功能派翻译大师H.J.弗米尔(H.J. Vermeer)提出的以目的论为指导理论对新闻翻译具有重要的指导意义。

1 目的论概述

德国功能派大师H.J.弗米尔在二十世纪七十年代摆脱了当时盛行的翻译对等理论的束缚,提出了“目的论”(Skopos theory),为译者在翻译实践中灵活运用翻译策略和方法提供了理论基础,对于有目的的交际行为的新闻翻译具有十分重要的指导意义。目的论所注重的并非译文与原文的对等性,而是译文的可读性,这对于新闻翻译而言,指导意义可见一斑。

目的论强调翻译应遵循三大法则:(1)目的法则(Skopos rule)目的法则是翻译目的论的最高法则,整个翻译行为的目的是决定新闻翻译过程的首要法则。因而,在翻译过程中,翻译策略和翻译方法的选择,都是由翻译目的所决定的。(2)连贯性法则(Coherence rule)连贯性法则要求译文必须符合语内连贯的标准,即译文具有可读性和可接受性,能够使接受者理解并在目标语接受者的文化及使用译文的交际语境中有意义。(3)忠实性法则(Fidelity rule)忠实性法则要求原文与译文之间应该存在语际连贯一致。这相当于其他翻译理论所谓的忠实于原文,但与原文忠实的程度和形式取决于译文的目的和译者对原文的理解。

2 新闻编译的概述

新闻因其本身具备其及时性、重要性、显著性、地方性以及趣味性的特征,因而要求在跨文化新闻翻译中既能保持这些特征,又能准确地表达源语言新闻的意思。新闻编译是通过翻译人员的加工,将源语言新闻通过各种翻译策略和翻译方法的的运用转化为目标语言新闻。编译类似于翻译,都是一个转换过程,即把源语言的信息转换成目的语中意义对应的信息。翻译要求准确和忠实,而新闻编译则不同,它要求译者在一定的目的性的前提下对源语言新闻进行一定的加工,如背景知识的补充、相关新闻的政治性不利言辞的删减、修正等。

3 目的论指导下的英语新闻编译

目的论以目的为总的原则,在新闻编译过程中,它需要新闻编译者通过采取合理有效的新闻编译方法和策略对源语言新闻进行必要的改动,使源语言新闻信息能让目标语接受者正确地理解和接受,这样才能达到有效传播新闻信息的目的。

3.1 缩译法

在新闻编译中缩译法是行之有效的编译方法,它在不改变源语言新闻所传达的中心信息的同时既能节省目标语接受者阅读时间也能准确地表达源语言新闻的意思。

例:Emails and text messages could be read on contact lenses linked to the internet, a new invention.

Researchers constructed a computerized contact lens and demonstrated its safety by testing it on live eyes, and there were no signs of adverse side effects.

The contact lens created by researchers at the University of Washington and Aalto University, Finland, consists of an antenna to harvest power sent out by an external source, as well as an integrated circuit to store this energy and transfer it to a transparent sapphire chip containing a single blue LED.

One major problem the researchers had to overcome was the fact that the human eye, with its minimum focal distance of several centimeters, cannot resolve objects on a contact lens. Any information projected on to the lens would probably appear blurry.

科学家发明隐形眼镜可直接查看邮件短信

研究人员制造了一种计算机化的隐形眼镜,并宣称已经通过肉眼使用的安全测试,没有产生不良副作用的迹象。这种隐形眼镜是由来自华盛顿大学和芬兰阿尔托大学的研究人员共同创造的,其组成部分包括一根用来接收外界信息来源发出的能量的天线,以及一个集成电路,这一电路会把接收到的能量储存起来,并将其转移到一个透明的包含单个蓝色二极管的宝石蓝芯片上。

显而易见,在此新闻编译中,目标语文本较源语言新闻更加短小精悍,因为源语言文本的中的最后一段与标题所表达的意思没有关联,而新闻报道往往由于版面空间的有限的实际情况需要对长篇的新闻报道采取必要的删减,因而缩译法在新闻编译中发挥重要的作用。

3.2 增补法

在新闻编译中,对源语言新闻词语的直接翻译有时往往不能准确地表达所要传达的信息,在此情况下需要译者采取必要的增补方法对源语言新闻进行合理的编译,即编译时按意义上和句法上需要增加一些词来更加忠实通顺地表达原文的思想内容。

例:“铁饭碗”如今已被一个新出现的词“跳槽”代替。

The phrase “iron-rice-bowl”, which refers to the job-for-life system, has been replaced by a new term, Tiao Cao, meaning“to seek better troughs.”

对于中国人而言,“铁饭碗”和“跳槽”所表达的意思是众所周知的,然而对于外国人而言,却是难以理解和领会的,因此在编译中,为了使得译文能准确地表达原文的意思,常常必须增加一些原文字面上没有而在上下文种包含内容的词语。

3.3 改编法

新闻编译是一种有目的性的交际行为,它需要译者在新闻编译中进行有目的的词汇或句子上的合理翻译,尤其是在政治新闻中,对源语言新闻中被曲解的词汇或句子进行正确的修正是十分必要的,这样才能使源语言新闻在目标语受众中得到有效的信息传播。

例:China has considered Taiwan a renegade province since communist forces drove nationalists from the mainland in 1949, and has repeatedly threatened to use military power against the island if it declares independence

中国坚持台湾自1949年以来一直是其不可分割的一个省,并重申如果台湾宣称其独立将采取武力行动。

在此例句中,源语言新闻的读者认为中国把台湾理解为“叛乱省”,这当然是有悖于中国人民大众的意思的,如果直(下转第158页)(上接第145页)接翻译成“叛乱省”势必会影响与台湾人民之间的感情,也是与事实不相符合的,因而,译者巧妙地运用了改编法,把“叛乱省”翻译成“不可分割的一个省”,这样既符合事实也加深了与台湾同胞的感情。

4 结语

翻译目的论作为新闻翻译的指导理论,为新闻翻译研究开辟了一个全新的视角。因而,新闻翻译者可以在目的论的指导下有效地运用各种翻译策略,更好地达到信息有效传播的目的,推动各文化之间的交流。

【参考文献】

[1]王友琴.浅谈目的论与新闻英译的关系[J].牡丹江教育学院学报,2011.

[2]袁健兰.从目的论看新闻英语标题翻译[J].海外英语,2010.

[3]王大志.翻译与翻译伦理[M].北京:北京大学出版社,2012.

编译原理论文篇(4)

【中图分类号】G632.07 【文献标识码】B 【文章编号】2095-3089(2013)20-00-02

为引导高校主动适应国家战略和地方经济社会发展需求,优化专业结构,加强专业内涵建设,创新人才培养模式,大力提升人才培养水平,江苏省教育厅和财政厅开展了“十二五”高等学校重点专业建设的工作(苏教高〔2012〕16号)。我校的计算机类(包含物联网工程、计算机科学与技术和信息安全三个专业)获得了该项目的资助(苏教高〔2012〕23号),并与2012年8月启动了该项目。为了响应本次计算机类综合专业的改革,我们有必要探索面向计算机类专业的“编译原理”课程改革方案,本次改革方案的重点不涉及编译原理课程的新教学模式、新方法及教材建设,而是强调课程设计在编译原理课程教学中的核心地位和重要作用。通过重视学生的课程设计,实现学生掌握编译技术这一核心的目标。

一、研究现状

近年来,国内外各大学从编译原理的教学内容、教学方式、教学手段以及实践教学环节制定等多个方面对这门理论性和实践性较强的课程进行了深入地研究和探讨,提出了一些效果较好的编译原理教学新模式和新方法。

国内编译原理课程的权威专家何炎祥教授提出了基于人本主义的教学新模式[1],它指的是以学生为主、师生互动的全新教学模式。即明确指出教师的任务不是教学生学习知识,也不是教学生如何学习,而是为学生提供各种学习的资源,提供一种促进学习的气氛,让学生自己决定如何学习。浙江大学的王强[2]提出形象化的教学方法,即通过多媒体的形式向学生演示复杂的算法过程。重庆理工大学的刘洁[3]把软件工程专业的特点融入到编译原理课程中,采用科学系统的教学和实验模式实现了激发学生学习兴趣、培养学生分析和解决问题能力的目标。首都师范大学的衷璐洁[4]以实例化的真实的编译器GCC来开展教学。该教学模式是一种与“概念-理论-应用”的传统教学模式完全相反的教学模式,它的教学思路是“案例-理论-概念”。理工大学的贺汛[5]针对编译原理课程的教学特点,提出从调动内驱力、提倡发散思维、提倡探究学习、培养抽象思维四个方面入手,加强学生创造性思维能力的培养,并给出了教学实施的具体步骤和方法。

通过跟踪最新的国内外有关编译技术教学改革的成果发现当前编译课程的改革在理论教学上已经实现了“学生轻松学,教师轻松教”的教学目标。然而,学生却普遍反映当前的教学模式使他们掌握了编译原理应试的技巧,却没有使他们真正理解编译技术各知识点的来龙去脉,他们仍然不会编写一个编译器系统。编译技术对他们而言,仍然是空中楼阁,遥不可及。这正是当前编译原理课程改革遇到的瓶颈。

二、课程设计在编译原理教学中的地位和作用

如图1所示,为课程设计在编译原理教学中的地位和作用。它是按照编译原理教学的五个阶段,实践教学的三个层次进行规划的,最终,通过课程设计将编译理论与程序设计相结合让学生去实现一个小型的编译系统。该体系从多个维度系统地进行学生能力的培养和知识与技能的传授。使得学生不会再有“编译是门难学、易忘,学后无用的课程”的感觉。

图1也解释了为什么当前的编译原理课程改革遇到了瓶颈,为什么只有重视编译原理课程设计才是解决这一瓶颈的唯一途径。下面我们对此进行论述。当前的课程改革只重视编译原理教学的前三个阶段:基本认知、基本理论和应用认知;实践教学中的第一个层次:上机实验。整体上是重理论而轻实践。这就是编译原理课程对学生而言,有一种空中楼阁、遥不可及的感觉的本质原因。而如果能在当前的改革维度上进行扩展,将编译原理教学扩展为图1中的五个阶段,把实践教学扩展为图1中的三个层次。通过将编译理论与程序设计方法相结合完成编译器这一综合课程设计,从而实现编译课程学习由知识点到知识平面,由知识平面到三维立体专业技能。也就是说,通过本次教学改革(更加重视课程设计和动手实践能力),教给学生的不再是能够解题的知识点、解题方法和解题技巧,而是他们将来能够到社会上赖以生存的专业技能。

三、课程设计在“编译原理”课程改革中的实施方案及效果

1.课程设计在编译教学中的实施方案

首先,编写编译课程综合实验指导书。编写原则是实验目标要适中,不要定的太高。任务和要求要明确,而实现方法不固定,为的是给学生更多的自由发挥空间。实验指导书的内容如下:

(1)实验目的

《编译原理》是理论与实践并重的课程,而其实验课要综合运用一、二年级所学的多门课程的内容,用来完成一个小型编译系统。从而巩固和加强对词法分析、语法分析、语义分析、代码生成和报错处理等理论的认识和理解;培养学生对完整系统的独立分析和设计的能力,进一步培养学生的独立编程能力。

(2)实验任务和要求

①词法分析器的作用是划词功能,产生的单词序列;

②语法分析器的作用是识别测试用例的语法是否正确,使用的算法可以是:预测分析法、递归下降分析法、算符优先分析法、LR分析法等;

③语义分析与中间代码生成器的作用是分析测试用例的语义并生成中间代码(四元式序列)。

然后,将学生分为五到六人一组,每组设置一个项目组长(ProjectManager,PM)。由PM负责为期一周半的综合课程设计,主要包括项目分工、项目实施、进度规划和组员间的协调等工作。

最后,每个小组提交可供演示的编译器系统、课程设计论文及答辩PPT。每个小组由PM用10分钟时间陈述课程设计期间的工作,之后,由其他同学进行提问,小组成员进行回答。

2.课程设计在编译教学中的实施效果

我们对2009级计算机科学与技术和软件工程两个专业的本科学生进行了课程设计方案的实施。图2为一名同学所完成的编译课程设计中语义分析的效果图。这里的语义分析采用了语法制导生成四元式,语法分析用的是自底向上的SLR文法。

在课程结束后,我们还对这两个专业的124名学生进行了匿名式的问卷调查,结果表明在编译教学中重视课程设计明显要好于重理论轻实践的的编译教学改革模式。表1从熟练掌握编译课程中的各知识点、理解编译课程中各知识点的来龙去脉、具备理论联系实际的专业技能三方面进行了教学效果对比分析。

通过对表1中数据的对比分析可知,重视课程设计的教学模式在各方面都明显优于重理论而轻实践的教学模式,特别是在培养学生的理论联系实际的专业技能方面,98%以上的学生表示满意。

四、结语

文章针对当前编译原理课程教学改革中“重理论轻实践”的现实问题,提出要高度重视编译原理课程设计。文章重点论述了课程设计在编译原理教学中的地位和作用;阐述了当前编译原理课程改革遇到的瓶颈,以及为什么只有重视编译原理课程设计才是解决这一瓶颈的唯一途径。之后,给出了编译原理课程设计的实施方案和考核方式。通过问卷调查发现,学生们普遍反映重视课程设计的编译原理教学更有利于他们掌握基本理论和基本技能,提高理论联系实际的专业技能,特别是他们不再感到编译原理是空洞的理论课、缺乏实用价值且学之无用。教师们也普遍反映重视课程设计的新教学模式使得教学质量和教学效果有了明显的提升。匿名调查结果达到了预期目标。

然而,匿名式的问卷调查也发现我们提出的编译原理课程改革存在学生无法理解知识点产生的来龙去脉这一不足之处。下面我们将在理论课中要加入一些通俗易懂、便于学生理解的案例作为引子,之后将教学内容重新梳理,使得学生了解编译原理知识点产生的出处,这将是下一步编译原理课程教学改革的重点。

参考文献

[1]何炎祥,伍春香.现代教学理论指导下的”编译原理”教学综合改革[J].计算机教育,2010(1):46-49.

[2]王强,冯雁.编译原理算法的形象教学[J].计算机教育,2010(3):30-32.

编译原理论文篇(5)

1引言

编译原理课程是高校计算机类专业的重要基础和骨干课程。编译原理对计算机专业的学生的重要性与高等数学对理科学生的重要性几乎可以相提并论。同时,由于这门课程涉及其他多门课程的知识,使得它成为大学阶段中最难学的课程之一。

从表面上看,编译程序是将高级语言源程序翻译成低级语言程序,但编译程序构造的基本原理和技术也广泛应用于一般软件的设计和实现,其中的设计思想、算法、思维方式和技术都可能会对学生今后的职业发展产生比较大的影响。

当今,程序设计已经基本上从传统的过程式转向对象式,并且正在从对象式转向组件型。这其实是程序设计范型的变迁,是在计算机技术背景下认识世界的观点的变化:过程式将完成事务看成是一系列的步骤,而对象式却将世界看成是由一系列对象组成的,这些对象之间交互合作完成特定的事务。从过程式到对象式,有着质的变化,而非一般的修改和完善,由此带来了语言(算法描述工具)的变化。编程语言影响思维,面向对象的思维方法又促进了编程语言的发展。

目前,程序设计的一些后继课程,如数据结构等都进行了同步跟进,出现了诸如用c++或java描述的数据结构教材。但编译原理课程却没有及时跟进,上述改变基本上没有反映到编译原理课程中。这门课程近20年来基本上没有大的变化,教学内容仍然是基于过程式语言展开的,编译算法和模型描述是用pascal语言或者c语言。虽然个别教材加入了少量关于对象式语言编译技术的内容,那也是稍加点缀而已,作用不大。这就造成了一种奇怪的现象:对象式语言已经成了高校计算机教学的主流语言,社会上大量使用的也是对象式语言,而我们的编译原理教学仍然沿袭旧的一套。这种“状态”严重地脱离了计算机技术的发展和社会的实际需要,因此需要进行“调态”,其根本做法是“转型”,即将本课程的讨论对象从过程式语言转到对象式语言。

国外近年关于编译原理方面的新教材已经有了重要改变,不再连篇累牍地讨论那些已经过时的内容,增加了许多新的内容。其中一个重大改变是出现了用对象式语言描述编译算法和教学模型的编译原理教材,如:用java语言描述的编译原理教材,且其教学模型为minijava。

这种改变也涉及到课程上机实践。众所周知,编译原理课程的学术性和实践性都很强:学术性是这门课程的生命所在,实践性是这门课程的活力所在。因而本课程的上机实践也要作同步调整。

2课程内容围绕对象式语言展开

研究程序设计语言的语法描述需要有文法理论的支持,老教材中文法、词法分析和语法分析部分内容基本上不需要作什么变动。词法分析主要依赖有穷状态自动机理论,语法分析主要讲述ll方法和lr方法,其他方法略做介绍即可,无需展开讨论。ll方法和lr方法含盖了许多分析技术,理论性和应用性都很强,完全可以代表主流技术。

重要的就是研究对象和教学模型的改变。首先,研究对象将从过程式程序设计语言转到对象式程序设计语言(当然还可以兼顾过程式),例如java、c++等,围绕实现这类语言的编译实现技术展开讨论。对象式程序设计语言的要素是封装、继承、多态性,在编译实现时都必须仔细考虑。其次,涉及到对象式程序设计语言编译程序教学的模型选择问题。目前传统的教材选择的教学模型有pl/0、tinic等。实践证明,围绕某个模型展开编译设计技术的讨论,效果是比较好的。课程研究对象和教学模型的改变涉及到调整的章节主要有语法分析、语义分析、代码生成、符号表管理、存贮分配等方面。

一旦我们讨论的模型发生变化,这些章节的内容就要作很大调整。如对象式语言的作用域规则、语言动态特性、模块化封装(类)、类的继承、多态性的实现等,都需要具体的技术来实现,这些都要反映在教材和教学中。

就课程中关于代码生成内容来看,目前java编译程序生成java虚拟机(jvm)代码,c#生成msil虚拟机代码。这两个虚拟机作为教学模型来说可能比较复杂了一些,在教学中可以选定一个简单的子集;或者在pl/0虚拟机上适当增加一些指令代码,以便于代码生成、存贮分配等部分的讲解。

实践证明,作为教学模型,在教材上提供一个小型语言的编译程序供学生分析和研究,非常有利于加深对基本原理的理解和掌握。这个小型编译程序可以比较小但应该能够说明一些基本问题,例如传统的编译原理课程中选择pl/0编译程序作为教学模型,就收到了比较好的教学效果。在对象式程序设计语言编译原理课程中选择object-pl/0或者minijava作为教学模型是比较恰当的。前者是在传统的pl/0语言上增加类,补充封装、继承、多态性之语言成分得到的;后者是对java语言进行适当简化得到的,

编译原理课程可以围绕此模型展开讨论。国外已经有这类教材出现,并且不少大学已经开始使用。

3用对象式语言描述编译算法和教学模型

本课程中各类编译算法都应该伴随着教学模型的变化,改用对象式语言来描述,如用java语言描述或者用c++语言描述。其中一个重大的变化是教学模型如minijava或object-pl/0要用对象式语言实现,也就是提出了教学模型的面向对象构造问题,这就比较好地将讨论对象和描述讨论对象的语言统一起来了。国外有的教材就选择了用java描述minijava编译程序。

编译程序是一个重要的中大型软件,传统的编译程序大都是用pascal、c等语言描述的(参见图2)。像编译程序这样的中大型程序如何用类这个工具来进行分解,其实是对学生的对象式程序设计能力的一个重要检验。学习用对象式语言来描述编译程序,学生可能会受到一次严格的对象式语言程序设计训练,编译程序如何用类这个工具进行分解,这些类(对象)如何合作完成编译任务,都需要较好的对象式程序设计基础。图3是一个程序设计语言文法的面向对象表示。

传统的编译程序构造主要存在如下一些问题:

(1)传统编译程序试图通过将编译程序根据功能模块分解,而使整个编译程序的复杂性降低。这种方法虽然在一定程度上简化了编译过程。但为了处理大型、复杂且多变的编译程序,仅仅将它按照功能分解成词法分析、语法分析、语义处理和代码生成几个阶段是远远不够的。

(2)传统的编译程序构造中,编译的每个阶段依然是大型、复杂的,且每个阶段内部依然存在复杂的联系,这对编译程序的可维护性没有实际上的改变,反而造成维护困难。

(3)虽然传统的编译程序构造有着丰富的理论基础,也有一些工具诸如lex、yacc等,但对一个具体的编译程序的构造仍然要从最基本的描述开始。传统的编译程序构造的功能分解方法缺乏支持复用的良好机制。

总之,过程式程序设计范式存在的问题在编译程序设计中广泛存在。而用对象式程序设计语言来描述编译程序,则对象式程序设计范式带来的好处基本上都能够得到。具体主要表现在:

(1)编译程序效率高。由于面向对象的编译程序构造采用的是语法树构造法,可以得到上下文相关信息,并根据上下文进行语法树的优化,所以生成的代码效率高。

(2)复用方便。由于语法类和具体的语法结构一一对应,所以在复用语法结构时,可以直接得到能被复用的语法类,不需要经过查找过程。

(3)修改方便。由于面向对象方法中的封装和多态等技术的实现,语义处理方法中所用到的数据都是局部数据,因此要做语义修改时,只要继承相应的语法类,并且重载相应的语义处理方法即可,需修改的内容较之传统方法要少。

(4)有利于构造编译程序类库,使得编译程序的构造能够大量复用已有的类,这是更高层次上的复用。

4课程实验的设计

计算机学科是一门技术学科,它虽然有一定的科学的成分,但工程技术的成分更多一些,因此需要加强动手能力的培养。编译原理课程除了注重它的原理性,还必须注重其实践性。学习这门课程时,学生对编译的理解往往只停留在书本的概念上,而不知道怎样把编译理论应用到实际的编译程序设计的实践中。另外,有些学校只将教学内容锁定在文法、词法分析(有穷状态自动机)、语法分析(ll、lr文法)上,以应付学生考研的需要。这些做法使得学生很难掌握这门课程的精髓。

图2传统的编译程序功能分解

图3程序设计语言文法的面向对象表示

编译系统可能是所有软件系统中最复杂的系统之一,通过本课程实践环节的教学,还可以帮助学生掌握一些大、中型软件设计的技术和技巧,提高学生面向对象软件开发的综合能力。

传统的编译原理课程往往要求学生自己实现一个词法分析程序;实现一个基于递归子程序递归下降分析程序或基于预测分析表的语法分析程序;为某虚拟机(例如pl/0虚拟机)生成代码;对教学模型(例如pl/0)进行扩充,写出完整的编译程序等。且在此过程中学生可以借助词法分析自动生成程序lex和语法分析自动生成程序yacc进行有关实验。我们要求学生通过对教学模型的分析,能够在机器上动手实现一个小的编译系统,以加深对编译整个过程的一致性、连贯性、整体性的理解。

一旦我们的讨论对象改变为对象式语言,则其编译程序语法和词法分析的自动生成不能再采用lex、yacc这类工具了,需要改用javacc(javacompilercompiler)或sablecc等,它们都能生成java语言代码;或者使用jikespg(jikespasergernerator),它生成c++代码。

我们初步制定了本课程的实践环节,它主要分四个层次:

(1)借助javacc或sablecc等工具让学生自动生成小语言的词法分析和语法分析程序。这个实验的目的是教会学生关于词法分析和语法分析的自动生成,同时弄清这些工具生成出来的代码的程序结构,特别是面向对象的类结构。

(2)为上面生成的语法树添加语义动作,完成生成代码的工作。这个实验的目的是让学生理解如何在抽象语法树上添加语义动作,理解为虚拟机生成代码的知识。

(3)扩展教学模型,如minijava,为其增加一些语言成分,如有关语句等,然后为其构造完整的编译程序。这一实验让学生把握编译的总体,弄清各部分之间的关系。

(4)逐步构造面向对象的编译程序类库,使得“编写”编译程序逐步走向“组装”编译程序。

编译原理论文篇(6)

1引言

编译原理课程是高校计算机类专业的重要基础和骨干课程。编译原理对计算机专业的学生的重要性与高等数学对理科学生的重要性几乎可以相提并论。同时,由于这门课程涉及其他多门课程的知识,使得它成为大学阶段中最难学的课程之一。

从表面上看,编译程序是将高级语言源程序翻译成低级语言程序,但编译程序构造的基本原理和技术也广泛应用于一般软件的设计和实现,其中的设计思想、算法、思维方式和技术都可能会对学生今后的职业发展产生比较大的影响。

当今,程序设计已经基本上从传统的过程式转向对象式,并且正在从对象式转向组件型。这其实是程序设计范型的变迁,是在计算机技术背景下认识世界的观点的变化:过程式将完成事务看成是一系列的步骤,而对象式却将世界看成是由一系列对象组成的,这些对象之间交互合作完成特定的事务。从过程式到对象式,有着质的变化,而非一般的修改和完善,由此带来了语言(算法描述工具)的变化。编程语言影响思维,面向对象的思维方法又促进了编程语言的发展。

目前,程序设计的一些后继课程,如数据结构等都进行了同步跟进,出现了诸如用C++或Java描述的数据结构教材。但编译原理课程却没有及时跟进,上述改变基本上没有反映到编译原理课程中。这门课程近20年来基本上没有大的变化,教学内容仍然是基于过程式语言展开的,编译算法和模型描述是用PASCAL语言或者C语言。虽然个别教材加入了少量关于对象式语言编译技术的内容,那也是稍加点缀而已,作用不大。这就造成了一种奇怪的现象:对象式语言已经成了高校计算机教学的主流语言,社会上大量使用的也是对象式语言,而我们的编译原理教学仍然沿袭旧的一套。这种“状态”严重地脱离了计算机技术的发展和社会的实际需要,因此需要进行“调态”,其根本做法是“转型”,即将本课程的讨论对象从过程式语言转到对象式语言。

国外近年关于编译原理方面的新教材已经有了重要改变,不再连篇累牍地讨论那些已经过时的内容,增加了许多新的内容。其中一个重大改变是出现了用对象式语言描述编译算法和教学模型的编译原理教材,如:用Java语言描述的编译原理教材,且其教学模型为MiniJava。

这种改变也涉及到课程上机实践。众所周知,编译原理课程的学术性和实践性都很强:学术性是这门课程的生命所在,实践性是这门课程的活力所在。因而本课程的上机实践也要作同步调整。

2课程内容围绕对象式语言展开

研究程序设计语言的语法描述需要有文法理论的支持,老教材中文法、词法分析和语法分析部分内容基本上不需要作什么变动。词法分析主要依赖有穷状态自动机理论,语法分析主要讲述LL方法和LR方法,其他方法略做介绍即可,无需展开讨论。LL方法和LR方法含盖了许多分析技术,理论性和应用性都很强,完全可以代表主流技术。

重要的就是研究对象和教学模型的改变。首先,研究对象将从过程式程序设计语言转到对象式程序设计语言(当然还可以兼顾过程式),例如Java、C++等,围绕实现这类语言的编译实现技术展开讨论。对象式程序设计语言的要素是封装、继承、多态性,在编译实现时都必须仔细考虑。其次,涉及到对象式程序设计语言编译程序教学的模型选择问题。目前传统的教材选择的教学模型有PL/0、TiniC等。实践证明,围绕某个模型展开编译设计技术的讨论,效果是比较好的。课程研究对象和教学模型的改变涉及到调整的章节主要有语法分析、语义分析、代码生成、符号表管理、存贮分配等方面。

一旦我们讨论的模型发生变化,这些章节的内容就要作很大调整。如对象式语言的作用域规则、语言动态特性、模块化封装(类)、类的继承、多态性的实现等,都需要具体的技术来实现,这些都要反映在教材和教学中。

就课程中关于代码生成内容来看,目前Java编译程序生成Java虚拟机(JVM)代码,C#生成MSIL虚拟机代码。这两个虚拟机作为教学模型来说可能比较复杂了一些,在教学中可以选定一个简单的子集;或者在PL/0虚拟机上适当增加一些指令代码,以便于代码生成、存贮分配等部分的讲解。

实践证明,作为教学模型,在教材上提供一个小型语言的编译程序供学生分析和研究,非常有利于加深对基本原理的理解和掌握。这个小型编译程序可以比较小但应该能够说明一些基本问题,例如传统的编译原理课程中选择PL/0编译程序作为教学模型,就收到了比较好的教学效果。在对象式程序设计语言编译原理课程中选择Object-pl/0或者MiniJava作为教学模型是比较恰当的。前者是在传统的PL/0语言上增加类,补充封装、继承、多态性之语言成分得到的;后者是对Java语言进行适当简化得到的,其主要语法描述如图1所示。

图1MiniJava语法

编译原理课程可以围绕此模型展开讨论。国外已经有这类教材出现,并且不少大学已经开始使用。

3用对象式语言描述编译算法和教学模型

本课程中各类编译算法都应该伴随着教学模型的变化,改用对象式语言来描述,如用Java语言描述或者用C++语言描述。其中一个重大的变化是教学模型如MiniJava或Object-pl/0要用对象式语言实现,也就是提出了教学模型的面向对象构造问题,这就比较好地将讨论对象和描述讨论对象的语言统一起来了。国外有的教材就选择了用Java描述MiniJava编译程序。编译程序是一个重要的中大型软件,传统的编译程序大都是用PASCAL、C等语言描述的(参见图2)。像编译程序这样的中大型程序如何用类这个工具来进行分解,其实是对学生的对象式程序设计能力的一个重要检验。学习用对象式语言来描述编译程序,学生可能会受到一次严格的对象式语言程序设计训练,编译程序如何用类这个工具进行分解,这些类(对象)如何合作完成编译任务,都需要较好的对象式程序设计基础。图3是一个程序设计语言文法的面向对象表示。

传统的编译程序构造主要存在如下一些问题:

(1)传统编译程序试图通过将编译程序根据功能模块分解,而使整个编译程序的复杂性降低。这种方法虽然在一定程度上简化了编译过程。但为了处理大型、复杂且多变的编译程序,仅仅将它按照功能分解成词法分析、语法分析、语义处理和代码生成几个阶段是远远不够的。

(2)传统的编译程序构造中,编译的每个阶段依然是大型、复杂的,且每个阶段内部依然存在复杂的联系,这对编译程序的可维护性没有实际上的改变,反而造成维护困难。

(3)虽然传统的编译程序构造有着丰富的理论基础,也有一些工具诸如Lex、Yacc等,但对一个具体的编译程序的构造仍然要从最基本的描述开始。传统的编译程序构造的功能分解方法缺乏支持复用的良好机制。

总之,过程式程序设计范式存在的问题在编译程序设计中广泛存在。而用对象式程序设计语言来描述编译程序,则对象式程序设计范式带来的好处基本上都能够得到。具体主要表现在:

(1)编译程序效率高。由于面向对象的编译程序构造采用的是语法树构造法,可以得到上下文相关信息,并根据上下文进行语法树的优化,所以生成的代码效率高。

(2)复用方便。由于语法类和具体的语法结构一一对应,所以在复用语法结构时,可以直接得到能被复用的语法类,不需要经过查找过程。

(3)修改方便。由于面向对象方法中的封装和多态等技术的实现,语义处理方法中所用到的数据都是局部数据,因此要做语义修改时,只要继承相应的语法类,并且重载相应的语义处理方法即可,需修改的内容较之传统方法要少。

(4)有利于构造编译程序类库,使得编译程序的构造能够大量复用已有的类,这是更高层次上的复用。

4课程实验的设计

计算机学科是一门技术学科,它虽然有一定的科学的成分,但工程技术的成分更多一些,因此需要加强动手能力的培养。编译原理课程除了注重它的原理性,还必须注重其实践性。学习这门课程时,学生对编译的理解往往只停留在书本的概念上,而不知道怎样把编译理论应用到实际的编译程序设计的实践中。另外,有些学校只将教学内容锁定在文法、词法分析(有穷状态自动机)、语法分析(LL、LR文法)上,以应付学生考研的需要。这些做法使得学生很难掌握这门课程的精髓。

图2传统的编译程序功能分解

图3程序设计语言文法的面向对象表示

编译系统可能是所有软件系统中最复杂的系统之一,通过本课程实践环节的教学,还可以帮助学生掌握一些大、中型软件设计的技术和技巧,提高学生面向对象软件开发的综合能力。

传统的编译原理课程往往要求学生自己实现一个词法分析程序;实现一个基于递归子程序递归下降分析程序或基于预测分析表的语法分析程序;为某虚拟机(例如PL/0虚拟机)生成代码;对教学模型(例如PL/0)进行扩充,写出完整的编译程序等。且在此过程中学生可以借助词法分析自动生成程序Lex和语法分析自动生成程序Yacc进行有关实验。我们要求学生通过对教学模型的分析,能够在机器上动手实现一个小的编译系统,以加深对编译整个过程的一致性、连贯性、整体性的理解。

一旦我们的讨论对象改变为对象式语言,则其编译程序语法和词法分析的自动生成不能再采用Lex、Yacc这类工具了,需要改用JavaCC(JavaCompilerCompiler)或SableCC等,它们都能生成Java语言代码;或者使用Jikespg(Jikespasergernerator),它生成C++代码。

我们初步制定了本课程的实践环节,它主要分四个层次:

(1)借助JavaCC或SableCC等工具让学生自动生成小语言的词法分析和语法分析程序。这个实验的目的是教会学生关于词法分析和语法分析的自动生成,同时弄清这些工具生成出来的代码的程序结构,特别是面向对象的类结构。

(2)为上面生成的语法树添加语义动作,完成生成代码的工作。这个实验的目的是让学生理解如何在抽象语法树上添加语义动作,理解为虚拟机生成代码的知识。

(3)扩展教学模型,如MiniJava,为其增加一些语言成分,如有关语句等,然后为其构造完整的编译程序。这一实验让学生把握编译的总体,弄清各部分之间的关系。

(4)逐步构造面向对象的编译程序类库,使得“编写”编译程序逐步走向“组装”编译程序。

编译原理论文篇(7)

《编译原理》课程是计算机科学与技术专业中的一门重要的专业课程。传统的教学方法主要突出编译原理课程中书本知识的传授,对于编译技术的思想介绍不是很突出,从而使得学生认为本课程对其今后的发展没有什么作用,而忽视了课程开设的目的。我认为,《编译原理》课程内容虽然多,但各部分间逻辑联系很强。课程大致可分为三个部分:第一部分是程序设计语言基本概念、形式语言与自动机理论和编译程序的构造原理,使学生了解编译程序在程序设计语言系统中的重要地位;第二部分为形式语言与有穷自动机理论,为编译程序提供了完善的理论基础;第三部分深入透析编译程序的构造结构,突出编译程序各部分之间的逻辑关系,使学生了解编译程序的总体构造过程和方法,能够掌握基本的构造原理与技术。《编译原理》课程具有较强的理论性和实践性,本文将从教学目标、教学组织以及典型教学方法三个方面来探讨如何有效实施课程教学。

一、教学目标

以工科为主的计算机科学与技术专业中的绝大部分毕业生都不会去设计编译器或者从事相关工作。但《编译原理》课程中蕴含的知识内涵非常丰富,课程中体现出的形式化方法和抽象的逻辑思维能力是计算机科学与技术专业学科所要求的重要的“计算机思维能力”。能力的培养绝不是通过一两门课程的学习可以实现的,尤其这种抽象思维能力的培养,需要长期不断地学习和积累来完成。本门课程就是这个体系中的重要组成部分。就如何突出该课程的实践性和必要性,让学生掌握和了解编译程序的基本理论和基本构造方法,还要兼顾大多数学生的需求,成为制定《编译原理》课程教学目标的主要内容。所以,我对学生的要求是:对课程整体应当有较为全面的了解和认识,熟悉编译程序的构造过程和形式语言中的基本概念和基本理论。理解编译程序构造的一些基本算法和基本技术。能够使用有穷自动机的理论和算法,解决常见离散事件问题。

二、教学组织

教师的职责就是讲授知识,陈述的内容要便于学生理解与接受,同时还要提高学生分析问题的能力,当然也不能忽视学生应用相应方法的能力。在《编译原理》课程的教学组织中,应当从以下几个方面组织和安排教学工作:

(1)备课。《编译原理》课程的一个特点是逻辑性很强,所以该课程在准备的时候,可能比其他课程需要花费更多的时间,需要将课程的整体逻辑理顺,在一个完整的课程框架内合理安排各个分支逻辑的内容,孰轻孰重,就一目了然了。所以该课程的前期准备阶段非常重要,需要我对课程的内容有比较深层的理解和认识,设计一个实验系统,以增加实践的效果,提高课堂中的实践性讲解,做到开课之前就对课程有一个清晰的逻辑思路。

(2)讲课内容安排。《编译原理》课程内容覆盖广泛,涉及到很多相关学科的知识,如高级语言、离散数学、数据结构等专业基础课程,就目前教学的基本学时数来说,基本无法满足教材中所有内容的讲授,教师可以根据学生的理解情况对关的内容适当取舍。对一般性的知识可以跳过,比如高级语言的概念;对理论性很强的概念可以不作要求;对已学过的知识可以略过,如符号表、存储管理等。在有限的课时内充分安排教学内容,是《编译原理》课程中组织教学的一个关键环节。对于有穷自动机的工作原理和实现以及与正则式的关系,可以详细讨论,并可以作一定的衍生,特别是有穷自动机的理论和应用,可以留给学生一些思维的空间。总之,课堂内容的安排组织在一定程度上可以激发学生学习探索的积极性和创造性。

(3)习题课讨论课。《编译原理》课程理论性很强,有大量的基本概念和算法,有些概念和算法在理解上有一定的难度,为了便于学生理解相关的知识点,在教学组织中应当安排一定数量的习题课,帮助学生加深对基本理论和常用算法的理解,力争达到灵活应用的目的。比如在讲解文法和语言一章中,有许多形式化的概念:文法、推导、语言及Chomsky文法的分类等,对第一次接触到这样的概念的学生来说,理解这些概念的实质及它们在课程中的作用和地位是比较含糊不清的,往往会使一些学生失去对此课程的学习积极性。

(4)实验实习安排。《编译原理》课程是一门理论性很强的课程,主要表现在形式化语言的理论基础概念贯穿在完整的课程知识中,尤其是语法制导的翻译和以形式化的属性文法为基础的翻译过程,大大地增加了课程的难度,代码优化及优化中的数据流方程又为整个课程添加理论难度,就是这样的一门理论型课程,却有着同其他应用型课程一样重要的实践性,甚至其实践的意义更为重要。课程的特点决定了课程中的实验实习的重要地位。笔者要求学生完成TinyC语言的编译程序,使得学生通过实践更为深入地理解课程中的理论知识与方法。

(5)典型教学方法。《编译原理》课程的教学难度比较大,既要让学生理解编译原理的基本理论和方法,还要学生能够掌握一些解决问题的方法和思路。《编译原理》课程的教学方法很多,笔者在总结自身教学活动中,觉得有以下一些方法和思路可供探讨:图示法。运用状态转换图形象直观,对一些抽象问题的解决有很好的帮助。这也是对问题抽象分析的重要体现。有穷状态自动机在解决一些离散状态问题中是一个十分重要的思维模型,如果能够将问题的分析和抽象通过自动机的模型反映出来,那么问题的解决将变得十分的简单和可靠。枚举、归类法。列出集合中的部分元素,寻找元素之间的内在联系,构造相应的规则,这是形式化方法和抽象思维能力的具体体现。从元素的构成形态出发,归纳出其一般形式,需要有丰富的想象力和创造能力,再加上对形式工具的使用,能够构造出形式多样的表示方法。

在计算机专业如何有效开展《编译原理》课程教学与学习是一项值得研究的问题,作为教师的我需要与时俱进,适时考虑相应教学方法和内容的改革。这里我提出和总结了一些教学方法和手段,在实际教学过程中取得了良好效果。但《编译原理》课程的教学方法和内容改革仍然需要我继续付出大量辛勤劳动,以便取得好的教学效果。

编译原理论文篇(8)

中图分类号:TP314 文献标志码:A 文章编号:1006-8228(2014)03-59-03

0 引言

请经验丰富、学术造诣深厚的名师为大学新生开设学科导论课,可让学生更好地了解本学科和专业的知识体系及发展趋势,掌握本学科和专业的研究方法和思维方式,解决本专业“为何学、学什么、怎么学”的问题[1]。同样,对于一门课,也需要在教学的开始安排导论性的内容,以帮助学生解决这门课“为何学、学什么、怎么学”的问题。这就要求任课教师精心进行教学设计,上好课程教学的第一堂课。

1 如何上好第一堂课

如果说学科是一片森林,那么课程就是一棵棵树木,如果说学科导论课是为了让学生掌握森林的导航地图,那么课程导论就是为了让学生掌握某棵树木的总体概貌。课程导论要说清楚树木在森林中的位置与作用,以及树木本身的主要枝杈,而不是去研究细小的枝丫,甚至树叶。第一堂课如何上,很大程度上决定了课程教学的成败。

1.1 第一堂课的教学内容

第一堂课应以教师讲授为主,需要向学生讲授的内容有以下几个方面。

⑴ 课程在学科体系中的地位

学科的知识体系是由一门一门的课程构建起来的,每门课在学科知识体系中都有其特有的地位和作用。第一堂课首先要介绍课程的历史、现状和发展趋势,介绍该门课的前导课程和后续课程,以及该课程与前导课程和后续课程之间的关系,让学生对该课程在学科体系中的地位和作用有个清楚的认识,使得学生在后续的学习过程中明确大方向。

⑵ 课程主要内容概览

每门课都有自身的核心内容和知识结构,对学生来说,课程学习首先就需要解决“学什么”的问题。第一堂课需要向学生概略性地介绍本门课程的主要内容、知识点,以及知识点之间的关系。最好是能将课程的主要内容以知识点为单位串联起来,形成一个完整的知识图谱,使得学生在后面的学习过程中做到胸中有丘壑,在学习具体章节或者知识点的时候不会迷路。

⑶ 课程的作用

学习某门课程,其作用体现在很多方面。一是可以通过课程学习来构建完整的学科知识体系,并为后续学习打下基础;二是可以通过学习掌握本课程的相关知识,为将来解决实际问题提供帮助;三是课程学习对培养学生专业素养和能力的促进作用,这一点很重要。在第一堂课中应向学生介绍本课程的多方面作用,解决学生“为何学”的问题,这对于激发学生的学习兴趣非常重要。

⑷ 课程的学习方法

每门课都有其自身的性质和特点,计算机专业的课程可分为理论类、实践类、编程类等。课程的性质和特点不同,学习方法也各不相同。第一堂课需要向学生介绍课程的类属,本课程与别的课程的区别与类同之处,课程各部分内容的比例,课程的实验或者上机要求等。然后结合课程特点,介绍本课程的学习方法,比如是采用理论思辨、算法分析,还是编程验证,为学生解决“如何学”的问题。

1.2 第一堂课的教学方法

第一堂课的目的是介绍课程的总体概貌,激发学生的学习兴趣。要达到这个教学目的,需要采用合适的教学方式。首先不能让课堂气氛严肃压抑,而应该营造得轻松愉快一点。最好以讲故事的方式开始,介绍课程的发展史和发展过程中重要科学家的事迹。在介绍课程内容概貌时,应该采用形象、直观、易记的方式,比如图、表、动画、音频、视频等。为介绍课程的作用,增强学生学习动力,可以用具体实例说明课程知识在解决实际问题过程中的应用,以及在专业素养和专业能力培养方面所发挥的作用。可以说上好第一堂课,课程教学就成功了一半。

2 “编译原理”第一堂课

“编译原理”是计算机专业的重要基础课,在教学中存在着教难、学难、实验组织难等问题,是计算机专业教学中一门公认的难上课程[2],因此上好“编译原理”第一堂课显得尤为重要。

编译系统在现代计算机系统中占有重要的地位,它是直接运行在操作系统之上的一类重要系统软件,如图1所示。

[裸机][操作系统][编译系统]

图1 编译系统的地位

编译原理课程的目的在于系统地向学生讲述编译系统的结构、工作流程及编译程序各组成部分的设计原理和实现技术,使学生通过课程学习,既掌握编译理论和方法方面的基本知识,也初步掌握设计、实现、分析和维护编译程序的技能。编译原理课程与其他课程之间的关系如图2所示。

[高级语言程序设计][自动机和形式语言][操作系统][数据结构][离散数学][编译理论][素材] [控制对象][技术][基础]

图2 “编译原理”与其他课程的关系

向学生介绍编译原理课程在学科体系中的地位之后,还需向学生概略性介绍课程的主要内容。编译原理课程内容纲要如图3所示。编译原理课程教学中几乎所有内容都是围绕这一纲要展开的。

[符号表管理][中间代码生成][语义分析][语法分析][词法分析][目标代码生成][代码优化][源程序][目标代码][错误诊断处理]

图3 “编译原理”课程内容纲要

编译原理课程要重点介绍编译的整个过程,这一过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等步骤(见图3)。编译过程是非常复杂的,但是编译过程中每个阶段完成的主要工作又是非常明确的。

让学生掌握编译过程各阶段分别完成哪些编译工作,并在脑海中建立深刻印象,对后续教学是非常关键的。为此,我们采用多媒体开发工具FLASH CS3[3],自行设计开发了一个“编译过程动态演示系统”,系统导航界面如图4所示。

图4 编译过程动态演示系统导航界面

系统将文本、表格、图形、音频、视频等不同的媒体结合在一起,以形象直观的方式动态演示高级程序设计语言编译过程各个阶段对源程序或其中间表示的处理工作,并以一个典型的源程序例子为对象,展示其编译过程中的变换情况。图5是代码优化阶段的实例变换情况动态展示。

图5 代码优化实例展示

通过播放以上演示系统,可以使学生轻松掌握编译中的几个核心概念,更重要的是可以牢固把握整个高级程序的编译过程及其特点,更深刻理解编译原理课程学习的核心内容,使得学生在后续学习中无论在学习哪部分内容都明白当前内容在课程知识体系中所处的位置。

编译原理是计算机相关专业尤其是软件类专业的核心课程,对于学科知识体系的构建是不可或缺的,这对于提高学生的专业素养和软件开发能力是至关重要的。如果一个软件类专业的学生不能深刻理解高级语言程序的编译理论与核心算法,在进行程序开发的时候也就无法写出高质量的程序。虽然编译原理课程主要讲述编译理论(形式语言与自动机)与经典的编译算法,而绝大多数学生毕业后并不会从事编译器开发工作,但是学习该课程仍然是重要的和有益的。首先编译器本身就是一个大型软件,剖析这一大型软件的系统结构,对于培养学生的软件开发能力非常有帮助。另外,编译原理课程中涉及到的算法与技术可应用到其他软件的开发中,如文本分析与处理器、情报检索软件、模式识别软件等。应该在第一堂课向学生讲述课程的重要作用,激发学生对本课程的学习兴趣。

编译原理是一门典型的理论与实践相结合的课程,如何学好这门课程也是在第一堂课需要向学生重点阐述的。学好该课程,首先需要牢固掌握编译的经典算法,虽然这些算法已有几十年的历史,但是在现代编译器设计中仍然被广泛采用,这一点必须向学生说清楚,以免其对学习产生抵触心理。为了让学生能轻松掌握编译中的主要算法,我们采用Flash CS3,设计实现了一个编译算法动态演示系统[4],能够对几个经典的编译算法(NFA到DFA的等价转换算法、LL分析器的组成和分析算法、SLR分析器的组成和分析算法)进行全方位动态演示。

要学好编译原理,只学习理论是不够的,也是难以真正掌握的,根据学习进程去剖析一个实际编译器的源代码是一个很好的学习方法,最好在第一堂课就提供这样一个编译程序实例,并向学生提出具体的要求。

实验部分是编译原理课程教学中的重要环节。目前大多数高校在编译原理课程的实践环节都要求学生能上机实现一个小型模型语言的编译程序。这对于大部分学生来说似乎是一个不可能完成的任务。为了克服学生的畏难心理,我们在第一堂课向学生提供一个类Pascal语言的可拆卸式编译器[5]。该编译器是往届学生在课程实验中设计实现的。这样,一方面提供了一个编译器的范例供学生学习参考,另一方面也告诉学生,编译器设计并没有那么神秘,通过他们自身努力是可以实现的,从而增强学生上机实验的动力,并进一步激发其学习兴趣。

3 结束语

第一堂课是教师和学生的第一次见面,第一堂课教学效果的优劣在很大程度上决定了整个课程教学的成败,因此教师必须高度重视第一堂课。第一堂课的内容一般是导论性的,涉及课程的性质、地位和作用,课程的学科基础、主要内容、知识结构、学习方法和应用领域等多个方面。本文简要介绍了第一堂课的教学内容和教学方法,重点介绍了我们课程组在“编译原理”第一堂课中的教学手段和教学方法,如图表法、动态演示法等。在教育界不断强调提高本科教育质量,强调素质教育的今天,希望本文研究不仅对编译原理教学,也对计算机相关专业课程,甚至对其他工科专业的课堂教学起到参考作用。

参考文献:

[1] 朱振岳.杭州电子科大教授给新生做“向导”[N].中国教育报,

2013.10.11.

[2] 谌志群,王小华,朱文华.编译原理课程的教学改革思路[J]. 杭州电子

科技大学学报(社会科学版),2007.3(4):69-72

[3] 王环,李安宗.新编中文Flash CS3实用教程[M].西北工业大学出版

社,2009.

[4] 谌志群,王荣波.基于Flash的编译算法动态演示系统设计[J].计算机

编译原理论文篇(9)

一、引言

随着全球化的发展,翻译工作的重要性也日益凸显。很多人认为翻译只是一种实践活动,包括很多MTI的学生都是只重视翻译实践,而忽视了翻译理论的重要性。笔者认为,翻译理论是翻译实践活动的基础且具有指导作用,应该予以充分的重视。那么,翻译理论有哪些呢?严复的“信达雅”、克里斯蒂娜・诺德的“功能翻译理论”、尤金・奈达的“功能对等理论”、泰特勒的翻译三原则,等等原则。上述翻译理论研究得较为完备,笔者在本文中侧重介绍变译理论。变译理论作为新兴的一种翻译理论由黄忠廉于上世纪末提出,在当今的翻译界是具有活力的理论之一。《翻译理论与实务丛书》主编罗进德对变译理论的评价颇高,“掌握变译方法是新时代译者必备的才能”。

变译观的演进大致可分为以下五个阶段:对变译的感性认识,变译观念的萌芽,变译概念的雏形,变译观念的发展和变译观的确定(黄忠廉,2002)。

二、变译与变译理论

首先,是对变译的界定,何为“变译”?黄忠廉(2011)明确指出“变译是相对于全译提出的”。所以界定变译的前提条件是了解全译,全译是指译者将原语文化信息转化为译语以求风格极似的翻译活动。“变译与全译相对而立的依据是翻译中对原作保留程度的完整性”(黄忠廉,2011)。从这种说法中可以得知,变译是非完整性翻译,是译者根据特定条件下特定读者的特殊需求,采用多种变通手段摄取原作有关内容的翻译活动。较之于全译,变译的手段多样,这使得变译具有与全译不同的特效。黄忠廉(2002)指出全译与变译的主要区别分为五个方面:首先,信息内容。同全译相比,变译文在内容信息上: 可少于全译,如摘译等;可约等于或少于全译,如编译,原作材料不变,但组织不当或不适合读者口味,或没有标题,译者加上标题,显出层次,便于读者阅读,信息内容未变,但功能和效果优化了;还可大于全译,如译写、译评、阐译等,在内容上较原作有扩充,有拓展,有增加。其次,宏观形式。一般而言,宏观形式上的变最明显的表现为体裁、结构的变化,在量或规模上,原作形式或缩水,或膨胀,甚至是面目全非,原作宏观或微观形式不见了踪影。再次,译者投入。译者的投入可分为时间、智力和知识的投入。全译以较多的人力物力财力投入可能讨不到好结果,变译则以较小或相当的投入追求较大较准的产出,同样面对原作,全译者处处投入,事事要为,变译者可以说“不”,有所译,有所不译。然后,信息质。经变译者定向取舍、用心改造后翻译出来的文字在信息的质上一般要胜过全译。最后,译作之比。“译”在此指全译,“作”指译者(有时兼作者)的创作,是一种独创性劳动。在全译中译者的创造性是有限的;在变译里,一旦需要和可能,译者可以尽情发挥,“作”的比例加大。

其次,何为“变译理论”?对变译理论的阐释可以分为两部分。“简单地说,变译理论是研究变译的理论。具体地说,变译理论是从变译实践中概括出来的反映变译的本质和规律的科学原理和思想体系,它以变译为研究对象,研究变译过程的一般特点和规律,寻求适于一切变译方法的一般原理和方法”(黄忠廉,2011)。笔者更A向于第二种阐释。

三、变译的七种变通手段与变译十二法

该部分主要对黄忠廉于2002年和2014年的研究成果进行综述。

(一)变译的七种变通手段

1.增

增指在原作基础上信息的增加。增加的方式可分为释、评、写三种。

释。即阐释,是在译文中对原作中某部分内容的解释,包括释典(解释典故)、释古(把古代的解释为现代的)、释义(解释词义或文义)、释疑(解释疑难点)等。

评。即评论,是对所译的内容进行批语或发表议论,包括评估(评价和估计所译的内容)、评价(评定所译内容的价值的高低)、评介(评价所译内容并介绍相关情况)、评判(判定所译内容的是与非、优与劣等)、评析(评价所译内容并加以分析)等。

写。写指在译作中添写与所译部分相关的内容。按空间位置可分:译前写,译后写和译中写。

2.减

减是总体上去掉原作中在译者看来读者所不需要的信息内容,有时是去掉原作中的残枝败叶,有时是挤掉多余的水分,在变译中表现为对原作的取舍。减的目的在于以小见大,让有用信息的价值充分展示出来。

3.编

编即编辑,指将原作内容条理化、有序化,使之更完美更精致的行为。它包括:编选(从原作中选取一部分加以整理)、编排(按一定的顺序将原作内容重新排列先后)、编写(将原作提供的材料加以整理,写成译语文字)等。

4.述

述,取“述而不作”中“述”的含义,包括叙述(即用译语将原文内容写下或说出),也可以是转述或复述,不斤斤于字比句次,只求把原作的主要内容或部分内容用自己的话传达出来,原作形式基本遭到破坏。述基于原作内容,改变原作的表达形式,一律用叙述语言传达内容,所以有摘有编,更有概括。舍细节,求粗略是其特征。

5.缩

“缩”则是压缩,是对原作内容的浓缩,是比“述”更凝炼地用译语将原作压缩的行为。它使信息量由大变小,远小于原作,篇幅由长变短。

6.并

并指合并,是将原作中同类或有先后逻辑关系的两个及其以上的部分结合到一起的变通手段。相关联的部分可能是句、句群、段、篇、章,甚至是书。

7.改

改即改变,使原作发生明显的变化,改换了内容或形式,包括改换(改掉原作中的内容或形式,换成适合译语读者的内容或形式)、改编(据原作内容采用另一种体裁重写)和改造(修改整个原作,以便整个译作适合新的要求)等。(黄忠廉,2002)

(二)变译十二法

摘译是根据译者需求,选取原文主要内容或译文读者感兴趣的部分内容的变译方法; 编译是依据译者特定需求,对原作加工整理然后翻译成文的变译方法; 译述即译者用自己的语言转述或复述原作主要内容或部分内容的变译方法; 缩译即压缩性翻译,以较小的篇幅再现原作主干内容的变译方法; 综述即综合叙述,对某一时期某专题众多外文文献加以汇总、分析,并阐述其研究进展情况的综合陈述; 述评即对众多外文文献进行综述进而加以分析、总结和评论的变译方法;译评即将原作译后再结合其内容展开评论的变译方法;译写即翻译原作全部或部分主要内容加以评论、阐释和扩展的变译方法; 改译即根据特定要求改变原作形式或部分内容,甚至原作风格的变译方法; 阐译即在译者对译文进行全译或变译后再加以阐释的变译方法; 参译即译者摄取外国文献中部分内容并译入创作,引译为据的变译方法; 仿作即仿照原作或译语作品的内容、形式、风格进行译语创作的变译方法。(黄忠廉,李明达,2014)

笔者认为,变译七法是变译十二法的基础,后者是前者的补充和发展。黄忠廉于2002年提出的变译七法为变译理论构建了良好框架,不仅为学者研究学习提供了清晰的思路,同时也为学者的日后拓展和补充奠定了基础。与译七法相比,黄忠廉和李明达于2014年提出的变译十二法更为全面与完备,变译十二法囊括了更多的变译手段,拓展了变译理论的应用范围。

四、变译理论研究方向

(一)十七个研究方向

黄忠廉(2002)在《变译理论:一种全新的翻译理论》曾用大量篇幅对变译理论可以从哪些方面进行研究给出了多种方向。

第一,变译的实质,研究变译的本质特征。第二,变译的系统,涉及变译的诸多要素。第三,变通的手段,研究手段及其分类理据。第四,变译的方法,主讲方法论。第五,变译的体系,研究十一种变译方法间的关系。第六,变译的单位,研究与全译不同的语篇单位。第七,变译的章法,研究变译中的篇章结构调整、版权问题和署名间题、原作的著录方式,是译是著的标注向题等。第八,变译的过程,揭示变译的宏、徽观过程。第九,变译的机制,研究变译各要素相互作用的机理;运作过程中有何内在的机制,从读者到变译作品与传统全译不同的机制。第十,变译的特效,研究变译多、快、好、省、有的放矢的效果;多――信息比重大;快――传播速度快;好――信息质量高;省――省时省篇幅;有的放矢―针对性强。第十一,变译的规律,探讨变译的内在规律:译者妥协律、肯定否定规律、整体优化律、循序渐进律、信息失恒律、质量递变律。第十二,变译的标准,变译的标准应根据其实质来定,根据变译的特性来定。总的标准是它是否满足了特定条件下特定读者的特殊需求,具体标准包括:特定读者的定位明确;变通手段的选定准确;变译方法的运用正确;原作的使用价值突出;译者的作用发挥恰当;变译效果的追求到位。第十三,变译的范围,确立不同变译方法所适应的不同文体范围,依次排列为:文艺

第十五,变译读者论,研究变译因读者而变:变译读者的摄取心态;变译读者的有效需求;变译读者的需求调查。第十六,变译译者论,研究变译由译者来变:对待原作的态度;对能力的高要求;译者的服务意识;译者的效率追求。第十七,变译客体论,研究对原作的施变:原作的可变动性;原作的使用价值;变译的供需矛盾。

笔者将这些研究方向分为两大部分,第一部分包括前十四个方向,这部分主要是以变译这个客观的理论为研究对象;第二部分包括最后三个方向,该部分主要是以译者和读者两个主观角度对变译理论进行研究。

(二)对比性研究方向

采用不同的分类标准和分类角度,对分类的结果会产生巨大的影响,即使是同一实质的事物,也会产生形式和内容上的不同。黄忠廉(2011)在《变译理论研究类型考》中采取了与以往不同的方式和标准,对变译理论的研究方向进行了第二次划分。

第一,现象研究与本质研究。变译研究面临着两个问题: 一是创建理论与方法; 二是弄清中外变译事实。第二,过程研究与结果研究。变译过程研究侧重于变译过程中所发生的一切问题,结果研究则侧重于变译产品,前者属于本体研究;后者属于翻译文学或翻译文化研究。第三,历史研究与现实研究。历史研究主要研究变译发展的演变及其规律,是对变译的纵向研究;现实研究主要研究当前鲜活的变译现象,对变译展开横向研究。第四,应用研究与纯理研究。产生于事实的理论,首先可形成应用理论,它与实践直接联系,具有可操作性。应用研究包括变译现象阐释考察、变译方法论问题、变译实践论研究、变译教学与变译人才培养问题等。应用理论进一步提升抽象,成为普通理论;纯理研究包括: 对变译现象产生的背景研究,对变译理论内涵的研究,变译理论产生的理据的研究,对变译理论的学科思考等,其他学科理论学说对变译理论的关照。第五,上向研究与下向研究。上向研究就是归纳研究。归纳有两种含义: 一是事实归类; 二是理论推理,从事实中概括出一般原理。既然是归纳研究,就要对变译事实的采集尽量周全;下向研究,即演绎研究。上向研究便于弄清事实,总结规律; 下向研究便于完善规律,建立方法、理论和学科的体系。第六,专题研究与学科研究。专题体系可分为小专题和大专题,单一性专题体系和集合性专题体系;学科体系是专题体系的扩大,是专题体系发展的必然结果。从单一性专题研究到集合性专题研究,再到学科研究,是一门学科成熟发展的逻辑过程。第七,笼统研究与具体研究。笼统研究包括两种,一是对研究对象认识不清,二是有意识地不分清;具体研究一般是小题大作,将一个问题说透论深。第八,潜性研究与显性研究。第九,综合研究与分类研究。综合研究以人类的所有变译为研究对象,重在探讨变译的共性和变译的本质,从而形成变译的普遍理论;分类研究以某一类变译现象为研究对象,形成某领域独有的某类独特变译的规律与理论。第十,译介研究与原创研究。译介研究是对变译研究成果的翻译与介绍;原创性研究要求研究者具有平视西方译论与尊重汉外互译事实的心态,有独立的研究立场。

笔者认为该种研究方向的分类更为全面系统,较之于前面的分类,此种更具理性,更易于操作。前面的分类为初期的分类,虽然概括很详尽,但是条理性则逊色于后面的分类。

五、变译理论的发展与实践

变译理论仍然是一个新兴的翻译理论,一直处于发展和实践的过程中。

黄忠廉(2002)在《释“变译”》中由变译的各种属性,对其逐一诠释,具体而言有五个角度:由译者来变,因读者而变,七种变通法,摄取的战略,对原作施变。同年,还对变译的性质及其宏观特征进行了整理。2009年就变译平行语料库的相关问题以严复《天演论》为例做了实践分析。刘丽芬和黄忠廉(2001)就编译的基本原则进行了探索与梳理。

除了黄忠廉自己的探索和发展,变译理论也被很多学者广泛地应用。这些对变译理论的探索研究大致分为两类:第一类为理论的探索研究,代表有周青(2005)、徐朝友(2006)、厉平(2014)、焦鹏帅(2014)、李秀云(2015),等;第二类是实践的探索研究,代表有王皓(2006)、高云(2015)、顾伟(2010)、葛婷婷(2015)、毛莹(2015)、翟韬(2015)、包玉慧、王曦和陈锋(2015)、罗建生、李敏杰(2015),等。

六、结语

变译理论和变译研究的意义在于“多快好省、有的放矢地吸收国外信息。多――单位信息量大;快――传播速度高;好――信息最有效;省――省文本篇幅、省译者和读者的时间;有的放矢是指以最充分最直接地满足(特定)读者对象为目的”(黄忠廉,1999)。变译理论是新兴的翻译理论具有很强的生命力和良好的发展前景。

参考文献:

[1]包玉慧,王曦,陈锋.从中医术语角度看《红楼梦》的文化隔膜与霍氏的文化变译[J].中国科技术语,2015,05:39- 42.

[2]高云.变译理论视角下美剧的字幕翻译之初探――以《摩登家庭》为例[J].英语广场,2015,05:117-118.

[3]葛婷婷.变译理论指导下的专业生僻词汇的翻译――以《第十二届全国人大一次会议新闻会》为例[J].中小企业管理与科技(上旬刊),2015,12:168.

[4]顾伟.变译理论指导下的旅游网站汉英翻译[J].语文学刊(外语教育与教学),2010,10:73-75+101.

[5]黄忠廉.变译(翻译变体)论[J].外语学刊,1999,03:80-83.

[6]黄忠廉.变译理论:一种全新的翻译理论[J].国外外语教学,2002,01:19-22.

[7]黄忠廉.变译的七种变通手段[J].外语学刊,2002,01:93- 96.

[8]黄忠廉.变译全译:一对新的翻译范畴[J].上海科技翻译,2002,03:5-7.

[9]黄忠廉.释“变译”[J].外语研究,2002,03:66-68+60.

[10]黄忠廉.变译的性质及其宏观特征[J].四川外语学院学报,2002,05:108-110.

[11]黄忠廉.变译观的演进[J].外语与外语教学,2002,08: 46-48.

[12]S忠廉.变译平行语料库概说――以严复《天演论》为例[J].外语学刊,2009,01:116-119.

编译原理论文篇(10)

1 软件学院编译原理课程实践环节的重要性

随着本科生招生人数的大幅增加,高校毕业生就业竞争加剧,用人单位对人才要求不断提高,计算机及相关专业的不少毕业生在就业过程中暴露出动手能力差、分析问题解决问题能力薄弱、创新意识不强等问题。这些问题的出现在很大程度上反映出高校在学科的专业实践(特别是课程实践)教学方面的不足。作为大学课程中第一个较为系统化的软件设计类课程实践,编译原理实践对培养学生动手能力无疑起着非常重要的作用。

编译原理(在有些学校称为编译技术)是本科计算机专业的一门重要专业基础课程,也是计算机系统软件中非常重要的一个分支,其理论性和实践性都很强。大部分高校在这门课程的开设中,都会将其划分为理论讲授和课程实践两部分进行实施,甚至将理论讲授和课程实践分列为两门课程。

2002年,教育部在成立示范性软件学院的批示中,将“软件学院要培养市场急需的‘实用型’人才”放在了比较重要的位置,这也构成了软件学院区别于传统计算机学院的重要标志。因此对于软件学院的学生而言,编译原理的教学情况则有所不同。首先,软件学院的历史都不长,受课时和师资等多方面因素的影响,一些学校甚至是示范性软件学院,也会将该课程压缩甚至完全砍掉;其次,即使是保留该课程教学的学校,也会不同程度地压缩实践环节的时间,多多少少地影响到学生对编译技术的理解与掌握。笔者认为,尽管编译原理课程确实存在理论抽象、概念众多、算法多等特点,但这门课程对于培养学生掌握构造高级程序设计语言、编译程序的基本原理、结构、设计与实现技术,培养学生了解和掌握编译原理的基本原理及典型技术并具备相当的应用能力,帮助学生为今后从事软件开发打下坚实的理论基础,提升学生程序设计能力和创新能力等诸多方面,都有着其他课程不可替代的作用。因此编译原理课程教学不但不应该削弱,反而应该受到重视和加强。

在此前提下,如何让软件学院的学生在掌握编译技术基本原理的同时,大力加强他们对编译技术的理解与使用,从而提高其产品――计算机软件(尤其是大型软件)的结构有效性和效率,则是摆在软件学院编译原理课程教学的―个重要问题。

2 对学生能力的分析

在各高校的软件学院中,普遍存在着生源参差不齐的现象。由于学生入学时对计算机软件了解不多,所以即使是在示范性软件学院,也有相当一部分学生入学时对软件专业的认识不够,大学阶段的头两年如果没有打下良好的基础,则直接导致对专业课的畏惧乃至厌学情绪。所以在对学生传授知识和培养能力时,更需要摸清学生基础,培养他们学习兴趣,通过加强实验和实践环节,培育其分析问题和解决问题的能力。

通过观察和调研可知,软件学院的学生大致上可以分为以下几类:一是对计算机知识很感兴趣,且学习能力较强的学生;二是对计算机知识的兴趣一般,且学习能力平常的学生;三是对计算机知识不感兴趣,且学习较差的学生。

像北航这样985高校的软件学院中,学生的学习能力普遍比较高,学校给学生提供的实验环境和配备的师资力量也普遍较强,因此比较容易形成良性循环,为课程教学和实验教学提供重要的基础保障。但根据历年编译原理期末考试的情况分析看,实际教学效果也并非完全符合正态分布。高分段(>85分)学生的人数相对较多,约占40-50%左右,且这部分学生的能力较强,即使适当加大试题难度对其考试分数的影响也比较小;而不及格学生的人数大约占10%左右,且即使降低试题难度对其影响也较小;试题难度影响较大的是中间段的学生。

对学生的接受能力有一个正确的了解,才能有针对性地因材施教,使编译原理的实践环节达到应有的效果。

3 因材施教

笔者在编译原理与实践课程教学过程中,尝试过不同的实践方式。通过不断地摸索,发现采用如下的因材施教方式效果最佳。

(1)对于学习能力较强的学生,可以让他们自己动手编写小型编译器。一个完整的编译器包含词法分析、语法分析、语义分析、中间代码生成和代码优化等前端部分,也可以包含生成和具体计算机体系结构相适应的可执行代码后端。一般编译原理实践环节大多安排学时为32学时左右,因此要让一个(或一组)学生在这么短的时间内完成前端和后端两部分是不现实的,可以让学生单独完成前端。

(2)对于学习能力一般的学生,在实施编译程序实践教学中,除了可以采用第一种方法外,还可以让他们利用LEX、YACC、JavaCC等工具来编写编译器。由于YACC等语法分析程序是基于自底向上的分析方法,所以在编译原理课程教学环节,对LL等分析法就应当赋予较多的时间和精力,力争让学生在使用这些工具生成编译器程序时,清晰地了解它们的工作原理。

(3)对于学习能力相对较弱的学生,可以采用分析现有编译器程序的方法。也就是说,并不要求他们自己去设计开发一个具体的编译器,而是通过读懂现有的编译程序,了解其工作原理。哪怕让他们比葫芦画瓢地逐行输入并调试现有的程序,找出现有程序中的印刷错误和不合理之处,都对其动手能力的提升起到一定的作用。具体编译程序可选择PL/0文法程序代码,或者是Pascal-S文法程序代码。当然,其他类似的编译器程序都可选用。

还可以提供给学生不完整的程序源代码,让其采用填空的方式完成其中部分关键模块。此类题目由于提供了大部分源程序,只是让学生参考教材或课堂上的例子集中精力解决一些关键问题,这样就能保证大多数学生都能完成实践任务,真正达到让学生通过课程实践加深对编译过程理解的目的;同时学生在编译器的实现过程中也能够产生成就感,从而消除了对课程的恐惧感,增加学习的信心。

在对编译源程序的选择上,可以选取循序渐进的指导思想,例如张晶等人提出的Lo文法就只包含了空语句、赋值语句、条件语句和循环语句等基本语法成分。可以让学生在此文法基础上使用相对简单的递归下降分析法先进行实现,完成后再逐步对其进行扩充。这种方法就像软件工程中的原型开发方法,有利于学生快速看到自己的成果,从而树立信心,取得预计的效果。如果扩充的文法只是同一种类型的简单扩张,则学生会陷入重复的劳动,从而让他失去兴趣,所以文法的扩充一定是方法的扩充。

对于部分学生,还可以让其利用所学知识编写类编译器的工具,比如智能编辑器、公式编辑器等。只要是能够将编译技术的知识用到具体程序中去,所有的尝试都应当予以鼓励,但这种尝试一定要在老师的指导和监督下进行,以免出现学生出发点虽好,但遇到具体技术问题无法克服进而导致挫折性失败的情况。

4 编译原理实践教学的时机

通过对不同学校的调查发现,不同的学校对编译原理实践教学环节的安排主要有以下两种情况。一种是将教学环节和实践环节完全分开,而且分别放置到两个学期中实施。这种方法虽然存在着界限分明、便于组织教学的好处,但实践证明由于理论和实践严重割裂,学生往往在第二个学期实践环节中对上一学期所学的知识遗忘得非常厉害,导致教学效果很差,因此不建议采用;另外一种稍好的方法,是将教学和实践环节虽然分开,也就是先进行课程教学,结束后再进行实践。这种方法虽然把两个环节放在一个学期实施,解决了理论和实践脱节的矛盾,但上述矛盾依然存在,只是理论和实践脱节的程度稍轻一些而已。

经过多年的实践,作者认为采用两遍教学法可以较好地解决这个问题。也就是说,把教学和实践放在同一个学期实施,不要将它们完全分开。首先可以讲授编译原理的最基础知识,例如词法分析、语法分析中的自顶向下分析法、语法制导的语义分析等,与此同时安排学生进行编译器相应部分的编写工作,即把整个实践环节变成教学环节的一个大作业。待学生完成后,再进一步讲解词法分析中自动机理论、语法分析中的LL及LR分析法、代码优化以及目标代码生成等内容,最后再完成利用编译工具进行编译器自动生成的实践。在这种教学方法中,课堂教学和实践环节交叉进行,学生学到哪里就实践到哪里,从而保证教学与实践的紧密结合。

5 结语

笔者在北航软件学院七年的教学实践中,通过对学生学习能力的调查分析,摸索出了在教学过程中首先区分教学对象,然后因材施教的基本思路,并给出了具体的解决方案。

编译原理论文篇(11)

――更好地用马克思主义指导实践的需要

高度重视马克思主义理论的研究和建设,是中国共产党的优良传统。中国共产党从诞生之日起就把马克思主义写在自己的旗帜上,并开始有组织、有计划地编译出版马克思主义经典著作。

1921年9月,人民出版社在上海成立,翻译出版了《共产党宣言》等一批马克思主义经典著作单行本,对我国革命力量的成长起了巨大的推动作用。

1938年,马克思主义经典著作编译和研究的专门机构在延安成立。在抗日战争和解放战争时期条件十分困难的情况下,相继推出《马克思恩格斯丛书》10种、《列宁选集》18卷等经典著作,出版了许多单行本和专题文集。

新中国成立以后特别是改革开放以来,马克思主义经典著作编译工作得到长足发展,陆续推出了《列宁全集》、《马克思恩格斯全集》以及《马克思恩格斯选集》、《列宁选集》等一大批经典著作,有力促进了全党的马克思主义理论学习。

党的十六大以来,以同志为总书记的党中央,从推进中国特色社会主义伟大事业全局的高度,作出了实施马克思主义理论研究和建设工程的重大战略决策。2004年1月,中央下发了关于实施马克思主义理论研究和建设工程的意见,明确提出要重新修订和编译马克思主义经典作家的重要著作。

中央高度重视这项工作。中央领导同志亲自审核编辑方案,就编辑方针、审订原则和出版质量提出明确要求,明确提出要坚持科学的态度和方法,“确保译本的准确性和权威性”使两部文集成为精品。同时,在编译出版的整个过程中,给予了及时有力的指导,帮助解决了一系列实际问题,从根本上保证了两部文集编译出版工作的顺利推进。马克思主义理论研究和建设工程抽调最强的编译力量,组成了马克思主义经典作家重点著作译文审核和修订课题组。这是一个立足当前、着眼长远的重要部署,是一个强基固本、凝魂聚气的重大举措。

马克思主义经典著作是人类文明的瑰宝,是马克思主义政党的精神支柱和强大思想武器。无论时代如何发展,无论国际风云如何变幻,坚持以马克思主义为指导始终是我们不可动摇的原则。中国作为世界上最大的社会主义国家,中国共产党作为世界上最大的马克思主义政党,在研究、传播马克思主义方面可以说义不容辞、责无旁贷。

马克思主义经典著作编译课题组负责人谈到,对马克思主义经典著作的编译工作是一个永无止境的过程,不可能一劳永逸,也要与时俱进。由于种种原因,我国过去出版的马克思主义经典著作,或多或少存在编译不够准确、阐释注解不到位甚至不正确的地方,有必要重新进行校译和审核,为学习研究马克思主义经典著作提供更好的版本。

一些专家学者认为,我国已经出版的选集、全集或失之过简,或篇幅过大,不能满足干部群众特别是领导干部学习研究的需求,迫切需要有一个能体现马克思列宁主义的理论精髓、篇幅适中的基础性读本。《马克思恩格斯文集》和《列宁专题文集》的问世,为深入学习研究马克思主义基本原理,全面理解和掌握马克思主义中国化最新成果,提供了权威的基础文本。

还要看到,在实际工作中,一些人不同程度地存在着用教条主义和实用主义的态度对待马克思主义的问题。比如,对马克思主义的一些重要思想观点没有足够重视、深入阐发;对一些本来不属于马克思主义的观点,附会、强加在马克思主义名下;对马克思主义经典作家在特定历史条件下的具体论述作了机械的、僵化的理解。

重新编译马克思主义经典著作,一个重要任务,就是要帮助人们分清哪些是必须长期坚持的马克思主义基本原理,哪些是需要结合新的实际加以丰富发展的理论判断,哪些是必须破除的对马克思主义的教条式理解,哪些是必须澄清的附加在马克思主义名下的错误观点,就是为了人们能够更好地掌握和运用马克思主义。

2004年4月,《马克思恩格斯文集》的编辑和译文审核修订工作启动;8月,《列宁专题文集》的编辑工作拉开序幕。在党中央的坚强领导和亲切关怀下,在马克思主义理论研究和建设工程的精心组织下,经过5年多的不懈努力,这项重要工作圆满完成。

两部文集的出版是党的思想理论建设的一件大事,是马克思主义理论研究和建设工程的一个重大成果,对于推进中国特色社会主义伟大事业,推进党的建设新的伟大工程,具有重要的现实意义和深远的历史意义。

砥砺奋进,精益求精

――更加准确反映马克思主义经典作家的原意

作为马克思主义理论研究和建设工程的重点项目,两部文集从立项之日起,工程主管部门就十分重视,精心组织、周密安排,从具体内容到装帧设计都给予了具体指导和帮助。

马克思主义理论研究和建设工程办公室先后组织召开7次集中审议会和两次书面审议,对两部文集的总体框架、收文原则、各卷编目以及译文修订和题注等内容进行认真审议,提出了许多宝贵意见,极大地提升了两部文集的编译质量。

工程咨询委员以极端负责的精神,高标准、严要求,出色地完成了政治和学术把关任务。有的咨询委员抱病审读提纲和书稿。有的咨询委员不顾年迈体弱,坚持参加每一次审议。有的咨询委员不辞辛劳,查阅大量资料,认真修改、精心批注。他们精益求精、一丝不苟的精神感染、激励着每一位课题组成员。

编译马克思主义经典著作是一项严肃的事业。5年来,课题组和编审委员会时刻铭记党中央的嘱托,全力以赴、齐心协力,相互砥砺、埋头苦干,度过了2000多个难忘的日日夜夜。

课题组成员年龄最大的80岁,最年轻的不到30岁。多位退下来的老专家不计名利,不讲报酬,心甘情愿地投入到这项事业中。在大量艰巨复杂的工作中,老专家发挥了中坚作用。一批优秀的中青年骨干勇挑重担,迎难而上,完成了一个个攻坚任务。

一位参加过许多马克思主义经典著作编译工作的老同志动情地说:“我们这些年逾古稀的老人在晚年还能参加马克思主义理论研究和建设工程这一重点项目的工作,继续为马克思主义经典著作的编译事业尽自己的绵薄之力,感到十分荣幸和无比欣慰。”

编译过程中,最重要的任务是审核修订马克思恩格斯著作的译文。在《马克思恩格斯文集》中,除《资本论》及其手稿因不久前刚刚修订过译文,这次只是作个别修订外,其余各卷译文都对照原文逐字逐句作了审核和修订,主要修改了没有确切反映原著理论内涵和逻辑思路的译文,还修改了译文表达不顺畅、逻辑关系不清楚、容易引起歧义的段落句子。

译文修订不是简单的文字改动,必须确切把握马克思恩格斯的原意。对一些不易理解的语句,课题组都要反复推敲,参考不同文字的多个版本的译文,通过集体讨论,在弄清原意后再作修订。有些重大修改经过编审委员会的认真研究才确定修改方案。在修订过程中,还收集了学术界对马克思恩格斯著作译文的意见,对这些意见作了认真研究,汲取其中合理的建议。正是这种严谨的科学态度,保证了译文修订的准确性。

不忽略一处细节,不放过一个错误,这是课题组全体成员对待这项工作的共同态度。

为了精益求精,编译中要进行大量重复性、机械性的工作,十分枯燥,比如各处引文的统一、各专门术语和名词的统一,都要在每篇著作中逐一对照。据介绍,仅名目索引的核校这一项工作,就花去了一名工作人员一年半的时间。

为了精益求精,常常要咬文嚼字。在编译过程中,有些学者提出批评和建议,十分中肯,对提高译文的准确性有很多帮助,课题组接受了一些意见,修订了原来的译文。对一些有争议的译文,课题组本着科学的精神,反复研究,不管是否修改,都提出了充分理由。

为了确保译著文字、标点准确无误,中央编译局和人民出版社的工作人员进行了20多遍校核,努力保证不错一字一点。

特色鲜明,重点突出

――集中体现马克思主义的思想精髓

《马克思恩格斯文集》正文约480万字,各种资料约160万字,总字数约640万字。《列宁专题文集》正文约120万字,各种资料约30万字,总字数约150万字。打开两部文集,读者会发现它们鲜明的时代特色、实践品格和创新意识。

《马克思恩格斯文集》选文精当,内容完整,既全面反映了马克思主义理论的科学体系,又充分体现了马克思主义与时俱进的理论品格。文集精选了马克思和恩格斯在各个时期有代表性的著作,内容涵盖了马克思主义的主要组成部分――哲学、政治经济学和科学社会主义,还涵盖了马克思主义创始人在政治、法学、史学、教育、新闻、科技、文艺、军事、民族、宗教等方面的重要论述,还从马克思、恩格斯的数以千计的书信中选收了280封书信编成专卷。

《马克思恩格斯文集》体例新颖,结构严谨,既反映经典作家理论创造的历程,又突出重点著作的地位。与以前出版的全集和选集均按照编年原则编排不同,文集首次采用按年代编排与重要专著单独设卷相结合的编辑方法,既体现了马克思主义基本理论形成发展的历史进程,同时又突出了《资本论》、《反杜林论》等著作在马克思主义科学体系中的重要地位。

《列宁专题文集》的编辑,则采取了另一种思路。文集从60卷《列宁全集》中精选115篇最具代表性的著作,同时从本卷未收的著作中摘选与本专题有关的重要论述,编成《重要论述摘编》,作为对所收文献的补充。这种新的编辑体例,把系统反映列宁主义科学内涵同密切结合新时期理论武装工作需要这两个要求有机统一起来,既注重反映列宁毕生坚持和发展马克思主义的理论贡献,又着眼于适应干部群众学习中国特色社会主义理论体系的实际需要。

两部文集用新的思路改写了各篇著作的题注,力求用简练的文字概述每篇著作的主要观点,帮助读者掌握原著的理论要义和思想精髓,增强了题注的导读性,不仅可以让读者理解原著,而且有助于澄清对马克思主义理论观点的一些误解。

推荐精选