Skip to content

GGORZ10227216/OurScheme

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

警告! 不要不信邪,抄一點也是抄 你會GG的

  • 慘阿!
  • 本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)
  • 模組化思考
    • 我們非得要寫一個大function來完成任務嗎?
    • 能不能把工作拆分,給他們各自一個符合職責的名字
      • 或者再做得更好一點,找出能夠被重複利用的工作內容,把它變成function
    • 一旦你模組化你的程式,只要你修正了模組內的bug,那麼任何與此模組相關的code都不再會有相同的bug
  • 版本控制
    • 雖然中原的課程對此完全沒有要求,不過你應該在你自己的電腦上,替你的PL程式碼做版本控制
    • git init & git add & git commit沒有那麼難
    • 當你完成了一個功能,就應該commit,並給她一段描述清楚的commit message
    • 給自己留條後路,不要改壞了才再到處找問題
      • 更不要把PAL系統本身當成你的git,他是Online Judge
  • 為你自己的PL寫Unit test
    • GTest
    • Catch2
    • 如果每個人都寫20個test case,那一班30個人就會有600個
      • 卡隱藏嗎,不妨與室友交換一下test case?
  • 寫註解
    • 不要相信任何自稱"我的程式碼就是註解"、"我在業界都要求員工要寫出程式即註解的品質"之類的鬼話
      • 這個叫做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

Some mindset

  • 沒有人說PL寫得好,人生從此一帆風順,妻賢子孝
    • 四支project都寫完,過得不好的大有人在(比如我還有我跟我)
  • 出了中原資工的大門,誰會管你PL是啥?
    • 說不定PL弄到60過,剩下的時間去補習考四大研究所可能還比較容易飛黃騰達
  • 出社會各憑本事,憑各本事
    • 我其實一直對PL版上夏老大所聲稱的在科技業只要有實力月薪8-15萬很有意見
      • 才沒有,機運跟人脈遠遠重要得多
      • 我有很多朋友靠著考試進四大研究所,靠著實驗室學長內推進科技業Tier 1絕對比你單打獨鬥求職輕鬆
      • 不只容易找到工作,更容易找到"好"工作(AKA爽缺)
    • 雖然寫code不行,但做人100分照樣可以在科技業四處蹦迪
    • 也可能很會寫code但做人失敗,處處碰壁(我沒有 我很棒,我不是g8人,我要是爛人怎會在這裡跟你講這些)
  • 那為何還要寫PL?PL這門課是不是早點收攤,中原資工原地轉型成中原補習班是不是就世界和平了?
    • 我覺得PL是一個最值得花時間的project了
      • 夏老大您沉住氣,快了 快了
    • 你可曾面對一個大型的軟體系統?
      • 如何分析他,修改他,除錯他?
    • 你能做得比你同事快,比你同事好嗎?
      • 或者換個比較沒那麼侵略性的說法,你能夠獲得同事與上司的信賴嗎?
    • PL攸關的是你的軟體工程思維能力,但能力能不能跟薪水掛勾?
      • 這要看施主你自己

結論

  • 無論如何,抄code絕對不會是你人生現階段的活路
  • 好好努力吧少年

About

中原資工_夏氏Scheme躍上國際大舞台

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages