導航:首頁 > 工程技術 > 軟體工程brooks定律適用范圍

軟體工程brooks定律適用范圍

發布時間:2021-08-13 15:09:20

❶ 請問誰有擴展歐幾里得演算法非遞歸代碼

以下摘自《程序員的十層樓》
自西方文藝復興以來,中國在自然科學方面落後西方很多,軟體領域也不例外。當然現在中國的許多程序員們對此可能有許多不同的意見,有些人認為中國的程序員水平遠落後於西方,有些則認為中國的程序員個人能力並不比西方的程序員差,只是整個軟體產業落後而已。那麼,到底中國的程序員水平比西方程序員水平差,還是中國有許多優秀的程序員達到或超過了西方程序員同等水平呢?要解決這個問題,必須先知道程序員 有多少種技術層級,每個層級需要什麼樣的技術水平,然後再比較中國和西方在各個技術層級的人數,就可以知道到底有沒有差距,差距有多大。
當然,對於如何劃分程序員的技術層級,不同公司或不同人會有不同的劃分標准,下面的劃分僅代表個人的觀點,如有不當之處,還請砸板磚予以糾正。
第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開源項目的源代碼(鏈接:),然後上Intel的博客()和多核論壇()去看看相關文章,再買上幾本相關的書籍學習一下。

在國內, 一旦成為"牛人",通常可以到許多知名的公司里去,運氣好者可以掛上一個架構師的頭銜,甚至掛上一個"首席架構師"或者"首席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一樣的待遇,有滿城甚至全國的人去為你送葬。

❷ <軟體工程>的好書

軟體工程導論第四版張海潘編著
最適合初學者

軟體工程---實踐者研究 機械工業出版社

<<軟體工程-實踐者的研究方法>>
Software Engineering: A Practitioner's Approach
Roger s.Pressman 梅宏

總體方法論和過程

第1名:
解析極限編程——擁抱變化(影印版)
原書名:Extreme Programming Explained:Embrace Change
作者:Kent Beck
出版社:中國電力出版社
原出版社:Addison-Wesley
頁書:194
定價:26
出版日期:2003-9-1

專家評語:
曲俊生:
XP(極限編程)由於其高度可操作性,尤其是對於業界眾多實踐的總結,在敏捷軟體開發方法中一馬當先,獲得了廣泛的研究與關注。本書是了解XP的必讀寶典,其中對於XP的原則、核心價值、最佳實踐都有深入的描述,更加難能可貴的是,作者並沒有效法其他鼓動者,將XP推到「萬金油」的高度,而是非常清楚地列舉了它不適用的地方。同時,作者也指出,不要太深入地追究您在項目中採用的是否是完全的XP實踐,而應該根據項目的實際進行剪裁。
本書適合對於敏捷軟體開發感興趣,同時又想找到一個可操作性較強方法的開發人員。

王詠剛:
單憑書名里「擁抱變化」這四個字,Kent Beck這本專門給大夥兒解釋極限編程是什麼東東的紅寶書就沒白寫。要說也是,那些沒事兒就鼓搗世界級的軟體工程理論、動輒就要寫1000頁以上大部頭的老先生們做夢也想不到,他們的眼中釘肉中刺,他們想方設法要「管理」、「控制」的對象——軟體開發里的「變化」——在Beck看來就像是楊過身邊的大雕,雖然長得丑點兒,卻能陪你練劍,讓你成為真正的大俠。聽Beck的沒錯,趕快放下架子,和「變化」打成一片吧,要不然你永遠也甭想練成獨孤九劍。

第2名:
敏捷軟體開發(影印版)
原書名:Agile Software Development
作者:Alistair Cockburn
出版社:人民郵電出版社
原出版社:Addison-Wesley
頁數:324 定價:35
出版日期:2003-8-1

專家評語:
曲俊生:
很早以前就讀到英文的電子版,在很大程度上,本書是對於RUP等方法論的顛覆,尤其是在國內「軟體藍領」宣傳大行其道的時候,本書構成了一副有效的清醒劑。本書是Cockburn從20多年的IBM工作中總結出來的實踐結晶。書中充滿了睿智的比喻與描述,例如,將軟體開發形容成一場游戲。書中對於水晶方法的介紹固然可貴,但是更加精彩的是對於人、溝通等主題的深入描述,可以說,這是既《人件》之後對「人」在軟體開發中重要作用描述的又一本經典著作。
該書也不是了解SE(軟體工程)的入門書籍,適合於對傳統軟體開發過程有深入理解,但是對於敏捷軟體開發了解不深的PM(項目經理)詳細閱讀。

第3名:
測試驅動開發(影印版)
原書名:Test-Driven Development
作者:Kent Beck
出版社:中國電力出版社
原出版社:Addison-Wesley
頁數:226 定價:32
出版日期:2003-8-1
專家評語:
徐鋒:
分析、設計、編碼、測試,已經成為了軟體開發領域亘古不變的真理。Kent Beck,這一全力追求敏捷,希望將編程發揮到極限的黑客級大師,提出了顛覆性的理論——測試先行。在本書中,作者結合編程實例,說道理、講方法,並結合自動化測試框架來提高效能。讓筆者看完之外,就有躍躍欲試之感,叛逆的精神融入了每一個細胞。

該帖由: lindows修改,時間 2004-1-6 上午11:44

分析和設計

第1名:
編寫有效用例
原書名:Writing Effective Use Cases
作者:Alistair Cockburn
出版社:機械工業出版社
原出版社:Addison-Wesley
頁數:304
定價:25
出版日期:2002-7-1

專家評語:
張恂:
用例是10多年來最重要的需求分析技術,更是現代軟體過程和項目管理的主驅動軸。隨著對用例理解的深入,我不禁倒吸一口氣:對於大多數項目,如果不細化到用例這個層次,我們過去寫的所謂「需求」其實都算不上真正的需求。此書是繼Ivar Jacobson的OOSE之後,用例兩大流派的「教主」之一Alistair Cockburn的代表之作,而且我一直認為它是迄今為止最好的用例教材。
10多年前Cockburn曾經聽過Jacobson的課,沒想到後來他在用例技術的實用化方面做出了貢獻,大有青出於藍而勝於藍之勢。大概與作者喜歡作詩(以及他對道德經的愛好)有關,我很喜歡他的寫作風格:依著人們的直覺娓娓道來,在平淡無奇的文字背後卻折射出極其豐富的項目經驗和扎實的專業技巧,讀完之後你會驚訝地發現一切竟然如此簡單和美妙,這不就是軟體開發的真諦么?
徐鋒:
用例分析技術是一個偉大的創舉,它將開發團隊帶到了客戶的視角上,這是一個良好的驅動點。掌握用例分析技術,將對你的職業生涯帶來很大的益處。《編寫有效用例》是你的起點,本書能夠幫助你真正有效地利用該技術,更好地掌握這一看似十分簡單、卻又十分復雜的需求分析方法。薄薄的一本書,卻記載著方方面面問題的答案,從這里騰飛吧。

