• 对编译原理的认识


    1、编译原理就是什么?

    通过网上学习,我深刻的认识到编译原理是编译技术的基本理论和实现技术,是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。从源语言提取需要的信息,把源语言翻译成目标语言,就是学习编译器方面的产生原理和技术问题。编译原理一直作为大学本科的 必修课程,同时也成为了研究生入学考试的必考内容。编译原理及技术从本质上来讲就是一个算法问题而已,当然由于这个问题十分复杂,其解决算法也相对复杂。 我们学的数据结构与算法分析也是讲算法的,不过讲的基础算法,换句话说讲的是算法导论,而编译原理这门课程讲的就是比较专注解决一种的算法了。

    2、学习编译原理有什么好处?

    我认为这门课是一门真正与代码做斗争的课程,对于一个有至于追求技术的人是不容错过的课程,而且编译原理可以说是一个计算机科学的缩影。你学习它更多的是去追寻程序设计语言的本质,如它在寄存器分配中将会使用到贪心算法,死代码消除中将会使用到图论算法,数据流分析中使用到的Fixed-Point Algorithm,词法分析与语法分析中使用到有限状态机与递归下降这样的重要思想等等,也许你以后不会成为一个编译器开发工作者,但是编译原理的学习中所获,所思的东西足以让你终生获益。同时,学完这门课程,对于一个有Geek精神的开发者,他会开始运用自己的所学开发享受“上帝”的感觉,去尝试创造一门语言,我想这种感觉不是每门课程都能带给你的。我相信,当你真正完成这个过程后,你对你所写的程序、程序语言都会有更深的本质认识,这样的认识也会让你站的高度完全不同,如果你真的学的好,我想别人看到的是语法,你看到的是背后的实现,这样的感觉真的很好的,不信你试试。有了这么多好处,无论如何都有足够的理由支撑你好好学习了。

    编译原理蕴含着计算机科学中解决问题的思路、形式化问题和解决问题的方法,对软件的设计开发具有一定的指导作用,学习它可以更了解程序本身,对以后的学习有一定的帮助。同时,学习编译原理能拓宽软件人员的视野,有利于提高软件人员的素质和能力,对脑力锻炼也起了一定的作用。这门课是一门真正与代码作斗争的课程,对于一个有追求的人是不容错过的课程,编译原理可以说是计算机科学的缩影,学习它更多的是追寻程序设计的本质。在学习这个课程之后,对自己所写的程序、程序语言可以有更深的本质认识,会使自身站到更高的高度。

    3、不学有什么损失?

    不学编译原理,可能只是单纯的使用别人开发的编译器,写程序只能按照别人开发的语言哲学来做。学习了编译原理,至少可以把别的程序员的的东西看得比较透彻。不学编译原理,可能永远给各种写编译器的人当奴隶,以为写程序只能按照他们设计的语言哲学来做。学好了编译原理,不一定非要自己写语言,但是至少能把很多其他程序员觉得很酷的东西看得透彻一点,不会被程序语言的设计表象骗到太多。

    4、如何学习编译原理?

    主要有三个步骤

    1. 读书:龙虎鍄,把课后的题目会做的都做一遍。 
    2. 自己写一个toy compiler,编译一些简单的代码,尝试理解各部分之间如何整合。 
    3. 看LLVM的代码,试着在上面加一些东西。 

  • 相关阅读:
    洛谷P2221 [HAOI2012]高速公路(线段树+概率期望)
    洛谷P2254 [NOI2005]瑰丽华尔兹(单调队列)
    洛谷P2607 [ZJOI2008]骑士(基环树)
    洛谷P1505 [国家集训队]旅游(树剖+线段树)
    洛谷P3250 [HNOI2016]网络(整体二分+树状数组+树剖)
    洛谷P3833 [SHOI2012]魔法树(树链剖分)
    洛谷P4216 [SCOI2015]情报传递(树剖+主席树)
    Ansible 利用playbook批量部署Nginx
    Ansible实现zabbix服务器agent端批量部署
    时间序列模型:ARIMA
  • 原文地址:https://www.cnblogs.com/mimimi/p/5857493.html
Copyright © 2020-2023  润新知