国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

程序員的十層樓 (上)

發(fā)布時(shí)間:2010-12-22 20:23    發(fā)布者:諸葛孔明
關(guā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)樽觥辈锁B(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), 一旦成為”牛人”,通?梢缘皆S多知名的公司里去,運(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件看起來(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)榘选迸H恕?給蓋了下去,并不是他們自己覺(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”分別是什么意思不用我解釋吧;蛟S有些人覺(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ù),然后還需要試試在硬盤(pán)中如何實(shí)現(xiàn)哈希 查找,并考慮數(shù)據(jù)從硬盤(pán)讀到內(nèi)存后,如何組織硬盤(pán)中的數(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)想著成為”大師”;蛟S你看了前面舉的一些大師的例子,你會(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á)呢?赡懿簧偃爽F(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)一大步的程度。

程序員的十層樓(下)
本文地址:http://www.4huy16.com/thread-47473-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
hbnd2008 發(fā)表于 2010-12-29 17:14:45
hwong 發(fā)表于 2011-1-3 13:49:20
我也頂
david3721 發(fā)表于 2011-1-9 16:56:27
I have experience on this.
it is hard to get upgraded to higher level
sometimes.
it's same to me
zlj527 發(fā)表于 2011-1-9 21:54:41
需要多有人思考這類問(wèn)題,時(shí)刻提醒我們到底是誰(shuí)?
zhengaoyuan 發(fā)表于 2011-1-10 09:22:43
需要多有人思考這類問(wèn)題,時(shí)刻提醒我們到底是誰(shuí)?
berger008 發(fā)表于 2011-1-11 10:31:23
寫(xiě)的很好, 贊
alaok 發(fā)表于 2011-1-11 12:51:41
值得思考.
zls261976514 發(fā)表于 2011-1-13 12:57:12
山外山,人外人
wuafeng 發(fā)表于 2011-3-30 08:28:38
good
kingdalai 發(fā)表于 2011-5-19 16:51:17
總結(jié)得好!
solo_74 發(fā)表于 2012-1-17 17:53:33
必須承認(rèn),我是菜鳥(niǎo)!
octubersun 發(fā)表于 2012-2-3 13:27:53
惘聞
xuri001 發(fā)表于 2012-7-12 18:18:23
ding
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • Microchip第22屆中國(guó)技術(shù)精英年會(huì)——采訪篇
  • “芯”光璀璨,鵬城共賞——2025 Microchip中國(guó)技術(shù)精英年會(huì)深圳站回顧
  • 技術(shù)熱潮席卷三城,2025 Microchip中國(guó)技術(shù)精英年會(huì)圓滿收官!
  • 電動(dòng)兩輪車設(shè)計(jì)生態(tài)系統(tǒng)
  • 貿(mào)澤電子(Mouser)專區(qū)
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表