前言
熬过煎熬的考试周、复习以及更加煎熬的等成绩,查到成绩的那一刻,心里还是挺开心的。
虽然我没有完全学懂这门课程,但我还是兢兢业业地通过了课程的考试,拿到了这门课程的认可。
记录一下自己对编译原理的学习感悟,算是给这学期编译原理的学习一个总结,也可以给后来者一点帮助。
编译原理我的卷面不错,期中和期末都是9X分,总评也挺好看,属于是少见的平时成绩将总评向下拉的学科。
总领
编译原理这门课程十分困难,湖南大学课程组对于编译原理的课程教学仅仅局限在一个很小的部分,如
- 词法分析部分(RE,NFA,DFA,min-DFA等),
- 语法分析部分(LL1,LR0,LR1,SLR,LALR等,我们老师还讲了算符优先文法,但考试没有考察),
- 中间代码生成部分(主要在实验中涉及到,老师上课讲过DAG图,依赖图等,但没有深入涉及,也没做复杂考察),
- 代码优化部分(活性分析,到达分析,寄存器分配等)
由于我对编译这一块不是很感兴趣,所以没有深入去了解,仅仅是抱着“通过考试,拿到成绩,有别的用处”这样的想法去学习,备考的,故我接下来仅仅从应试这个角度分析一下如何取得较好的成绩。
我们班组对于成绩的给定如下:
作业(16%) + 实验(16%) + 小班讨论(5%) + 期中考试(23%) + 期末考试(40%)
因此我主要分平时、作业、实验、小班讨论、考试,这5个方面做总结。
<0> 平时
推荐网课
中科大 华保健教授:
编译原理 华保健 高清课程_哔哩哔哩_bilibili编译原理 华保健 高清课程共计127条视频,包括:1.1 编译器概述、1.2 编译器结构、1.3 编译器实例等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1m7411d7iS/中南大学 徐德智教授:
编译原理 中南大学 徐德智教授_哔哩哔哩_bilibili编译原理 中南大学 徐德智教授共计42条视频,包括:课时1:形式语言与文法描述、课时2:词法分析:正规式与自动机(DFA,NFA)、课时3:词法分析:Thompson算法,子集构造算法,Hopcroft算法等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1oV411e7Fj/词法分析部分,这个up主小姐姐讲的非常好:
致爱意的个人空间-致爱意个人主页-哔哩哔哩视频哔哩哔哩致爱意的个人空间,提供致爱意分享的视频、音频、文章、动态、收藏等内容,关注致爱意账号,第一时间了解UP主动态。https://space.bilibili.com/514480242
<1> 作业
对于专业课的作业,我还是跟之前的态度一样:先自己独立完成一遍,然后找同学对答案,找到自己不会的部分,务必搞懂。最后上交的时候确保平时成绩。
由于我们使用的是龙书,龙书是上到现在为止,唯一一门我没有找到教材标准答案的课本,所以答案只能靠与同学讨论得到。网上流传的答案都不太可信,有缺漏的部分,也有错误的部分。
对于这门课程,我个人感觉作业是很有用的,务必自己认真完成。道理很简单,作业就是考试题型。作业答案我就不提供了,主要全是PDF,截图上传太烦了。
<2> 实验
我们实验用的是USTC中科大2020版的cminus-f,简单来说就是动手自己写出一个类c编译器,但这个编译器完成的功能小一点,然后这个类c的语法也比c要简单一些。
实验使用gitee上交(git也要学一下,这是学计算机必须掌握的),
我开放了我的gitee仓库,有需要的同学可以参考着看看。
资源位置:https://gitee.com/wolfvoid17/cminus_compiler-2023-fall
cminus_compiler-2023-fall: 编译原理课程实验报告甘晴void-计科210X-202108010XXXhttps://gitee.com/wolfvoid17/cminus_compiler-2023-fall我的4次实验报告如下,欢迎参考:
HNU-编译原理-实验1-利用FLEX构造C-Minus-f词法分析器-CSDN博客
HNU-编译原理-实验2-Bison-CSDN博客
HNU-编译原理-实验3-LLVM IR与LightIR-CSDN博客
HNU-编译原理-实验4-cminus-f语言(由AST生成IR)-CSDN博客
实验采取gitee提交留档 + 助教线下验收的形式。
验收要能给助教表达清楚自己对于实验的理解,如果能现场演示具体的案例更好。
<3> 小班讨论
自选题目,基本上就是复现上课的内容,对于应试也是有帮助,这些基本都是需要掌握的。
讨论课助教参与并打分,面向班级同学。给合适的例子,把知识讲懂就可以了。
我们组的两次讨论课PPT如下:
HNU-编译原理-讨论课1-CSDN博客
HNU-编译原理-讨论课2-CSDN博客
<4> 考试
考试应该是应试环节最为重要的一个部分。
期中考试是开卷考试,就不说了。其实这个学科没有开卷的必要,因为不可能直接抄到答案的。开卷和闭卷没啥差别,又不让讨论。没什么好说的。
这次期末由于有4们核心课而且在第17周就直接考试,所以我的复习时间很少。我大概花了2天时间在编译原理的复习上。主要是元旦看了一下代码优化和语法制导翻译(其实没咋看懂),然后在数据库考完之后,最后一门是编译原理的情况下,看了一整天的编译原理(考完数据库之后打了一下午英雄联盟,然后晚上去综合楼自习,第二天学了一整天编译原理)。感觉时间应该差不多。
总结为一句话,编译原理很难,但是编译原理的考试不难。
我在复习的时候参考的资料有:
我们班组老师的PPT,隔壁班组老师的PPT(因为几个班组用的同一套试卷),
【PPT我就不放了,毕竟是老师的劳动成果,直接放不太好】
基本上跟中科大华老师的这个很像
编译原理 华保健 高清课程_哔哩哔哩_bilibili编译原理 华保健 高清课程共计127条视频,包括:1.1 编译器概述、1.2 编译器结构、1.3 编译器实例等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1m7411d7iS/
可找到的历年期末考试卷(这个很难找到,所以很珍贵,下面或是我找到的,或是我自己做的,能收集到的资料)。
编译原理期末复习_(1)语义规则: → { a.i=n.val } 下面是我自己做的,或者是我回忆的2023年的原题。
HNU-编译原理-期末复习(刷题)-CSDN博客
编译原理-2022期末考试解析-CSDN博客
湖南大学-编译原理-2023期末考试【原题】-CSDN博客
总共就这5个模块:
- 词法分析
- 语法分析
- 语法制导翻译
- 中间代码
- 优化
复习完一个模块就做相应的练习题,练会就好了。
对于语法分析部分(LL1,LR0,LR1,SLR,LALR等),B站的这个up小姐姐讲的很清晰,推荐看看。
致爱意的个人空间-致爱意个人主页-哔哩哔哩视频哔哩哔哩致爱意的个人空间,提供致爱意分享的视频、音频、文章、动态、收藏等内容,关注致爱意账号,第一时间了解UP主动态。https://space.bilibili.com/514480242
对于数值分析和到达分析部分,中南大学的许德智教授讲的很好,可以看看。
编译原理 中南大学 徐德智教授_哔哩哔哩_bilibili编译原理 中南大学 徐德智教授共计42条视频,包括:课时1:形式语言与文法描述、课时2:词法分析:正规式与自动机(DFA,NFA)、课时3:词法分析:Thompson算法,子集构造算法,Hopcroft算法等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1oV411e7Fj/
如果有想对应试更加深入理解的同学,推荐看这个武汉大学的学长做的,面向它们试卷难度的讲解。可见武汉大学的考察难度确实比湖南大学要大。这个看看题目和思路就好,湖南大学的考察一般达不到这个深度的。
【武汉大学】编译原理混子速成——面向期末试卷复习:全集_哔哩哔哩_bilibili【武汉大学】编译原理混子速成——面向期末试卷复习:全集共计9条视频,包括:1 简介、2 NFA转DFA和DFA化简、3 求firsrt集follow集和LL(1)分析表等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1SB4y1S7Sc/
结语
还是要感谢我们的全教授的授课与解惑,
全教授的讲课风格偏向理性化,没有过多强调代码,会比较清晰地展现每一步骤与实现,
真的帮助很大。
最后祝大家都能得到自己满意的成绩+知识。