问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

软件编程在学习了编译原理这门课后有什么好处?

发布网友 发布时间:2022-04-22 00:31

我来回答

2个回答

热心网友 时间:2023-11-01 12:16

对大多数人来说,学过编译原理,应该可以知道对于很多代码的优化,编译器其实可以做好,不需要自己写代码的时候杞人忧天。在通用、局部的优化上,甚至编译器往往做得比程序员好。

大概率会意识到编译原理背后的故事,也许会沉迷在某个方向,也许还会乐于看一些奇妙的parser构建方式。

大概还可能会去学习类型系统,发现形式化的故事似乎在很多方面都有对应的版本,而后,他们也许会尝试走向研究,去挑战目前都没有好好解决的代码优化问题,也许会走向应用,用起LLVM,在上面加个target,支持一些新硬件,做个新语言的前端等。

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

编译原理课程是计算机相关专业学生的必修课程和高等学校培养计算机专业人才的基础及核心课程,同时也是计算机专业课程中最难及最挑战学习能力的课程之一。编译原理课程内容主要是原理性质,高度抽象。

编译可以分为五个基本步骤:词法分析、语法分析、语义分析及中间代码的生成、优化、目标代码的生成。这是每个编译器都必须的基本步骤和流程, 从源头输入高级语言源程序输出目标语言代码。

1、词法分析

词法分析器是通过词法分析程序对构成源程序的字符串从左到右的扫描, 逐个字符地读, 识别出每个单词符号, 识别出的符号一般以二元式形式输出, 即包含符号种类的编码和该符号的值。

词法分析器一般以函数的形式存在, 供语法分析器调用。当然也可以一个独立的词法分析器程序存在。完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。

2、语法分析

语法分析是编译过程的第二个阶段。这阶段的任务是在词法分析的基础上将识别出的单词符号序列组合成各类语法短语, 如“语句”, “表达式”等.语法分析程序的主要步骤是判断源程序语句是否符合定义的语法规则, 在语法结构上是否正确。

而一个语法规则又称为文法, 乔姆斯基将文法根据施加不同的*分为0型、1型、2型、3型文法, 0型文法又称短语文法, 1型称为上下文有关文法, 2型称为上下文无关文法, 3型文法称为正规文法, *条件依次递增。

3、语义分析

词法分析注重的是每个单词是否合法, 以及这个单词属于语言中的哪些部分。语法分析的上下文无关文法注重的是输入语句是否可以依据文法匹配产生式。

那么, 语义分析就是要了解各个语法单位之间的关系是否合法。实际应用中就是对结构上正确的源程序进行上下文有关性质的审查, 进行类型审查等。 

4、中间代码生成与优化

在进行了语法分析和语义分析阶段的工作之后, 有的编译程序将源程序变成一种内部表示形式, 这种内部表示形式叫做中间语言或中间表示或中间代码。

所谓“中间代码”是一种结构简单、含义明确的记号系统, 这种记号系统复杂性介于源程序语言和机器语言之间, 容易将它翻译成目标代码。另外, 还可以在中间代码一级进行与机器无关的优化。

5、目标代码的生成 

根据优化后的中间代码, 可生成有效的目标代码。而通常编译器将其翻译为汇编代码, 此时还需要将汇编代码经汇编器汇编为目标机器的机器语言。

6、出错处理

编译的各个阶段都有可能发现源码中的错误, 尤其是语法分析阶段可能会发现大量的错误, 因此编译器需要做出错处理, 报告错误类型及错误位置等信息。

热心网友 时间:2023-11-01 12:17

学完这门课程,对于一个有Geek精神的开发者,他会开始运用自己的所学开发享受“上帝”的感觉,去尝试创造一门语言,我想这种感觉不是每门课程都能带给你的。

我相信,当你真正完成这个过程后,你对你所写的程序、程序语言都会有更深的本质认识,这样的认识也会让你站的高度完全不同,如果你真的学的好,我想别人看到的是语法,你看到的是背后的实现。