第2名:
重構——改善既有代碼的設計(影印版)
原書名:Refactoring: Improving the Design of
Existing Code
作者:Martin Fowler
譯者:侯捷 熊節
出版社:中國電力出版社
原出版社:Addison-Wesley
頁數:431 定價:68
出版日期:2003-8-1

專家評語:
王詠剛:
沒有什麼比《重構》這本書更能理解程序員的苦衷並處處為程序員著想了。那些軟體工程權威們總板著臉說「你不能這樣,你不能那樣」,好像所有程序員都是該他們管教的小孩子;而《重構》卻告訴我們說,沒人能一步到位地把所有問題都想清楚,設計差不多了就開始寫代碼吧,等寫煩了寫膩了的時候再抽空兒零敲碎打修修補補——這可不是三天打魚兩天曬網,用形而上學的話講,這叫重構。

第3名:
分析模式——可復用對象模型(影印版)
原書名:Analysis Patterns:Reusable Object Models
作者:Martin Fowler
出版社:中國電力出版社
原出版社:Addison-Wesley
頁數:357 定價:48
出版日期:2003-6-20

專家評語:
宓吉琦:
應該是一本比較難懂的書,晦澀程度可能還超過設計模式,但也是任何一個想做架構師的人所必讀的。軟體是為其他產業服務的, 只有能把其他產業的需求順利轉化為軟體功能, 同時具有軟體設計藝術的人才是好的架構師。本書中,作者就把他從事的許多行業的寶貴建模經驗無條件地提供給大家,這些建模的經驗的積累往往需要花費幾年或者十幾年的時間。

項目和配置管理

第1名:
人月神話(影印版)
原書名:The Mythical Man-Month
作者:Frederick Phillips Brooks, Jr.
出版社:中國電力出版社
原出版社:Addison-Wesley
頁數:322
定價:25
出版日期:2003-3-1

專家評語:
青潤:
一種感慨,一種沉默……在該書中看到的神品的推薦,讓人唏噓不已。不過,這本書的確是軟體工程領域內的一本極品,國內見過似乎理論道行很深的書,但是卻沒有見到過有這樣理論與實踐深度並存的書籍出現過!
沒有項目經歷,沒有工程經驗,勸你千萬不要閱讀此書,否則,是對神品的褻瀆!而且,你也絕對不可能看明白的!
「開發人員交付的是用戶滿意度,而不僅僅是有形的產品」——沒有經驗的人能看明白么?國內的軟體以工程項目居多,國內的教育以理論為主,理論與實踐的脫節,學生學到的幾乎是空白,這也就是為什麼其他專業轉過來從事計算機行業的人往往在軟體公司裡面的表現往往比計算機專業畢業要好的一個很重要因素。
王詠剛:
網上有不少板磚拍在這本書上,因為有人嫌這書太老套,幾十年前的破事兒了還敢擦脂抹粉地端出來蒙人騙錢。我偏要說這書挺好看,關鍵是你不能拿它當項目管理入門的教材看,你得把他當成一本跟你談心聊天講故事的散文集來看。你瞧前些年,那麼多女孩子捧著本余秋雨如醉如痴似顰似笑風情萬種,難道就不許我們程序員揣著《人月神話》假裝深沉故作風雅,既陶冶了知識青年的道德情操又學習了項目管理的思想方法嗎?

第2名:
快速軟體開發(影印版)
原書名:Rapid Development
作者:Steve McConnell
出版社:機械工業出版社
原出版社:Microsoft Press
頁數:676
定價:58
出版日期:2003-3-1

專家評語:
張恂:
眾人看完此書皆掩卷長嘆,相見恨晚啊!在外面參加了那麼多國際項目管理課程,對改進「軟體」項目管理到底有多大真實效果呢?軟體項目經理當然要懂軟體項目自身的規律!誇張一點,學了這么多通用的PM知識,可能還不及這樣一本實話實說的書管用。軟體項目經理可能是軟體行業中承擔壓力最大,也是最有苦難言,最需要關心的一個群體。書里有這么多美國同行的經驗教訓、陷阱和誤區,如果你對此還一無所知,難免會一而再、再而三地掉進去;書里還有這么多優秀的實踐方法,你為什麼不試著用用看呢?所以我的建議是,如果Steve McConnell這位朴實的優秀程序員、著有多本名著的技術作家兼國際軟體工程權威說話了,大家一定要仔細聽聽。這年頭的「必讀經典」大有泛濫之勢,實在讓人招架不住,可是這次我甘冒風險大膽地說:對於改變國內軟體項目管理的窘況,此乃必讀之選。

第3名:
領導軟體開發團隊
原書名:Leading a Software Development Team:A
Developer's Guide to Successfully Leading
People and Projects
作者:Richard Whitehead
譯者:吳志明
出版社:電子工業出版社
原出版社:Addison-Wesley
頁數:304 定價:36
出版日期:2002-5-1

專家評語:
徐鋒:
一本親切的好書,讓我愛不釋手。如果你第一次擔任項目經理,這本書可以讓你迅速進入角色;如果你已有豐富的項目管理經驗,你也能夠從中吸取養份,解決埋藏在你心中很久的疑問。其採用的實例為驅動的寫作方法,可以成為案頭常備的寶典。

❸ 軟體工程,哪個學校有前途

北京航空航天大學 清華大學 華盛頓大學 中國第一 和 世界第一

❹ 科學到底是什麼你怎麼理解

