编译技术课程感想

总结课程收获

这一整个学期的编译学习,在今天理论考试结束后就暂时告一段落了(文档 21 号截止但是实验期末 25 号考所以没法写进总结里(×

对实验部分来说,最大的收获就是从代码的层面上解释了编译的整个过程,(至少对我来说)揭开了编译这个在大学的整个学习过程中一直处于比较模糊的一个概念。从最开始的词法的解析、语法树的构建;再到符号表管理、错误处理;最后是中间代码和目标代码的生成和优化,实际动手实践过这一系列过程后才对编译这个概念有了具体的实感。

对我来说印象最深的是中间代码的生成,语法分析只提供了语法树作为输入,编译器却要生成一条条的中间代码,最开始我是无法理解这个过程的实现的。但是在理论课学到翻译文法后就大概有了想法,再根据教程文字逐步理解,具体生成了代码后的喜悦感还是很强烈的。

同时我认为编译技术还是整个计算机系学习体系中十分重要的一环,前有运行 mips 代码的实际 CPU(计组),后有根据高级程序设计语言建立的操作系统(操作系统)和相应的程序(面向对象),编译技术实际上把这两部分联系了起来,实现了从高级语言到汇编语言的转换,能够学到这部分知识是十分重要的。

课程改进建议

主要比较想吐槽的是时间安排,感觉可以把词法 & 语法的时间占比压缩一点,给后面的代码生成多一些时间,或者说开始得早一些。从我自己的角度来说,这个学期的学习体验是相对不均衡的,错误处理和之前的部分实际上用了比较少的时间去设计和写代码,但是提交时间段给的又有点长;后半段和其他课程的作业一起冲过来有一点不太好处理,整个代码生成都是赶着时间才冲完的,优化更是完全没时间处理(甚至现在三点了明天还要起来整数据库qaq)。还有一个时间安排不太好的是理论和实验的时间安排,实验截止的第二天进行理论考试,下 一 周 才进行实验上机考试,我觉得应该不止我一个同学希望把这两个考试换个位置,真的体感很不好,希望明年的课程安排可以参考一下这一点。

第二点建议是希望能够丰富一下 mips 部分的教程内容,分析一下常用的指令和中间代码→目标代码的转换方式,在写目标代码生成时会更顺滑一点。其他的部分我觉得已经挺完善的了,尤其是延期 3 天这个人性化的操作拯救苍生于水火之中,给课程组磕了 orz