程序員的十層樓1

程序員的十層樓

第1層 菜鳥 
第1層樓屬於地板層,邁進這層樓的門檻是很低的。基本上懂計算機的基本操作,瞭解
計算機專業的一些基礎知識,掌握一門基本的編程語言如C/C++,或者Java,或者
JavaScript,...,均可入門邁進這層。 
在這層上,中國有着絕對的優勢,除了從計算機專業畢業的衆多人數外,還有大量的通
信、自動化、數學等相關專業的人士進入這一行,此外還有衆多的其他專業轉行的人士,人
數絕對比西方多出甚多。並且還有一個優勢就是我們這層人員的平均智商比西方肯定高。 
沒有多少人願意一輩子做菜鳥,因爲做"菜鳥"的滋味實在是不咋的,整天被老大們吆喝
着去裝裝機器,搭建一下測試環境,或者對照着別人寫好的測試用例做一些黑盒測試,好一
點的可以被安排去寫一點測試代碼。當然如果運氣"好"的話,碰到了國內的一些作坊式的公
司,也有機會去寫一些正式的代碼。 
所以,菜鳥們總是在努力學習,希望爬更高的一層樓去。 
第2層 大蝦 
從第1層爬到第2層相對容易一些,以C/C++程序員爲例,只要熟練掌握C/C++編程語
言,掌握C標準庫和常用的各種數據結構算法,掌握STL的基本實現和使用方法,掌握多
線程編程基礎知識,掌握一種開發環境,再對各種操作系統的API都去使用一下,搞網絡
編程的當然對socket編程要好好掌握一下,然後再學習一些面向對象的設計知識和設計模
式等,學習一些測試、軟件工程和質量控制的基本知識,大部分人經過2~3年的努力,都
可以爬到第2層,晉升爲"大蝦"。 
中國的"大蝦"數量和"菜鳥"數量估計不會少多少,所以這層上仍然遠領先於西方。 
大蝦們通常還是有些自知之明,知道自己只能實現一些簡單的功能,做不了大的東西,
有時候還會遇到一些疑難問題給卡住,所以他們對那些大牛級的人物通常是非常崇拜的,國
外的如Robert C. Martin、Linus Torvalds,國內的如求伯君、王志東等通常是他們崇拜的對象。其中的有些人希望有一天也能達到這些大牛級人物的水平,所以他們繼續往樓上爬去。 
第3層 牛人 
由於"大蝦"們經常被一些疑難問題給卡住,所以有了"大蝦"們只好繼續學習,他們需要
將原來所學的知識進一步熟練掌握,比如以熟練掌握C++編程語言爲例,除了學一些基礎性的C++書籍如《C++ Primer》,《Effective C++》,《Think in C++》,《Exception C++》等之外,更重要的是需要了解C++編譯器的原理和實現機制,瞭解操作系統中的內部機制如內存管理、進程和線程的管理機制,瞭解處理器的基礎知識和代碼優化的方法,此外還需要更深入地學習更多的數據結構與算法,掌握更深入的測試和調試知識以及質量管理和控制方法,對各種設計方法有更好的理解等。 
學習上面說的這些知識不是一揮而就的,不看個三五十本書並掌握它是做不到的。以數
據結構算法來說,至少要看個5~10本這方面的著作;以軟件設計來說,光懂結構化設計、
面向對象設計和一些設計模式是不夠的,還要了解軟件架構設計、交互設計、面向方面的設
計、面向使用的設計、面向數據結構算法的設計、情感化設計等,否則是很難進到這個樓層
的。 
當然除了上面說的知識外,大蝦們還需要去學習各種經驗和技巧。當然這點難不倒他們,
現在出版的書籍衆多,網絡上的技術文章更是不勝數,然後再去各種專業論壇裏泡一泡,把
這些書籍和文章中的各種經驗、技能、技巧掌握下來,再去學習一些知名的開源項目如
Apache或Linux操作系統的源代碼實現等。此時對付一般的疑難問題通常都不在話下,菜
鳥和大蝦們會覺得你很"牛",你也就爬到了第3層,晉升爲"牛人"了。

