所以基本還是很重要的

2010.05.11 (二)
 
3/31 這幾天面試有感這一篇中,有提到我在面試時相當重視基本的資料結構和演算法。

有些朋友回答我說,其實像他們都不是很重視。
有些朋友也說:不會這些還是可以做程設啊!



image
(再次聲名圖片和主題無關...我只是想要在職場類的文章都加上OL圖而已)
 

程式設計的兩個觀點 中,作者王建興先生也有提到類似的觀點。

文章前面2 /3 乍看似乎是說基礎的不必要~~
但剛好相反,在後半時,作者話鋒一轉,帶出了基礎的重要性。

....為什麼即使已經有許多現成的演算法及資料結構,甚至是其他用途的程式庫,程式員還是必須修習像演算法及資料結構這樣子的課程?

演算法基本是一門探討以電腦程式解決問題的學問,時間複雜度和空間複雜度是貫穿演算法這門學問的主要支柱。

時間複雜度和空間複雜度所代表的是什麼?正是代表解決問題在時間上以及空間上所需付出的代價。

我們學習演算法,除了學習常見的演算問題分類,以及如何解決這些演算問題之外, 更重要的是要學習解決問題的方法,以及培養解決問題時的成本意識。


即使大多數的應用程式開發者毋需憂心於新型演算法的設計問題,但是對於常見的演算法諸如排序、搜尋等,最好具備一定的認識, 在撰寫程式時才能知道究竟有那些工具可供取用。

而且,更重要的是,在撰寫程式碼時,隨時都應該對演算的成本保持警覺,尤其對於每一個高階的抽象操作, 都應該確切的了解其演算的成本及代價。

高階抽象包裝有時就像糖衣,它包覆的究竟對你來說是不是毒藥,必須要時時刻刻小心。
倘若在撰寫程式時,僅考慮架構上的特性,缺乏成本意識、忽略了演算特性,那麼還是很容易在無意中寫下效能低落的程式碼,無法設計出新的演算法不是真正的問題所在,這才是真正的問題所在!...


程設人員的優與劣,可相差至百倍之譜。
不是只有將程式碼拼湊起來,就可以交差。

抓的到老鼠的就是好貓。
但是,太肥或反應太慢的貓,確定抓的到老鼠嗎?

這些基本的東西,也是我在面試時,一定會問的。
順便也可以看看本科系的應試者,當初學習的情況。
也希望剛出社會,想走這一行的新鮮人,多花些時間在這些你所謂 "已經不需要" 的東西上面。
Share on Google Plus

About 賴大鐵


    Blogger Comment
    Facebook Comment

0 意見:

張貼留言

Related Posts Plugin for WordPress, Blogger...