在实际的生产开发中大家发现API真的太难用了,没有标准的接口定义,这对业务开发同学很不友好,学习成本也高,程序版本升级维护也十分痛苦,所以慢慢的这个领域的专家们提出了NewSQL概念。

在一家对数据管理规范的公司里,都离不开要对各种技术人员对各种数据集的权限管理,如果你刚好是从事运维开发工作,那你可能需要开发一套系统来区分各种技术人员对各种库各种表甚至某些敏感数据的读写权限,这个时候数据库提供的权限控制可能就不够用了。

那你不得不去开发一套系统例如阿里的idb系统,需要解析SQL,分析它的行为,你需要写一个语法解析器,或者说你一个业务之前是运行在MySQL上的,现在因为需求问题,要搬到PG上,业务SQL要做一定修改,你是人肉去修改么?多大的工作量?

这时候你也需要写一个解析器去做两个库之间的SQL转换,当然你可以选择一款开源的语法解析器,这样省事省力,但是你至少要知道如何写BNF范式,了解各种文法,它们实用的场景,才能选择一款适合你的开源语法解析器。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
梦见关在拘留所里的人又出了交通事故,是什么意思? ...我朋友前阵子撞死了人,没有违规,当时立即报案了,现在在拘留所... 醉驾出事故,车已经给修了,现在已经进拘留所十多天了,什么时候能判... 朋友因为工地伤亡事故被拘留,现在已经25天了,赔偿金也付了10多天了... 江淮帅铃国4??加油发动机抖动冒黑烟是怎么回事? ...只换机油和格,现在5万公里了,请需要换些什么东西 诗经·国风·中谷有蓷原文、译文以及鉴赏 求解签 情缘 下签 条其啸矣。遇人之不淑矣。 解曰:孽缘遮眼 强栖双... 条其啸矣 如何将域解除? 游戏与儿童发展之间的关系是什么? 计算机语言是如何实现的 游戏与儿童身体发展有什么关系? 计算机科学与技术是学什么的 游戏对于儿童发展具有哪些意义? 浅谈大班自主游戏与幼儿发展的关系 编译原理中文法变换的特殊方法有哪些? 根据《学前卫生学》和学前心理学,你觉得游戏与儿童... 循环语句的语法分析及语义分析程序设计 2018 假面 韩剧 第四集 那个vip 阿姨 都演过什么韩剧 游戏与儿童成长的关系 编译原理 课程设计 崔成国哪部电影好看 运用心理学理论谈谈游戏与儿童发展的关系 急需程序设计语言编译原理(第3版)国防工业出版社 ... 色即是空好看吗? 编译原理的相关程序 近年来感人的日本或韩国电影! 编译原理的数据结构 人力资源公司与公司签订的代缴社保合同样板 探究幼儿游戏教育与幼儿身心发展的关系 编译原理语法分析器程序设计,用C语言或C++,哪里... 编译原理: 画出识别如下单词的状态转换图: Char in... 简述游戏与儿童认知发展的关系 游戏对儿童发展的价值体现在哪些方面 1.在社会文化的视野下,儿童与游戏之间有何关联? 游戏对儿童发展与幼儿教育有什么好处 合肥壹加壹整形医院怎么样! 游戏对于幼儿身心发展具有怎样的价值 游戏对学前儿童发展有什么意义 合肥壹加壹美容院总院和壹加壹技术院哪个割双眼皮... 合肥壹加壹怎么样 游戏和身心发展有着怎样的联系 有在合肥壹加壹怎么样 之前的双眼皮不好看 想去修... 合肥1加1整形医院做鼻子整形怎么样 价格多少钱呢 ... 合肥壹加壹整形医院在哪?有没人去过,怎么样? 合肥市壹加壹医院怎么样? 壹加壹整形美容 怎么样? 合肥韩美和壹加医哪个好点想做抽脂填充请问韩美和... 请问下武汉壹加医疗美容医院双眼皮做的怎么样?失...