理性看待编译原理

   学编译原理已经有6周了,可说实话,到目前为止还是不清楚学编译原理到底能做些什么又或者说它在软件开发中运用体现在哪里。今天在跟老师闲聊中,问了他这么个问题,“编译原理要学到哪个程度 ?”很高兴,他给我详细的回答,通过学习的层次一一分析:
第一个层次:会做题,应付考试。
第二个层次:理解编译原理中一些处理方法的思路与基本原理。
第三个层次:能够将编译原理的一些方式方法运用到编译器编程中去。
其中他比较强调第二个层次,因为我们绝大多数不会直接将编译原理用于编译器的设计中。同时也举了些例子,如数据结构中学过的表达式运算可以借用编译原理中的算符优先算法,编辑器实现的语法敏感可以参照编译原理中的符号处理方法、二次扫描和一些优化方法。
   下了Q,我迫不急待的去查找了相关的资料,收获也不小。书中介绍:一个好的编译器就是计算机科学的一个缩影。它实际运用了大量的技术,包括贪婪算法(寄存器分配)、启发式搜索技术(列表调度)、图形算法(死码消除)、动态规划(指令筛选)、有穷自动机和下推自动机(扫描和语法分析)以及不动点算法(数据流分析),很少有软件系统为了实现一个目标把如此繁多而复杂的任务结合起来。编译原理的学问已包含了很多成功的故事,在文本检索、网站过滤、文字处理和命令语言解释器,同样的工具和技术也找到了用武之地,类型检索和静态分析运用了格论和数论以及其他数学分支来理解和改进这些程序。代码生成器使用树模式匹配来实现指令筛选的自动化。
   经过一番周折,我对编译原理这门课的认识又上升到了另一个高度,回想起学这门课以来调试过的词分析程序和LL(1)语法分析程序,慢慢感觉到它设计之得体,算法之高深,每一行代码无不散发出设计师的智慧。此时此刻,自己联想起了上学期学的数据结构,它给我的感觉跟编译原理这门课都是差不多的,浓缩的都是计算机科学中的精华。最近自己也在恶补数据结构,在本学期内尽自己最大的努力学好这两门课,使它们成为我编程的利器。
  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值