编译原理和技术(李诚) 您所在的位置:网站首页 中科大李曦老师的嵌入式容易过吗 编译原理和技术(李诚)

编译原理和技术(李诚)

2024-06-02 08:41| 来源: 网络整理| 查看: 265

       前排提醒:这篇评论预计较长且可能夹带强烈的个人主观情感,对于纠结是否要选这门课的同学,我给出的建议是:想轻松一点拿到高G的慎选;对自己代码能力有自信的(适应lyk老师的os实验强度)同学可以放心选;对于受够了计科课程成绩总是由文科期末决定的也可以选(但要做好写实验的准备)。

      ok,那我的评课正式开始。

作业:

          作业量其实不多,不过如果是想做成电子版的话可能需要花的时间会多一些,会有很多的表和状态机之类的要做,所以不擅长的同学可以直接手写拍照,助教不会根据这个扣分的。

           作业的给分助教也不会为难,没有什么大的错误的话一般都是扣0.5分意思意思,这方面不用担心。

上课:

          以我个人的体验,李老师的上课水平一直在线,思路清晰,而且PPT也很清晰、精美,和答辩课本形成了强烈的对比,有李老师的PPT在我一学期基本没翻过答辩课本。这学期唯一一段感到上课质量有些下滑的时间只有疫情上网课的那段时间。可能是缺少了面对面的反馈的原因,那段时间上课节奏有些过快,而且那时讲的还是标号回填这一部分难点,上完网课我还是有些懵懵懂懂的。不过以后应该不会再有上网课的情况了,这一部分不用担心。

         除开传统知识点的讲授外,李老师学期末还会介绍一些当前业界的前沿知识,最后一节课邀请了相关技术人员来介绍AI编译,听完还是有很大收获的。

给分:

         李老师yyds!先把了解到的情况放在这里以供参考:我期末发挥较差(全班35%左右)+39.2/40的GVN实验=4.0,而且了解到的写了实验的同学的情况,基本都狠狠地被捞了。基本上来说,只要GVN的分数达到了36/40以上都会有一口巨大的奶,而且这一目标其实不是那么难达成,只要通过了助教的公开样例其实就能拿到36左右的评测分数了,隐藏样例的分数即使没有全部拿到也不会影响李老师的奶分力度的。

        关于给分这块其实很感慨,毕竟当初在选课时看到前面一届同学被下调分数的惨痛经历我是犹豫过要不要换班的,现在情况的反差让当初的自己显得有些可笑了。而且从后面与李老师的交谈中会发现李老师已经逐渐地把课程的重心往实验上靠了 ,所以相信在以后的学期中下调分数的情况应该是不会再出现了,如果是因为看到前面一届同学的评论而犹豫的同学可以放心大胆地选。(李老师在答辩会的交流环节曾开玩笑地说,不就是分嘛,要多少给多少,但是你们认真地完成实验才是我最想看到的。大概意思是这样,说错了踢我:)。李老师yyds!)

实验:

          实验是这门课程的重中之重,而且难度确实不低,不过只要时间给够的话,相信大部分人都是能拿到大部分的实验分数的。而且李老师不会在时间上为难大家的,学弟学妹们如果觉得实验时间太短的话(比如lab4.2级别的一开始只有两周,噔噔咚)是可以大胆地去找老师延长一段时间的,我们这一届最后延期了大概一个多月,时间是相当充足的。

         对于实验内容大伙说得都差不多了,这里写一下对实验难度的看法:lab1和lab2是相对简单的,按李老师的说法就是热热身;lab3的实验难度会急剧飙升,不过lab1、lab2和lab3都是进行后续实验前必经的一步(换句话来说,就是和往届一样,你懂的),所以最后花的时间其实不太多,快一点的三天左右,慢一点的一周左右也能完成。那么"轻松"地完成lab1、lab2、lab3之后,我们就能愉悦地开始lab4的工作了。开始正式的代码编写之前,会先有一个小的文科工作lab4.1,带你深入浅出地了解lab4.2的原理。个人认为这个设计还是很好的,可以先缓冲一下,不过里面具体的知识理解还是到具体写lab4.2的时候才有深入了解。

       开始lab4.2之前,要做好需要投入大量时间的心理准备。在这一过程中你可能会经历:较简略的实验文档,伪代码难以实现,Segmentation Fault, 好不容易码完代码后公开样例只对一半的苦恼以及好不容易通过公开样例后对着不知助教往后面藏了什么东西的隐藏样例发呆半天的烦恼。但是不要着急,这些问题都是可以被解决滴,简略的实验文档和伪代码难以实现的问题会由五星级助教勤恳的回答issue来解决;对于调试,助教提供了gdb调试和日志两种方法任君选择;至于隐藏样例问题,......我没满分你问我?大伙可以把它当做挑战自己的bonus,毕竟即使不是全满李老师的捞人力度也是不会减轻的。在这里我的教训是一开始觉得使用日志调试要多填不少代码,所以按助教的gdb说明文档使用了vscode+gdb调试,但是在样例逐渐复杂的情况下debug难度也会不断增加,而且也难以发现自己程序中潜藏的bug而不知作何修改来通过隐藏样例。隐藏样例的一处需要判断pure function的坑就是一起写实验的不偷懒的哥们用日志发现的,所以这里含泪推荐大伙使用日志调试。

       lab4.2虽然难度大,但是写代码的过程还是非常愉悦的,尤其是在寒假写代码的过程,尤记得当初在截止日的最后两天实在拿隐藏样例没办法,和一起写实验的哥们开tx会议互相找对方代码的坑、互相指指点点和编恶心的样例来测试对方的代码,整个tx会议里洋溢着快乐的气息。结果也是相当喜人:前面七天:36.6->36.6,截止日前两天36.6->39.2,果然ddl是第一生产力。

       另外按照李老师的说法,编译是最容易搞出新花样的课,所以明年最难的实验大概率不会是GVN而是另外的优化算法了,从网上可能找不到多少资源,决定坚持的同学做好准备,干就完了。反正助教会被要求先实现一遍,多多少少有点心理安慰。

