覺得這篇文章寫的還蠻意思,全篇很長我簡要的把該文改寫一下,以突出十個層次的區(qū)別:
中國的程序員水平比西方程序員水平差,還是中國有許多優(yōu)秀的程序員達(dá)到或超過了西方程序員 同等水平呢?要解決這個問題,必須先知道程序員有多少種技術(shù)層級,每個層級需要什么樣的技 術(shù)水平,然后再比較中國和西方在各個技術(shù)層級的人數(shù),就可以知道到底有沒有差距,差距有多 大。
當(dāng)然,對于如何劃分程序員的技術(shù)層級,不同公司或不同人會有不同的劃分標(biāo)準(zhǔn),下面的劃分僅 代表個人的觀點,如有不當(dāng)之處,還請砸板磚予以糾正。
一、 菜鳥
第 1 層樓屬于地板層,邁進(jìn)這層樓的門檻是很低的。基本上懂計算機(jī)的基本操作,了解計算 機(jī)專業(yè)的一些基礎(chǔ)知識,掌握一門基本的編程語言如 C/C++,或者 Java,或者 JavaScript,或者O-C..., 均可入門邁進(jìn)這層。
二、 大蝦
從第 1 層爬到第 2 層相對容易一些,以 C/C++程序員為例,只要熟練掌握 C/C++編程語言,
掌握 C 標(biāo)準(zhǔn)庫和常用的各種數(shù)據(jù)結(jié)構(gòu)算法,掌握 STL 的基本實現(xiàn)和使用方法,掌握多線程編程 基礎(chǔ)知識,掌握一種開發(fā)環(huán)境,再對各種操作系統(tǒng)的 API 都去使用一下,搞網(wǎng)絡(luò)編程的當(dāng)然對 socket 編程要好好掌握一下,然后再學(xué)習(xí)一些面向?qū)ο蟮脑O(shè)計知識和設(shè)計模式等,學(xué)習(xí)一些測 試、軟件工程和質(zhì)量控制的基本知識,大部分人經(jīng)過 2~3 年的努力,都可以爬到第 2 層,晉升 為"大蝦"。
三、 牛人
由于"大蝦"們經(jīng)常被一些疑難問題給卡住,所以有了"大蝦"們只好繼續(xù)學(xué)習(xí),他們需要將原
來所學(xué)的知識進(jìn)一步熟練掌握,比如以熟練掌握 C++編程語言為例,除了學(xué)一些基礎(chǔ)性的 C++ 書籍如《C++ Primer》,《Effective C++》,《Think in C++》,《Exception C++》等之外,更重要 的是需要了解 C++編譯器的原理和實現(xiàn)機(jī)制,了解操作系統(tǒng)中的內(nèi)部機(jī)制如內(nèi)存管理、進(jìn)程和 線程的管理機(jī)制,了解處理器的基礎(chǔ)知識和代碼優(yōu)化的方法,此外還需要更深入地學(xué)習(xí)更多的數(shù) 據(jù)結(jié)構(gòu)與算法,掌握更深入的測試和調(diào)試知識以及質(zhì)量管理和控制方法,對各種設(shè)計方法有更好 的理解等。
學(xué)習(xí)上面說的這些知識不是一揮而就的,不看個三五十本書并掌握它是做不到的。以數(shù)據(jù)結(jié) 構(gòu)算法來說,至少要看個 5~10 本這方面的著作;以軟件設(shè)計來說,光懂結(jié)構(gòu)化設(shè)計、面向?qū)?象設(shè)計和一些設(shè)計模式是不夠的,還要了解軟件架構(gòu)設(shè)計、交互設(shè)計、面向方面的設(shè)計、面向使 用的設(shè)計、面向數(shù)據(jù)結(jié)構(gòu)算法的設(shè)計、情感化設(shè)計等,否則是很難進(jìn)到這個樓層的。
四、 大牛
從第 3 層爬到第 4 層可不像上面說過的那幾層一樣容易,要成為大牛的話,你必須要能做
牛人們做不了的事情,解決牛人們解決不了問題。比如牛人們通常都不懂寫操作系統(tǒng),不會寫編 譯器,不懂得 TCP/IP 協(xié)議的底層實現(xiàn),如果你有能力將其中的任何一個實現(xiàn)得象模象樣的話, 那么你就從牛人升級為"大牛"了。當(dāng)然,由于各個專業(yè)領(lǐng)域的差別,這里舉操作系統(tǒng)、編譯器、TCP/IP 協(xié)議只是作為例子, 并不代表成為"大牛"一定需要掌握這些知識,以時下熱門的多核編程來說,如果你能比牛人們更 深入地掌握其中的各種思想原理,能更加自如的運用,并有能力去實現(xiàn)一個象開源項目TBB 庫 一樣的東西,也可以成為"大牛",又或者你能寫出一個類似 Apache 一樣的服務(wù)器,或者寫出一 個數(shù)據(jù)庫,都可以成為"大牛"。
當(dāng)"牛人"晉升為"大牛",讓"牛人們"發(fā)現(xiàn)有比他們更牛的人時,對"牛人"們的心靈的震撼是可 想而知的。由于牛人們的數(shù)量龐大,并且牛人對大蝦和菜鳥階層有言傳身教的影響,所以大牛們 通常能獲得非常高的社會知名度,幾乎可以用"引無數(shù)菜鳥、大蝦、牛人競折腰"來形容,看看前 面提過的 Linus Torvalds等大牛,應(yīng)該知道此言不虛。
雖然成為"大牛"的條件看起來似乎很高似的,但是這層樓并不是很難爬的一層,只要通過一定的 努力,素質(zhì)不是很差,還是有許多"牛人"可以爬到這一層的。由此可知,"大牛"這個樓層的人數(shù) 其實并不像想像的那么少,例如比爾·蓋茨之類的人好像也是屬于這一層的。
五、 專家
當(dāng)大牛們真正動手做一個操作系統(tǒng)或者類似的其他軟件時,他們就會發(fā)現(xiàn)自己的基本功仍然有很 多的不足。以內(nèi)存管理為例,如果直接抄襲 Linux 或者其他開源操作系統(tǒng)的內(nèi)存管理算法,會被 人看不起的,如果自動動手實現(xiàn)一個內(nèi)存管理算法,他會發(fā)現(xiàn)現(xiàn)在有關(guān)內(nèi)存管理方法的算法數(shù)量 眾多,自己并沒有全部學(xué)過和實踐過,不知道到底該用那種內(nèi)存管理算法。
看到這里,可能有些人已經(jīng)明白第5 層樓的奧妙了,那就是需要做基礎(chǔ)研究,當(dāng)然在計算機(jī)里, 最重要的就是"計算"二字,程序員要做基礎(chǔ)研究,主要的內(nèi)容就是研究非數(shù)值"計算"。
非數(shù)值計算可是一個非常龐大的領(lǐng)域,不僅時下熱門的"多核計算"與"云計算"屬于非數(shù)值計算范 疇,就是軟件需求、設(shè)計、測試、調(diào)試、評估、質(zhì)量控制、軟件工程等本質(zhì)上也屬于非數(shù)值計算 的范疇,甚至芯片硬件設(shè)計也同樣牽涉到非數(shù)值計算。如果你還沒有真正領(lǐng)悟"計算"二字的含義, 那么你就沒有機(jī)會進(jìn)到這層樓來。
六、 學(xué)者
當(dāng)"專家"們想繼續(xù)往上一層樓爬時,他們幾乎一眼就可以看到樓梯的入口,不過令他們吃驚的是, 樓梯入口處豎了一道高高的門檻,上面寫著"創(chuàng)新"二字。不幸的是,大多數(shù)人在爬到第 5 層樓時 已經(jīng)體能消耗過度,無力翻過這道門檻。
以查找為例,并不是去天天盯著那些復(fù)雜的查找結(jié)構(gòu)和算法進(jìn)行研究,你需要做的是將二分查找、 哈希查找、普通二叉樹查找等基礎(chǔ)性的知識好好地復(fù)習(xí)幾遍。
以哈希查找為例,首先你需要去將各種沖突解決方法如鏈?zhǔn)浇Y(jié)構(gòu)、二次哈希等編寫一遍,再試試 不同種類的哈希函數(shù),然后還需要試試在硬盤中如何實現(xiàn)哈希查找,并考慮數(shù)據(jù)從硬盤讀到內(nèi)存 后,如何組織硬盤中的數(shù)據(jù)才能快速地在內(nèi)存中構(gòu)建出哈希表來,...,這樣你可能需要將一個哈 希表寫上十幾個不同的版本,并比較各個版本的性能、功能方面的區(qū)別和適用范圍。
總之,對任何一種簡單的東西,你需要考慮各種各樣的需求,以需求來驅(qū)動研究。最后你將各種 最基礎(chǔ)性的查找結(jié)構(gòu)和算法都了然于胸后,或許某天你再看其他更復(fù)雜的查找算法,或者你在散
步時,腦袋里靈光一現(xiàn),突然間就發(fā)現(xiàn)了更好的方法,也就從專家晉升為"學(xué)者"了。
七、 大師
從第 6 層樓爬到第 7 層樓,并沒有多少捷徑可走,主要看你有沒有足夠的能量。你如果能象 Hoare 一樣設(shè)計出一個快速排序的算法;或者象Eugene W. Myers 一樣設(shè)計出了一個用編輯圖的最短 路徑模型來解決 diff 問題的算法;或者象 M.J.D. Powell 一樣提出了一個能夠處理非線性規(guī)劃問 題的 SQP 方法;或者你發(fā)現(xiàn)基于比較的排序算法,它的復(fù)雜度下界為O(NLogN);或者你發(fā)現(xiàn) 用??梢詫⑦f歸的算法變成非遞歸的;或者你設(shè)計出一個紅黑樹或者 AVL 樹之類的查找結(jié)構(gòu); 或者你設(shè)計出一個象C++或 Java 一樣的語言;或者你發(fā)明了UML;...,你就爬到了第7 層,晉 升為"大師"了。
八、科學(xué)家
科學(xué)家向來都是一個神圣的稱號,因此我把他放在了“大師”之上。要成為科學(xué)家,你的貢獻(xiàn)必須 超越大師,不妨隨便舉一些例子。
如果你象 Dijkstra 一樣設(shè)計了 ALGOL 語言,提出了程序設(shè)計的三種基本結(jié)構(gòu):順序、選擇、循 環(huán),那么你可以爬到第 8 層樓來。順便說一下,即使拋開這個成果,Dijkstra 憑他的 PV 操作和 信號量概念的提出,同樣可以進(jìn)到這層樓。
如果你象DonKnuth一樣,是數(shù)據(jù)結(jié)構(gòu)與算法這門學(xué)科的重要奠基者,你也可以進(jìn)到這層樓來。 當(dāng)然,數(shù)據(jù)結(jié)構(gòu)和算法這門學(xué)科不是某個人開創(chuàng)的,是許多大師和科學(xué)家集體開創(chuàng)的。 如果你象巴科斯一樣發(fā)明了Fortran 語言,并提出了巴科斯范式,對高級程序語言的發(fā)展起了重 要作用,你也可以進(jìn)到這層樓來。
九、大科學(xué)家
進(jìn)入這層樓的門檻通常需要一些運氣,比如某天有個蘋果砸到你頭上時,你碰巧發(fā)現(xiàn)了萬有引力, 那么你可以進(jìn)到這層樓來。當(dāng)然,萬有引力幾百年前就被人發(fā)現(xiàn)了,如果你現(xiàn)在到處嚷嚷著說你 發(fā)現(xiàn)了萬有引力,恐怕馬上會有人打110,然后警察會把你送到不正常人類的*****地去。因此, 這里舉萬有引力的例子,只是說你要有類似的成就才能進(jìn)到這層樓來。
當(dāng)然,程序員們最關(guān)心的是自己有沒有機(jī)會變成大科學(xué)家。既然計算機(jī)這門大學(xué)科的開創(chuàng)性成果 早就被馮·諾伊曼、圖靈等人摘走了,那么程序員們是不是沒有機(jī)會變成大科學(xué)家了呢?我們的 古人說得好:“江山代有才人出,各領(lǐng)風(fēng)騷數(shù)百年”,現(xiàn)在在計算機(jī)這門學(xué)科下面誕生了許多非常 重要的大的分支,所以你還是有足夠的機(jī)會進(jìn)到這層樓的。
如果你能夠徹底解決自然語言理解(機(jī)器翻譯)這門學(xué)科中的核心問題,或者你在人工智能或 者機(jī)器視覺(圖像識別)方面有突破性的發(fā)現(xiàn),那么你同樣可以輕易地晉升為“大科學(xué)家”。這 樣當(dāng)某天你老了去世時,或許那天國人已經(jīng)覺醒,你也能享受到如 Dijkstra 一樣的待遇,有滿城 甚至全國的人去為你送葬。
十、 大哲
看了這層樓的名字“大哲”,可能不少人已經(jīng)猜到了這層樓的秘密,那就是你的成果必須要上升到 哲學(xué)的高度,你才有機(jī)會能進(jìn)到這層來。
當(dāng)然,上升到哲學(xué)高度只是一個必要條件,牛頓的萬有引力似乎也上升到了哲學(xué)的高度,因為不 知道引力到底是怎么來的,但是牛頓沒有被劃到這一層,因為進(jìn)到這層還有另外的條件,那就是 你的成果必須引起了哲學(xué)上的深度思考,并能讓人們的世界觀向前跨進(jìn)一大步。竊以為牛頓、愛 因斯坦等人的成就還達(dá)不到讓人們世界觀向前跨進(jìn)一大步的程度。
所以,這層樓中的人的成就對我們普通人認(rèn)識世界非常重要,你可以不學(xué)相對論,但是你不可以 不對這層樓的人所作出的成就不了解,否則你的世界觀就是極其不完整的,會犯許多認(rèn)識上的錯 誤。不幸的是,中國的科普知識普及還不夠到位,知道這層樓成就的人好像并不多,程序員中恐 怕更少。下面就來看看這些用一只手的手指數(shù)得清的大哲們,到底有什么成就,能比萬有引力定 律和相對論還重要。
1、希爾伯特 (1862~1943)
第 1 位進(jìn)到此樓層是一位名叫“希爾伯特”的大數(shù)學(xué)家,如果你學(xué)過《泛函分析》,那么你在學(xué) 習(xí)希爾伯特空間時可能已經(jīng)對這位大數(shù)學(xué)家有所了解;如果你不是學(xué)數(shù)學(xué)出身的,又對數(shù)學(xué)史不 感興趣的話,恐怕你從來沒有聽說過這個名字。不過如果我問一下,知不知道二次世界大戰(zhàn)前世 界數(shù)學(xué)中心在那里,你肯定會有興趣想知道。
不妨說一下,二戰(zhàn)前整個世界的數(shù)學(xué)中心就在德國的哥廷根,而我們這位大數(shù)學(xué)家希爾伯特便是 它的統(tǒng)帥和靈魂人物。即使在二戰(zhàn)期間,希特勒和丘吉爾也有協(xié)定,德國不轟炸牛津和劍橋,作 為回報,英國不轟炸海德堡和哥廷根。
2、哥德爾 (1906~1978)
這位大哲的名字叫“哥德爾 (G?del) ”,你可能從來也沒有聽說過這個名字,即使你讀了一個數(shù) 學(xué)系的博士學(xué)位,如果你的研究方向不和這位大哲對口的話,你也不一定了解這位大哲的成就, 更不知道他的成果對我們這個世界有何意義。
簡單地說,這位大哲 20 多歲時就證明了兩個定理,一個叫做“哥德爾完全性定理”,另一個更 重要的叫做“哥德爾不完全性定理”。你也許會覺得奇怪,第 9 層樓的成就就已經(jīng)上升到了公理 的高度,這種證明定理的事情不是學(xué)者和大師們做的事情嗎?怎么能比第 9 層樓的成就還高呢? 下面就來簡單說一下這兩個定理的含義,你就會明白這屬于系統(tǒng)級的定理,絕不是普通的定理和 公理所能比擬的。
“哥德爾完全性定理”證明了邏輯學(xué)的幾條公理是完備的,即任何一個由這些公理所產(chǎn)生出的問 題,在這個公理系統(tǒng)內(nèi)可以判定它是真的還是假的,這個結(jié)論表明了我們?nèi)祟愃鶕碛械倪壿嬎季S 能力是完備的。這條定理并不能將其帶入這層樓來,帶其進(jìn)入這層樓的是另一條定理。
可能你看過《未來戰(zhàn)士》、《黑客帝國》、《I,Robot》之類的科幻電影,于是你產(chǎn)生制造一個和人 一樣或者比人更高一級的智能機(jī)器人的想法,這就引入了一個達(dá)到哲學(xué)高度的問題,“人到底能 不能制造出具有和人一樣的思維能力的機(jī)器來?”。
我只能告訴你,“你的愿望是良好的,但現(xiàn)實是殘酷的”。如果你仔細(xì)思考一下不完全性定理的含 義,并結(jié)合現(xiàn)代計算機(jī)所具有的能力分析一下,你會發(fā)現(xiàn)這個問題的答案暫時是否定的。如果你
想造出和人一樣思維能力的機(jī)器,那么你需要去好好學(xué)習(xí)這位大哲及其后續(xù)研究者的成果,并在 他們的基礎(chǔ)上有新的突破才行。
3、海森堡 (1901~1976) 海森堡這個名字相信沒有幾個人不知道的,大部分人在學(xué)習(xí)物理時都學(xué)過他的“測不準(zhǔn)關(guān)系”,
也就是因為這個“測不準(zhǔn)關(guān)系”,海森堡爬到了第十層樓。
如果你看過《時間簡史》和《霍金講演錄-黑洞、嬰兒宇宙及其他》,你也許已經(jīng)了解測不準(zhǔn)關(guān) 系的威力,所以這里不想做過多的討論,只談一些和本土產(chǎn)生的哲學(xué)思想相關(guān)的東西。
十一、超越第十層的上帝
看了上面的小標(biāo)題,你可能會覺得奇怪,這篇文章不是講“程序員的十層樓”嗎?怎么冒出了第 11 層來了?
其實這并不矛盾,程序員確實只有十層樓,因為爬到第 11 層時,已經(jīng)變成上帝,不再是程序員 了;所以超出 10 層樓本身并不重要,關(guān)鍵的問題是看你有沒有能力變成上帝。
1、誰是上帝?
菜鳥們認(rèn)為 Linus Torvalds是程序員中的上帝,看完了前面各層樓的介紹,此時再看到這句話, 相信你要忍不住在心里笑起來。當(dāng)然,你會不會笑起來是事先注定的。Don Knuth 也不是上帝, 他離上帝還有三層樓的距離。即使是大哲們,他們離天堂也還差一層樓,因此這個世界上有史以 來還沒有任何一個人變成過上帝。
我們感興趣的是,將來會不會有人爬到比大哲們更高的樓層上,變成了上帝。 要變成上帝,你得有上帝一樣的能力,上帝會造人,你會嗎?
你也許會怯生生地問:“我可以和愛人生小孩,算不算造人?”,你可能還會理直氣壯地說:“現(xiàn) 在生物學(xué)上都可以克隆人了,早就有人掌握了造人的方法”。
事實上克隆人需要有人的體細(xì)胞,必須要先有人才會有體細(xì)胞。上帝造人時,這個世界上并沒有 人,是從無生命的物質(zhì)“塵土”中創(chuàng)造出的人。因此,用最原始的方法生人和克隆人都是從有生 命信息的物質(zhì)中生人,不能算作造人。
讀后感: 終于輪到我來發(fā)表一下看法了,這也是我為什么要把這篇文章摘抄下來的原因。可以看出本文作 者是為 C/C++程序員并且受過良好的教育,以及高于編程以外的思考。要說作者參透了一切, 看破了紅塵。那到未必,不過作者的十個層次分級對一名程序員來說一個很好的指導(dǎo)性意見。
最 后用《天道》中的《自嘲》做為結(jié)束:
卜算子·自嘲
本是后山人,偶做前堂客,醉舞經(jīng)閣半卷書,坐井說天闊。
大志戲功名,海斗量福禍,論到囊中羞澀時,怒指乾坤錯。(轉(zhuǎn))
程序員的10個層次
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。