我與大師的距離

今年年初立定了一個想要進行一個自我修煉的計劃,於是從家裡書架上挑了一本書『名題精選百則 – 使用 C 語言』(by 冼鏡光)。從書名看起來就是一本很適合當自我修煉的書,每個人的書架上可能都會有這麼一本書,買了很久,當初買的時候可能是買心安的,或是翻了幾頁覺得好像就這樣於是就那麼擺著。這本書被我供在書架上已經一段時間了,當初買的時候覺得總會有時間可以認真看一下,於是拿回家看個幾題然後自己在心中寫著空氣程式然後自我感覺良好的想著:嗯,好的,好像不難嘛,然後更加自我感覺良好的延伸到其他的題目應該也差不多吧~ 於是這本書就被供奉着(我想更多人供奉着的書應該是 The Art of Computer Programming, by Donald Knuth)。

原本目標是每天練個一題,但後來發現有點不實際,畢竟有時候會卡關或是晚下班的話就更難了。於是就有時間就盡量寫。寫第一題的時候寫完覺得很簡單,但去參照一下冼老師的寫法(書有附完整的 C code 解答)之後發現自己與大師的距離還真遠啊。

第一題就只是要從一個已經從小到大排序過的數列中找出最長的平台,例如 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6這個數列的最長平台是 3, 3, 3。以下是我的寫法:

相較於以下冼老師的寫法可以很明顯的看出大師的寫法簡潔許多啊。

噢,對了,因為我近來對 JavaScript 比較有愛(雖然我心中最愛還是C++),所以都是用 JS 寫,然後以 NodeJS 來執行。目前為止的練習都放在 Github 上,也持續在更新中,然後對應的冼老師的解法,我也有轉成對應的 JS 版。

工作了許多年,一直以來在尋求繼續精進自己的技能,除了時而感嘆總有學不完的新技術外卻還是不得不學的無奈之外,對一個軟體工程師而言,內功的修煉與要求可能還是重要許多。在工作的過程中,可以體認到的是要寫出完全沒有 bug 的 code 大概是很難,但是隨著經驗與經歷的累加,讓 bug 變少總是可能的。再者,寫出高效能的程式更是需要許多的練習與磨練,如本站總編輯所說的練習是不會騙人的,在這個還未完成的短暫練習中我重新的 pick up 了一些電腦科學的數學基礎,雖然大部分與工作時項目不見得直接相關,但是在幾次的練習後可以很明顯的感覺到寫 code 時的思路有稍微清晰一些(不知道是不是自我感覺良好的錯覺)。

在這練習中有時候會卡關,但是我發現有時候就不要想那麼多,先用個暴力解法之後再去參考說明之後那種恍然大誤的感覺反而收獲更大。每一個程式設計師總是該有一個自我的修煉,畢竟每天陷在一個沒有成就感的世界中,人生的耗損是很可怕的啊。

祝大家都能找到一條自我修煉之路,來拉近與大師的距離。



Comments
  1. caterpillar
    回覆
  2. 回覆

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *