作者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/m.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