反映現實世界各種現象的本質的規律的知識體系。科學一詞的英文為science,源於拉丁文的scio,後又演變為scientin,最後成了今天的寫法,其本意是「知識」「學問」。科學一詞起源於中國古漢語,原意為「科舉之學」,而科,單獨有分類,條理,項目之意,學則為知識,學問,因此到近代日本翻譯西方著作時,在翻譯英文science的時候,引用了中國古漢語的「科學」一詞,意為各種不同類型的知識和學問。到了1893年,康有為引進並使用「科學」二字。嚴復在翻譯《天演論》等科學著作時,也用「科學」二字1. 科舉之學。 宋 陳亮 《送叔祖主筠州高要簿序》:「自科學之興,世之為士者往往困於一日之程文,甚至於老死而或不遇。」 2. 反映自然、社會、思維等的客觀規律的分科知識體系。 毛澤東 《在中國共產黨全國代表會議上的講話》:「人們必須通過對現象的分析和研究,才能了解到事物的本質,因此需要有科學。」 公劉 《太陽的家鄉》:「這種悲慘的情況,不是我一個人的力量所能改變的,根本問題是要辦教育,叫人們接受科學。」 3. 特指自然科學。 曹禺 《北京人》第二幕:「白吃,白喝,白住,研究科學,研究美術,研究文學,研究他們每個人所喜歡的,為 中國 ,為人類謀幸福。」 4. 合乎科學的;合理的。 丁玲 《莎菲女士的日記》:「我不相信戀愛是如此的理智,如此的科學。」 柯岩 《奇異的書簡·船長》:「多麼精細,多麼科學!完全是科學家的邏輯!」
編輯本段定義
哲學家和科學家經常試圖給何為科學和科學方法提供一個充分的本質主義定義但並不很成功。尼采認為人們容易忘記,科學其實是一種社會的、歷史的和文化的人類活動,它是在發明而不是在發現不變的自然規律。某些後現代主義哲學家,像費耶阿本德(Feyerabend)和羅蒂,可能會同意他的這種看法。他也認為,落入科學主義窠臼是愚蠢的---科學主義相信科學能最終解決所有人類問題,或者發現隱藏在我們感覺經驗到的日常世界背後的某些真實世界的隱藏真理。但是,他完全支持把科學視為一種現象學的、實用的---因此不太野心勃勃的---活動的觀點。當然,後現代主義對科學的定義仍然存在很大的爭議,隨意引用會出錯。 科學的定義:對一定條件下物質變化規律的總結。 科學的特點:可重復驗證、可證偽、自身沒有矛盾。 1888年,達爾文曾給科學下過一個定義:「科學就是整理事實,從中發現規律,做出結論」。達爾文的定義指出了科學的內涵,即事實與規律。科學要發現人所未知的事實,並以此為依據,實事求是,而不是脫離現實的純思維的空想。至於規律,則是指客觀事物之間內在的本質的必然聯系。因此,科學是建立在實踐基礎上,經過實踐檢驗和嚴密邏輯論證的,關於客觀世界各種事物的本質及運動規律的知識體系。 《辭海》1979年版: 「科學是關於自然界、社會和思維的知識體系,它是適應人們生產斗爭和階級斗爭的需要而產生和發展的,它是人們實踐經驗的結晶。」 《辭海》1999年版: 「科學:運用范疇、定理、定律等思維形式反映現實世界各種現象的本質的規律的知識體系。 法國《網路全書》: 「科學首先不同於常識,科學通過分類,以尋求事物之中的條理。此外,科學通按研究對象的不同可分為自然科學、社會科學和思維科學,以及總結和貫穿於三個領域的哲學和數學。 按與實踐的不同聯系可分為理論科學、技術科學、應用科學等。 按人類對自然規律利用的直接程度,科學可分為自然科學和實驗科學兩類。 按是否適合用於人類目標來看,科學又可分為廣義科學、窄義科學兩類。
基礎學科
破除迷信後科學重新分類,將屬於思維的數學劃出自然科學,而將神學列入自然環境分類: 自然環境(理科) 常識 宇宙學 天文學 地質學 博物學 相對論 物理學 化學 生物學 生理學 心理學 衛生學 神學(高級文明) 人類社會(文科) 人類學 倫理學 政治學 經濟學 法律學 地理學 歷史學 考古學 軍事學 民俗學 新聞學 傳播學 科學技術(工科) 搏擊學(勞動、採集、狩獵、對抗、逃生……) 醫學 營養學(烹調烹飪、葯物搭配、中醫修養……) 農牧學(農牧林:種植栽培、放牧飼養、生物工程……) 仿生學(建築、服裝……) 信息學(計算機、互聯網……) 工程學(控制論:機械力學、機電電子、汽車船舶、航空航天……) 統計學(管理、培訓[著重技術的非基礎教育]) 思維文化(體藝) 體育 美學 音樂 美術(設計、繪畫、雕刻雕塑……) 表演學(舞蹈、演藝……) 符號學(語言文字) 文學 數學 幾何 分形學 概率論 維度絕學 靈論(意識學) 形而上學 教義(宗教) 預言學 哲學 教育學 學習學 辯證法
分支學科
空間科學(太空科學) 考古天文學 天體生物學 太空化學 航天動力學 天體測量學 天文學 天體物理學 太陽系化學 星系天文學銀河天文學 物理宇宙學 天體地質學 行星學 太陽天文學 星學 地球科學 生物地理學 地圖學 氣候學 海岸地理學 大地測量學 地理學 地質學 地貌學 地球統計學 地球物理學 冰川學水文學 水文地質學 礦物學 氣象學 海洋學 古氣候學 古生物學 岩石學 湖沼學 地震學 土地科學 測繒學火山學 環境科學 環境科學物理學 環境化學 環境生物學 環境地學 環境土地科學 生命科學 解剖學 太空生物學 生物化學 生物資訊學 生物學 生物物理學 生物工程學 植物學 細胞生物學 親緣分支分類法 細胞學 發育生物學 生態學 胚胎學 昆蟲學 流行病學 動物行為學 演化(演化生物學) 演化發育生物學 淡水生物學 優生學 遺傳學 (群體遺傳學,基因體學,蛋白質組學) 組織學 免疫學 海洋生物學 微生物學 分子生物學 形態學 神經科學 個體發生學 藻類學 種系發生學 體質人類學 物理治療 生理學 群體動力學 結構生物學 生物分類學 毒理學 病毒學 動物學 化學 分析化學 色譜法 光譜學 生物化學 分子生物學 環境化學 地球化學 無機化學 材料科學 納米科技 葯物化學 核化學 有機化學 有機金屬化學 葯理學 葯劑學 物理化學 電化學 量子化學 高分子化學 超分子化學 理論化學 計算化學 立體化學 熱化學 物理學 聲學 土壤物理學 原子,分子及光學物理學 生物物理學 計算物理學 凝聚態物理學 低溫物理學 動力學 流體動力學 地球物理學 材料科學 數學物理 力學 原子核物理學 光學 粒子物理學(或稱 高能物理學) 等離子物理學 高分子物理學 熱力學 靜力學 固體物理學 車輛動力學 社會科學 應用人類學 宗教人類學 考古學 文化人類學 人種生物學 民族志 民族學 民族詩學 人類發展學 人類性學 實驗性考古學 歷史的考古學 人類語言學 人類醫學 人類物理學 人 科學大腦
類心理學 動物考古學 經濟學 總體經濟學 微觀經濟學 行為經濟學 生命經濟學 發展經濟學 計量經濟學 經濟地理學 經濟史 經濟社會學 能量經濟學 創業者經濟學 環境經濟學 主張男女平等經濟學 金融經濟學 綠化經濟學 產業組織理論 國際經濟學 制度經濟學 伊斯蘭教經濟學 勞動經濟學 法律與經濟學 管理人經濟學 數理經濟學 貨幣經濟學 物理經濟學 公共財政 公共經濟學 平台經濟學 不動產經濟學 資源經濟學 社會主義經濟學 福利經濟學 計算經濟學 計量經濟學 演化經濟學 實驗經濟學 社會心理學 神經元經濟學 政治經濟學 經濟社會學 運輸經濟 心理學 行為分析 生物心理學 認知心理學 臨床心理學 文化心理學 發展心理學 教育心理學 實驗心理學 法庭心理學 健康心理學 人本主義心理學 企業及組織心理學 神經心理學人格心理學 測定學 宗教心理學 心理物理學 物質心理學 知覺 社會心理學 地理學 語言學 歷史語言學 構詞學 語音學 音韻學 語義學 符號學 語法學 語源學 政治學 社會學 犯罪學 人口學 應用科學 認知科學 認知神經科學 認知心理學 神經科學 心理語言學 計算機科學 計算理論 自動機械裝置理論 (正式語法) 可計算性理論 計算復雜性理論 同作理論 演算法 隨機化演算法 分散演算法並行演算法 數據結構 電腦系統結構 超大規模集成電路設計 操作系統 電腦網路 資訊理論 互聯網, 萬維網 無線網路 (流動網路) 電腦放御及效能 密碼學 錯誤容忍演算法 分布式計算 網格計算 並行計算 高性能演算法 量子電腦 電腦圖形學 圖像處理 科學形象 計算幾何 軟體工程 形式化程序 (形式化驗證) 編程語言 編程范型 面向對象程序設計 函數式編程 形式語義學 類型論 編譯器 同步編程語言 資訊學 資料庫 關聯式資料庫 分布式資料庫 對象資料庫 多媒體, 超媒體 資料挖掘 資訊檢索 人工智慧 認知科學 自動化推理 機器學習 人工神經網路 自然語言處理 (計算語言學) 電腦視覺 專家系統 機器人學 人機互動 數值分析 符號計算 數位電腦理論 數學電腦學 科學電腦學 生物電腦學 物理電腦學 化學電腦學 神經科學電腦學 電腦助手工程學 有限元分析 計算流體力學 經濟電腦學 社會電腦學 金融工程學 數位人文學科 信息系統 (信息管理系統) 資訊科技 信息管理系統 醫學信息學 電腦與社會 使用電腦的歷史 人道資訊學 公眾資訊學 工程學 航空工程 航太工程 農業工程 農業科學 生醫工程 化學工程 土木工程 計算機工程 控制工程 電機工程 語言工程 海洋工程 機械工程 製造工程 礦業工程 核工程 軟體工程 運輸工程 健康學 環境醫學 牙醫學 流行病學 醫學 獸醫學 解剖學 皮膚學 婦科學 免疫學 內科學 神經學 眼科學 病理學 病理生理學 兒科學 葯理學 物理治療 生理學 精神病學 影像診斷學 毒物學 其他 軍事學
編輯本段方法
經典的科學方法有兩大類,即實驗方法和理性方法,具體的說主要就是歸納法和演繹法。
歸納法
將特殊陳述上升為一般陳述(或定律定理原理)的方法。經驗科學來源於觀察和實驗,把大量的原始記錄歸並為很少的定律定理,形成秩序井然的知識體系,這就是經驗科學形成的過程。可見怎樣的歸納是有效的、可靠的,這是經驗科學要研究的最重要的問題。自從嚴格意義上的科學延生以來,從未停止過這方面的探索和爭論。這里無法嚴格的討論歸納方法的完整內容,但為了說明下面的一系列問題,這里簡單提些基礎的歸納要點。 歸納法分完全歸納法和不完全歸納法,其中完全歸納法應用范圍很小,因為對絕大多數事物,可觀察的現象往往都是無窮的。所以實用的歸納法必然是不完全歸納法。其又分兩種即簡單枚舉法和科學歸納法。簡單枚舉法是不可靠的,只能得到或然性真理,因此科學歸納法是科學方法討論的中心。 所謂科學歸納法又叫排除式歸納法,這種歸納法不一定要增加原始陳述,而是排除那些可應用於特定事例的可能假說。培根的「三表法」和穆勒「五法」都是這類型的。下面簡單列出穆勒「五法」。注意,它們的前提是,只存在兩類現象,每類只有三個元素,即a、b、c(現象)和A、B、C(原因),並都先假定了①只有一個出現a的條件(原因),②只有A、B、C是可能的條件(原因)。 1、契合法:a與AB一起出現,也與AC一起出現。可知,A是a的充分條件。如,例1:在兩塊麥地上施氮肥(A),一塊澆水(B),一塊施鈣肥(C),結果產量都增高(a)。則可以猜想施肥(A)是產量增高(a)的原因。 2、差異法:a與ABC一起出現,但不與BC一起出現,可知,A是a的必要條件。如,例2:在一塊麥地上既施氮肥(A)又澆水(B)又施鈣肥(C),結果產量都增高(a);而在另一塊麥地上只澆水(B)施鈣肥(C)則產量不變。則可以猜想施肥(A)是產量增高(a)的原因。 3、契合差異法:a與AB一起出現,也與AC一起出現,但不與BC一起出現。可知,A是a的充分必要條件。如,例3:在兩塊麥地上施氮肥(A),一塊澆水(B),一塊施鈣肥(C),結果產量都增高(a),而在另一塊麥地上只澆水(B)施鈣肥(C)則產量不變。則可以進一步肯定施肥(A)是產量增高(a)的原因。 4、剩餘法:已知B是b的條件(原因),C是c的條件(原因),abc與ABC一起出現,可知,A是a的充分必要條件。如例4:天文學家觀察出天王星的運行軌道有傾斜現象(a、b、c),已知傾斜現象a、b是受兩顆行星(A、B)的吸引,於是可以猜想還有一顆行星(C)影響天王星的軌道傾斜(c)。 5、共變法:A與a以同樣方式發生變化,而BC則不以這種方式變化。可知,A是a的充分必要條件。如例5:改變單擺的擺長(A)則單擺的周期(a)隨之改變,但改變擺球的質量(B)和擺球的材料(C)則周期不變。則可以認為單擺的擺長(A)決定其周期(a)。 通過類似於上面穆勒五法的科學歸納,似乎能夠不太費力地找到事物的因果關系,但事實上非常困難。就穆勒五法而言,最難滿足的就是那兩個預設的條件,第一個稱決定論公設,量子力學和混沌學的出現真實世界中決定論系統並不是太多的,所以並不總能滿足這預設。第二個稱封閉系統公設,這在科學研究中最難滿足的,比如,契合差異法雖然對決定論系統是非常有效的研究方法,但只要系統較為復雜點,其封閉性就很難滿足,對單擺這樣的簡單系統較容易搞清楚某現象(如周期)背後有哪些可能的原因(擺長、質量、材料等),但例3就不簡單。影響麥田產量的可能原因其實有很多很多,因此實際研究決不象例3那樣簡單。
演繹法
應用一般陳述(或公理定律定理原理)導出特殊陳述或從一種陳述導出另一種陳述的方法。乍看起來,演繹似乎不能得到新的東西,所以培根尖銳的批評亞里斯多德的三段論不是沒有根據的。但如果改變觀念,認真思考一下什麼是「新」,則就為發現演繹法的重要性。從牛頓把天上的星體運動與地上的蘋果落地相聯繫到如今的大統一理論,可見物質現象的背後的確很可能有統一的本質,這樣就完全可能用很少的陳述推導出對大千世界的各種現象的正確陳述。從這意義上說,「新」不一定指在舊體系之外的陳述,只要是另一種沒見過的表述就是新,因為所有的具有現實意義的陳述都可以放在一個科學體系內。
編輯本段特徵
對於科學的核心特徵或者說所謂科學精神,隨著人類的進步,有不同的觀點,目前一般認為科學具有如下特徵: 理性客觀:從事科學研究一般不以「神」、「鬼」、「上帝」為前提(一些科學家仍會信仰宗教,但是"科學"本身是理性思維的結果),一切以客觀事實的觀察為基礎,通常科學家會設計實驗並控制各種變因來保證實驗的准確性,以及解釋理論的能力。 可證偽:這是來自卡爾·波普爾的觀點,人類其實無法知道一門學問里的理論是否一定正確,但若這門學問有部份有錯誤時,人們可以嚴謹明確的證明這部分的錯誤,的確是錯的,那這門學問就算是合乎科學的學問。 存在一個適用范圍:也就是說任何理論都有適用的范圍,任何理論的預測結果都只在一定的精度范圍內是正確的。例如:牛頓萬有引力定律在一定精度下是正確的,廣義相對論和量子理論在極小極端引力情況下失效,也就是在這種情況下適用精度無限擴大,無法得出有意義結論。不過不少科學家們仍然努力尋找與探索是否有某種理論可以囊括所有自然現象,雖然哥德爾定理否定了公理系統實現這一目標的可能性。 普遍必然性:科學理論來自於實踐,也必須回到實踐,它必須能夠解釋其適用范圍內的已知的所有事實。 科學還可以分為從理論和應用等多個層次過揭示支配事物的規律,以求說明事物。」 科學人物
前蘇聯《大網路全書》: 「科學是人類活動的一個范疇,它的職能是總結關於客觀世界的知識,並使之系統化。『科學』這個概念本身不僅包括獲得新知識的活動,而且還包括這個活動的結果。」 《現代科學技術概論》: 「可以簡單地說,科學是如實反映客觀事物固有規律的系統知識。」。此後,「科學」二字便在中國廣泛運用。

