作者bh2142 (濒临绝种的Emacser)
看板NCTU-Teacher
标题[心得] 游逸平 编译器设计概论
时间Thu Feb 10 20:32:52 2022
⊕课名⊕
编译器设计概论
▲教授▲
游逸平
★修课年度★
110
£教了什麽£(课程大概内容。或是额外学会了什麽东西。)
一点正规语言(DFA, NFA, CFG)
LL LR LALR Parser
Semantic Analysis
Run Time Environment
IR
Code Generation
lex(flex)
yacc(bison)
Optimization 基本上没教
◆上课方式◆(投影片、团体讨论、老师教学风格)
投影片上课
这学期线上授课,也会上传录影,可以1.5倍速看
老师语速很慢,讲解的非常清楚
建议准时上课,看了不亏
我几乎没跟着上课,後来连影片都懒得看了
作业、投影片都会放在 github 上面
十分先进,可以参考改革这个课的助教的blog
https://bit.ly/3uV2aHx
▼考试
作业▼
期中期末考各一
期中考会考正规跟各种 parser 如果你掌握度够好就没问题
真的懂每个 parser 在干麻的话其实蛮简单的
但如果是临时抱佛脚的话他们没有到很好懂
细节不少
分数差距很大,有人96分有人36分
期末考有上课+写写考古就可以很高了
作业是用 flex 和 bison 做一个类似 Pascal 语言的 Compiler,拆成五次作业
Lexer
Parser
AST Construction
Type Checking
RISCV assembly Generation
会提供一个 docker image 当作评分环境
作业的测资都有事先公布
自己测有通过就可以拿满
要写一个简单的 report 说自己怎麽做的
作业和作业之间有连贯性
可以用自己做完的部分继续往下做
也可以用批改完之後助教公布的版本做
应该多数人都是用助教给的版本
前两个作业很简单
照 spec 写写 regex 和 grammar 就好
之後的作业需要 C++ 和 OOP 概念
资工系的 OOP 课大多无法满足这方面的能力
作业做起来可能会比较痛苦
跟着 spec 做加上有同学可以问的话应该也不是太困难
作业 4 5 可能需要花上超过 20 个小时来写
建议用一个功能强大的编辑器/IDE来写
最好有好的 code navigation 和 on-the-fly syntax checking 功能
可以节省巨量时间
作业五非加分题的部分只要处理整数就好算是简单
因为是 riscv asm 用 spike 去模拟,所以 debug 比较麻烦没办法简单直接丢 gdb(其实
还是做得到)
组语的部分如果计组学的是 MIPS 也不用担心,没有什麽太大的区别
¥其他¥(是否注重出席率or严禁迟到?需要的基础?)
无点名
修过正规的话前面的课有一大部分重复
(虽然我期中考都错正规的东西XD)
¢最後想说的话¢
这课是个作业课
分数很好拿
作业有大量繁琐又不用动脑的操作
虽然用助教的 code 比较方便
但是会一直觉得靠北他写这沙小有够丑
(当然我写不出更好的,出这作业的助教已经非常用心了)
虽然我觉得偏无聊,尤其作业实在是太繁琐了
但我认识的人对这课的评价都还不错
其他人的评价
「扎实的好课」
「帮你复习OOP的好课」
「课程内容基础,作业偏重但紮实,帮助你学习OOP或学习抄code的好课」
「需要好的OOP基础,阿如果不会的话就去抄code吧。然後期中期末有写考古,基本上就有
分」
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.73.242.106 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/NCTU-Teacher/M.1644496375.A.4B5.html
※ 编辑: bh2142 (42.73.242.106 台湾), 02/10/2022 20:35:45
1F:推 xxoooxx34567: 作业3,4真的硬== 02/10 20:44
2F:推 cfzfnf: 推02/10 21:21
3F:推 tommytyc: 硬02/10 23:35
4F:推 LukeLuke: 推02/11 03:49
5F:推 s094392: 推02/11 15:40
6F:推 NoyVaughty: 个人觉得oop的成份没那麽大,就一些基本的就够了 02/17 13:03
我也这麽觉得,但就真的很多人连基本的都不会
※ 编辑: bh2142 (42.72.147.122 台湾), 02/20/2022 09:55:25
7F:推 xatier: 推 yyp ,好老师 04/25 10:22