contributed by < LeoriumDev
>
注意書寫規範。唯有掌握細節,方可征服原始程式碼超越 4000 萬行的 Linux 核心
好的
看第二篇,我赫然想到做 side projects 這件事,如同原子筆如何製造,我自己竟然不去依賴 AI 做一個 snake game 出來,只因為很簡單,覺得學不到什麼。這又讓我聯想到做 text editor 這件事,以前覺得可以很簡單,但在看完其他人說要用到的技巧,我突然覺得自己太自傲。舉例來說,做 text editor 總不可能把所有字元放在一個 array 裡吧?這樣很沒效率,要頻繁的插入、刪除字元。這是我之前沒想到的。這可以引用第三篇的「資工系的學生不會寫程式,機械系的學生不會做機械」。雖然我目前大一,但我覺得這一年好像沒學到什麼,學校教了 C 與 C++,但我自己卻沒有太多練習的機會,讓自己「會寫程式」,現在寫 C 還是蠻常會 segfault 的 (連 jserv 老師說的程式品質中的 correct 都沒達到)。
讀到後面作者與愷宏的互動,再加上之前有解釋並行與平行程式設計給非資工系的人聽,這讓我體悟到,我真的懂我在學的東西嗎?還是只是把課本定義講給別人聽,不經大腦思考 (可能有思考如何翻譯?)。
「一項產業進步的速度,很大程度取決於做實驗修正問題的速度。」
我很喜歡這句話,也慶幸自己是讀資工系的,我常常寫程式 debug 佔了七成時間,經常都是程式跑了會跳錯誤訊息出來,然後用 debugger 偵錯,我無法想像你拿到成果要等一個禮拜 (或更久),我應該會瘋掉。
「為什麼分配冰塊這麼難,我寫程式寫了三年,沒想到卻栽在這個小小的冰塊上啊」
讀到這邊,我笑了,也同時反思自我,「我是不是對資訊以外的行業一竅不通?」,「寫了那麼多程式,你知道日常用品要如何製作嗎?」。
「但這是他媽的真實的人生,熱血毫無用武之地,主角的好朋友提的意見對解決問題完全沒有任何幫助,主角日日夜夜都在思考這個問題的解法,跑了許多地方、搞了整整一個半月,但是依舊一點進展都沒有。」
其實我也有過這樣,可能學到一半就中途放棄,因為又難又繁瑣,日復一日,年復一年,感覺我好像什麼都沒在做?
「Jserv說你不能現在就放棄,要是現在就放棄的話,你這輩子日後遇到這種等級的困難,就只會想逃避而已。」
「但我相信這個問題絕對不會沒有人碰過,一定有人解決過,所以你不該卡在這裡,因為這件事卡在這裡是相當不值得的。」
「你最大的問題在太害怕失敗了,既然都已經決定要延畢做飲料機了,那就要好好做,才不會辜負當初自己的期望。 … 但青春很貴,你也知道實習會發生什麼事,公司不會指派重要的工作給你,他們只會指派低風險的工作,你學習到的東西並不會比你現在多。你該學習的不是看到事情要完蛋了就去避免失敗,而是應該學習如何處理與承受失敗,你才能變得比以前更強大。」
『全公司目前最清楚狀況的人就是你,你不應該凡事都來找我討論,當然討論大策略、大方向沒問題。但是那些細節你應該要比我更清楚,更該知道現在發生什麼事和如何去避免。你的工作不是來找我討論那些問題,而是「讓我們的計畫如預期般順利運作」,如果發生「機器沒辦法幫飲料店節省工作,反而造成困擾,最後導致老闆不想和我們合作」,我會想揍你。你現在就是CEO,這間公司目前就是你最清楚狀況,你的權力最大。如果目前進度太慢,那就看看是什麼樣的問題,如果是工廠做太慢,那就看看急件一天要加多少錢,直接跟我請款,反正我們錢都砸下去了沒有在怕的。如果是其他問題你應該要及早想到,並且避免它發生。』
在看到第 22 篇的時候很有感,我之前有研究過簡易的電腦結構,所以有看過很多規格書,包括 VGA、HDMI、USB、Intel 8086 等等。覺得做電子電路其實很耗費心力,不像電腦寫 emulator,不用考慮硬體層面的阻礙,像是電線的干擾以及 clock rate 的在特定板子上限,或是最煩人的接錯線或短路也還要考慮 logic gate 或 chip 的延遲等等。其中我覺得最好玩的是 VGA,他相較於 HDMI 簡單了太多了!當時太自大,以為自己組的破電腦可以用 HDMI 接到螢幕 (雖然上了大學這個 project 也很久沒動了 but it's the good old time!)。
「這個世界比任何人都殘酷,也比任何人都公平,犧牲了多少就會得到多少。」
「人不付出犧牲,就得不到任何回報。如果要得到什麼,就必須付出同等的代價,這就是鍊金術的基本原則,等價交換。當時我們深信著,這就是這世界的真理。–––《鋼之鍊金術師》」
看完這個系列,感慨自己很廢,在上這堂課已經到了學期尾聲,卻幾乎什麼都沒做。不知道自己缺乏了什麼,也許是自己去逃避這些事物,辜負了自己的期望。其實我很常這樣,之前有想做 Minecraft clone、git clone、text editor、shell、Redis clone、compiler、osdev、webdev 等等,但最後不是失去了熱誠,就是目標訂得太難,留下一堆爛攤子。