关于lab5-bonus实验

​          对于我来说,经历完前面的一切只是经历了这门课的一半,还有另一半课程的精髓在lab5上。今年的lab5简单来说是实现从IR到龙芯汇编语言的翻译,实验的分数由一下三部分组成:

测试分数,总得分 = 通过样例数/13 * 40,13是总样例数,不过后来在答辩现场多加了4个隐藏样例(噔噔咚).性能分数,总得分 = (执行样例时间排名 - 总人数 + 1)/总人数 * 40,这一部分主要看你代码的优化效果;答辩分数,满分20分。这一部分由李老师根据现场答辩效果给出,不过不用太过紧张,毕竟能写出自己的代码并勇敢走上台就很优秀了。

         实验的工程量不小,我只完成了适配GVN的寄存器分配策略,没有做更多相关的优化的情况下代码量也在1200+,而且写代码的时间还不及debug时间的一半,所以整个实验走下来肯定是不轻松的。但是这个实验的难度梯度设计得相当好,所给样例和实验文档推荐使用的方法的难度都是逐级递增,而且递增得非常丝滑,回头看的时候有一种慢慢从底层把积木搭高的感觉,以我个人评价,整体体验是优于lab4.2的。而且这个实验和课程内容联系得相当紧密,其中能够用到的方法和课程相关性很强,例如活跃变量分析、循环、支配节点等等知识都能在其中发挥作用,给人一种自己学的知识终于有用了的感觉,体验非常良好。除此以外,它还帮你揭开了慢慢知识海洋的神秘一角,在实现了基本的栈分配策略翻译后,你会忍不住想栈分配策略是不是太粗糙了,换成寄存器分配策略效果会不会更好;在实现了寄存器分配策略后,你会忍不住想会不会是IR没有开启优化导致效果不好,让框架适配GVN优化的IR会不会更好;在修改了框架适配GVN优化生成的IR后,你会忍不住想有没有更好、更多的优化算法......可惜本人在寒假太摆,在想要去进一步优化的时候已经没有时间了,这也是我在这一课程中最遗憾的事了。

       仅仅是实验难度和设计是不足够形容lab5的优秀的,lab5最后的答辩演讲会才是整个课程最后的高潮。我以前是没有经历过答辩演讲的,所以一直都有一种害怕与畏惧。但是李老师在整个答辩流程中对我们充满了鼓励与宽容,面对没有完成全部样例的同学李老师会给予鼓励,面对优化效果非常显著的大佬们李老师也毫不吝惜自己的赞美。整个答辩演讲会走下来,不仅增长了我自己的勇气,大佬们优秀的思路也给我一种醍醐灌顶的感觉。会议结束后李老师还请客吃了饭,整个流程真的给人一种技术涌动的感觉。

       最后也非常希望来年学弟学妹们能够多多参加bonus实验,毕竟这是在科大为数不多的拿得出手的项目了,而且整个实验走完的收获是相当巨大的,即使没有能够完成得很好李老师也不会怪罪,为何不来嫖免费的小奖品呢:)

一些碎碎念:

       我是非常喜欢老师今把bonus实验从GPA中完全割离开的决定的,我认为开启一个与GPA完全无关且难度不小的实验是相当需要勇气的。这一方面体现了李老师对自己教学质量的自信(毕竟如果是mjh出一个与GPA完全无关的bonus实验我是肯定不会鸟他),也让选择完成bonus实验的同学的收获更加纯粹,同学互相的交流也更加纯粹不带功利性,这种体验在充斥着GPA的科大真的是非常难得的,让人受益匪浅。

       从前面几届的评论,bonus实验从一开始的加GPA实验变成现在的额外奖励型实验,可以看出李老师也在不断地想改进自己的课程质量,在不断地思考如何让自己的课程变得更好,这一点在科大真是非常难得的。这学期在经历了这一课程后看到pksq的这条评论真的感触颇深:

(出处忘记了,就在手机上留了一张图,这里对原文作者表示歉意)

       看到这条评论深有同感,同时我也认为lc老师就是可到为数不多的满足该条评论要求的好老师,在lab5的答辩会议结束后李老师还向我们透露改天要启程去南京学习南京大学计组老师的课堂,李老师对于课堂的用心是让人非常钦佩的。

       最后非常感谢老师和助教这一个学期的付出,也感谢能忍住我六年级作文的水平看到这里的你,同时也想对这位同学说:

      别灰心,你想遇到的老师就在大三上等你。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有