❺ 編程到底是怎麼一回事

簡單的說,編程就是為了藉助於計算機來達到某一目的或解決某個問題,而使用某種程序設計語言編寫程序代碼,並最終得到結果的過程。
計算機雖然功能十分強大。可以供你上網、打游戲、管理公司人事關系等等,但是沒有程序,它就等於是一堆廢鐵,不會理會我們對它下達的「命令」。於是,我們要馴服它,只有通過一種方式——程序,這也是我們和計算機溝通的唯一方式。

那程序到底是什麼呢?
程序也就是指令的集合,它告訴計算機如何執行特殊的任務。

打個比方說,它好比指導你烹調菜品的菜譜或指揮行駛一路到達目的地的交警(或者交通路標)。沒有這些特殊的指令,就不能執行預期的任務。計算機也一樣,當你想讓計算機為你做一件事情的時候,計算機本身並不能主動為我們工作,因此我們必須對它下達指令,而它根本不會也不可能聽懂人類自然語言對事情的描述,因此我們必須使用程序來告訴計算機做什麼事情以及如何去做?甚至對最簡單的任務也需要指令,例如如何取得擊鍵,怎樣在屏幕上放一個字母,怎樣在磁碟中保存文件等等。
這么麻煩,連這些東西編程都要考慮!怪不得人家說編程好難!你錯了,其實許多這樣的指令都是現成的,包含在處理晶元中內置於操作系統中,因此我們不必擔心它們工作,他們都是由處理器和操作系統來完成的,並不需要我們來干預這些過程。

