- 慘阿!
- 本repo存在的目的是,讓你有一個example program可以讓你實驗你的想法是否跟PL想的一樣
- 題目每年都會變,我也不能保證這個code之後還能夠對付PL
- PL系統有眾所周知的style checker,所以C++有很多功能都必須用很彆扭的方式作(比如switch case),所以這份code的確不能作為C++編寫的典範,這只能是個妥協
- 我方表示尊重並理解夏氏企業的決定
- 一個直譯器的工作流程就是把一段input,經過一些固定的流程去格式化,分析之後輸出結果
- 這一定是一段固定且符合邏輯的過程,換言之,只有input會變,程式本身不變!
- 以不變應萬變
- 哪個程式不是這樣?
- 你應該要想著如何去實現一個系統,能夠依照一個固定的邏輯產生出PL文件描述的輸出
- 各位兄弟姐妹,十方大德 一切都是其來有自,有其深意的!!
- 經驗談,當你開始在想某某功能要如何實現時,如果......
- "根據我想的流程,假設出現A,那這是一個特例,我要特別處理"
- "然後出現B,這是也一個特例,我要也特別處理"
- "接者C居然也是特例,我......"
- 你可能從根本上想錯了!!
- 從根本層面去思考步驟
- A number is something like "123" (X)
- How about "1.23"?
- How about "1."?
- How about "+.12"?
- How about......
- A number is input that satisfies the format
[+-]?([0-9]*[.])?[0-9]+
(O)
- A number is something like "123" (X)
- 模組化思考
- 我們非得要寫一個大function來完成任務嗎?
- 能不能把工作拆分,給他們各自一個符合職責的名字
- 或者再做得更好一點,找出能夠被重複利用的工作內容,把它變成function
- 一旦你模組化你的程式,只要你修正了模組內的bug,那麼任何與此模組相關的code都不再會有相同的bug
- 版本控制
- 雖然中原的課程對此完全沒有要求,不過你應該在你自己的電腦上,替你的PL程式碼做版本控制
- git init & git add & git commit沒有那麼難
- 當你完成了一個功能,就應該commit,並給她一段描述清楚的commit message
- 給自己留條後路,不要改壞了才再到處找問題
- 更不要把PAL系統本身當成你的git,他是Online Judge
- 為你自己的PL寫Unit test
- 寫註解
- 不要相信任何自稱"我的程式碼就是註解"、"我在業界都要求員工要寫出程式即註解的品質"之類的鬼話
- 這個叫做21世紀軟工神棍
- 在我們能用自然語言寫code之前,這是不可能的
- 當然也不是叫你寫一堆無意義的註解
- Don't
int a = 0; // a number
- Do
int i = 0; // An index for character counting, set it to -1 if string is invalid
- Don't
- 不要相信任何自稱"我的程式碼就是註解"、"我在業界都要求員工要寫出程式即註解的品質"之類的鬼話
- 沒有人說PL寫得好,人生從此一帆風順,妻賢子孝
- 四支project都寫完,過得不好的大有人在(比如我還有我跟我)
- 出了中原資工的大門,誰會管你PL是啥?
- 說不定PL弄到60過,剩下的時間去補習考四大研究所可能還比較容易飛黃騰達
- 出社會各憑本事,憑各本事
- 我其實一直對PL版上夏老大所聲稱的在科技業只要有實力月薪8-15萬很有意見
- 才沒有,機運跟人脈遠遠重要得多
- 我有很多朋友靠著考試進四大研究所,靠著實驗室學長內推進科技業Tier 1絕對比你單打獨鬥求職輕鬆
- 不只容易找到工作,更容易找到"好"工作(AKA爽缺)
- 雖然寫code不行,但做人100分照樣可以在科技業四處蹦迪
- 也可能很會寫code但做人失敗,處處碰壁(我沒有 我很棒,我不是g8人,我要是爛人怎會在這裡跟你講這些)
- 我其實一直對PL版上夏老大所聲稱的在科技業只要有實力月薪8-15萬很有意見
- 那為何還要寫PL?PL這門課是不是早點收攤,中原資工原地轉型成中原補習班是不是就世界和平了?
- 我覺得PL是一個最值得花時間的project了
- 夏老大您沉住氣,快了 快了
- 你可曾面對一個大型的軟體系統?
- 如何分析他,修改他,除錯他?
- 你能做得比你同事快,比你同事好嗎?
- 或者換個比較沒那麼侵略性的說法,你能夠獲得同事與上司的信賴嗎?
- PL攸關的是你的軟體工程思維能力,但能力能不能跟薪水掛勾?
- 這要看施主你自己
- 我覺得PL是一個最值得花時間的project了
- 無論如何,抄code絕對不會是你人生現階段的活路
- 好好努力吧少年