史蒂芬斯與演算法導論之思

duxingzhe發表於2018-02-14

休息在家,有空拜讀了史蒂芬斯先生的六本傳世之作Advanced Programming in the Unix EnvironmentUnix Network ProgrammingTCP/IP Illustrated,還有就是MIT出版的Introduction to Algorithm。經歷了一年碼農的洗禮,對於這幾本每本都厚達900多頁的書籍,終於能有能力去挑戰,也感到十分高興和激動。

隨著時代的發展,程式設計技術逐步大眾化,同時語言開發工具也開始逐步自動化,智慧化。越來越完善的資料,越來越豐富的開原始碼,讓每一個人似乎都能輕易地學習。無論在什麼領域,安卓、iOS、安全、前端,彷彿都有前人為我們準備的一系列框架。比如安全工具的Metasploit、sqlmap、nmap,比如機器學習的tensorflow,又比如前端的Node.js、Vue.js、Bootstrap。

於是一股思潮便孕育而生:工具比原理更重要,框架比底層更重要。的確,工具框架是顯而易見的,是可以立馬使用的,立竿見影的。而原理和底層又是如此艱澀難懂。

現在那麼多公眾號和部落格都在近乎瘋傳著Python和AI。給出的理由就是:年薪很高。記得大二之時,Android同樣如此。現在呢?React Native也是。2017年5月,谷歌宣佈Kotlin作為一級安卓開發語言,於是一夜之間所有與Android有關的公眾號都在打雞血的推送著Kotlin,持續了近兩個月。而AlphaGo以來,更是長篇累牘的吹著人工智慧。

熱門,誰知道斗轉星移、瞬息萬變的網際網路,那些具體領域是否會一直熱門下去?安卓很火,我莞爾一笑:也就是幾年前,彷彿就是昨天,塞班也很火。去年的O2O帶動了移動端,也吸引著資本進入移動端開發。結果O2O倒閉潮開始,Android與iOS也逐漸飽和。

當我逐步入門,特別是學習JPEG的一個庫的時候才驚訝的發現。設計了JPEG的組織只是給出瞭解析方式和壓縮方式,而並未給出相關解析程式碼。不由得感慨:一流公司制定標準、二流公司實現標準、三流公司應用標準。有一些人跑過來問我:大哥,為啥有那麼多輪子,我們還要學資料結構自己造呢?我回答他:您可以跑到國務院去,問總理為什麼美國有了全球定位系統,而我們還要自己弄個北斗導航呢?

如今,開源也有20年的歷史。正是有了這一場運動,讓大多數人能夠參與到程式設計的樂趣當中。而史蒂芬斯等人對標準化Unix作業系統的貢獻,遠大於實現。正是有了這些前輩的努力,我們才有標準化的工具,才能讓每一臺電腦都能享受到網際網路的樂趣。也或許是我們走得太順,以至於覺得我們現在可以不需要那麼辛苦,忘記了來時的路。

開源確實很美好,但是反問一句:最核心的是否開源?谷歌公司曾用三篇論文開啟Web 2.0。但是不好意思,這三篇所及的系統至今未開源。

願在這浮躁的世界,能有一顆平靜的心,不追求所謂的熱點,而是堅持半衰期長的知識。因為只要計算機行業一日還在,史蒂芬斯的書籍、演算法導論、系統結構、資料結構等理論只會愈發重要和夯實,而且數學和英語都將是基本實力,更不會因為年齡而退化,反而會愈久彌香,像一罈老酒會因為時間的變長而愈發醇香。基礎學科的重要性和對人成長的意義,只有學得深入之後才能慢慢體會到。

相關文章