上面講到的計算機本身不會主動的做任何事情。因此我們要通過程序的方式來讓計算機為我們「效勞」。而這個過程就是我們「編」出來的。編程可以使用某一種程序設計語言來實現,按照這種語言的語法來描述讓計算機要做的事情。

我們這里所講的語法和外語中的語法完全兩碼事,這里講的語法只是讀你的程序書寫做出一寫規定而已。

寫出程序後,再由特殊的軟體將你的程序解釋或翻譯成計算機能夠識別的「計算機語言」,然後計算機就可以「聽得懂」你的話了,並會按照你的吩咐去做事了。因此,編程實際上也就是「人給計算機出規則」這么一個過程。
隨計算機語言的種類非常的多,總的來說可以分成機器語言,匯編語言,高級語言三大類。
電腦每做的一次動作,一個步驟,都是按照已經用計算機語言編好的程序來執行,程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過計算機語言向計算機發出命令。

計算機所能識別的語言只有機器語言,即由構成的代碼。但通常人們編程時,不採用機器語言,因為它非常難於記憶和識別。

目前通用的編程語言有兩種形式:匯編語言和高級語言。

匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。

匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。

高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。由於省略了很多細節,所以編程者也不需要具備太多的專業知識。

高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的VB、VC、FoxPro、Delphi等,這些語言的語法、命令格式都各不相同。