看了上面所講的要求,可能有些大蝦要暈過去了,成爲牛人要學這麼多東西啊!要求是
不是太高了?其實要求一點也不高,這麼點東西都掌握不了的話,怎麼能讓別人覺得你"牛"呢? 需要提一下的是,進入多核時代後,從第2層爬到第3層增加了一道多核編程的門檻。
當然要邁過這道門檻並不難,已經有很多前輩高人邁進了這道門檻,只要循着他們的足跡前
進就可以了。想邁進這道門檻者不妨去學習一下TBB開源項目的源代碼(鏈接:
http://www.threadingbuildingblocks.org/),然後上Intel的博客
http://software.intel.com/zh-cn/blogs/)和多核論壇
http://forum.csdn.net/Intel/IntelMulti-core/)去看看相關文章,再買上幾本相關的書籍學習
一下。 
在國內, 一旦成爲"牛人",通常可以到許多知名的公司裏去,運氣好者可以掛上一個
架構師的頭銜,甚至掛上一個"首席架構師"或者"首席xx學家"的頭銜也不足爲奇。有不少
爬到這層的人就以爲到了樓頂了,可以眼睛往天上看了,開始目空一切起來,以爲自己什麼
都可以做了,什麼都懂了,經常在網絡上亂砸板磚是這個羣體的最好寫照。由此也看出,國
內的牛人數量仍然衆多,遠多於西方的牛人數量,在這層上仍然是領先的。 
也有不少謙虛的"牛人",知道自己現在還不到半桶水階段。他們深知爬樓的遊戲就像猴
子上樹一樣,往下看是笑臉,往上看是屁股。爲了多看笑臉,少看屁股,他們並沒有在此停
步不前,而是繼續尋找到更上一層的樓梯,以便繼續往上爬。

第4層 大牛 
從第3層爬到第4層可不像上面說過的那幾層一樣容易,要成爲大牛的話,你必須要能
做牛人們做不了的事情,解決牛人們解決不了問題。比如牛人們通常都不懂寫操作系統,不
會寫編譯器,不懂得TCP/IP協議的底層實現,如果你有能力將其中的任何一個實現得象模
象樣的話,那麼你就從牛人升級爲"大牛"了。 
當然,由於各個專業領域的差別,這裏舉操作系統、編譯器、TCP/IP協議只是作爲例
子,並不代表成爲"大牛"一定需要掌握這些知識,以時下熱門的多核編程來說,如果你能比
牛人們更深入地掌握其中的各種思想原理,能更加自如的運用,並有能力去實現一個象開源
項目TBB庫一樣的東西,也可以成爲"大牛",又或者你能寫出一個類似Apache一樣的服務器,或者寫出一個數據庫,都可以成爲"大牛"。要成爲"大牛"並不是一件簡單的事情,需要付出比牛人們多得多的努力,一般來說,至少要看過200~400本左右的專業書籍並好好掌握它,除此之外,還得經常關注網絡和期刊雜誌上的各種最新信息。 
當"牛人"晉升爲"大牛",讓"牛人們"發現有比他們更牛的人時,對"牛人"們的心靈的震
撼是可想而知的。由於牛人們的數量龐大,並且牛人對大蝦和菜鳥階層有言傳身教的影響,
所以大牛們通常能獲得非常高的社會知名度,幾乎可以用"引無數菜鳥、大蝦、牛人競折腰"
來形容,看看前面提過的Linus Torvalds等大牛,應該知道此言不虛。 
雖然成爲"大牛"的條件看起來似乎很高似的,但是這層樓並不是很難爬的一層,只要通
過一定的努力,素質不是很差,還是有許多"牛人"可以爬到這一層的。由此可知,"大牛"這
個樓層的人數其實並不像想像的那麼少,例如比爾·蓋茨之類的人好像也是屬於這一層的 
由於"大牛"這層的人數不少,所以也很難統計除到底是中國的"大牛"數量多還是西方的
大牛數量多?我估計應該是個旗鼓相當的數量,或者中國的"大牛"們會更多一些。 
看到這裏,可能會有很多人會以爲我在這裏說瞎話,Linus Torvalds寫出了著名的Linux
操作系統,我國並沒有人寫出過類似的東西啊,我國的"大牛"怎麼能和西方的比呢? 不知大
家注意到沒有,Linus Torvalds只是寫出了一個"象模象樣"的操作系統雛形,Linux後來真正發展成聞名全球的開源操作系統期間,完全是因爲許多支持開源的商業公司如IBM等,派出了許多比Linus Torvalds更高樓層的幕後英雄在裏面把它開發出來的。


 可能有些菜鳥認爲Linus Torvalds是程序員中的上帝,不妨說個小故事: 
Linus,Richard Stallman和Don Knuth(高德納)一同參加一個會議。 
Linus 說:"上帝說我創造了世界上最優秀的操作系統。" 
Richard Stallman自然不甘示弱地說:"上帝說我創造了世界上最好用的編譯器。" 
Don Knuth一臉疑惑的說:"等等,等等,我什麼時候說過這些話?" 
由此可以看出,Linus Torvalds的技術水平並不像想像中那麼高,只是"牛人"和"大蝦"
覺得"大牛"比他們更牛吧了。在我國,有一些當時還處於"大蝦"層的人物,也能寫出介紹如
何寫操作系統的書,並且書寫得非常出色,而且寫出了一個有那麼一點點象模象樣的操作系
統來。我想中國的"大牛"們是不會比西方差的,之所以沒有人寫出類似的商業產品來,完全
是社會環境的原因,並不是技術能力達不到的原因。 
"大牛"們之所以成爲大牛,主要的原因是因爲把"牛人"給蓋了下去,並不是他們自己覺
得如何牛。也許有很多菜鳥、大蝦甚至牛人覺得"大牛"這層已經到頂了,但大多數"大牛"估
計應該是有自知之明的,他們知道自己現在還沒有爬到半山腰,也就勉強能算個半桶水的水
平,其中有些爬到這層沒有累趴下,仍然能量充沛,並且又有志者,還是會繼續往更上一層
樓爬的。 看到這裏,也許有些菜鳥、大蝦、牛人想不明白了,還有比"大牛"們更高的樓層,那會是什麼樣的樓層?下面就來看看第5層樓的奧妙。

 第5層 專家 
當大牛們真正動手做一個操作系統或者類似的其他軟件時,他們就會發現自己的基本功
仍然有很多的不足。以內存管理爲例,如果直接抄襲Linux或者其他開源操作系統的內存管
理算法,會被人看不起的,如果自動動手實現一個內存管理算法,他會發現現在有關內存管
理方法的算法數量衆多,自己並沒有全部學過和實踐過,不知道到底該用那種內存管理算法。 
看到這裏,可能有些人已經明白第5層樓的奧妙了,那就是需要做基礎研究,當然在計
算機裏,最重要的就是"計算"二字,程序員要做基礎研究,主要的內容就是研究非數值"計
算"。 
非數值計算可是一個非常龐大的領域,不僅時下熱門的"多核計算"與"雲計算"屬於非數
值計算範疇,就是軟件需求、設計、測試、調試、評估、質量控制、軟件工程等本質上也屬
於非數值計算的範疇,甚至芯片硬件設計也同樣牽涉到非數值計算。如果你還沒有真正領悟
"計算"二字的含義,那麼你就沒有機會進到這層樓來。 
可能有人仍然沒有明白爲什麼比爾·蓋茨被劃在了大牛層,沒有進到這層來。雖然比爾·蓋
茨大學未畢業,學歷不夠,但是家有藏書2萬餘冊,進入軟件這個行業比絕大部分人都早,
撇開他的商業才能不談,即使只看他的技術水平,也可以算得上是學富五車,頂上幾個普通
的計算機軟件博士之和是沒有問題的,比起Linus Torvalds之類的"大牛"們應該技高一籌纔對,怎麼還進不了這層樓呢? 
非常遺憾的是,從Windows操作系統的實現來看,其對計算的理解是很膚淺的,如果
把Google對計算方面的理解比做大學生,比爾·蓋茨只能算做一個初中生,所以比爾·蓋茨永遠只能做個大牛人,成不了"專家"。 
看到這裏,也許國內的大牛們要高興起來了,原來比爾·蓋茨也只和我等在同一個層次,
只要再升一層就可以超越比爾·蓋茨了。不過爬到這層可沒有從"牛人"升爲"大牛"那麼簡單,
人家比爾·蓋茨都家有2萬多冊書,讓你看個500~1000本以上的專業書籍並掌握好它應該要
求不高吧。當然,這並不是主要的條件,更重要的是,需要到專業的學術站點去學習了,到
ACM,IEEE,Elsevier,SpringerLink,SIAM等地方去下載論文應該成爲你的定期功課,使用Google搜索引擎中的學術搜索更是應該成爲你的日常必修課。此外,你還得經常關注是否有與你研究相關的開源項目冒出來,例如當聽到有TBB這樣針對多核的開源項目時,你應該第一時間到Google裏輸入"TBB"搜索一下,將其源代碼下載下來好好研究一番,這樣也許你的一隻腳已經快邁進了這層樓的門檻。 
當你象我上面說的那樣去做了以後,隨着時間的推移,總會有某天,你發現,在很多小
的領域裏,你已經學不到什麼新東西了,所有最新出來的研究成果你幾乎都知道。此時你會
發現你比在做"牛人"和"大牛"時的水平不知高出了多少,但是你一點也"牛"不起來,因爲你
學的知識和思想都是別人提出來的,你自己並沒有多少自己的知識和思想分享給別人,所以
你還得繼續往樓上爬才行。 
我不知道國內的"專家"到底有多少,不過有一點可以肯定的是,如果把那些專門蒙大家
的"磚家"也算上的話,我們的磚家比西方的要多得多。

 第6層 學者 
當"專家"們想繼續往上一層樓爬時,他們幾乎一眼就可以看到樓梯的入口,不過令他們
吃驚的是,樓梯入口處豎了一道高高的門檻,上面寫着"創新"二字。不幸的是,大多數人在
爬到第5層樓時已經體能消耗過度,無力翻過這道門檻。 
有少數體能充足者,可以輕易翻越這道門檻,但是並不意味着體力消耗過度者就無法翻
越,因爲你只是暫時還沒有掌握恢復體能的方法而已,當掌握了恢復體能的方法,將體能恢
復後,你就可以輕易地翻越這道門檻了。 
怎麼才能將體能恢復呢?我們的老祖宗"孔子"早就教導過我們"溫故而知新",在英文
裏,研究的單詞是"research",其前綴"re"和"search"分別是什麼意思不用我解釋吧。或許有些人覺得"溫故而知新"和"research"有些抽象,不好理解,我再給打個簡單的比方,比如你在爬一座高山,爬了半天,中途體力不支,怎麼恢復體力呢?自然是休息一下,重新進食一些食物,體力很快就可以得到恢復。 
由此可知,對體能消耗過度者,休息+重新進食通常是恢復體能的最佳選擇。可惜的是,
國內的老闆們並不懂得這點,他們的公司裏不僅連正常國家規定的休息時間都不給足,有些
公司甚至有員工"過勞死"出現。所以國內能翻越"創新"這道門檻的人是"少之又少",和西方
比起來估計是數量級的差別。 
再說說重新進食的問題,這個重新進食是有講究的,需要進食一些基礎性易消化的簡單
食物,不能進食山珍海味級的複雜食物,否則很難快速吸收。以查找爲例,並不是去天天盯
着那些複雜的查找結構和算法進行研究,你需要做的是將二分查找、哈希查找、普通二叉樹
查找等基礎性的知識好好地複習幾遍。 
以哈希查找爲例,首先你需要去將各種衝突解決方法如鏈式結構、二次哈希等編寫一遍,
再試試不同種類的哈希函數,然後還需要試試在硬盤中如何實現哈希查找,並考慮數據從硬
盤讀到內存後,如何組織硬盤中的數據才能快速地在內存中構建出哈希表來,...,這樣你可
能需要將一個哈希表寫上十幾個不同的版本,並比較各個版本的性能、功能方面的區別和適
用範圍。 
總之,對任何一種簡單的東西,你需要考慮各種各樣的需求,以需求來驅動研究。最後
你將各種最基礎性的查找結構和算法都瞭然於胸後,或許某天你再看其他更復雜的查找算
法,或者你在散步時,腦袋裏靈光一現,突然間就發現了更好的方法,也就從專家晉升爲"
學者"了。 
學者所做的事情,通常都是在前人的基礎上,進行一些小的優化和改進,例如別人發明
了鏈式基數排序的方法,你第1個發現使用一定的方法,可以用數組替代鏈表進行基數排序,
性能還能得到進一步提高。 
由於學者需要的只是一些小的優化改進,因此中國還是有一定數量的學者。不過和國外
的數量比起來,估計少了一個數量級而已。 
也許有人會覺得現在中國許多公司申請專利的數量達到甚至超過西方發達國家了,我們


的學者數量應該不會比他們少多少。因此,有必要把專利和這裏說的創新的區別解釋一下。 
所謂專利者,只要是以前沒有的,新的東西,都可以申請專利;甚至是以前有的東西,
你把他用到了一個新的領域的產品裏去,也可以申請專利。比如你在房子裏造一個水泥柱子,
只要以前沒有人就這件事申請專利,那麼你就可以申請專利,並且下次你把水泥柱子挪一個
位置,又可以申請一個新的專利;或者你在一個櫃子上打上幾個孔,下次又把孔的位置改一
改,...,均可申請專利。 
這層樓裏所說的創新,是指學術層面的創新,是基礎研究方面的創新,和專利的概念是
完全不同的,難度也是完全不同的。你即使申請了一萬個象那種打孔一類的專利,加起來也
夠不到這層樓裏的一個創新。 
當你爬到第6層樓時,你也許會有一種突破極限的快感,因爲你終於把那道高高的寫着
"創新"二字的門檻給翻過去了,實現了"0"的突破。這時,你也許有一種"獨上高樓,慾望盡
天涯路"的感覺,但是很快你會發現看到的都是比較近的路,遠處的路根本看不清楚。如果
你還有足夠的體力的話,你會想爬到更高一層的樓層去。 
第7層 大師 
從第6層樓爬到第7層樓,並沒有多少捷徑可走,主要看你有沒有足夠的能量。你如果
能象Hoare一樣設計出一個快速排序的算法;或者象Eugene W. Myers一樣設計出了一個用
編輯圖的最短路徑模型來解決diff問題的算法;或者象M.J.D. Powell一樣提出了一個能夠
處理非線性規劃問題的SQP方法;或者你發現基於比較的排序算法,它的複雜度下界爲
O(NLogN);或者你發現用棧可以將遞歸的算法變成非遞歸的;或者你設計出一個紅黑樹或
者AVL樹之類的查找結構;或者你設計出一個象C++或Java一樣的語言;或者你發明了
UML;...,你就爬到了第7層,晉升爲"大師"了。 
上面舉的這些例子中,其中有些人站的樓層比這層高,這裏只是爲了形象說明而舉例他
們的某個成就。從上面列出的一些大師的貢獻可以看出,成爲大師必須要有較大的貢獻。首
先解決問題必須是比較重要的,其次你要比前輩們在某方面有一個較大的提高,或者你解決
的是一個全新的以前沒有解決過的問題;最重要的是,主要的思路和方法必須是你自己提供
的,不再是在別人的思路基礎上進行的優化和改進。 
看了上面這些要求,如果能量不夠的話,你也許會覺得有些困難,所以不是每個人都能
成爲"大師"的。中國軟件業裏能稱得上是"大師"的人,用屈指可數來形容,估計是綽綽有餘。
值得一提得是,國外的"大師"就象我們的"大牛"一樣滿天飛的多。 
我把我猜測本國有可能進到這層樓的大師列一下,以起個拋磚引玉的作用。漢王的"手
寫識別"技術由於是完全保密的,不知道它裏面用了什麼思想,原創思想佔的比重有多少,
因此不知道該把它劃到這層樓還是更高一層樓去。原山東大學王小云教授破解DES和MD5
算法時,用到的方法不知道是不是完全原創的,如果是的話也可進到這層樓來。 
陳景潤雖然沒有徹底解決哥德巴赫猜想,但他在解決問題時所用的方法是創新的,因此
也可以進到這層樓來。當然,如果能徹底解決哥德巴赫猜想,那麼可以算到更高的樓層去。 
求伯君和王志東等大牛們,他們在做WPS和表格處理之類的軟件時,不知是否有較大
的原創算法在裏面,如果有的話就算我錯把他們劃到了大牛層。由於所學有限,不知道國內
還有那些人能夠得上"大師"的級別,或許有少量做研究的教授、院士們,可以達到這個級別,
有知道的不妨回個帖子晾一晾。 
鑑於"大師"這個稱號的光環效應,相信有不少人夢想着成爲"大師"。或許你看了前面舉
的一些大師的例子,你會覺得要成爲大師非常困難。不妨說一下,現在有一條通往"大師"
之路的捷徑打開了,那就是多核計算領域,有大量的處女地等待大家去挖掘。 
以前在單核時代開發的各種算法,現在都需要改寫成並行的。數據結構與算法、圖像處
理、數值計算、操作系統、編譯器、測試調試等各個領域,都存在大量的機會,可以讓你進


到這層樓來,甚至有可能讓你進到更高一層樓去。

第8層 科學家 
科學家向來都是一個神聖的稱號,因此我把他放在了“大師”之上。要成爲科學家,你的
貢獻必須超越大師,不妨隨便舉一些例子。 
如果你象Dijkstra一樣設計了ALGOL語言,提出了程序設計的三種基本結構:順序、
選擇、循環,那麼你可以爬到第8層樓來。順便說一下,即使拋開這個成果,Dijkstra憑他
的PV操作和信號量概念的提出,同樣可以進到這層樓。 
如果你象Don Knuth一樣,是數據結構與算法這門學科的重要奠基者,你也可以進到這
層樓來。當然,數據結構和算法這門學科不是某個人開創的,是許多大師和科學家集體開創
的。 
如果你象巴科斯一樣發明了Fortran語言,並提出了巴科斯範式,對高級程序語言的發
展起了重要作用,你也可以進到這層樓來。 
或者你象Ken Thompson、Dennis Ritchie一樣發明了Unix操作系統和功能強大、高效、
靈活、表達力強的C語言,對操作系統理論和高級編程語言均作出重大貢獻,那麼你也可
以進到這層樓來。 
或者你有Frederick P. Brooks一樣機會,可以去領導開發IBM的大型計算機System/360
和OS/360操作系統,並在失敗後反思總結,寫出《人月神話》,對軟件工程作出里程碑式
的貢獻,你也可以進到這層來。 
或者你提出了面向對象設計的基本思想,或者你設計了互聯網的TCP/IP協議,或者你
象Steven A.Cook一樣奠定NP完全性的理論基礎,或者你象Frances Allen一樣專注於並行
計算來實現編譯技術,在編譯優化理論和技術取得基礎性的成就,…,均可進入這層。 
當然,如果你發明了C++語言或者Java語言,你進不到這層來,因爲你用到的主要思
想都是這層樓中的科學家提出的,你自己並沒有沒有多少原創思想在裏面。 
看了上面列出的科學家的成就,你會發現,要成爲“科學家”,通常要開創一門分支學科,
或者是這個分支學科的奠基者,或者在某個分支學科裏作出里程碑式的重大貢獻。如果做不
到這些的話,那麼你能象Andrew C. Yao(姚期智)一樣在對計算理論的多個方向如僞隨機
數生成,密碼學與通信複雜度等各個方向上作出重要貢獻,成爲集大成者,也可以進入這層
樓。 
成爲“科學家”後,如果你有幸象Dijkstra一樣,出現在一個非常重視科學的國度。當你
去世時,你家鄉滿城的人都會自動地去爲你送葬。不過如果不幸生錯地方的話,能不挨“板
磚”估計就算萬幸了。 
從上面隨便舉的一些例子中,你可能能猜到,西方科學家的數量是非常多的,於是你會
想中國應該也有少量的科學家吧?我可以很負責任地告訴你一個不幸的結果,中國本土產生
的科學家的數量爲0。目前在國內,軟件領域的唯一的科學家就是上面提過的姚期智,還是
國外請回來的,並不是本土產生的。 
可能你不同意我說的本土科學家數量爲0的結論,因爲你經常看到有許多公司裏都有所
謂“首席XX科學家”的頭銜。我想說的是,這些所謂的“首席XX科學家”都是遠遠夠不到這
層樓的級別的,有些人的水平估計也就是一個“牛人”或“大牛”的級別,好一點的最多也就一
個“學者”的級別。尤其是那些被稱作“首席經X學家”的,基本上可以把稱號改爲“首席坑大
家”。 
雖然我國沒有人能爬到這層樓上來,但是西方國家仍然有許多人爬到了比這層更高的樓
上。如果要問我們比西方落後多少?那麼可以簡單地回答爲:“落後了三層樓”。下面就來看
看我們做夢都沒有到過的更高一層樓的祕密。 
第9層 大科學家


 進入這層樓的門檻通常需要一些運氣,比如某天有個蘋果砸到你頭上時,你碰巧發現了
萬有引力,那麼你可以進到這層樓來。當然,萬有引力幾百年前就被人發現了,如果你現在
到處嚷嚷着說你發現了萬有引力,恐怕馬上會有人打110,然後警察會把你送到不正常人類
的聚集地去。因此,這裏舉萬有引力的例子,只是說你要有類似的成就才能進到這層樓來。 
牛頓發現萬有引力定律開創了經典物理運動力學這門學科,如果你也能開創一門大的學
科,那麼你就從科學家晉升爲“大科學家”。比如愛因斯坦創建了相對論,從一個小職員變成
了大科學家。當然大科學家可遠不止這兩人,數學界裏比物理學界更是多得多,如歐幾里得
創建了平面幾何,笛卡爾開創解析幾何,還有歐拉、高斯、萊布尼茨等數不清的人物,跟計
算相關的大科學家則有圖靈等人。 
從上面列出的一些大科學家可以發現,他們的成就不僅是開創了一個大的學科,更重要
的是他們的成就上升到了“公理”的層面。發現公理通常是需要一點運氣的,如果你的運氣不
夠好的話,另外還有一個笨辦法也可以進到這層樓來,那就是成爲集大成者。例如馮·諾伊
曼,對數學的所有分支都非常瞭解,許多領域都有較大的貢獻,即使撇開他對計算機的開創
貢獻,成爲大科學家照樣綽綽有餘。 
當然,程序員們最關心的是自己有沒有機會變成大科學家。既然計算機這門大學科的開
創性成果早就被馮·諾伊曼、圖靈等人摘走了,那麼程序員們是不是沒有機會變成大科學家
了呢?我們的古人說得好:“江山代有才人出,各領風騷數百年”,現在在計算機這門學科下
面誕生了許多非常重要的大的分支,所以你還是有足夠的機會進到這層樓的。 
如果你能夠徹底解決自然語言理解(機器翻譯)這門學科中的核心問題, 或者你在人
工智能或者機器視覺(圖像識別)方面有突破性的發現,那麼你同樣可以輕易地晉升爲“大
科學家”。這樣當某天你老了去世時,或許那天國人已經覺醒,你也能享受到如Dijkstra一
樣的待遇,有滿城甚至全國的人去爲你送葬。 
現在還剩下另外一個大家感興趣的問題沒有討論,那就是這層中已經出現了牛頓、愛因
斯坦、高斯等我們平常人都認爲是頂級的科學家,是不是這層已經是樓頂了呢?相信還記得
本文標題的人應該知道現在僅僅是第9層,還有第10層沒有到達呢。可能不少人現在要感
到困惑了,難道還有人站在比牛頓、愛因斯坦、高斯等人更高的樓層上? 
這個世界上確實存在可以用一隻手的手指數得清的那麼幾個人,他們爬到了第10層樓
上。因此,第10層樓不是虛構的,而是確實存在的。如果對此有疑惑或者認爲我在胡謅一
番的話,那麼不妨繼續往下看下去,窺一下第10層樓的祕密。

 第10層 大哲 
看了這層樓的名字“大哲”,可能不少人已經猜到了這層樓的祕密,那就是你的成果必須
要上升到哲學的高度,你纔有機會能進到這層來。 
當然,上升到哲學高度只是一個必要條件,牛頓的萬有引力似乎也上升到了哲學的高度,
因爲不知道引力到底是怎麼來的,但是牛頓沒有被劃到這一層,因爲進到這層還有另外的條
件,那就是你的成果必須引起了哲學上的深度思考,並能讓人們的世界觀向前跨進一大步。
竊以爲牛頓、愛因斯坦等人的成就還達不到讓人們世界觀向前跨進一大步的程度。 
所以,這層樓中的人的成就對我們普通人認識世界非常重要,你可以不學相對論,但是
你不可以不對這層樓的人所作出的成就不瞭解,否則你的世界觀就是極其不完整的,會犯許
多認識上的錯誤。不幸的是,中國的科普知識普及還不夠到位,知道這層樓成就的人好像並
不多,程序員中恐怕更少。下面就來看看這些用一隻手的手指數得清的大哲們,到底有什麼
成就,能比萬有引力定律和相對論還重要。 
1、希爾伯特 (1862~1943) 
第1位進到此樓層是一位名叫“希爾伯特”的大數學家,如果你學過《泛函分析》,那麼
你在學習希爾伯特空間時可能已經對這位大數學家有所瞭解;如果你不是學數學出身的,又


對數學史不感興趣的話,恐怕你從來沒有聽說過這個名字。不過如果我問一下,知不知道二
次世界大戰前世界數學中心在那裏,你肯定會有興趣想知道。 
不妨說一下,二戰前整個世界的數學中心就在德國的哥廷根,而我們這位大數學家希爾
伯特便是它的統帥和靈魂人物。即使在二戰期間,希特勒和丘吉爾也有協定,德國不轟炸牛
津和劍橋,作爲回報,英國不轟炸海德堡和哥廷根。 
整個二十世紀上半期的超一流數學家,幾乎都出自其門下。這裏不妨舉幾個我們熟悉的
人物,例如馮·諾伊曼就曾受到他和他的學生施密特和外爾的思想影響,還到哥廷根大學任
過希爾伯特的助手,錢學森的老師馮·卡門是在哥廷根取得博士學位的。順便提一下,這位
大數學家發現當時物理學上出了很多大的成果如相對論和量子力學,但是這些物理學家的數
學功力明顯不足,因此有一段時間帶領他的學生們研究過物理學,並獨立發現了廣義相對論,
只是不好意思和物理學家爭功勞,將廣義相對論的功勞全部讓給了愛因斯坦。 
廣義相對論相對於這位大數學家在數學上的貢獻,其實是算不了什麼的,只是由此可看
出這位大數學家品格的高尚之處。如果再去看看牛頓之流的人物的品行,整天和萊布尼茨、
虎克等人爭功勞,利用自己的優勢地位打壓他人,甚至鬧得上法庭,和這位希爾伯特先生比
起來,簡直就是個小丑。 
說到這裏,你可能對這位大數學家“希爾伯特”有了一些初步映象,感覺到了他的重要性,
不過他在數學上的主要成就可不是幾句話說得清楚的。首先,他是一位集大成者,精通當時
數學所有分支領域,在數學的各個領域都有較大的貢獻,當然這些成就只能讓他成爲一個大
科學家,不能帶他進入這層樓。事實上這位“希爾伯特”解決的任何一個數學問題都夠不到這
層樓的高度,那麼他怎麼混到這層樓來了呢? 
話得從1900年說起,當時還很年輕的希爾伯特在當時的世界數學大會上做了一個報告,
高屋建甌地提出了著名的23個未解決的數學問題,然後整個二十世紀上半期,全世界的數
學家們都在這23個問題的指導下展開研究,直到現在仍然有許多數學家受這23個問題的指
導在進行研究。例如我們熟知的哥德巴赫猜想,就屬於其中第8個問題素數分佈的一個子問
題。 
如果用“高瞻遠矚”來形容這位大數學家的話,那麼這個世界上恐怕沒有第二個人再配得
上“高瞻遠矚”這四個字,不論是歐拉、高斯、牛頓、愛因斯坦還是被譽爲最有才華的數學家
伽羅華,概不例外。 
雖然那23個問題是歸納總結出來的,並不全是原創,但是其中有不少問題是可以上升
到哲學的高度,引起深度思考的。可能大多數人都會覺得希爾伯特是進不到這層樓的,我們
知道提出問題的人和解決問題的人是一樣偉大的,何況他提出的問題是如此之多,基於這點,
個人覺得應該讓希爾伯特跨進這層樓的門檻裏。 
看完這位希爾伯特的成就,你可能會覺得對你的世界觀並沒有產生任何影響。確實如此,
他提出的問題不是用來影響你的,而是用來影響其他大科學家和大哲的,下面再來說說另一
位對他提出的23個問題中的第2個問題有傑出貢獻的大哲,你就會感覺到大哲們的成果的
威力了。

 2、哥德爾 (1906~1978) 
這位大哲的名字叫“哥德爾 (Gödel) ”,你可能從來也沒有聽說過這個名字,即使
你讀了一個數學系的博士學位,如果你的研究方向不和這位大哲對口的話,你也不一定了解
這位大哲的成就,更不知道他的成果對我們這個世界有何意義。 
簡單地說,這位大哲20多歲時就證明了兩個定理,一個叫做“哥德爾完全性定理”,另
一個更重要的叫做“哥德爾不完全性定理”。你也許會覺得奇怪,第9層樓的成就就已經上升
到了公理的高度,這種證明定理的事情不是學者和大師們做的事情嗎?怎麼能比第9層樓的
成就還高呢?下面就來簡單說一下這兩個定理的含義,你就會明白這屬於系統級的定理,絕


不是普通的定理和公理所能比擬的。 
“哥德爾完全性定理”證明了邏輯學的幾條公理是完備的,即任何一個由這些公理所產生
出的問題,在這個公理系統內可以判定它是真的還是假的,這個結論表明了我們人類所擁有
的邏輯思維能力是完備的。這條定理並不能將其帶入這層樓來,帶其進入這層樓的是另一條
定理。 
“哥德爾不完全性定理”是在1930年證明的,它證明了現有數學的幾條公理(ZF公理系
統)是不完備的,即由這些公理產生出的問題,無法由這幾條公理判斷它是真的還是假的。
例如希爾伯特23個問題中的第1個問題,也就是著名的康托爾連續統假設,哥德爾在1938
年證明了現有公理系統中不能證明它是“假”的,科恩(Cohen,或許也可以稱得上是“半”個
大哲)在1963年證明了現有公理系統不能證明它是“真”的。最有趣的是,即使你將某個不
可判定的問題,作爲一條新的公理加入進去,所組成的新的公理系統仍然是不完備的,即你
無法構造一個有限條公理的系統,讓這個公理系統是完備的。 
也許你仍然無法理解上面這段話的含義,不妨先說一下它對我們現實世界的影響。你可
能知道1936年出現的圖靈機是現代計算機的理論模型,如果沒有哥德爾不完全性定理的思
想,圖靈機什麼時候能出來是很難說的,所以這位哥德爾可以算作計算機理論的奠基者的奠
基者。計算機對我們這個世界產生的影響比原子彈大了多少,我想不用我說大家也都清楚。
當然,對現實世界的影響只能把哥德爾同圖靈等人一樣劃到大科學家那一層去,能進入這層
乃是另有原因。 
可能你看過《未來戰士》、《***帝國》、《I,Robot》之類的科幻電影,於是你產生製造
一個和人一樣或者比人更高一級的智能機器人的想法,這就引入了一個達到哲學高度的問
題,“人到底能不能製造出具有和人一樣的思維能力的機器來?”。 
我只能告訴你,“你的願望是良好的,但現實是殘酷的”。如果你仔細思考一下不完全性
定理的含義,並結合現代計算機所具有的能力分析一下,你會發現這個問題的答案暫時是否
定的。如果你想造出和人一樣思維能力的機器,那麼你需要去好好學習這位大哲及其後續研
究者的成果,並在他們的基礎上有新的突破才行。 
爲了說明這位大哲所研究領域的重要性,這裏順便再討論一個我們日常爭議不休的問
題,那就是孔夫子的“人之初、性本善”以及西方認爲“人之初、性本惡”的觀點孰優孰劣的問
題。可能有許多人發現西方社會現在領先我們,於是就認爲“性本惡”是對的,“性本善”是錯
的,中國應該拋棄以前的舊思想,改用西方的思想。當然也有一些老學究們,認爲中國的人
文思想是領先於西方的,自然而然地認爲“性本善”是對的,“性本惡”是錯的。 
如果你學過大哲用過的公理化的分析方法,你就知道一套系統的多條公理間只要不會推
導出矛盾的地方,即可以自圓其說,那麼它可以看作是對的。這樣你可以很輕易地給這個問
題下一個結論,即“性本善”和“性本惡”是對等的,不存在孰優孰劣的問題,更不存在誰對誰
錯的問題。只要你不同時將“性本善”和“性本惡”放入一個系統內,那麼是不會有問題的,甚
至你也可以認爲“人之初、既無善、亦無惡”,或者認爲“人之初、部分善、部分惡”,都是可
以自圓其說的,所以我們的老祖宗提出的思想並沒有問題,之所以落後乃是其他原因造成的。
這個問題其實在高斯所處的時代就有了結論,那時有人提出了非歐幾何,即平行線公理問題,
有人認爲過一點可以作多條平行線,還有人認爲平行線在無窮遠點是相交的,和歐氏幾何關
於過一點只能作一條平行線的公理都是矛盾的,但是他們各自的系統內推導出的結論都是正
確的。 
上面說的只是對哥德爾不完全性定理的一些粗淺解析,實際上如果深入思考一下它的含
義的話,你會發現它對物理學等許多學科有重大影響,包含的道理實在是深刻,遠非一般的
思想所能比擬,有興趣者不妨“google”或“百度”一下“哥德爾”。或許只有我們的老祖宗“老子”
提出的哲學思想,深度可以有得一比。


 哥德爾不完全性定理也給那些認爲科學是嚴謹的人當頭一棒,原來連數學這樣的純理論
學科都是不嚴謹的,其他學科就更不用說了。 
至此,已經說完數學上的大哲,下面不妨再看看物理學上的大哲,物理學上好像只出過
一位叫“海森堡”的大哲(注:由於本人對物理學不甚瞭解,不知道“霍金”夠不夠得上大哲的
稱號)。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章