[轉(zhuǎn)] 程序員的十層樓
自西方文藝復(fù)興以來(lái),中國(guó)在自然科學(xué)方面落后西方很多,軟件領(lǐng)域也不例外。當(dāng)然現(xiàn)在中國(guó)的許多程序員們對(duì)此可能有許多不同的意見(jiàn),有些人認(rèn)為中國(guó)的程序員水平遠(yuǎn)落
后于西方,有些則認(rèn)為中國(guó)的程序員個(gè)人能力并不比西方的程序員差,只是整個(gè)軟件產(chǎn)
業(yè)落后而已。
那么,到底中國(guó)的程序員水平比西方程序員水平差,還是中國(guó)有許多優(yōu)秀的程序員
達(dá)到或超過(guò)了西方程序員同等水平呢?要解決這個(gè)問(wèn)題,必須先知道程序員有多少種技
術(shù)層級(jí),每個(gè)層級(jí)需要什么樣的技術(shù)水平,然后再比較中國(guó)和西方在各個(gè)技術(shù)層級(jí)的人
數(shù),就可以知道到底有沒(méi)有差距,差距有多大。
當(dāng)然,對(duì)于如何劃分程序員的技術(shù)層級(jí),不同公司或不同人會(huì)有不同的劃分標(biāo)準(zhǔn),
下面的劃分僅代表個(gè)人的觀點(diǎn),如有不當(dāng)之處,還請(qǐng)?jiān)野宕u予以糾正。
第1層 菜鳥(niǎo)
第1層樓屬于地板層,邁進(jìn)這層樓的門檻是很低的。基本上懂計(jì)算機(jī)的基本操作,
了解計(jì)算機(jī)專業(yè)的一些基礎(chǔ)知識(shí),掌握一門基本的編程語(yǔ)言如C/C++,或者Java,或者
JavaScript,...,均可入門邁進(jìn)這層。
在這層上,中國(guó)有著絕對(duì)的優(yōu)勢(shì),除了從計(jì)算機(jī)專業(yè)畢業(yè)的眾多人數(shù)外,還有大量
的通信、自動(dòng)化、數(shù)學(xué)等相關(guān)專業(yè)的人士進(jìn)入這一行,此外還有眾多的其他專業(yè)轉(zhuǎn)行的
人士,人數(shù)絕對(duì)比西方多出甚多。并且還有一個(gè)優(yōu)勢(shì)就是我們這層人員的平均智商比西
方肯定高。
沒(méi)有多少人愿意一輩子做菜鳥(niǎo),因?yàn)樽?菜鳥(niǎo)"的滋味實(shí)在是不咋的,整天被老大們
吆喝著去裝裝機(jī)器,搭建一下測(cè)試環(huán)境,或者對(duì)照著別人寫(xiě)好的測(cè)試用例做一些黑盒測(cè)
試,好一點(diǎn)的可以被安排去寫(xiě)一點(diǎn)測(cè)試代碼。當(dāng)然如果運(yùn)氣"好"的話,碰到了國(guó)內(nèi)的一
些作坊式的公司,也有機(jī)會(huì)去寫(xiě)一些正式的代碼。
所以,菜鳥(niǎo)們總是在努力學(xué)習(xí),希望爬更高的一層樓去。
第2層 大蝦
從第1層爬到第2層相對(duì)容易一些,以C/C++程序員為例,只要熟練掌握C/C++編程語(yǔ)
言,掌握C標(biāo)準(zhǔn)庫(kù)和常用的各種數(shù)據(jù)結(jié)構(gòu)算法,掌握STL的基本實(shí)現(xiàn)和使用方法,掌握多
線程編程基礎(chǔ)知識(shí),掌握一種開(kāi)發(fā)環(huán)境,再對(duì)各種操作系統(tǒng)的API都去使用一下,搞網(wǎng)
絡(luò)編程的當(dāng)然對(duì)socket編程要好好掌握一下,然后再學(xué)習(xí)一些面向?qū)ο蟮脑O(shè)計(jì)知識(shí)和設(shè)
計(jì)模式等,學(xué)習(xí)一些測(cè)試、軟件工程和質(zhì)量控制的基本知識(shí),大部分人經(jīng)過(guò)2~3年的努
力,都可以爬到第2層,晉升為"大蝦"。
中國(guó)的"大蝦"數(shù)量和"菜鳥(niǎo)"數(shù)量估計(jì)不會(huì)少多少,所以這層上仍然遠(yuǎn)領(lǐng)先于西方。
大蝦們通常還是有些自知之明,知道自己只能實(shí)現(xiàn)一些簡(jiǎn)單的功能,做不了大的東
西,有時(shí)候還會(huì)遇到一些疑難問(wèn)題給卡住,所以他們對(duì)那些大牛級(jí)的人物通常是非常崇
拜的,國(guó)外的如Robert C. Martin、Linus Torvalds,國(guó)內(nèi)的如求伯君、王志東等通常
是他們崇拜的對(duì)象。其中的有些人希望有一天也能達(dá)到這些大牛級(jí)人物的水平,所以他
們繼續(xù)往樓上爬去。
第3層 牛人
由于"大蝦"們經(jīng)常被一些疑難問(wèn)題給卡住,所以有了"大蝦"們只好繼續(xù)學(xué)習(xí),他們
需要將原來(lái)所學(xué)的知識(shí)進(jìn)一步熟練掌握,比如以熟練掌握C++編程語(yǔ)言為例,除了學(xué)一
些基礎(chǔ)性的C++書(shū)籍如《C++ Primer》,《Effective C++》,《Think in C++》,
《Exception C++》等之外,更重要的是需要了解C++編譯器的原理和實(shí)現(xiàn)機(jī)制,了解操
作系統(tǒng)中的內(nèi)部機(jī)制如內(nèi)存管理、進(jìn)程和線程的管理機(jī)制,了解處理器的基礎(chǔ)知識(shí)和代
碼優(yōu)化的方法,此外還需要更深入地學(xué)習(xí)更多的數(shù)據(jù)結(jié)構(gòu)與算法,掌握更深入的測(cè)試和
調(diào)試知識(shí)以及質(zhì)量管理和控制方法,對(duì)各種設(shè)計(jì)方法有更好的理解等。
學(xué)習(xí)上面說(shuō)的這些知識(shí)不是一揮而就的,不看個(gè)三五十本書(shū)并掌握它是做不到的。
以數(shù)據(jù)結(jié)構(gòu)算法來(lái)說(shuō),至少要看個(gè)5~10本這方面的著作;以軟件設(shè)計(jì)來(lái)說(shuō),光懂結(jié)構(gòu)
化設(shè)計(jì)、面向?qū)ο笤O(shè)計(jì)和一些設(shè)計(jì)模式是不夠的,還要了解軟件架構(gòu)設(shè)計(jì)、交互設(shè)計(jì)、
面向方面的設(shè)計(jì)、面向使用的設(shè)計(jì)、面向數(shù)據(jù)結(jié)構(gòu)算法的設(shè)計(jì)、情感化設(shè)計(jì)等,否則是
很難進(jìn)到這個(gè)樓層的。
當(dāng)然除了上面說(shuō)的知識(shí)外,大蝦們還需要去學(xué)習(xí)各種經(jīng)驗(yàn)和技巧。當(dāng)然這點(diǎn)難不倒
他們,現(xiàn)在出版的書(shū)籍眾多,網(wǎng)絡(luò)上的技術(shù)文章更是不勝數(shù),然后再去各種專業(yè)論壇里
泡一泡,把這些書(shū)籍和文章中的各種經(jīng)驗(yàn)、技能、技巧掌握下來(lái),再去學(xué)習(xí)一些知名的
開(kāi)源項(xiàng)目如Apache或Linux操作系統(tǒng)的源代碼實(shí)現(xiàn)等。此時(shí)對(duì)付一般的疑難問(wèn)題通常都
不在話下,菜鳥(niǎo)和大蝦們會(huì)覺(jué)得你很"牛",你也就爬到了第3層,晉升為"牛人"了。
看了上面所講的要求,可能有些大蝦要暈過(guò)去了,成為牛人要學(xué)這么多東西啊!要
求是不是太高了?其實(shí)要求一點(diǎn)也不高,這么點(diǎn)東西都掌握不了的話,怎么能讓別人覺(jué)
得你"牛"呢?
需要提一下的是,進(jìn)入多核時(shí)代后,從第2層爬到第3層增加了一道多核編程的門檻
。當(dāng)然要邁過(guò)這道門檻并不難,已經(jīng)有很多前輩高人邁進(jìn)了這道門檻,只要循著他們的
足跡前進(jìn)就可以了。想邁進(jìn)這道門檻者不妨去學(xué)習(xí)一下TBB開(kāi)源項(xiàng)目的源代碼(鏈接:
http://www.threadingbuildingblocks.org/),然后上Intel的博客
(http://softwareblogs-zho.intel.com/)和多核論壇
(http://forum.csdn.net/Intel/IntelMulti-core/)去看看相關(guān)文章,再買上幾本相
關(guān)的書(shū)籍學(xué)習(xí)一下。
在國(guó)內(nèi), 一旦成為"牛人",通常可以到許多知名的公司里去,運(yùn)氣好者可以掛上
一個(gè)架構(gòu)師的頭銜,甚至掛上一個(gè)"首席架構(gòu)師"或者"首席xx學(xué)家"的頭銜也不足為奇。
有不少爬到這層的人就以為到了樓頂了,可以眼睛往天上看了,開(kāi)始目空一切起來(lái),以
為自己什么都可以做了,什么都懂了,經(jīng)常在網(wǎng)絡(luò)上亂砸板磚是這個(gè)群體的最好寫(xiě)照。
由此也看出,國(guó)內(nèi)的牛人數(shù)量仍然眾多,遠(yuǎn)多于西方的牛人數(shù)量,在這層上仍然是領(lǐng)先
的。
也有不少謙虛的"牛人",知道自己現(xiàn)在還不到半桶水階段。他們深知爬樓的游戲就
像猴子上樹(shù)一樣,往下看是笑臉,往上看是屁股。為了多看笑臉,少看屁股,他們并沒(méi)
有在此停步不前,而是繼續(xù)尋找到更上一層的樓梯,以便繼續(xù)往上爬。
第4層 大牛
從第3層爬到第4層可不像上面說(shuō)過(guò)的那幾層一樣容易,要成為大牛的話,你必須要
能做牛人們做不了的事情,解決牛人們解決不了問(wèn)題。比如牛人們通常都不懂寫(xiě)操作系
統(tǒng),不會(huì)寫(xiě)編譯器,不懂得TCP/IP協(xié)議的底層實(shí)現(xiàn),如果你有能力將其中的任何一個(gè)實(shí)
現(xiàn)得象模象樣的話,那么你就從牛人升級(jí)為"大牛"了。
當(dāng)然,由于各個(gè)專業(yè)領(lǐng)域的差別,這里舉操作系統(tǒng)、編譯器、TCP/IP協(xié)議只是作為
例子,并不代表成為"大牛"一定需要掌握這些知識(shí),以時(shí)下熱門的多核編程來(lái)說(shuō),如果
你能比牛人們更深入地掌握其中的各種思想原理,能更加自如的運(yùn)用,并有能力去實(shí)現(xiàn)
一個(gè)象開(kāi)源項(xiàng)目TBB庫(kù)一樣的東西,也可以成為"大牛",又或者你能寫(xiě)出一個(gè)類似
Apache一樣的服務(wù)器,或者寫(xiě)出一個(gè)數(shù)據(jù)庫(kù),都可以成為"大牛"。
要成為"大牛"并不是一件簡(jiǎn)單的事情,需要付出比牛人們多得多的努力,一般來(lái)說(shuō)
,至少要看過(guò)200~400本左右的專業(yè)書(shū)籍并好好掌握它,除此之外,還得經(jīng)常關(guān)注網(wǎng)絡(luò)
和期刊雜志上的各種最新信息。
當(dāng)"牛人"晉升為"大牛",讓"牛人們"發(fā)現(xiàn)有比他們更牛的人時(shí),對(duì)"牛人"們的心靈
的震撼是可想而知的。由于牛人們的數(shù)量龐大,并且牛人對(duì)大蝦和菜鳥(niǎo)階層有言傳身教
的影響,所以大牛們通常能獲得非常高的社會(huì)知名度,幾乎可以用"引無(wú)數(shù)菜鳥(niǎo)、大蝦
、牛人競(jìng)折腰"來(lái)形容,看看前面提過(guò)的Linus Torvalds等大牛,應(yīng)該知道此言不虛。
雖然成為"大牛"的條件看起來(lái)似乎很高似的,但是這層樓并不是很難爬的一層,只
要通過(guò)一定的努力,素質(zhì)不是很差,還是有許多"牛人"可以爬到這一層的。由此可知,
"大牛"這個(gè)樓層的人數(shù)其實(shí)并不像想像的那么少,例如比爾·蓋茨之類的人好像也是屬
于這一層的。
由于"大牛"這層的人數(shù)不少,所以也很難統(tǒng)計(jì)除到底是中國(guó)的"大牛"數(shù)量多還是西
方的大牛數(shù)量多?我估計(jì)應(yīng)該是個(gè)旗鼓相當(dāng)?shù)臄?shù)量,或者中國(guó)的"大牛"們會(huì)更多一些。
看到這里,可能會(huì)有很多人會(huì)以為我在這里說(shuō)瞎話,Linus Torvalds寫(xiě)出了著名的
Linux操作系統(tǒng),我國(guó)并沒(méi)有人寫(xiě)出過(guò)類似的東西啊,我國(guó)的"大牛"怎么能和西方的比
呢? 不知大家注意到?jīng)]有,Linus Torvalds只是寫(xiě)出了一個(gè)"象模象樣"的操作系統(tǒng)雛形
,Linux后來(lái)真正發(fā)展成聞名全球的開(kāi)源操作系統(tǒng)期間,完全是因?yàn)樵S多支持開(kāi)源的商
業(yè)公司如IBM等,派出了許多比Linus Torvalds更高樓層的幕后英雄在里面把它開(kāi)發(fā)出
來(lái)的。
可能有些菜鳥(niǎo)認(rèn)為L(zhǎng)inus Torvalds是程序員中的上帝,不妨說(shuō)個(gè)小故事:
Linus,Richard Stallman和Don Knuth(高德納)一同參加一個(gè)會(huì)議。
Linus 說(shuō):"上帝說(shuō)我創(chuàng)造了世界上最優(yōu)秀的操作系統(tǒng)。"
Richard Stallman自然不甘示弱地說(shuō):"上帝說(shuō)我創(chuàng)造了世界上最好用的編譯器。"
Don Knuth一臉疑惑的說(shuō):"等等,等等,我什么時(shí)候說(shuō)過(guò)這些話?"
由此可以看出,Linus Torvalds的技術(shù)水平并不像想像中那么高,只是"牛人"和"
大蝦"覺(jué)得"大牛"比他們更牛吧了。在我國(guó),有一些當(dāng)時(shí)還處于"大蝦"層的人物,也能
寫(xiě)出介紹如何寫(xiě)操作系統(tǒng)的書(shū),并且書(shū)寫(xiě)得非常出色,而且寫(xiě)出了一個(gè)有那么一點(diǎn)點(diǎn)象
模象樣的操作系統(tǒng)來(lái)。我想中國(guó)的"大牛"們是不會(huì)比西方差的,之所以沒(méi)有人寫(xiě)出類似
的商業(yè)產(chǎn)品來(lái),完全是社會(huì)環(huán)境的原因,并不是技術(shù)能力達(dá)不到的原因。
"大牛"們之所以成為大牛,主要的原因是因?yàn)榘?牛人"給蓋了下去,并不是他們自
己覺(jué)得如何牛。也許有很多菜鳥(niǎo)、大蝦甚至牛人覺(jué)得"大牛"這層已經(jīng)到頂了,但大多數(shù)
"大牛"估計(jì)應(yīng)該是有自知之明的,他們知道自己現(xiàn)在還沒(méi)有爬到半山腰,也就勉強(qiáng)能算
個(gè)半桶水的水平,其中有些爬到這層沒(méi)有累趴下,仍然能量充沛,并且又有志者,還是
會(huì)繼續(xù)往更上一層樓爬的。
看到這里,也許有些菜鳥(niǎo)、大蝦、牛人想不明白了,還有比"大牛"們更高的樓層,
那會(huì)是什么樣的樓層?下面就來(lái)看看第5層樓的奧妙。
第5層 專家
當(dāng)大牛們真正動(dòng)手做一個(gè)操作系統(tǒng)或者類似的其他軟件時(shí),他們就會(huì)發(fā)現(xiàn)自己的基
本功仍然有很多的不足。以內(nèi)存管理為例,如果直接抄襲Linux或者其他開(kāi)源操作系統(tǒng)
的內(nèi)存管理算法,會(huì)被人看不起的,如果自動(dòng)動(dòng)手實(shí)現(xiàn)一個(gè)內(nèi)存管理算法,他會(huì)發(fā)現(xiàn)現(xiàn)
在有關(guān)內(nèi)存管理方法的算法數(shù)量眾多,自己并沒(méi)有全部學(xué)過(guò)和實(shí)踐過(guò),不知道到底該用
那種內(nèi)存管理算法。
看到這里,可能有些人已經(jīng)明白第5層樓的奧妙了,那就是需要做基礎(chǔ)研究,當(dāng)然
在計(jì)算機(jī)里,最重要的就是"計(jì)算"二字,程序員要做基礎(chǔ)研究,主要的內(nèi)容就是研究非
數(shù)值"計(jì)算"。
非數(shù)值計(jì)算可是一個(gè)非常龐大的領(lǐng)域,不僅時(shí)下熱門的"多核計(jì)算"與"云計(jì)算"屬于
非數(shù)值計(jì)算范疇,就是軟件需求、設(shè)計(jì)、測(cè)試、調(diào)試、評(píng)估、質(zhì)量控制、軟件工程等本
質(zhì)上也屬于非數(shù)值計(jì)算的范疇,甚至芯片硬件設(shè)計(jì)也同樣牽涉到非數(shù)值計(jì)算。如果你還
沒(méi)有真正領(lǐng)悟"計(jì)算"二字的含義,那么你就沒(méi)有機(jī)會(huì)進(jìn)到這層樓來(lái)。
可能有人仍然沒(méi)有明白為什么比爾·蓋茨被劃在了大牛層,沒(méi)有進(jìn)到這層來(lái)。雖然
比爾·蓋茨大學(xué)未畢業(yè),學(xué)歷不夠,但是家有藏書(shū)2萬(wàn)余冊(cè),進(jìn)入軟件這個(gè)行業(yè)比絕大
部分人都早,撇開(kāi)他的商業(yè)才能不談,即使只看他的技術(shù)水平,也可以算得上是學(xué)富五
車,頂上幾個(gè)普通的計(jì)算機(jī)軟件博士之和是沒(méi)有問(wèn)題的,比起Linus Torvalds之類的"
大牛"們應(yīng)該技高一籌才對(duì),怎么還進(jìn)不了這層樓呢?
非常遺憾的是,從Windows操作系統(tǒng)的實(shí)現(xiàn)來(lái)看,其對(duì)計(jì)算的理解是很膚淺的,如
果把Google對(duì)計(jì)算方面的理解比做大學(xué)生,比爾·蓋茨只能算做一個(gè)初中生,所以比爾
·蓋茨永遠(yuǎn)只能做個(gè)大牛人,成不了"專家"。
看到這里,也許國(guó)內(nèi)的大牛們要高興起來(lái)了,原來(lái)比爾·蓋茨也只和我等在同一個(gè)
層次,只要再升一層就可以超越比爾·蓋茨了。不過(guò)爬到這層可沒(méi)有從"牛人"升為"大
牛"那么簡(jiǎn)單,人家比爾·蓋茨都家有2萬(wàn)多冊(cè)書(shū),讓你看個(gè)500~1000本以上的專業(yè)書(shū)籍
并掌握好它應(yīng)該要求不高吧。當(dāng)然,這并不是主要的條件,更重要的是,需要到專業(yè)的
學(xué)術(shù)站點(diǎn)去學(xué)習(xí)了,到ACM,IEEE,Elsevier,SpringerLink,SIAM等地方去下載論文
應(yīng)該成為你的定期功課,使用Google搜索引擎中的學(xué)術(shù)搜索更是應(yīng)該成為你的日常必修
課。此外,你還得經(jīng)常關(guān)注是否有與你研究相關(guān)的開(kāi)源項(xiàng)目冒出來(lái),例如當(dāng)聽(tīng)到有TBB
這樣針對(duì)多核的開(kāi)源項(xiàng)目時(shí),你應(yīng)該第一時(shí)間到Google里輸入"TBB"搜索一下,將其源
代碼下載下來(lái)好好研究一番,這樣也許你的一只腳已經(jīng)快邁進(jìn)了這層樓的門檻。
當(dāng)你象我上面說(shuō)的那樣去做了以后,隨著時(shí)間的推移,總會(huì)有某天,你發(fā)現(xiàn),在很
多小的領(lǐng)域里,你已經(jīng)學(xué)不到什么新東西了,所有最新出來(lái)的研究成果你幾乎都知道。
此時(shí)你會(huì)發(fā)現(xiàn)你比在做"牛人"和"大牛"時(shí)的水平不知高出了多少,但是你一點(diǎn)也"牛"不
起來(lái),因?yàn)槟銓W(xué)的知識(shí)和思想都是別人提出來(lái)的,你自己并沒(méi)有多少自己的知識(shí)和思想
分享給別人,所以你還得繼續(xù)往樓上爬才行。
我不知道國(guó)內(nèi)的"專家"到底有多少,不過(guò)有一點(diǎn)可以肯定的是,如果把那些專門蒙
大家的"磚家"也算上的話,我們的磚家比西方的要多得多。
第6層 學(xué)者
當(dāng)"專家"們想繼續(xù)往上一層樓爬時(shí),他們幾乎一眼就可以看到樓梯的入口,不過(guò)令
他們吃驚的是,樓梯入口處豎了一道高高的門檻,上面寫(xiě)著"創(chuàng)新"二字。不幸的是,大
多數(shù)人在爬到第5層樓時(shí)已經(jīng)體能消耗過(guò)度,無(wú)力翻過(guò)這道門檻。
有少數(shù)體能充足者,可以輕易翻越這道門檻,但是并不意味著體力消耗過(guò)度者就無(wú)
法翻越,因?yàn)槟阒皇菚簳r(shí)還沒(méi)有掌握恢復(fù)體能的方法而已,當(dāng)掌握了恢復(fù)體能的方法,
將體能恢復(fù)后,你就可以輕易地翻越這道門檻了。
怎么才能將體能恢復(fù)呢?我們的老祖宗"孔子"早就教導(dǎo)過(guò)我們"溫故而知新",在英
文里,研究的單詞是"research",其前綴"re"和"search"分別是什么意思不用我解釋吧
。或許有些人覺(jué)得"溫故而知新"和"research"有些抽象,不好理解,我再給打個(gè)簡(jiǎn)單的
比方,比如你在爬一座高山,爬了半天,中途體力不支,怎么恢復(fù)體力呢?自然是休息
一下,重新進(jìn)食一些食物,體力很快就可以得到恢復(fù)。
由此可知,對(duì)體能消耗過(guò)度者,休息+重新進(jìn)食通常是恢復(fù)體能的最佳選擇。可惜
的是,國(guó)內(nèi)的老板們并不懂得這點(diǎn),他們的公司里不僅連正常國(guó)家規(guī)定的休息時(shí)間都不
給足,有些公司甚至有員工"過(guò)勞死"出現(xiàn)。所以國(guó)內(nèi)能翻越"創(chuàng)新"這道門檻的人是"少
之又少",和西方比起來(lái)估計(jì)是數(shù)量級(jí)的差別。
再說(shuō)說(shuō)重新進(jìn)食的問(wèn)題,這個(gè)重新進(jìn)食是有講究的,需要進(jìn)食一些基礎(chǔ)性易消化的
簡(jiǎn)單食物,不能進(jìn)食山珍海味級(jí)的復(fù)雜食物,否則很難快速吸收。以查找為例,并不是
去天天盯著那些復(fù)雜的查找結(jié)構(gòu)和算法進(jìn)行研究,你需要做的是將二分查找、哈希查找
、普通二叉樹(shù)查找等基礎(chǔ)性的知識(shí)好好地復(fù)習(xí)幾遍。
以哈希查找為例,首先你需要去將各種沖突解決方法如鏈?zhǔn)浇Y(jié)構(gòu)、二次哈希等編寫(xiě)
一遍,再試試不同種類的哈希函數(shù),然后還需要試試在硬盤中如何實(shí)現(xiàn)哈希查找,并考
慮數(shù)據(jù)從硬盤讀到內(nèi)存后,如何組織硬盤中的數(shù)據(jù)才能快速地在內(nèi)存中構(gòu)建出哈希表來(lái)
,...,這樣你可能需要將一個(gè)哈希表寫(xiě)上十幾個(gè)不同的版本,并比較各個(gè)版本的性能
、功能方面的區(qū)別和適用范圍。
總之,對(duì)任何一種簡(jiǎn)單的東西,你需要考慮各種各樣的需求,以需求來(lái)驅(qū)動(dòng)研究。
最后你將各種最基礎(chǔ)性的查找結(jié)構(gòu)和算法都了然于胸后,或許某天你再看其他更復(fù)雜的
查找算法,或者你在散步時(shí),腦袋里靈光一現(xiàn),突然間就發(fā)現(xiàn)了更好的方法,也就從專
家晉升為"學(xué)者"了。
學(xué)者所做的事情,通常都是在前人的基礎(chǔ)上,進(jìn)行一些小的優(yōu)化和改進(jìn),例如別人
發(fā)明了鏈?zhǔn)交鶖?shù)排序的方法,你第1個(gè)發(fā)現(xiàn)使用一定的方法,可以用數(shù)組替代鏈表進(jìn)行
基數(shù)排序,性能還能得到進(jìn)一步提高。
由于學(xué)者需要的只是一些小的優(yōu)化改進(jìn),因此中國(guó)還是有一定數(shù)量的學(xué)者。不過(guò)和
國(guó)外的數(shù)量比起來(lái),估計(jì)少了一個(gè)數(shù)量級(jí)而已。
也許有人會(huì)覺(jué)得現(xiàn)在中國(guó)許多公司申請(qǐng)專利的數(shù)量達(dá)到甚至超過(guò)西方發(fā)達(dá)國(guó)家了,
我們的學(xué)者數(shù)量應(yīng)該不會(huì)比他們少多少。因此,有必要把專利和這里說(shuō)的創(chuàng)新的區(qū)別解
釋一下。
所謂專利者,只要是以前沒(méi)有的,新的東西,都可以申請(qǐng)專利;甚至是以前有的東
西,你把他用到了一個(gè)新的領(lǐng)域的產(chǎn)品里去,也可以申請(qǐng)專利。比如你在房子里造一個(gè)
水泥柱子,只要以前沒(méi)有人就這件事申請(qǐng)專利,那么你就可以申請(qǐng)專利,并且下次你把
水泥柱子挪一個(gè)位置,又可以申請(qǐng)一個(gè)新的專利;或者你在一個(gè)柜子上打上幾個(gè)孔,下
次又把孔的位置改一改,...,均可申請(qǐng)專利。
這層樓里所說(shuō)的創(chuàng)新,是指學(xué)術(shù)層面的創(chuàng)新,是基礎(chǔ)研究方面的創(chuàng)新,和專利的概
念是完全不同的,難度也是完全不同的。你即使申請(qǐng)了一萬(wàn)個(gè)象那種打孔一類的專利,
加起來(lái)也夠不到這層樓里的一個(gè)創(chuàng)新。
當(dāng)你爬到第6層樓時(shí),你也許會(huì)有一種突破極限的快感,因?yàn)槟憬K于把那道高高的
寫(xiě)著"創(chuàng)新"二字的門檻給翻過(guò)去了,實(shí)現(xiàn)了"0"的突破。這時(shí),你也許有一種"獨(dú)上高樓
,欲望盡天涯路"的感覺(jué),但是很快你會(huì)發(fā)現(xiàn)看到的都是比較近的路,遠(yuǎn)處的路根本看
不清楚。如果你還有足夠的體力的話,你會(huì)想爬到更高一層的樓層去。
第7層 大師
從第6層樓爬到第7層樓,并沒(méi)有多少捷徑可走,主要看你有沒(méi)有足夠的能量。你如
果能象Hoare一樣設(shè)計(jì)出一個(gè)快速排序的算法;或者象Eugene W. Myers一樣設(shè)計(jì)出了一
個(gè)用編輯圖的最短路徑模型來(lái)解決diff問(wèn)題的算法;或者象M.J.D. Powell一樣提出了
一個(gè)能夠處理非線性規(guī)劃問(wèn)題的SQP方法;或者你發(fā)現(xiàn)基于比較的排序算法,它的復(fù)雜
度下界為O(NLogN);或者你發(fā)現(xiàn)用棧可以將遞歸的算法變成非遞歸的;或者你設(shè)計(jì)出一
個(gè)紅黑樹(shù)或者AVL樹(shù)之類的查找結(jié)構(gòu);或者你設(shè)計(jì)出一個(gè)象C++或Java一樣的語(yǔ)言;或者
你發(fā)明了UML;...,你就爬到了第7層,晉升為"大師"了。
上面舉的這些例子中,其中有些人站的樓層比這層高,這里只是為了形象說(shuō)明而舉
例他們的某個(gè)成就。從上面列出的一些大師的貢獻(xiàn)可以看出,成為大師必須要有較大的
貢獻(xiàn)。首先解決問(wèn)題必須是比較重要的,其次你要比前輩們?cè)谀撤矫嬗幸粋€(gè)較大的提高
,或者你解決的是一個(gè)全新的以前沒(méi)有解決過(guò)的問(wèn)題;最重要的是,主要的思路和方法
必須是你自己提供的,不再是在別人的思路基礎(chǔ)上進(jìn)行的優(yōu)化和改進(jìn)。
看了上面這些要求,如果能量不夠的話,你也許會(huì)覺(jué)得有些困難,所以不是每個(gè)人
都能成為"大師"的。中國(guó)軟件業(yè)里能稱得上是"大師"的人,用屈指可數(shù)來(lái)形容,估計(jì)是
綽綽有余。值得一提得是,國(guó)外的"大師"就象我們的"大牛"一樣滿天飛的多。
我把我猜測(cè)本國(guó)有可能進(jìn)到這層樓的大師列一下,以起個(gè)拋磚引玉的作用。漢王的
"手寫(xiě)識(shí)別"技術(shù)由于是完全保密的,不知道它里面用了什么思想,原創(chuàng)思想占的比重有
多少,因此不知道該把它劃到這層樓還是更高一層樓去。原山東大學(xué)王小云教授破解
DES和MD5算法時(shí),用到的方法不知道是不是完全原創(chuàng)的,如果是的話也可進(jìn)到這層樓來(lái)
。
陳景潤(rùn)雖然沒(méi)有徹底解決哥德巴赫猜想,但他在解決問(wèn)題時(shí)所用的方法是創(chuàng)新的,
因此也可以進(jìn)到這層樓來(lái)。當(dāng)然,如果能徹底解決哥德巴赫猜想,那么可以算到更高的
樓層去。
求伯君和王志東等大牛們,他們?cè)谧鯳PS和表格處理之類的軟件時(shí),不知是否有較
大的原創(chuàng)算法在里面,如果有的話就算我錯(cuò)把他們劃到了大牛層。由于所學(xué)有限,不知
道國(guó)內(nèi)還有那些人能夠得上"大師"的級(jí)別,或許有少量做研究的教授、院士們,可以達(dá)
到這個(gè)級(jí)別,有知道的不妨回個(gè)帖子晾一晾。
鑒于"大師"這個(gè)稱號(hào)的光環(huán)效應(yīng),相信有不少人夢(mèng)想著成為"大師"。或許你看了前
面舉的一些大師的例子,你會(huì)覺(jué)得要成為大師非常困難。不妨說(shuō)一下,現(xiàn)在有一條通往
"大師"之路的捷徑打開(kāi)了,那就是多核計(jì)算領(lǐng)域,有大量的處女地等待大家去挖掘。
以前在單核時(shí)代開(kāi)發(fā)的各種算法,現(xiàn)在都需要改寫(xiě)成并行的。數(shù)據(jù)結(jié)構(gòu)與算法、圖
像處理、數(shù)值計(jì)算、操作系統(tǒng)、編譯器、測(cè)試調(diào)試等各個(gè)領(lǐng)域,都存在大量的機(jī)會(huì),可
以讓你進(jìn)到這層樓來(lái),甚至有可能讓你進(jìn)到更高一層樓去。
第8層 科學(xué)家
科學(xué)家向來(lái)都是一個(gè)神圣的稱號(hào),因此我把他放在了“大師”之上。要成為科學(xué)家
,你的貢獻(xiàn)必須超越大師,不妨隨便舉一些例子。
如果你象Dijkstra一樣設(shè)計(jì)了ALGOL語(yǔ)言,提出了程序設(shè)計(jì)的三種基本結(jié)構(gòu):順序
、選擇、循環(huán),那么你可以爬到第8層樓來(lái)。順便說(shuō)一下,即使拋開(kāi)這個(gè)成果,
Dijkstra憑他的PV操作和信號(hào)量概念的提出,同樣可以進(jìn)到這層樓。
如果你象Don Knuth一樣,是數(shù)據(jù)結(jié)構(gòu)與算法這門學(xué)科的重要奠基者,你也可以進(jìn)
到這層樓來(lái)。當(dāng)然,數(shù)據(jù)結(jié)構(gòu)和算法這門學(xué)科不是某個(gè)人開(kāi)創(chuàng)的,是許多大師和科學(xué)家
集體開(kāi)創(chuàng)的。
如果你象巴科斯一樣發(fā)明了Fortran語(yǔ)言,并提出了巴科斯范式,對(duì)高級(jí)程序語(yǔ)言
的發(fā)展起了重要作用,你也可以進(jìn)到這層樓來(lái)。
或者你象Ken Thompson、Dennis Ritchie一樣發(fā)明了Unix操作系統(tǒng)和功能強(qiáng)大、高
效、靈活、表達(dá)力強(qiáng)的C語(yǔ)言,對(duì)操作系統(tǒng)理論和高級(jí)編程語(yǔ)言均作出重大貢獻(xiàn),那么
你也可以進(jìn)到這層樓來(lái)。
或者你有Frederick P. Brooks一樣機(jī)會(huì),可以去領(lǐng)導(dǎo)開(kāi)發(fā)IBM的大型計(jì)算機(jī)
System/360和OS/360操作系統(tǒng),并在失敗后反思總結(jié),寫(xiě)出《人月神話》,對(duì)軟件工程
作出里程碑式的貢獻(xiàn),你也可以進(jìn)到這層來(lái)。
或者你提出了面向?qū)ο笤O(shè)計(jì)的基本思想,或者你設(shè)計(jì)了互聯(lián)網(wǎng)的TCP/IP協(xié)議,或者
你象Steven A.Cook一樣奠定NP完全性的理論基礎(chǔ),或者你象Frances Allen一樣專注于
并行計(jì)算來(lái)實(shí)現(xiàn)編譯技術(shù),在編譯優(yōu)化理論和技術(shù)取得基礎(chǔ)性的成就,…,均可進(jìn)入這
層。
當(dāng)然,如果你發(fā)明了C++語(yǔ)言或者Java語(yǔ)言,你進(jìn)不到這層來(lái),因?yàn)槟阌玫降闹饕?
思想都是這層樓中的科學(xué)家提出的,你自己并沒(méi)有沒(méi)有多少原創(chuàng)思想在里面。
看了上面列出的科學(xué)家的成就,你會(huì)發(fā)現(xiàn),要成為“科學(xué)家”,通常要開(kāi)創(chuàng)一門分
支學(xué)科,或者是這個(gè)分支學(xué)科的奠基者,或者在某個(gè)分支學(xué)科里作出里程碑式的重大貢
獻(xiàn)。如果做不到這些的話,那么你能象Andrew C. Yao(姚期智)一樣在對(duì)計(jì)算理論的
多個(gè)方向如偽隨機(jī)數(shù)生成,密碼學(xué)與通信復(fù)雜度等各個(gè)方向上作出重要貢獻(xiàn),成為集大
成者,也可以進(jìn)入這層樓。
成為“科學(xué)家”后,如果你有幸象Dijkstra一樣,出現(xiàn)在一個(gè)非常重視科學(xué)的國(guó)度
。當(dāng)你去世時(shí),你家鄉(xiāng)滿城的人都會(huì)自動(dòng)地去為你送葬。不過(guò)如果不幸生錯(cuò)地方的話,
能不挨“板磚”估計(jì)就算萬(wàn)幸了。
從上面隨便舉的一些例子中,你可能能猜到,西方科學(xué)家的數(shù)量是非常多的,于是
你會(huì)想中國(guó)應(yīng)該也有少量的科學(xué)家吧?我可以很負(fù)責(zé)任地告訴你一個(gè)不幸的結(jié)果,中國(guó)
本土產(chǎn)生的科學(xué)家的數(shù)量為0。目前在國(guó)內(nèi),軟件領(lǐng)域的唯一的科學(xué)家就是上面提過(guò)的
姚期智,還是國(guó)外請(qǐng)回來(lái)的,并不是本土產(chǎn)生的。
可能你不同意我說(shuō)的本土科學(xué)家數(shù)量為0的結(jié)論,因?yàn)槟憬?jīng)常看到有許多公司里都
有所謂“首席XX科學(xué)家”的頭銜。我想說(shuō)的是,這些所謂的“首席XX科學(xué)家”都是遠(yuǎn)遠(yuǎn)
夠不到這層樓的級(jí)別的,有些人的水平估計(jì)也就是一個(gè)“牛人”或“大牛”的級(jí)別,好
一點(diǎn)的最多也就一個(gè)“學(xué)者”的級(jí)別。尤其是那些被稱作“首席經(jīng)X學(xué)家”的,基本上
可以把稱號(hào)改為“首席坑大家”。
雖然我國(guó)沒(méi)有人能爬到這層樓上來(lái),但是西方國(guó)家仍然有許多人爬到了比這層更高
的樓上。如果要問(wèn)我們比西方落后多少?那么可以簡(jiǎn)單地回答為:“落后了三層樓”。
下面就來(lái)看看我們做夢(mèng)都沒(méi)有到過(guò)的更高一層樓的秘密。
第9層 大科學(xué)家
進(jìn)入這層樓的門檻通常需要一些運(yùn)氣,比如某天有個(gè)蘋(píng)果砸到你頭上時(shí),你碰巧發(fā)
現(xiàn)了萬(wàn)有引力,那么你可以進(jìn)到這層樓來(lái)。當(dāng)然,萬(wàn)有引力幾百年前就被人發(fā)現(xiàn)了,如
果你現(xiàn)在到處嚷嚷著說(shuō)你發(fā)現(xiàn)了萬(wàn)有引力,恐怕馬上會(huì)有人打110,然后警察會(huì)把你送
到不正常人類的聚集地去。因此,這里舉萬(wàn)有引力的例子,只是說(shuō)你要有類似的成就才
能進(jìn)到這層樓來(lái)。
牛頓發(fā)現(xiàn)萬(wàn)有引力定律開(kāi)創(chuàng)了經(jīng)典物理運(yùn)動(dòng)力學(xué)這門學(xué)科,如果你也能開(kāi)創(chuàng)一門大
的學(xué)科,那么你就從科學(xué)家晉升為“大科學(xué)家”。比如愛(ài)因斯坦創(chuàng)建了相對(duì)論,從一個(gè)
小職員變成了大科學(xué)家。當(dāng)然大科學(xué)家可遠(yuǎn)不止這兩人,數(shù)學(xué)界里比物理學(xué)界更是多得
多,如歐幾里得創(chuàng)建了平面幾何,笛卡爾開(kāi)創(chuàng)解析幾何,還有歐拉、高斯、萊布尼茨等
數(shù)不清的人物,跟計(jì)算相關(guān)的大科學(xué)家則有圖靈等人。
從上面列出的一些大科學(xué)家可以發(fā)現(xiàn),他們的成就不僅是開(kāi)創(chuàng)了一個(gè)大的學(xué)科,更
重要的是他們的成就上升到了“公理”的層面。發(fā)現(xiàn)公理通常是需要一點(diǎn)運(yùn)氣的,如果
你的運(yùn)氣不夠好的話,另外還有一個(gè)笨辦法也可以進(jìn)到這層樓來(lái),那就是成為集大成者
。例如馮·諾伊曼,對(duì)數(shù)學(xué)的所有分支都非常了解,許多領(lǐng)域都有較大的貢獻(xiàn),即使撇
開(kāi)他對(duì)計(jì)算機(jī)的開(kāi)創(chuàng)貢獻(xiàn),成為大科學(xué)家照樣綽綽有余。
當(dāng)然,程序員們最關(guān)心的是自己有沒(méi)有機(jī)會(huì)變成大科學(xué)家。既然計(jì)算機(jī)這門大學(xué)科
的開(kāi)創(chuàng)性成果早就被馮·諾伊曼、圖靈等人摘走了,那么程序員們是不是沒(méi)有機(jī)會(huì)變成
大科學(xué)家了呢?我們的古人說(shuō)得好:“江山代有才人出,各領(lǐng)風(fēng)騷數(shù)百年”,現(xiàn)在在計(jì)
算機(jī)這門學(xué)科下面誕生了許多非常重要的大的分支,所以你還是有足夠的機(jī)會(huì)進(jìn)到這層
樓的。
如果你能夠徹底解決自然語(yǔ)言理解(機(jī)器翻譯)這門學(xué)科中的核心問(wèn)題, 或者你
在人工智能或者機(jī)器視覺(jué)(圖像識(shí)別)方面有突破性的發(fā)現(xiàn),那么你同樣可以輕易地晉
升為“大科學(xué)家”。這樣當(dāng)某天你老了去世時(shí),或許那天國(guó)人已經(jīng)覺(jué)醒,你也能享受到
如Dijkstra一樣的待遇,有滿城甚至全國(guó)的人去為你送葬。
現(xiàn)在還剩下另外一個(gè)大家感興趣的問(wèn)題沒(méi)有討論,那就是這層中已經(jīng)出現(xiàn)了牛頓、
愛(ài)因斯坦、高斯等我們平常人都認(rèn)為是頂級(jí)的科學(xué)家,是不是這層已經(jīng)是樓頂了呢?相
信還記得本文標(biāo)題的人應(yīng)該知道現(xiàn)在僅僅是第9層,還有第10層沒(méi)有到達(dá)呢。可能不少
人現(xiàn)在要感到困惑了,難道還有人站在比牛頓、愛(ài)因斯坦、高斯等人更高的樓層上?
這個(gè)世界上確實(shí)存在可以用一只手的手指數(shù)得清的那么幾個(gè)人,他們爬到了第10層
樓上。因此,第10層樓不是虛構(gòu)的,而是確實(shí)存在的。如果對(duì)此有疑惑或者認(rèn)為我在胡
謅一番的話,那么不妨繼續(xù)往下看下去,窺一下第10層樓的秘密。
第10層 大哲
看了這層樓的名字“大哲”,可能不少人已經(jīng)猜到了這層樓的秘密,那就是你的成
果必須要上升到哲學(xué)的高度,你才有機(jī)會(huì)能進(jìn)到這層來(lái)。
當(dāng)然,上升到哲學(xué)高度只是一個(gè)必要條件,牛頓的萬(wàn)有引力似乎也上升到了哲學(xué)的
高度,因?yàn)椴恢酪Φ降资窃趺磥?lái)的,但是牛頓沒(méi)有被劃到這一層,因?yàn)檫M(jìn)到這層還
有另外的條件,那就是你的成果必須引起了哲學(xué)上的深度思考,并能讓人們的世界觀向
前跨進(jìn)一大步。竊以為牛頓、愛(ài)因斯坦等人的成就還達(dá)不到讓人們世界觀向前跨進(jìn)一大
步的程度。
所以,這層樓中的人的成就對(duì)我們普通人認(rèn)識(shí)世界非常重要,你可以不學(xué)相對(duì)論,
但是你不可以不對(duì)這層樓的人所作出的成就不了解,否則你的世界觀就是極其不完整的
,會(huì)犯許多認(rèn)識(shí)上的錯(cuò)誤。不幸的是,中國(guó)的科普知識(shí)普及還不夠到位,知道這層樓成
就的人好像并不多,程序員中恐怕更少。下面就來(lái)看看這些用一只手的手指數(shù)得清的大
哲們,到底有什么成就,能比萬(wàn)有引力定律和相對(duì)論還重要。
1、希爾伯特 (1862~1943)
第1位進(jìn)到此樓層是一位名叫“希爾伯特”的大數(shù)學(xué)家,如果你學(xué)過(guò)《泛函分析》
,那么你在學(xué)習(xí)希爾伯特空間時(shí)可能已經(jīng)對(duì)這位大數(shù)學(xué)家有所了解;如果你不是學(xué)數(shù)學(xué)
出身的,又對(duì)數(shù)學(xué)史不感興趣的話,恐怕你從來(lái)沒(méi)有聽(tīng)說(shuō)過(guò)這個(gè)名字。不過(guò)如果我問(wèn)一
下,知不知道二次世界大戰(zhàn)前世界數(shù)學(xué)中心在那里,你肯定會(huì)有興趣想知道。
不妨說(shuō)一下,二戰(zhàn)前整個(gè)世界的數(shù)學(xué)中心就在德國(guó)的哥廷根,而我們這位大數(shù)學(xué)家
希爾伯特便是它的統(tǒng)帥和靈魂人物。即使在二戰(zhàn)期間,希特勒和丘吉爾也有協(xié)定,德國(guó)
不轟炸牛津和劍橋,作為回報(bào),英國(guó)不轟炸海德堡和哥廷根。
整個(gè)二十世紀(jì)上半期的超一流數(shù)學(xué)家,幾乎都出自其門下。這里不妨舉幾個(gè)我們熟
悉的人物,例如馮·諾伊曼就曾受到他和他的學(xué)生施密特和外爾的思想影響,還到哥廷
根大學(xué)任過(guò)希爾伯特的助手,錢學(xué)森的老師馮·卡門是在哥廷根取得博士學(xué)位的。順便
提一下,這位大數(shù)學(xué)家發(fā)現(xiàn)當(dāng)時(shí)物理學(xué)上出了很多大的成果如相對(duì)論和量子力學(xué),但是
這些物理學(xué)家的數(shù)學(xué)功力明顯不足,因此有一段時(shí)間帶領(lǐng)他的學(xué)生們研究過(guò)物理學(xué),并
獨(dú)立發(fā)現(xiàn)了廣義相對(duì)論,只是不好意思和物理學(xué)家爭(zhēng)功勞,將廣義相對(duì)論的功勞全部讓
給了愛(ài)因斯坦。
廣義相對(duì)論相對(duì)于這位大數(shù)學(xué)家在數(shù)學(xué)上的貢獻(xiàn),其實(shí)是算不了什么的,只是由此
可看出這位大數(shù)學(xué)家品格的高尚之處。如果再去看看牛頓之流的人物的品行,整天和萊
布尼茨、虎克等人爭(zhēng)功勞,利用自己的優(yōu)勢(shì)地位打壓他人,甚至鬧得上法庭,和這位希
爾伯特先生比起來(lái),簡(jiǎn)直就是個(gè)小丑。
說(shuō)到這里,你可能對(duì)這位大數(shù)學(xué)家“希爾伯特”有了一些初步映象,感覺(jué)到了他的
重要性,不過(guò)他在數(shù)學(xué)上的主要成就可不是幾句話說(shuō)得清楚的。首先,他是一位集大成
者,精通當(dāng)時(shí)數(shù)學(xué)所有分支領(lǐng)域,在數(shù)學(xué)的各個(gè)領(lǐng)域都有較大的貢獻(xiàn),當(dāng)然這些成就只
能讓他成為一個(gè)大科學(xué)家,不能帶他進(jìn)入這層樓。事實(shí)上這位“希爾伯特”解決的任何
一個(gè)數(shù)學(xué)問(wèn)題都?jí)虿坏竭@層樓的高度,那么他怎么混到這層樓來(lái)了呢?
話得從1900年說(shuō)起,當(dāng)時(shí)還很年輕的希爾伯特在當(dāng)時(shí)的世界數(shù)學(xué)大會(huì)上做了一個(gè)報(bào)
告,高屋建甌地提出了著名的23個(gè)未解決的數(shù)學(xué)問(wèn)題,然后整個(gè)二十世紀(jì)上半期,全世
界的數(shù)學(xué)家們都在這23個(gè)問(wèn)題的指導(dǎo)下展開(kāi)研究,直到現(xiàn)在仍然有許多數(shù)學(xué)家受這23個(gè) 問(wèn)題的指導(dǎo)在進(jìn)行研究。例如我們熟知的哥德巴赫猜想,就屬于其中第8個(gè)問(wèn)題素?cái)?shù)分
布的一個(gè)子問(wèn)題。
如果用“高瞻遠(yuǎn)矚”來(lái)形容這位大數(shù)學(xué)家的話,那么這個(gè)世界上恐怕沒(méi)有第二個(gè)人
再配得上“高瞻遠(yuǎn)矚”這四個(gè)字,不論是歐拉、高斯、牛頓、愛(ài)因斯坦還是被譽(yù)為最有
才華的數(shù)學(xué)家伽羅華,概不例外。
雖然那23個(gè)問(wèn)題是歸納總結(jié)出來(lái)的,并不全是原創(chuàng),但是其中有不少問(wèn)題是可以上
升到哲學(xué)的高度,引起深度思考的。可能大多數(shù)人都會(huì)覺(jué)得希爾伯特是進(jìn)不到這層樓的
,我們知道提出問(wèn)題的人和解決問(wèn)題的人是一樣偉大的,何況他提出的問(wèn)題是如此之多
,基于這點(diǎn),個(gè)人覺(jué)得應(yīng)該讓希爾伯特跨進(jìn)這層樓的門檻里。
看完這位希爾伯特的成就,你可能會(huì)覺(jué)得對(duì)你的世界觀并沒(méi)有產(chǎn)生任何影響。確實(shí)
如此,他提出的問(wèn)題不是用來(lái)影響你的,而是用來(lái)影響其他大科學(xué)家和大哲的,下面再
來(lái)說(shuō)說(shuō)另一位對(duì)他提出的23個(gè)問(wèn)題中的第2個(gè)問(wèn)題有杰出貢獻(xiàn)的大哲,你就會(huì)感覺(jué)到大
哲們的成果的威力了。
2、哥德?tīng)?nbsp;(1906~1978)
這位大哲的名字叫“哥德?tīng)?nbsp;(G?del) ”,你可能從來(lái)也沒(méi)有聽(tīng)說(shuō)過(guò)這個(gè)名字,即
使你讀了一個(gè)數(shù)學(xué)系的博士學(xué)位,如果你的研究方向不和這位大哲對(duì)口的話,你也不一
定了解這位大哲的成就,更不知道他的成果對(duì)我們這個(gè)世界有何意義。
簡(jiǎn)單地說(shuō),這位大哲20多歲時(shí)就證明了兩個(gè)定理,一個(gè)叫做“哥德?tīng)柾耆远ɡ?#8221;
,另一個(gè)更重要的叫做“哥德?tīng)柌煌耆远ɡ?#8221;。你也許會(huì)覺(jué)得奇怪,第9層樓的成就
就已經(jīng)上升到了公理的高度,這種證明定理的事情不是學(xué)者和大師們做的事情嗎?怎么
能比第9層樓的成就還高呢?下面就來(lái)簡(jiǎn)單說(shuō)一下這兩個(gè)定理的含義,你就會(huì)明白這屬
于系統(tǒng)級(jí)的定理,絕不是普通的定理和公理所能比擬的。
“哥德?tīng)柾耆远ɡ?#8221;證明了邏輯學(xué)的幾條公理是完備的,即任何一個(gè)由這些公理
所產(chǎn)生出的問(wèn)題,在這個(gè)公理系統(tǒng)內(nèi)可以判定它是真的還是假的,這個(gè)結(jié)論表明了我們
人類所擁有的邏輯思維能力是完備的。這條定理并不能將其帶入這層樓來(lái),帶其進(jìn)入這
層樓的是另一條定理。
“哥德?tīng)柌煌耆远ɡ?#8221;是在1930年證明的,它證明了現(xiàn)有數(shù)學(xué)的幾條公理(ZF公
理系統(tǒng))是不完備的,即由這些公理產(chǎn)生出的問(wèn)題,無(wú)法由這幾條公理判斷它是真的還
是假的。例如希爾伯特23個(gè)問(wèn)題中的第1個(gè)問(wèn)題,也就是著名的康托爾連續(xù)統(tǒng)假設(shè),哥
德?tīng)栐?938年證明了現(xiàn)有公理系統(tǒng)中不能證明它是“假”的,科恩(Cohen,或許也可
以稱得上是“半”個(gè)大哲)在1963年證明了現(xiàn)有公理系統(tǒng)不能證明它是“真”的。最有
趣的是,即使你將某個(gè)不可判定的問(wèn)題,作為一條新的公理加入進(jìn)去,所組成的新的公
理系統(tǒng)仍然是不完備的,即你無(wú)法構(gòu)造一個(gè)有限條公理的系統(tǒng),讓這個(gè)公理系統(tǒng)是完備
的。
也許你仍然無(wú)法理解上面這段話的含義,不妨先說(shuō)一下它對(duì)我們現(xiàn)實(shí)世界的影響。
你可能知道1936年出現(xiàn)的圖靈機(jī)是現(xiàn)代計(jì)算機(jī)的理論模型,如果沒(méi)有哥德?tīng)柌煌耆远?
理的思想,圖靈機(jī)什么時(shí)候能出來(lái)是很難說(shuō)的,所以這位哥德?tīng)柨梢运阕饔?jì)算機(jī)理論的
奠基者的奠基者。計(jì)算機(jī)對(duì)我們這個(gè)世界產(chǎn)生的影響比原子彈大了多少,我想不用我說(shuō)
大家也都清楚。當(dāng)然,對(duì)現(xiàn)實(shí)世界的影響只能把哥德?tīng)柾瑘D靈等人一樣劃到大科學(xué)家那
一層去,能進(jìn)入這層乃是另有原因。
可能你看過(guò)《未來(lái)戰(zhàn)士》、《黑客帝國(guó)》、《I,Robot》之類的科幻電影,于是你
產(chǎn)生制造一個(gè)和人一樣或者比人更高一級(jí)的智能機(jī)器人的想法,這就引入了一個(gè)達(dá)到哲
學(xué)高度的問(wèn)題,“人到底能不能制造出具有和人一樣的思維能力的機(jī)器來(lái)?”。
我只能告訴你,“你的愿望是良好的,但現(xiàn)實(shí)是殘酷的”。如果你仔細(xì)思考一下不
完全性定理的含義,并結(jié)合現(xiàn)代計(jì)算機(jī)所具有的能力分析一下,你會(huì)發(fā)現(xiàn)這個(gè)問(wèn)題的答
案暫時(shí)是否定的。如果你想造出和人一樣思維能力的機(jī)器,那么你需要去好好學(xué)習(xí)這位
大哲及其后續(xù)研究者的成果,并在他們的基礎(chǔ)上有新的突破才行。
為了說(shuō)明這位大哲所研究領(lǐng)域的重要性,這里順便再討論一個(gè)我們?nèi)粘?zhēng)議不休的
問(wèn)題,那就是孔夫子的“人之初、性本善”以及西方認(rèn)為“人之初、性本惡”的觀點(diǎn)孰
優(yōu)孰劣的問(wèn)題。可能有許多人發(fā)現(xiàn)西方社會(huì)現(xiàn)在領(lǐng)先我們,于是就認(rèn)為“性本惡”是對(duì)
的,“性本善”是錯(cuò)的,中國(guó)應(yīng)該拋棄以前的舊思想,改用西方的思想。當(dāng)然也有一些
老學(xué)究們,認(rèn)為中國(guó)的人文思想是領(lǐng)先于西方的,自然而然地認(rèn)為“性本善”是對(duì)的,
“性本惡”是錯(cuò)的。
如果你學(xué)過(guò)大哲用過(guò)的公理化的分析方法,你就知道一套系統(tǒng)的多條公理間只要不
會(huì)推導(dǎo)出矛盾的地方,即可以自圓其說(shuō),那么它可以看作是對(duì)的。這樣你可以很輕易地
給這個(gè)問(wèn)題下一個(gè)結(jié)論,即“性本善”和“性本惡”是對(duì)等的,不存在孰優(yōu)孰劣的問(wèn)題
,更不存在誰(shuí)對(duì)誰(shuí)錯(cuò)的問(wèn)題。只要你不同時(shí)將“性本善”和“性本惡”放入一個(gè)系統(tǒng)內(nèi)
,那么是不會(huì)有問(wèn)題的,甚至你也可以認(rèn)為“人之初、既無(wú)善、亦無(wú)惡”,或者認(rèn)為“
人之初、部分善、部分惡”,都是可以自圓其說(shuō)的,所以我們的老祖宗提出的思想并沒(méi)
有問(wèn)題,之所以落后乃是其他原因造成的。這個(gè)問(wèn)題其實(shí)在高斯所處的時(shí)代就有了結(jié)論
,那時(shí)有人提出了非歐幾何,即平行線公理問(wèn)題,有人認(rèn)為過(guò)一點(diǎn)可以作多條平行線,
還有人認(rèn)為平行線在無(wú)窮遠(yuǎn)點(diǎn)是相交的,和歐氏幾何關(guān)于過(guò)一點(diǎn)只能作一條平行線的公
理都是矛盾的,但是他們各自的系統(tǒng)內(nèi)推導(dǎo)出的結(jié)論都是正確的。
上面說(shuō)的只是對(duì)哥德?tīng)柌煌耆远ɡ淼囊恍┐譁\解析,實(shí)際上如果深入思考一下它
的含義的話,你會(huì)發(fā)現(xiàn)它對(duì)物理學(xué)等許多學(xué)科有重大影響,包含的道理實(shí)在是深刻,遠(yuǎn)
非一般的思想所能比擬,有興趣者不妨“google”或“百度”一下“哥德?tīng)?#8221;。或許只
有我們的老祖宗“老子”提出的哲學(xué)思想,深度可以有得一比。
哥德?tīng)柌煌耆远ɡ硪步o那些認(rèn)為科學(xué)是嚴(yán)謹(jǐn)?shù)娜水?dāng)頭一棒,原來(lái)連數(shù)學(xué)這樣的純
理論學(xué)科都是不嚴(yán)謹(jǐn)?shù)模渌麑W(xué)科就更不用說(shuō)了。
至此,已經(jīng)說(shuō)完數(shù)學(xué)上的大哲,下面不妨再看看物理學(xué)上的大哲,物理學(xué)上好像只
出過(guò)一位叫“海森堡”的大哲(注:由于本人對(duì)物理學(xué)不甚了解,不知道“霍金”夠不
夠得上大哲的稱號(hào))。
3、海森堡 (1901~1976)
海森堡這個(gè)名字相信沒(méi)有幾個(gè)人不知道的,大部分人在學(xué)習(xí)物理時(shí)都學(xué)過(guò)他的“測(cè)
不準(zhǔn)關(guān)系”,也就是因?yàn)檫@個(gè)“測(cè)不準(zhǔn)關(guān)系”,海森堡爬到了第十層樓。
如果你看過(guò)《時(shí)間簡(jiǎn)史》和《霍金講演錄-黑洞、嬰兒宇宙及其他》,你也許已經(jīng)
了解測(cè)不準(zhǔn)關(guān)系的威力,所以這里不想做過(guò)多的討論,只談一些和本土產(chǎn)生的哲學(xué)思想
相關(guān)的東西。
首先看看爭(zhēng)論了幾千年,并且現(xiàn)在仍然有人在爭(zhēng)論不休的“宿命論”問(wèn)題。霍金認(rèn)
為,只要這個(gè)宇宙有一個(gè)初始狀態(tài),粒子的運(yùn)動(dòng)是按照一定物理定律進(jìn)行的(比如相對(duì)
論、量子力學(xué)屬于這些物理定律的一部分),那么所有的粒子運(yùn)動(dòng)軌跡將是確定的,然
后只要你承認(rèn)唯物論,即精神是由物質(zhì)決定的,那么宿命論就是“對(duì)”的。當(dāng)然由于測(cè)
不準(zhǔn)關(guān)系的存在,對(duì)人而言,又是無(wú)法準(zhǔn)確預(yù)測(cè)的,因此也可以將其看作是“不對(duì)”的
。簡(jiǎn)單的說(shuō),可以認(rèn)為宿命論是“對(duì)”的是絕對(duì)的,宿命論是“不對(duì)”的是相對(duì)的。
可能上面這段話你現(xiàn)在仍然難以理解,或許你又覺(jué)得你的命運(yùn)并不是上天注定的,
而是可以通過(guò)自己的努力可以改變的。我要告訴你的是,你在想什么也是事先已注定的
,包括你在預(yù)測(cè)本身也是事先注定的,因?yàn)榇竽X思考問(wèn)題最終是基本粒子運(yùn)動(dòng)的結(jié)果,
而這些粒子的運(yùn)動(dòng)必然要遵循物理定律進(jìn)行,所以你會(huì)不會(huì)努力,想不想努力,包括你
在想你該不該努力這件事本身也是事先注定的。順便說(shuō)一下,你現(xiàn)在正在看這篇文章,
可能正在想這個(gè)宿命論問(wèn)題值得懷疑,或者覺(jué)得寫(xiě)得不夠好,準(zhǔn)備砸個(gè)板磚上來(lái);或者
你在想這篇問(wèn)題寫(xiě)得有點(diǎn)意思,準(zhǔn)備看完后轉(zhuǎn)給朋友看一看;又或者你看到這里,覺(jué)得
很累了,準(zhǔn)備休息一下;…;這些都是上天事先就注定的。從你自身的相對(duì)角度看,因
為你事先不知道后來(lái)會(huì)發(fā)生什么,也可以認(rèn)為不是事先注定的,可能這句話有些不好理
解,不妨好好理解前面說(shuō)過(guò)的公理化思想。
如果你沒(méi)看過(guò)《霍金講演錄-黑洞、嬰兒宇宙及其他》,你可能會(huì)覺(jué)得很驚訝,宿
命論歷來(lái)不都被認(rèn)為是唯心論嗎,怎么由唯物論推導(dǎo)出了宿命論呢?現(xiàn)實(shí)就是這樣和你
開(kāi)了一個(gè)大的玩笑,不過(guò)這個(gè)玩笑也是事先注定的。如果你再仔細(xì)用公理化的方法思考
一下唯物論和唯心論的矛盾性,就像前面分析性善論和性惡論一樣,你會(huì)發(fā)現(xiàn)唯物論、
唯心論不一定就是沖突的,矛盾的雙方是可以統(tǒng)一的,只要你不要同時(shí)將唯物和唯心放
進(jìn)同一個(gè)系統(tǒng)中就行。
當(dāng)然也有聰明者仍然會(huì)懷疑宿命論問(wèn)題的正確性,因?yàn)檫@里有一個(gè)前提條件,即宇
宙要有一個(gè)初始狀態(tài)。宇宙有沒(méi)有初始狀態(tài),我們并不知道啊,雖然有大爆炸學(xué)說(shuō),但
那也只是假說(shuō)而已,并沒(méi)有得到確證,有些人就認(rèn)為宇宙是一直都存在的。這樣看來(lái)似
乎你又有合理的理由在懷疑宿命論了,不過(guò)我仍然要告訴你,你現(xiàn)在在懷疑宿命論仍然
是事先注定的,不相信的話就來(lái)看看下面的分析。
雖然宇宙的初始狀態(tài)值得懷疑,但是這個(gè)宇宙至少已經(jīng)存在了一段時(shí)間,這點(diǎn)我想
是毋庸置疑的。我們可以在我們已知的宇宙存在的這段時(shí)間內(nèi),任意取一個(gè)時(shí)間點(diǎn)t0,
那么在這個(gè)時(shí)間點(diǎn)t0上,所有的粒子都有一個(gè)運(yùn)動(dòng)狀態(tài)。在時(shí)間點(diǎn)t0之后的時(shí)間里,由
于粒子運(yùn)動(dòng)是按照物理定律進(jìn)行的,因此粒子運(yùn)動(dòng)軌跡由時(shí)間點(diǎn)t0的狀態(tài)決定。說(shuō)白一
點(diǎn),如果取100年前的一個(gè)時(shí)間點(diǎn)作為t0,那么現(xiàn)在的所有粒子運(yùn)動(dòng)狀態(tài)100年前就已經(jīng)
確定了,如果取10000年前一個(gè)時(shí)間點(diǎn)作為t0,那么最近10000年內(nèi)所有粒子運(yùn)動(dòng)的軌跡
在10000年前就確定了,當(dāng)然,你可以取更早的時(shí)間,比如100億年前的時(shí)間點(diǎn)。
總之,現(xiàn)在你會(huì)發(fā)現(xiàn)宇宙有沒(méi)有初始狀態(tài)并不會(huì)影響宿命論的正確性,所以這個(gè)世
界的一切都是注定的。只不過(guò)由于粒子間相互影響過(guò)于復(fù)雜,我們無(wú)法知道這些粒子的
運(yùn)動(dòng)軌跡而已。當(dāng)然,如果將測(cè)不準(zhǔn)關(guān)系用上的話,那么就是這個(gè)運(yùn)動(dòng)軌跡對(duì)人來(lái)說(shuō)是
無(wú)法準(zhǔn)確預(yù)測(cè)的,所以不妨開(kāi)個(gè)玩笑:“算命先生經(jīng)常算得不準(zhǔn)大概是測(cè)不準(zhǔn)關(guān)系的緣
故吧”。
如果你再深入思考一下測(cè)不準(zhǔn)關(guān)系,你會(huì)發(fā)現(xiàn)這是一個(gè)測(cè)量系統(tǒng)的問(wèn)題。由于宿命
論的存在,這個(gè)世界本身實(shí)際上是確定的,是“準(zhǔn)“的,之所以測(cè)不準(zhǔn)乃是我們?nèi)祟愃?
具有的測(cè)量能力依賴于基本粒子造成的。所以我在前面說(shuō)宿命論是“不對(duì)”的是相對(duì)的
,它是相對(duì)于我們?nèi)祟惖臏y(cè)量能力而言的。根岑(Gentzen,曾任希爾伯特的助手)在
一個(gè)更強(qiáng)的系統(tǒng)內(nèi)證明了ZF系統(tǒng)內(nèi)的問(wèn)題都是可判定的,從一個(gè)側(cè)面說(shuō)明這個(gè)世界本身
是確定的。(注:它和哥德?tīng)柌煌耆远ɡ聿⒉幻埽捎跀?shù)學(xué)上的復(fù)雜性,這里就不
詳細(xì)解釋了)
不妨再想想我們老祖宗提出的“是莊周夢(mèng)見(jiàn)了蝴蝶?還是蝴蝶夢(mèng)見(jiàn)了莊周?”,“
風(fēng)動(dòng)?幡動(dòng)?還是心動(dòng)?”之類的問(wèn)題,當(dāng)然以前你都認(rèn)為這是純粹的唯心主義,甚至
認(rèn)為是封建糟粕,但是如果結(jié)合測(cè)不準(zhǔn)關(guān)系的內(nèi)涵,再結(jié)合前面所說(shuō)的公理化分析方法
進(jìn)行分析,估計(jì)你現(xiàn)在不敢輕易地下結(jié)論。
也許到現(xiàn)在你仍然無(wú)法理解為什么把大哲們劃在了大科學(xué)家的上一層,你可能仍然
覺(jué)得萬(wàn)有引力、相對(duì)論等成果是最偉大的。下面就來(lái)談?wù)劄槭裁创笳鼙却罂茖W(xué)家高一層
。
如果把人類在現(xiàn)有能力情況下,將來(lái)所能夠擁有的知識(shí)總集看成是一個(gè)集合A,人
類現(xiàn)在已有的知識(shí)總集看成是集合B,顯然,集合B只是集合A的一個(gè)子集,并且是很小
的一個(gè)子集。牛頓力學(xué)、相對(duì)論這些理論只能算作集合B里的一個(gè)子集,相對(duì)于集合A,
只能算作是滄海一粟。 換句話說(shuō),在人類現(xiàn)有能力可做的事情集合中,牛頓力學(xué)和相
對(duì)論等理論給出了詳細(xì)的辦法讓你可以做其中的一些事情,當(dāng)然剩下的更多的事情是牛
頓力學(xué)和相對(duì)論所無(wú)法解決的。
哥德?tīng)柌煌耆远ɡ砗蜏y(cè)不準(zhǔn)關(guān)系的意義在于,它指出集合A的范圍,即將人類現(xiàn)
有能力發(fā)揮到極限的情況下,那些事情是你能做到的,那些是你不能做到的。當(dāng)然,它
并沒(méi)有給出具體的方法讓你去做你能做到的事情,它只是告訴我們我們?nèi)祟惉F(xiàn)在發(fā)現(xiàn)的
能力所能達(dá)到的極限。或許將來(lái)發(fā)現(xiàn)人類有其他新的未發(fā)現(xiàn)的能力,那么這個(gè)極限就被
打破了。比如將來(lái)能發(fā)現(xiàn)不依賴于基本粒子的其他測(cè)量方法,并且測(cè)量過(guò)程中不會(huì)改變
其他粒子的狀態(tài),那么測(cè)不準(zhǔn)關(guān)系就被打破了。
看到這里,估計(jì)你已經(jīng)發(fā)現(xiàn)了一些秘密,科學(xué)兜了一大圈,最終還是回到了哲學(xué),
也就是我們所認(rèn)為的玄學(xué)上。同時(shí)你也會(huì)發(fā)現(xiàn),我們老祖宗提出的所謂玄學(xué),原來(lái)和現(xiàn)
代科學(xué)是相通的,并非象某些人想像的那樣全是糟粕。如果有人認(rèn)為西方現(xiàn)代暫時(shí)領(lǐng)先
我們,進(jìn)而就認(rèn)為西方古代就已經(jīng)超越我們,我們老祖宗就已經(jīng)落后西方,他們的思想
都是糟粕的話,那么我認(rèn)為他可能犯了崇洋媚外的毛病。我不得不化用一句周杰倫在春
晚上的歌詞送給他:“你不妨抓一副我們祖?zhèn)鞯闹嗅t(yī)良方,治一治你那崇洋媚外的內(nèi)傷
”。順便告訴他一下,中醫(yī)用的陰陽(yáng)五行理論,它的前提假設(shè)就是宿命論。
上面說(shuō)的這幾位大哲的成果,可能對(duì)你的世界觀會(huì)有很大的影響,于是你可能會(huì)羨
慕起這些大哲們的成果來(lái)。如果你有大志的話,你會(huì)希望有朝一日你也能變成大哲,但
是你發(fā)現(xiàn)上面的大哲是研究數(shù)學(xué)和物理學(xué)的,而你是學(xué)計(jì)算機(jī)的程序員,那么是不是沒(méi)
有機(jī)會(huì)變成大哲呢?
如果你能將NP難題給徹底解決掉,意味著計(jì)算機(jī)內(nèi)的計(jì)算的奧秘基本被揭開(kāi),或許
你可以進(jìn)到這層樓來(lái);或者你能發(fā)現(xiàn)另外一套計(jì)算機(jī)可以理解的數(shù)學(xué)公理系統(tǒng),并且這
個(gè)公理系統(tǒng)是完備的,那么計(jì)算機(jī)取代人類進(jìn)行思維的一個(gè)必要條件就滿足了,計(jì)算機(jī)
將具有真正意義上的“邏輯思維和推理能力”,你可以輕松地進(jìn)到這層樓來(lái)。如果你發(fā)
現(xiàn)了新的方法可以打破測(cè)不準(zhǔn)關(guān)系,同樣你也可以輕松地進(jìn)到這層樓來(lái)。
如果你能徹底揭開(kāi)人類抽象思維的奧妙,并讓計(jì)算機(jī)懂得了如何創(chuàng)建抽象,具備抽
象思維能力,那么也就具備了“設(shè)計(jì)能力”,可以取代人類進(jìn)行各種設(shè)計(jì)了,你也可以
輕松地進(jìn)到這層樓來(lái)。順便說(shuō)一下,如果你對(duì)軟件設(shè)計(jì)有真正深刻理解的話,就會(huì)明白
這不是在寫(xiě)科幻小說(shuō)。對(duì)此感興趣者,不妨好好地研究一下程序切片方面的技術(shù),會(huì)讓
你對(duì)軟件設(shè)計(jì)和測(cè)試等方面的理解有質(zhì)的提高,或許有一天你能打開(kāi)這扇大門。
當(dāng)然,計(jì)算機(jī)要完全取代人還有其他必要條件,后面還會(huì)提及。
值得一提的是,雖然第10層樓是本文中所寫(xiě)的最高層,但是大哲們并沒(méi)有覺(jué)得他們
到了頂層,他們通常都還會(huì)努力尋找通往更高一層的樓梯。如果你也有成為天下第一的
想法,那么你或許會(huì)想要做什么事情才能超越大哲們的成就,當(dāng)然,這都得依賴于找到
更高一層樓的樓梯。
個(gè)人認(rèn)為,再往上一層樓的樓梯是通往天堂的道路,也就是說(shuō)第11層樓的名字叫“
天堂”,是“上帝”住的地方,而不是人住的地方。如果將來(lái)某天有人能爬到天堂的話
,那么他已經(jīng)不是人了,而是由人變成了“上帝”。
你也許會(huì)懷疑這個(gè)世界到底有沒(méi)有“天堂”,“上帝”是否根本就不存在,我也很
有同感。因此有必要再寫(xiě)上一段文字,討論一下“上帝”的問(wèn)題。如果你想了解天堂的
奧妙,有沒(méi)有辦法讓你變成“上帝”,不妨看看繼續(xù)往下看看第11層樓的玄妙。注意我
這里用的是“玄妙”二字,因?yàn)樯系墼诖蟛糠秩搜劾锕烙?jì)都是“玄之又玄”的東西。
posted on 2010-01-13 17:42 星期五 閱讀(225) 評(píng)論(0) 編輯 收藏 所屬分類: 天圓地方