(1)解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。

(2)編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(*.OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如Visual Basic、Visual C++、Visual Foxpro、Delphi等。
這個問題其實很簡單。前面我們講到,程序是人與計算機進行溝通的唯一方式,因此我們要讓計算機為我們服務,就必須有程序,而程序從哪裡來?當然是由我們編寫出來了。或許你又會問到另一個問題:現在要什麼程序有什麼程序,我幹嘛還要編程呢?這你就錯了,現在的程序雖然很多,需要什麼樣的程序直接到網上不需要很長時間就可以找到類似的,而且有可能就是你所需要的。但是,就好比去買衣服,雖然賣衣服的到處都是,但是哪一件是為你「量身定做」的呢!
程序還能夠做很多事情不同的程序可以完成不同的事情。從大的方面到管理國家的財務,小的方面管理家庭的帳務。

又如,如果你想要你的計算機能播放動畫,那麼你的計算機中也要有相應的動畫播放程序,下面所示的就是一個F1ssh動畫播放器。我們將會在後面的章節具體講述這個程序的編制過程。
隨著計算機的飛速發展,總會有那麼一天將不會編程的人列為「文盲」。你不希望吧?那麼就好好的學習一種程序設計語言吧。

編程會過時嗎

編程會過時嗎?這個問題,讓我先問你一個問題:計算機會消失嗎?這兩者答案是一樣的。知道了計算機會不會消失,就知道了編程會不會過時。

編程工具會過時,而編程卻不會過時

計算機系統由可以看見的硬倒:系統和看不見的軟體系統組成。要使計算機能夠正常的工作,僅僅有硬體系統是不行的,沒有軟倒系統(即沒有程序)的計算機可以說只是—堆廢鐵,什麼事情都幹不了。例如當你撰寫—篇文章的時候,你需要在操作系統中用文字編輯軟體來實現文字的輸入,但如果沒有這些文字輸入軟體的話,你是否想過如何向計算機中輸入文章呢?很難想像出如何在一個沒有任何軟體的計算機(我們稱之為裸機)上進行文字的輸入。而這些軟體其實就是通常我們所說的程序。

編程會過時嗎?我們從另一個角度來考慮這個問題,計算機有——天會消失嗎?如果有一天當世界上所有的事情處理都用不到計算機了,那麼計算機將會很快的消失,那時編程不僅過時了,而且也會隨之消失了。但是計算機會消失嗎?當然不會,如今計算機應用到每一領域,為人類的發展做出了不可估量的貢獻。試想一下如果有一天全世界的計算機突然消失了,那麼這個世界將變成什麼樣子,或許和全世界都停電了一樣恐怖,甚至還會有更大的損失。計算機的存在必須要有軟體系統來維持。因此編程永遠不會、也不可能會過時。

計算機程序設計語言發展到今天,已經從最原始的機器語言發展到如今可視化的集成開發環境,甚至集多種語言在同一開發平台上,像微軟的NET平台。回頭看看程序設計語言的發展史,不難看出對於編程來說,只會出現編程工具的過時,不會出現編程本身的過時。

不斷變化的技術需要不斷變化的程序員

從二十世紀60年代以後,計算機得到了突飛猛進的發展。似乎歷史上沒有任何一門科學的發展速度超過了計算機的發展,無論硬體、軟體、還是網路都以驚人的速度向前發展。計算機的硬體發展速度遵循「摩爾定律」每十八個月速度翻一倍(實際現在已超過了這個速度)。 軟體的發展速度和硬體一樣,二十世紀九十年代中國的軟體業還不是很成熟,而現在大大小小 的軟體企業四處聳立,共享軟體網上隨處可見。不斷發展的技術需要不斷變化的程序員,例如,如今Visual Basic可以快速構Windows下的應用程序,程序設計方面的技術不斷發展著,不斷引進新的概念、新的方法,如從結構化的C開始,當面向對象的思想被提出後,出現了C++,微軟在C++的基礎上為使用戶構建win32應用程序更加方便,推出了Visual C++。這也就需要程序員也要不斷的更新自己的技術。

計算機科學與別的學科很不一樣,不像語言學、歷史學那樣,幾乎是永久不變的東西。計算機科學要求不斷的更新自己的知識,否則很快就會被淘汰,即便是編程亦是如此。

編寫程序是一件很有趣的事情,因為編寫程序可以干很多高級的事情。例如我們在後面的章節中介紹如何使用Visual Basic編寫Flash動畫播放器,以及如何編寫下載軟體管理器等。如果你願意的話,你完全可以編寫出比這些更高級的程序來。

隨著計算機軟體業的發展,誕生了「程序員」這個職位。於是便形成了一種理念,編寫程 序的人就是程序員,因此編程是程序員的事情。但程序員並不是一開始就是程序員,他們也是從現在我們的位置慢慢成為程序員的。

編寫程序是一件很有趣的事情,因為編寫程序可以干很多高級的事情。例如我們在後面的章節中介紹如何使用Visual Basic編寫Flash動畫播放器,以及如何編寫下載軟體管理器等。如果你願意的話,你完全可以編寫出比這些更高級的程序來。

編程也可以作為——種愛好或興趣,如果你對它感興趣學起來就容易多了!因為如果對編程感興趣的話,就會多看些有關方面的書、多編些小程序上機實踐,這些對於學習編程的幫助是非常大的,而且隨著學習的進程不斷的推進就會覺得它並不是很困難,相反卻是很容易的。

總之,在學習編程時一定要堅持不懈,只要有信心、有毅力就一定能學好;不能因為一些似是而非的觀念就動搖了自己的信心。

我們一起來編程

面對擺在面前的計算機該如何操作,相信這個問題已經不再是困擾大家的首要問題了。現在軟體的種類那麼多,在選用的時候「電腦發燒友」的心裡是否也想過有一天自己能編寫一款屬於自己的軟體呢?想學習編程的朋友在選擇程序語言時會不會因為不知道如何選擇而大感頭痛呢?在不知如何下手的時候,朋友們的心中是不是會產生「我是不是可以編程」的思想呢?但是又有哪個程序員是不經過學習就能成功的呢!其實編寫程序並不是人們所想像的那麼困難、那麼復雜,每個有心致力於學習計算機的朋友都是可以嘗試的!

選擇適合自己的程序語言的必要性

目前常用的基本程序語言的種類比較繁多,比較簡單的有:Pascal、c語言、qBasic、 Fortran、Visual Basic等等。但前幾種都是在DOS下進行編程的工具,Visual Basic是在 Windows下進行應用程序設計的編程工具,現在一般的計算機用戶幾乎都不再使用DOS了,因此我們通常會選擇Visual Basic作為初學者的編程工具。Visual Basic是Windows應用程序設計中最容易上手的編程工具,學習步驟也比較容易被初學者接受。對於剛開始學習編程的初學者來說,還是選擇Visual Basic,學習編程語言不能想像著一步登天,一步一個腳印的學習才是最佳方法。

堅定自己學習編寫程序的信心

編寫程序並不是具有專業知識的人員才有的專利,每個學習計算機的人都可以編寫程序,每個人的靈感不同,在編寫程序的思路和作法上又有區別。但共同的想法就是編寫成功的程序。學習編程是一個漫長的過程,其中要付出艱辛的努力和汗水,不過成功者的喜悅又不是別人所能體會的。克服學習中的困難,努力去實踐,要有一個思想:別人能做到的事情自己也一定可以做到。計算機的普及讓更多的人有了學習的機會,也讓更多的人參與到編程人員的隊伍中來,每個人都有編程的權利,機遇給予每個人都是平等的。拿出自己必勝的信心,在編程的道路工勇於進取,相信成功就會在眼前。
三、我可以編程嗎
隨著計算機軟體業的發展,誕生了「程序員」這個職位。於是便形成了一種理念,編寫程 序的人就是程序員,因此編程是程序員的事情。但程序員並不是一開始就是程序員,他們也是從現在我們的位置慢慢成為程序員的。

編寫程序是一件很有趣的事情,因為編寫程序可以干很多高級的事情。例如我們在後面的章節中介紹如何使用Visual Basic編寫Flash動畫播放器,以及如何編寫下載軟體管理器等。如果你願意的話,你完全可以編寫出比這些更高級的程序來。

編程也可以作為——種愛好或興趣,如果你對它感興趣學起來就容易多了!因為如果對編程感興趣的話,就會多看些有關方面的書、多編些小程序上機實踐,這些對於學習編程的幫助是非常大的,而且隨著學習的進程不斷的推進就會覺得它並不是很困難,相反卻是很容易的。

總之,在學習編程時一定要堅持不懈,只要有信心、有毅力就一定能學好;不能因為一些似是而非的觀念就動搖了自己的信心。

四、我們一起來編程

面對擺在面前的計算機該如何操作,相信這個問題已經不再是困擾大家的首要問題了。現在軟體的種類那麼多,在選用的時候「電腦發燒友」的心裡是否也想過有一天自己能編寫一款屬於自己的軟體呢?想學習編程的朋友在選擇程序語言時會不會因為不知道如何選擇而大感頭痛呢?在不知如何下手的時候,朋友們的心中是不是會產生「我是不是可以編程」的思想呢?但是又有哪個程序員是不經過學習就能成功的呢!其實編寫程序並不是人們所想像的那麼困難、那麼復雜,每個有心致力於學習計算機的朋友都是可以嘗試的!

選擇適合自己的程序語言的必要性

目前常用的基本程序語言的種類比較繁多,比較簡單的有:Pascal、c語言、qBasic、 Fortran、Visual Basic等等。但前幾種都是在DOS下進行編程的工具,Visual Basic是在 Windows下進行應用程序設計的編程工具,現在一般的計算機用戶幾乎都不再使用DOS了,因此我們通常會選擇Visual Basic作為初學者的編程工具。Visual Basic是Windows應用程序設計中最容易上手的編程工具,學習步驟也比較容易被初學者接受。對於剛開始學習編程的初學者來說,還是選擇Visual Basic,學習編程語言不能想像著一步登天,一步一個腳印的學習才是最佳方法。

堅定自己學習編寫程序的信心

編寫程序並不是具有專業知識的人員才有的專利,每個學習計算機的人都可以編寫程序,每個人的靈感不同,在編寫程序的思路和作法上又有區別。但共同的想法就是編寫成功的程序。學習編程是一個漫長的過程,其中要付出艱辛的努力和汗水,不過成功者的喜悅又不是別人所能體會的。克服學習中的困難,努力去實踐,要有一個思想:別人能做到的事情自己也一定可以做到。計算機的普及讓更多的人有了學習的機會,也讓更多的人參與到編程人員的隊伍中來,每個人都有編程的權利,機遇給予每個人都是平等的。拿出自己必勝的信心,在編程的道路工勇於進取,相信成功就會在眼前。
一、計算機語言的發展過程

到目前為止,世界上公布的程序設計語言有上千種之多,常用的也有三十來種,為了有21於正確選擇和使用它們,下面我們做一個簡單介紹。

(1)匯編語言:

它是依賴於具體計算機的語言,用它編寫出的程序,執行效率高,但是只在一些特殊要求或特殊的場合才使用它。

(2)高級語言:

大家可能都聽過使用高級語言進行程序設計,但由於對其並不了解,所以總認為這些是很高深的東西。其實並非如此,學習了後面的章節,相信同學會產生編程原來不過如此。

但計算機是不懂得自然語言的(可以理解為高級語言),而高級語言設計出來的程序如何讓計算機去執行呢?其實很簡單,看了下圖後相信大家會明白許多。

現在我們就向大家介紹幾種常見的高級語言:

Fortran語言是科學和工程計算中使用的主要編程語言。目前國內使用版本多數是Fortran 66和Fortran77兩種。Fortran語言的主要缺點是不能直接支持結構化編程。

Cob0l語言是商業數據處理中廣泛使用的語言。由於它本身結構上的特點,使得它能有效的支持與商業處理有關的、范圍廣泛的過程技術。它的缺點是不簡潔。

Algol語言是所有結構化語言的先驅,具有豐富的過程和數據結構。但是,這種語言並沒有被廣泛採用,主要是由於它本身的歷史原因所造成的。

Basic語言是一種解釋執行的會話語言。由於它簡單易學的特點,它被廣泛應用在微型計算機系統中。

PL//1語言是一個用途廣泛的語言。能支持通常的科學工程和商業應用,能描述復雜的數據結構、多重任務處理、復雜的輸入輸出和表格處理等。

Pascal語言是70年代初期發展起來的結構化程序設計語言,具有特別豐富的數據結構類型。它自問世後,得到了眾人的贊賞,也得到了軟體開發者的廣泛支持。Pascal語言已用於科學、工程和系統程序設計中。我們教育部計算機專業教育會議曾把Pascal語言定為計算機專業程序設計語言。

C語言是作為UNIX操作系統的主要使用語言。由於UNIX操作系統的成功,現在C語言也得到了廣泛的使用。C語言是有經驗的軟體工程師設計的,它具有很強的功能,以及高度的靈活性。它和其他的結構化語言一樣,能提供豐富的數據類型、廣泛使用的指針以及—組很豐富的計算和數據處理使用的運算符。

C++語言是C語言的擴充。在1980年,貝爾實驗室的Bjarne Strotstrup博士及其同事開始對C語言進行改進和擴充,最初被稱為「帶類的C」,1983年才取名為C++。以及不斷完善和發展,成為目前的C++語言。一方面,它將C語言作為它的子集,使它能夠與C語言兼容。使許多C語言代碼不經修改就可以為C++語言所用以及用C語言編寫的眾多庫函數和和實用軟體可以直接用於C++語言中;另一方面。C++語言支持面向對象的程序設計這是它對C語言最重要的改進。

❻ 求各位大神幫忙給下圖論中的Brooks定理的證明

正 圖的頂點的染色是圖論中的重要問題之一。本文從討論圖的色數的上界問題,從而得出Brooks定理的又一證明。1.基本概念如果用顏色去染一個圖G的頂點,使得任意有棱相連的兩個頂點均有不同的顏色。

❼ 如何理解brooks法則

三個和尚沒水吃,廚師太多做壞湯。同樣,軟體程序員太多也會產生更多問題,這些問題超出了程序員的解決能力。 Brooks是北羅萊納大學計算機科學教授,他闡述了所謂的Brooks法則:為推遲的軟體增加人力將使得軟體時間發布更晚。 Brools教授解釋說,這是因為後來者需要加快速度,同時還要與前任進行溝通,從而使得開發團隊增加了更多的開發時間,這個時間超過了新增程序員所做的貢獻。 從理論上說,軟體發展陷入僵局是可能的,此時開發團隊極其龐大,以致所有時間都來互相溝通和重新決定,這樣項目永遠也不會完成。 另一方面,Brooks教授寫道,災難來源於漏洞

❽ 想學編程,需要擁有什麼樣的條件

以下摘自《程序員的十層樓》
自西方文藝復興以來,中國在自然科學方面落後西方很多,軟體領域也不例外。當然現在中國的許多程序員們對此可能有許多不同的意見,有些人認為中國的程序員水平遠落後於西方,有些則認為中國的程序員個人能力並不比西方的程序員差,只是整個軟體產業落後而已。那麼,到底中國的程序員水平比西方程序員水平差,還是中國有許多優秀的程序員達到或超過了西方程序員同等水平呢?要解決這個問題,必須先知道程序員 有多少種技術層級,每個層級需要什麼樣的技術水平,然後再比較中國和西方在各個技術層級的人數,就可以知道到底有沒有差距,差距有多大。
當然,對於如何劃分程序員的技術層級,不同公司或不同人會有不同的劃分標准,下面的劃分僅代表個人的觀點,如有不當之處,還請砸板磚予以糾正。
第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://softwareblogs-zho.intel.com/)和多核論壇(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一樣的待遇,有滿城甚至全國的人去為你送葬。

❾ 如何理解brooks法則

它是一種實踐,應用全面、嚴密的方法來描述組織之流程、信息系統、人員和組織子單元的當前或未來結構,以便其與組織的核心目標和戰略方向保持一致

與軟體工程brooks定律適用范圍相關的資料

熱點內容
蘇州假山景觀設計工程 瀏覽:862
哈爾濱工程造價招聘 瀏覽:937
建築工程土建勞務分包 瀏覽:632
道路監理工程師 瀏覽:476
安徽工程大學機電學院在本校嗎 瀏覽:370
河北工程大學保研率多少 瀏覽:287
有學質量工程師的書嗎 瀏覽:479
康樂縣建築工程公司 瀏覽:569
助理工程師二級 瀏覽:872
注冊安全工程師初級考試時間 瀏覽:901
食品科學與工程專業課題研究 瀏覽:881
工程造價圖紙建模 瀏覽:888
遼寧恆潤建設工程有限公司 瀏覽:93
實行施工總承包的工程項目 瀏覽:737
道路橋梁工程技術興趣愛好 瀏覽:316
密歇根理工大學電氣工程專業 瀏覽:388
廣西交通工程質量監督站 瀏覽:31
四川大學材料科學與工程學院考研參考書目 瀏覽:858
有線電視工程建設管理條例 瀏覽:270
雲南工程監理公司排名 瀏覽:673