讓我們迴歸
BY 默難
個人感受,文字粗糙,語言無條理,望多多見諒
我---曾經很是自以為是的人---以前天真之極:認為自己的編程水平不敢說是高手,那麼至少也脫離了初學者了---不管怎麼說,我也是有過近萬行代碼編程經驗的人,也開發過5000多行代碼的程式;而且還表面謙虛地把代碼給網友看,在得到一些高人的鼓勵後,表面依然謙虛的說上些客套話,然後獨自洋洋得意起來;在同學面前,大肆談論著電腦---儘管他們未必明白我說的東西,但我的目的是:讓他們覺得我已經脫離世俗,來到了程式設計的極高境界………………如今想來,我是那麼虛偽,那麼天真,那麼………然而,有一天我逛書店時---依舊只奔向電腦書籍---發現了一個電腦界眾所周知卻很多人都忽視的事物:電腦理論知識!
沒錯!理論!也許各位會說:理論的東西,要應用到實踐中的~沒錯!!絕對沒錯!!但是,我要問:你理論掌握的如何?編譯原理?作業系統?資料結構?演算法?有多少人敢說這些東西他都已經爛熟於心了?這些不掌握好,如何去指導實踐?
因此,我強烈建議:讓我們迴歸,迴歸到理論,並將理論應用到實踐中去。
似乎提到理論,很多人都要想到枯燥,乏味,沒用。首先,我聲明:我絕對反對那種鑽牛角尖行為,但是,也絕對反對那些絕對實踐主義。我們要認識到:實踐確實可以產生並檢驗理論,但同時,理論更可以指導實踐!我不想討論過多的哲學上的問題---這方面我不在行---但是我希望能通過我的文章,喚醒那些依然沉浸在所謂的“實踐”中的人們。
記得我曾經網上遇到一位兄弟,很是狂妄自大,自稱:“在和某某人學駭客”(我才智愚鈍,不懂“駭客”這東西怎麼學,但這位兄弟的確是這麼說的)當問起他:“你用什麼編程?”時,他的回答是:“我的方向是駭客,不是程式設計”…………當時只想不再理這人了,但是礙於面子(他是我朋友的網友……真不知道我朋友的交友原則是什麼……)沒這麼作。之後,我問他是否看過Richard的《TCP/IP詳解》(既然是“學駭客”的,這種就連我這愚才也讀過的駭客聖經層級的書應該看過吧……)他卻問:“那是什嗎?”之後,他說了N多個完全不符合基本原理的話(當時真是懷疑他喝酒了)最後我實在無奈了,告訴他:“你看看一些理論方面的東西吧,不要想什麼入侵什麼攻擊,更不要想流光怎麼用,冰河怎麼用這些問題了……”(其實,我說的《TCP/IP詳解》之類的書還不算是真正意義上的電腦理論書籍)他的回答確實很強:“理論?理論能幹什嗎?”我當時二話沒錯---管他面子不面子---就請這位“高人”入了我的黑名單……
這種人實在是受不了的,他們簡直是完完全全的片面實用主義(注意我的定語:我看他們這種人不算什麼實用主義)他們只是想知道:現在這個問題應該怎麼解決,而不是考慮:為什麼會有這種問題,這種問題的根源是什麼,原理是什嗎?根據原理是否還會有其他問題?等等~
還有一些人,他們熱衷於特定語言的基本特性,他們考慮著很多非常實用的問題---這些都是很好的現象,當初我也是如此,但是,他們似乎總忽略一些事情,比如:程式的演算法,不要忘記:Algorithm---the Spirit of Computing不管你用這門語言多麼熟練,不管你背下多少標準庫和系統函數,但是,你光有這些,而忽略演算法的重要性,那麼絕對不會寫出高效率的程式的。
似乎程式員很怕記憶體管理方面的錯誤:記憶體泄露,野指標等等,因為他們很難被查覺到。但是,演算法上的問題,卻是比這些問題還要棘手的:也許一個程式正常運行了,沒有錯誤,運行良好,但是,如果它的演算法是不完善的,那麼,也許程式員一輩子也不會發現。
現在似乎都在忽視著演算法這個重要的東西,看看吧:RSA的設計者(Ronald L. Rivest;Adi Shamir;Leonard M. Adleman)榮獲此殊榮,但是,又有多少媒體報道了這件事情呢?用google搜尋:“RSA 圖靈獎 2002”(引號不算為搜尋索引鍵),結果只有可憐的25項……其中還有一些是與這件事無關的新聞……大家都怎麼了?難道這種電腦界的大事不該好好宣傳一下嗎?
再來看看我們的書店吧~我是屬於常逛書店的人,加上在首都北京,應該算是文化底蘊比較豐厚的了,那麼書店裡面電腦書籍情況如何呢?
一個中等型號的書店,裡面的電腦書只有廖廖幾個書架,而都是什麼書籍呢?我們來看看:最多的就是些入門書籍,什麼windows操作,五筆,練打字等等其次是一些圖象處理書籍:PhotoShop Flash等等。接著是些辦公軟體,網頁製作之類的:Office(95%左右的辦公軟體書籍都是Office……)Frontpage等等。還有就是系統管理,資料庫之類:Win2k系統管理 Linux系統管理 SQL等等。還有程式設計:主要是些入門書籍,21天學通C++(我不知道作者是何等高人,21天就可以學通C++……)而主要的還是VB ASP等等。對了~還有一個很大很大的團體:網路安全,這裡面有用的書籍我看就那麼幾本:密碼學 網路安全真相,而更多的是那些“片面實用主義”們讀的讀物:《駭客,就這麼幾招》(挺佩服作者的,居然起了這麼強的書名……說實在的,如今的一些“駭客”---似乎叫他們駭客更合適---也就是那麼幾招了……)那些書我翻了翻,暗自覺得好笑:把一個個的螢幕放到書上,然後在旁邊做上標識,告訴你:點這個鍵……與其說是教“網路安全”不如說是教windows基礎操作……而最最慘的,就是電腦理論方面的書籍了,廖廖幾本,前幾天想找個演算法方面的書,到了書店,猛翻海找,才找到3種……還有一些資料結構的書,裡面理所當然也要介紹些演算法,總共加起來不過6種……至於編譯原理,作業系統這些書更是稀有品種……
其實,像Richard的APUE,《TCP/IP詳解》,UNIX網路編程,還有道戈拉斯的《電腦網路》,Andrew的《C Traps and Pitfalls》等等那些書籍,絕對是經典,值得一讀的。但是,像資料結構,編譯原理,演算法設計作業系統等等的理論方面書籍也要重視,他們才是電腦的真正靈魂,無論電腦如何發展,如果你能瞭解電腦的理論知識,那麼你就很容易走在時代前沿,就好像:如果你只知道1+1=2,那麼你不會作出其他加法題,如果你學會加法,那麼無論是1+1 1+2 1+3還是多少加多少,你都可以迎刃而解~