導航:首頁 > 軟體知識 > 如何入門到資深程序猿

如何入門到資深程序猿

發布時間:2023-03-20 21:20:22

『壹』 計算機編程如何學習(軟體、網路)

vivado視頻免費下載

鏈接:https://pan..com/s/1KeaJ2Z45qT5_v9aEFQpLNQ

提取碼:kaeq

java視頻|53.mp4|52_定義輸入輸出格式.mp4|51_綜合練習(二).mp4|50_綜合練習(一).mp4|49_開發工具之Eclipse(四).mp4|48_開發工具之Eclipse(三).mp4|47_開發工具之Eclipse(二).mp4|46_開發工具之Eclipse(一).mp4

『貳』 人群中如何一眼認出資深程序員

程序員其實離我們並不遙遠,很多時候就在我們的身邊,只不過我們不能夠一眼認出他們而已。因為他們在工作之餘,也和我們普通人一樣,穿著同樣的衣服,與路人毫無區別。但就我在互聯網公司的觀察來看,如果我們想要在人群中,一眼便認出程序員,可以通過以下幾種方法:

三、擁有著明顯的少白頭

程序員很多時候因為項目進度,會沒日沒夜的加班,而且長期的寫程序,也會加速他們腦細胞的死亡。就我身邊的程序員同學來講,就有很多擁有少白頭的情況。

他們平均每個月都需要去理發店一次,將自己的頭發染成黑色,以免影響到自己年輕、帥氣的形象。

以上三點就是我個人對於程序員的區別方法,這個方法也不能夠很好地分辨程序員。因為現在的程序員,也非常的潮流,而且完全顛覆了我們對於傳統程序員的印象。

『叄』 如何招到一個靠譜的程序員

1. 簡歷看人
閱讀簡歷永遠是面試的第一步。好的簡歷一定是正確、清晰並且能夠體現候選人最有價值一面的。我首先會過濾掉那些包含錯別字,文句不通或沒有邏輯性的簡歷,因為如果一個程序員連自己的簡歷都不願意去仔細檢查並完善的話,很難想像他寫出來的代碼質量會如何。接著,我便會重點閱讀簡歷中的項目經驗部分,在這里我能夠看到面試者的開發經驗,技能棧,並且判斷他們熟悉的技術框架、工具是否與目前公司要求相匹配。
這里,我還會特別關注面試者是如何來寫這部分項目經驗的,你需要用盡可能簡練的文字來描述項目的背景,你在項目中承擔的角色、參與項目的時長,你用到的技術、以及你在項目中的亮點等信息。優秀的程序員們往往有一個共同的特質,那就是善於歸納,並能夠一針見血的發現問題或把一個問題說清楚。我經常看到面試者在簡歷中像寫故事一般地描述他們的項目經歷,光這一個章節就有好幾頁,其實這反而會給你減分,因為這會讓面試官判斷你缺乏必要的歸納能力。
最後你的一些與編程有關的社會化活動,如:你在GitHub上的開源項目,在知乎、V2EX中給他人的解答以及你的個人技術博客等等都會給你加分,因為這說明你對所從事的工作有著極大的熱情,並願意在業余時間去學習和提高自己,就像在我之前的 「給職場新人的10點職業建議」 一文中提到的,如果你要成為一個領域的專家,那你必須花費超過10,000小時,而這光靠工作時間是遠遠不夠的。
2. 給面試者10分鍾介紹自己最擅長的
當面試者通過了筆試和HR面試之後,你就需要面對面地對候選人進行面試。我遠不是什麼面試專家,但我有一些自己的獨特方法。我討厭問一些很個人的問題,比如你的職業規劃是什麼?你為什麼想換工作?等等。我更願意給面試者10分鍾時間,讓他介紹自己最擅長和最感興趣的領域。這往往能幫助我很快作出下面的判斷:
這個人對他所做的事情是否充滿激情
他們是否能在團隊中很有效地進行溝通
他們是否在專業領域足夠擅長
你的團隊是否會樂於和這個人一起工作
這一招我在面試中用得很多,而實踐證明也確實非常有效。
3. 基礎打牢了嗎?
一般,有一定規模的公司都會為面試者安排機考或筆試,從而能首先篩掉一批未能通過的面試者。另一些規模較小的或初創公司則會讓面試官直接進行技術面試。其實,我覺得這兩者的差別不大,有經驗的面試官往往能夠通過幾個最簡單的技術問題,判斷出面試者的技術基礎是否牢固,這不是為了證明他有多優秀,而是用來判斷他是否是一名合格的程序員。對於我來說,並不看重機考的成績,因為機試的考題很多能夠在網上得到,特別對於一些外包公司,他們總是能夠通過各種途徑得到考題,從而使得他們推送的外包能夠順利通過筆試。
下面是我經常會問的幾個問題(JAVA):
HashTable與HashMap有什麼區別?
Servlet是線程安全的嗎?
JSP中 @include跟jsp:include的區別
HTTP的response code 403和500分別代表什麼
......
這些問題都很簡單,但一些基礎不牢的程序員往往會在這個時候露餡。當然,根據面試崗位的不同,你還可以有針對性地問一些問題,例如,你需要找一個能寫核心演算法的程序員(比如 銀行的總賬計算,或者保險公司的保費計算),那麼你可以問一些演算法相關的問題。
4. 技術深度夠嗎?
具備牢固的技術基礎,一般就可以滿足項目中普通程序員的要求了,但如果你需要找的是一個資深程序員,那麼你還需要對面試者的技術深度進行考察。我們現在做項目時都會大量使用框架,這能使我們的開發效率和質量都得到提升和保障,但同時也降低了對於程序員開發技能的要求。因此我一般會詢問面試者下面的問題,來考察他對所使用框架的掌握程度。
請你描述一下,在這個項目中,從一個HTTP請求發起,到最終的Response返回,它在你的系統和框架內部是如何流轉的?
這個問題往往能夠判斷出面試者對於相關技術掌握的深度。較初級的開發人員描述的層級往往比較淺,比如使用Spring MVC框架的,只能說到實現一個Controller繼承BaseCommandController(甚至很多開發人員只知道繼承了一個公司內部框架的基類),至於再往下Spring框架是如何進行內部流轉的,就再也說不清楚了。而更資深的開發人員,往往能說出框架內部的實現機制,以及如何調用和處理的。在面試者描述的過程中,你還可以穿插詢問一些比較有深度的問題,比如框架中某個類這樣設計是哪一種設計模式的體現,採用這樣的設計有什麼好處等等。這比讓面試者默寫一個設計模式代碼要有效、自然得多。
除了技術層面上的考察之外,對於資深開發人員,還需要考察他們的設計能力。說到軟體設計,大部分面試者都能熟練地背出面向對象的三個基本特性:繼承、封裝、多態,也能把它們的概念描述清楚。但我一般會問下面的這個問題來考察他們的面向對象設計能力。
請用一段程序代碼描述我們所在的這間房間。
我驚訝地發現至少有一半的面試者都很難准確使用Interface和Class來給房間建模,也有一些人會將最基本的代碼語法或關鍵字寫錯。
5. 選擇適合所在企業文化的人
這一點也曾是我經歷的一個誤區,我總是希望能為團隊招到技術能力最強的人,而忽略了他是否與整個公司和團隊的文化相匹配。這往往會造成,雖然招到了人,但沒過多久就因為理念不同不歡而散的結果,反而給公司帶來了損失。讓我們看看GitHub的負責人是怎麼說的。
我們很嚴肅地看待我們自己關於招聘流程的哲學。我們希望每一個GitHub員工都了解他們所要面對的環境,並保證他們是能夠很好適應的。這包括我們所創造的文化、哲學、計劃、錯誤甚至是晚餐。比起他們的技能是否滿足要求,我們更看重他們的潛力以及是否能夠適應我們的企業文化。
我曾在具有鮮明文化差異的不同公司或團隊工作,看到許多崇尚開放、開源的程序員在一個相對封閉,具有很多流程以及規范限制的公司中很難發揮,最終選擇離開。因此在招聘程序員時,選擇合適的往往比選擇最優秀的更重要。
6. 行為面試法
行為面試法可能是我在整個面試過程中唯一用到的教科書面試方法。一個程序員是否能夠很好地工作,不僅取決於他能否順利地完成開發任務,更重要的是在遇到一些特殊場景或問題時,他能否合理有效地處理和解決。行為面試法能夠幫助我們從面試者描述的過去某一具體事件中,預測未來他在工作中可能的表現。下面便是一個我經常用到的問題。
請談談你在這個項目中遇到的最大困難或挑戰是什麼,你是如何解決的。
從面試者對上面這個問題的回答中,我能夠很好地判斷他是否有較強的獨立解決問題的能力,而我認為這是除技術能力之外,程序員最應具備的能力。

7. 給他們一個虛擬任務
經過上面的這些環節,你可能對面試者的整體情況已經比較滿意,但先別急著下結論。我曾見過能夠順利通過上面所有面試步驟,並且被僱傭的程序員,當他們進入實際工作後卻沒能把事情做好。
在你確定是否錄用他們之前,可以給他們一個虛擬任務。我不是說一個抽象的程序問題,而是指一個真實的,可能就存在於你當前項目中,並且需要在一兩個小時之內完成的一個開發任務。我曾經出過這樣的考題:
寫一個小程序將一個以特定格式(如CSV)存儲的文本文件轉換為XML格式,並存儲為另一個文件。
你可以給他一台已經配置好開發環境以及IDE的電腦,讓他當場編寫代碼。當然如果時間有限,你也可以直接詢問面試者的實現思路,並簡單用偽代碼來描述處理過程。通過這個測試,你能夠看到很多細節,比如面試者是否有良好的編碼習慣,異常處理是否規范,代碼邏輯是否縝密高效,以及他的開發效率是否足夠高。如果面試者給出了非常優秀的解答,那麼你就應該能夠判斷他確實是一個優秀的候選人了,因為我從沒碰到過能夠通過上面的測試,卻在實際工作中無法做好的人。

『肆』 程序員的十種級別

第一級:神人,天資過人而又是技術狂熱者同時還擁有過人的商業頭腦,高瞻遠矚,技術過人,大器也。如丁磊,
求伯君。

第二級:高人,有天賦,技術過人但沒有過人的商業頭腦,通常此類人不是頂尖黑客就是技術總監之流。

第三級:牛人,技術精湛,熟悉行業知識,敢於創新,有自己的公司和軟體產品。

第四級:工頭,技術精湛,有領導團隊的能力,此類人大公司項目經理居多。

第五級:技術工人,技術精湛,熟悉行業知識但領導能力欠加,此類人大多為系分人員或資深程序員,基本
上桀驁不遜,自視清高,不願於一般技術人員為伍,在論壇上基本以高手面目出現。

第六級:熟練工人,技術有廣度無深度,喜歡鑽研但淺嘗輒止。此類人大多為老程序員,其中一部分喜歡利用工
具去查找網上有漏洞的伺服器,干點壞事以獲取成績感。如果心情好,在論壇上他們會回答菜鳥的大部
分問題。此級別為軟體業苦力的重要組成部分。

第七級:工人,某些技術較熟練但缺乏深度和廣度,此類人大多為程序員級別,經常在論壇上提問偶爾也回答菜
鳥的問題。為軟體產業苦力的主要組成部分。

第八級:菜鳥,入門時間不長,在論壇上會反復提問很初級的問題,有一種唐僧的精神。雖然招人煩但基本很可
愛。只要認真鑽研,一兩年後就能升級到上一層。

第九級:大忽悠,利用中國教育的弊病,頂著一頂高學歷的帽子,在小公司里混個軟體部經理,設計不行,代碼
不行,只會胡亂支配下屬,拍領導馬屁,在領導面前胡吹海侃,把自己打扮成技術高手的模樣。把勾心
斗角的辦公室文化引入技術部門,實在齷齪!

第十級:驢或傻X,會寫SELECT語句就說自己精通ORALCE,連寄存器有幾種都不知道就說自己懂匯編,建議全部
送到日本當IT產業工人,掙了日本人的錢還嚴重打擊日本的軟體業!

『伍』 我是一名java程序員,想在幾年內成為一個架構師,我應該怎麼做看什麼書注重些什麼東西,請高手指點一二

小蔡:我感悟到的就是因為對軟體行業不了解,所以缺少一根結實的線將自己與夢想有序地串聯起來,因此很難深刻體會到目標在自己掌控下掙扎時的力量。那麼,通 常程序員如何對自
小蔡:「我感悟到的就是因為對軟體行業不了解,所以缺少一根結實的線將自己與夢想有序地串聯起來,因此很難深刻體會到目標在自己掌控下掙扎時的力量。那麼,通 常程序員如何對自己的角色做分析呢?」

銳哥順手在紙上畫了幾個圖,說:「確切地說,你應該問程序員通常的發展路線是怎樣 的?你們可以看看這個圖(如圖3-1所示),當一個初步的職業規劃方案已經成型時,如果制訂者目前已在一個軟體公司工作,那麼,對他來說進一步的提升非常 重要。首先要做的則是進行角色分析,反思一下這個職業環境對個人的要求和期望是什麼,如何使自己在單位中脫穎而出。

圖3-1

「通常,軟體技術人員的職業發展有幾個選擇:專注於技術,成為技術專家;轉型到技術 型銷售、技術支持等;隨著技術成長,從技術性管理到高級管理。這是大家都看得清楚的方向,也都在向這些方向的金字塔尖努力。

「就像烹飪魚一樣,每一個階段目標都需要你進行角色分析,找出這一角色需要的『配 料』,當你注意收集技術、素養等相關『配料』後,就會成功烹飪出你所需要的目標魚。前提是你一定要了解自己的特點和優勢,就好比黃瓜種子是不可能培育成西 瓜一樣。」

銳哥繼續說:「這歸根結底,都是以技術為基礎。在扎實的技術基礎上(高級軟體工程 師),如果有著比較強的抽象設計能力,又打算專注於技術開發,架構師是個好的選擇;如果性格更適合做管理,情商能力突出,技術型管理應該是下一步的方向。 這種發展規劃屬於『瘸腿走路』的類型,各有側重主攻發展的職業方向,也是目前一般程序員普遍採用的發展路線規劃。」

小蔡認真地看著圖說:「程序員職業規劃還有這么多學問!我看到每個角色配合的學歷, 那麼學歷和認證證書真的很重要嗎?還有必要花錢參加社會技術培訓嗎?」

銳哥:「決勝點在於長期的點滴積累,認證證書、成績、豐富的經歷是求職的表面文章, 在目前軟體行業里不是很看中這個,真正的『內功』是需要規劃的。至於培訓,我倒是很建議直接加入軟體公司,你就會學到很多實際的東西。不過,學歷教育雖然 在職業生涯里不是主要的,但是隨著職位的提升卻有很重要的意義,能輔助拓展你的職業發展空間,而不是以此為阻礙從而失去更多的機會。 」

「已經工作兩年以上的程序員可以有幾種基本的職業規劃:技術專家、軟體架構師、實施 顧問或銷售。其中程序員最主要的發展方向是資深技術專家,無論是Java、.NET還是資料庫領域,都要首先成為專家,然後才可能繼續發展為架構師。盡管 架構師的職位可以工作一輩子,待遇也非常好,對於科班出身的程序員最為適合,但這種工作職位非常有限,因為在中國目前的IT行業,架構師需要的條件比較復 雜,而且需求量也比較少,這也是我國軟體行業走向國際並有待成熟的因素之一。」

大熊指著另外一張圖說:「這個是綜合才能型發展路線圖(如圖3-2所示),我聽說目 前國內缺乏的是管理能力和專業知識技能並駕齊驅的IT人才。是不是指著這種復合型人才?」

圖3-2
銳哥說:「是的,特別是懂得運用目標管理技術的項目管理人才,既掌握核心技術又有全局掌控能 力的項目管理人才,非常難找。我建議對於大多數人來說,首先是要專,只有在技術方向上做得比較深入,才能適當做工作調整,把自己轉變為某個領域的專家。

「然後,根據自己的情況,決定自己做軟體架構師還是高級的顧問銷售,另外一部分人可 能就會走向管理,這和個人性格與情商有關。軟體優秀的管理者都必須懂得技術,掌握核心技能的人才向管理崗位轉型有很大的優勢,因而提升管理能力成了轉型的 關鍵。譬如,當唐駿還是微軟一名普通程序員時,就從公司發展的角度考慮,向老闆提議開發了中文版Windows,最終使他從幾萬名工程師中脫穎而出,成為 部門經理。正如他所說,雖然是程序員,但自己不能只把自己當程序員,你可以為老闆和公司著想。

「調查研究後,帶著解決方案去找老闆,就會得到老闆的重視和信任,所以一定要增強工 作主動性和參與性。無論是軟體開發還是項目管理,國內員工大多隻是做好份內事或完成交派任務,很少能主動發現問題。其實,只有擁有更高眼界,才能謀取大發 展。

「總之,程序員要根據本身的基本素質、技術能力選擇開發層次,由低到高,逐步發展。 也是一名程序員本身具備相應素質的循序漸進的發展軌跡,包括很強的技術背景和綜合管理才能等素養,這也就是所謂『兩條腿走路』的職業規劃發展路線。」

小蔡:「原來技術轉型還有這么多學問,受益匪淺。我打個比方,如果只是一名程序員, 但仍需要站在項目經理的層面上看自己的工作,這樣才能更好地合作,融入團隊中,並且鍛煉自己的思想境界,從而提高自己。」

銳哥:「小蔡說得是。另外,在未來發展上首先確定自己的發展方向和研究方向,在學習 技術的同時還要為以後做准備,做好以後的技術轉型。廣度和深度是相對的,先廣還是先深實質上從某種意義來說取決你的工作性質,如果你是從事單一工作的,多 半你會短暫先深,因為這是你立足的根本;而如果你選擇的職業是綜合性的,比如管理、講師等,那麼你必然要先有廣度才可以,但一段時間後,你都要轉入深度, 只有你在某一方面或領域有一定的深度後,你才能繼續尋求廣度,否則,你將什麼都會,但什麼都不精,這樣的人在市場上是最難以立足的。」

大熊:「這張程序員發展路線圖挺有意思,國際人才型(如圖3-3所示),一定要求外 語口語流利吧?」

圖3-3

銳哥:「是的。如果說前面『兩條腿走路』要求的綜合能力成分多,隨著國際化相互聯系 越來越緊密,那麼國際化人才可以說是當前更為便捷的程序員職業規劃發展之路。目前,國際化軟體項目經理是人才市場上炙手可熱的人才,有豐富經驗、外語口語 好的軟體項目經理是搶手的香餑餑,供不應求,薪水自然也是水漲船高。最重要的是,一個優秀的項目經理可以在這個崗位上長久工作下去,並且有向高層進一步提 升的可能。外語好、技術又好的程序員發展路線很廣,是目前國內外軟體企業需要的熱點人才。」

小蔡:「銳哥跟我們說了這么多,感覺對程序員、對軟體行業的整體發展路線清晰了很 多,但是我該用什麼方法進行選擇呢?」

銳哥:「要想正確地選擇,你得必須充分地了解、分析自己,你要學會SWOT職業規劃 自我分析法。」

總結與提升

成功與失敗的區別在於,成功者選擇了正確而失敗者選擇了錯誤。因此,我們常常能夠看 到一些天賦相差無幾的人,由於選擇了不同的方向,人生卻迥然相異。選擇正確的方向尤為重要,希望不同的程序員根據自己不同的優勢和特點能畫出適合自己的程 序員職業規劃圖。

軟體開發也是有層次區別的,比如,按層次從高到低通常可分為:

系統開發:如操作系統、資料庫系統、伺服器系統開發;

專業開發:如網路安全、游戲、人工智慧開發;

應用開發:如MIS、BI、ERP等系統開發;

普通開發:如網站、簡單應用系統開發。

不同的層次,難度系數不一樣,對技術要求、個人素質要求也不一樣。要成為系統開發 者、專業開發者、高級應用開發者,需要有很高的專業知識和很強的邏輯、抽象、空間思維能力,這就要求具有很好的基礎,同時具有較大的提升潛力。而要成為簡 單開發者和初級應用開發者則相對容易些,正是這樣,才使很多人走上了軟體開發的道路。

『陸』 如何才能修煉成一名不可替代的程序員,避免裁員危機

程序員,就是從事程序開發、程序設計、程序維護的專業人士。

作為一種專業性極強的技術性專業,程序員的工作難度非常高,只有專業技能水平高超的人才能在這個領域獲得良好的發展前景。……那些實力不足的人,只能被最終淘汰。

因此,要想在程序員這一行里成為不可替代的人,避免自己被淘汰出局的情況,就必須具備以下幾方面能力:

1,高人一籌的專業技能。

在職場上,要想確保自身生存,就必須具備一項專業技能。……要想確保自己不被淘汰,就必須具備高人一籌的專業技能水平。

因此,要想讓自己成為不可替代的程序員,要想讓自己避免被淘汰的情況,就必須確保自己的專業技能水平高人一籌。

2,強大的羅輯思維能力。

程序,是一個邏輯性極強的系統。

一個程序的各個部分之間、各項功能之間,都存在著極強的關聯,也擁有著非常強的邏輯關系。

因此,要想編寫出性能優異的程序,就必須擁有極強的邏輯思維能力。……這是確保自己擁有更強實力、確保自己不被淘汰的重要能力。

3,高超的數學水平。

程序的表象,是一段代碼。而其核心,則是數學模型,是具體的演算法。……只有具備高超的數學水平,才有能力編寫出演算法精妙、邏輯嚴謹的程序來。……這是自己具備更高水準的關鍵因素。也是自己高人一籌,不可替代的關鍵因素。

4,精通至少一門編程語言。

編程語言是程序員在編程時所用的工具。……只有熟練掌握手中的工具,才能讓自己編寫出優秀的軟體。……編程語言有很多種,一個程序員不可能面面俱到。……但是一個合格的程序員必須掌握至少一門編程語言,這就是自己工作時最得力的工具。……運用這個工具,自己就可以編寫出優秀的軟體,就可以獲得更好的業績,最終成為不可替代的優秀人才了。……自己也就不可能被淘汰了……

『柒』 如何成為一個程序員

想要從零開始成為程序員,先不要著急的去學習,而是先要去了解程序員。

1.隨便在招聘網站搜索就會發現程序員會分有很多類型,那你就需要確定自己將來想要發展的方向,自己的職業規劃是什麼?

2.通過搜索可以看到,剛剛起步的程序員工資並不是很高而且學習階段也會比較忙,那這個時候你是不是靠考慮一下如何兼顧生活和工作?工資如何支配合理等問題(沒有經驗限制的工作相對較低)

PHP程序員崗位要求

關於學習建議你這樣試試看:

學習的方式基本可分為兩個類型,一個是碎片化的學習,一個是系統進修

  1. 你可以從網路上各機構大量的視頻或者書籍得到相關的學習資料。從大量的資料中,發現真正的干貨,從而不斷學習,這屬於碎片化的自習。由於自學周期比較長,還有不少小夥伴選擇是一邊工作賺取生活費,一邊再利用閑暇時間學習,當然如果你的精力充沛,這也是一個好辦法。

  2. 如果要報培訓班, 一定要找正規的培訓機構學習,不然容易被坑。培訓機構裡面的課程都是現在工作中需要用到的,時間短,基本上是可以讓你快速上手工作的。但是要把所有的知識點都消化就沒那麼快了,所以需要自己私下更加的努力,鞏固學習。

注意事項:

1. 自學要注意的是:自學入門時會很枯燥,不要兩天打魚三天曬網!!!切記

2. 在培訓機構里學習要注意的是:勤加練習、主動自學、有問題提,不懂的盡管問老師(把交的錢發揮到極致),不然之後再有問題就沒有這么好的機會能夠直接得到老師的指點了。

最後,祝願想要成為程序員的小夥伴都能心想事成哦(*^▽^*)~

『捌』 一個好的程序員至少應該具備哪些條件

樓上的幾位顯然誤會我的意思了,我並不是說不應當寫文檔加註釋注重團隊精神,看看下面的一篇文章,那位三天就寫出UNIX的他需要寫文檔注釋和團隊精神嗎,他用不著。哪個高手沒有一點傲氣和自信,他之所以敢對用戶說:拿到你想要的,然後滾蛋,你已經很幸運了!是因為他有這個資本。天才本就不循規蹈矩,那樣他就不叫天才了。

MIT BBS上說微軟電話面試的一道題就是「Who do you think is the best coder,
and why?」。我覺得挺有意思的,也來湊個熱鬧。排名不分先後。

Bill Joy, 前任Sun的首席科學家,當年在Berkeley時主持開發了最早版本的BSD。他還
是vi和csh的作者。當然,Csh Programming Considered Harmful 是另一個話題樂。據
說他想看看自己能不能寫個操作系統,就在三天里寫了個自己的Unix, 也就是BSD的前
身。當然是傳說了,但足見他的功力。另一個傳說是,1980年初的時候,DARPA讓BBN在
Berkley Unix里加上BBN開發的TCP/IP代碼。但當時還是研究生的B伯伯怒了,拒絕把BBN
TCP/IP加入BSD,因為他覺得BBN的TCP/IP寫得不好。於是B伯伯出手了,端的是一箭封
喉,很快就寫出了高性能的伯克利版TCP/IP。當時 BBN和DARPA簽了巨額合同開發TCP/IP
Stack,誰知他們的代碼還不如一個研究生的好。於是他們開會。只見當時B伯伯穿
個T-shirt出現在會議室(當時穿T-shirt不象現在,還是相當散漫的哈)。只見BBN問:你
怎麼寫出來的?而B伯伯答:簡單,你讀協議,然後編程就行了。最令偶暈倒的是,B伯
伯碩士畢業後決定到工業界發展,於是就到了當時只有一間辦公室的Sun, 然後他就把
Sparc設計出來樂。。。象這種軟硬通吃的牛人,想不佩服都不行的說。據Bill Joy的同
事說,一般開會的時候B伯伯總是拿一堆雜志漫不經心地讀。但往往在關鍵之處,B伯伯
發言,直切要害,提出漂亮的構想,讓同事們徹底崩潰。對了,他還是Java Spec和JINI
的主要作者之一。

John Carmack,ID Software的founder和Lead Programmer。上個月和一個搞圖形的師兄
聊天,他竟然不知道John Carmack, 也讓偶大大地暈了一把。不過也許搞研究的和搞實
戰的多少有些隔吧。想必喜歡第一人稱射擊游戲的都知道J哥哥。90年代初只要能在PC
上搞個小動畫都能讓人驚嘆一番的時候,J哥哥就推出了石破天驚的Castle Wolfstein,
然後再接再勵,doom, doomII, Quake...每次都把3-D技術推到極限。J哥哥的簡歷上說
自己的專長是"Exhaust 3-D technology",真是牛人之言不我欺的說。做J哥哥這樣的人
是很幸福的,因為各大圖形卡廠家一有了新產品就要向他「進貢"
,不然如果他的游戲不支持哪種卡,哪種卡基本就會夭折樂。當初MS的Direct3D也得聽
取他的意見,修改了不少API。當然,J哥哥在結婚前十數年如一日地每天編程14小時以
上,也是偶們凡人望塵莫及的。對了,J哥哥高中肆業(?),可以說是自學成才。不過
呢,誰要用這個例子來為自己學習不好辯護,就大錯特錯了。那 Leonardo Da Vinci還
是自學成才呢(人是私生子,不能上學)。普通人和天才還是有區別的。對了,其實偶們
叫「達分奇」是相當不對的,因為Vinci是地名,而Da Vinci就是從Vinci來的人的意
思。換句話說,Leonardo Da Vinci就是「從Vinci來的Leonardo」的意思。叫別
人「Da Vinci」就不知所謂樂。嗯,扯遠了,打住。

David Cutler,VMS和Windows NT的首席設計師,去微軟前號稱矽谷最牛的kernel開發
員。當初他和他的手下在微軟一周內把一個具備基本功能的bootable kernel寫出來,然
後說:「who can't write an OS in a week?",也是牛氣沖天的說。順便說一句,D爺
爺到NT3.5時,管理1500名開發員,自己還兼做設計和編程,不改coder本色啊。

D爺爺天生脾氣火爆,和人爭論時喜歡雙手猛擊桌子以壯聲勢。 日常交談fuck不離口。
他面試秘書時必問:"what do you think of the word 'fuck'?" ,讓無數美女剎羽而
歸。終於有一天,一個同樣火爆的女面對這個問題脫口而出:"That's my favorite
word"。於是她被錄取樂,為D爺爺工作到NT3.5發布。

Don Knuth。高爺爺其實用不著偶多說。學編程的不知道他就好像學物理的不知道牛頓,
學數學的不知道歐拉,學音樂的不知道莫扎特,學Delphi的不知到 Anders Hejlsberg,
或者學Linux不知道Linus Torvalds一樣,不可原諒啊。為了讓文章完整,就再羅唆幾句
吧。高爺爺本科時就開始給行行色色的公司寫各種稀奇古怪的編譯器掙外快了。他賣給別
人時收一兩千美元,那些公司拿了code,加工一下賣出去就是上萬上十萬。不過也沒見高
爺爺不爽過,學者本色的說。想想那可是60年代初啊,高爺爺寫編譯器寫多了,順帶就搞
出了個 Attribute Grammar和LR(k),大大地造福後人啊。至於高爺爺在CalTech的編程比
賽(有Alan Kay得眾多高高手參加)總是第一,寫的Tex到86年就code freeze,還附帶2^n
美分獎勵等等都是耳熟能詳的,偶就不饒舌樂。

順便說一下,高老大爺是無可爭議的寫作高手。他給Concrete Mathematics 寫的前言可
謂字字鏗鏘,堪為前言的典範。他的技術文章也是一絕,文風細致,解釋精當,而且沒
有學究氣,不失輕快跳脫。記得幾年前讀Concrete Mathemathics,時不時開懷大笑,讓
老媽極其郁悶,覺得我nerdy到家,不可救葯。其實呢,子非魚,安知魚之樂,更不知那
完全是高爺爺的功勞。說到寫作高手,不能不提Stephen A. Cook。他的文章當年就被我
們的寫作老師極力推薦,號稱典雅文風的樣本。庫爺爺一頭銀發,身材頎長,總是面帶
謙和的微笑,頗有仙風道骨,正好和他的仙文相配的說。

高爺爺其實還是開源運動的先驅。雖然他沒有象Richard Stallman那樣八方奔走,但他
捐獻了好多作品,都可以在網上看到,比如著名的Mathematical Writing,MMIXWare,
The Tex Book等,更不用說足以讓他流芳百世的Tex樂。

Ken Thompson,C語言前身B語言的作者,Unix的發明人之一(另一個是Dennis M. Riche
老大,被尊為DMR),Belle(一個厲害的國際象棋程序)的作者之一, 操作系統Plan 9的主
要作者(另一個是大牛人Rob Pike,
前不久被google挖走了)。Ken爺爺也算是計算機歷史上開天闢地的人物了。1969年還是
計算機史前時代,普通人都認為只有大型機才能運行通用的操作系統,小型機只有高山
仰止的份兒。至於用高級語言來寫操作系統,更是笑談。Ken爺爺自然不是池中物,於是
他和DMR怒了,在1969年到1970間用匯編在PDP-7上寫出了UNIX的第一個版本。他們並不
知道,一場轟轟烈烈的UNIX傳奇由此拉開了序幕。Ken爺爺在1971年又把Unix用C重寫,
於是C在隨後20年成就了不知多少豪傑的夢想和光榮。

Ken爺爺還有段佳話: 裝了UNIX的PDP-11最早被安裝在Bell Lab里供大家日常使用。很
快大家就發現Ken爺爺總能進入他們的帳戶,獲得最高許可權。Bell
Lab里的科學家都心比天高,當然被搞得郁悶無比。於是有高手怒了,跳出來分析了UNIX
代碼,找到後門,修改代碼,然後重新編譯了整個UNIX。就在大家都以為「這個世界清
凈了」的時候,他們發現Ken爺爺還是輕而易舉地拿到他們的帳戶許可權,百思不解後,只
好繼續郁悶。誰知道這一郁悶,就郁悶了14年,直到Ken爺爺道出個中緣由。原來,代碼
里的確有後門,但後門不在Unix代碼里,而在編譯Unix代碼的C編譯器里。每次C編譯器
編譯UNIX的代碼,就自動生成後門代碼。而整個Bell Lab的人,都是用Ken爺爺的C編譯
器。

(6)Rob Pike, AT&T Bell Lab前Member of Technical Staff ,現在google研究操作系
統 。羅伯伯是Unix的先驅,是貝爾實驗室最早和Ken Thompson以及Dennis M. Ritche開
發 Unix的猛人,UTF-8的設計人。他還在美國名嘴David
Letterman的晚間節目上露了一小臉,一臉憨厚地幫一胖子吹牛搞怪。讓偶佩服不已的
是,羅伯伯還是1980年奧運會射箭的銀牌得主。他還是個頗為厲害的業余天文學家,設
計的珈瑪射線望遠鏡差點被NASA用在太空梭上。他還是兩本經典,The Unix
Programming Environment 和 The Practice of Programming 的作者之一。如果初學者
想在編程方面精益求精,實在該好好讀讀這兩本書。它們都有中文版的說。羅伯伯還寫
出了Unix下第一個基於點陣圖的窗口系統,並且是著名的blit終端的作者。當然了,羅伯
伯還是號稱銳意革新的操作系統,Plan9,的主要作者。可惜的是,Plan9並沒有引起多
少人的注意。羅伯伯一怒之下,寫出了振聾發聵的雄文 Systems Software Research is
Irrelevant,痛斥當下系統開發的不思進取,固步自封的弊病。雖然這篇文章是羅伯伯
含忿出手,頗有偏激之詞,但確實道出了系統開發的無奈:開發周期越來越長,代價越
來越大,用戶被統一到少數幾個系統上,結果越來越多的活動是測量和修補,而真正的
革新越來越少。

就在羅伯伯郁悶之極的時候,google登門求賢來樂。如果說現在還有一家大眾公司在不
遺餘力地把系統開發推向極致的話,也就是google樂。隨便看看google的成果就知道
了。具有超強容錯和負載平衡能力的分布式文件系統GFS
(現在能夠用100,000台廉價PC搭起一個巨型分布系統,並且高效便宜地進行管理的系統
也不多哈),大規模機器學習系統(拼寫檢查,廣告匹配,拼音搜尋。。。哪個都很牛的
說),更不用說處理海量並行計算的各式google服務了。Rob在System Software
Research is Irrelevant里蕭瑟地說現在沒有人再關心系統研究的前沿成果了。想不到
他錯了,應為google關心。google網路了大批功成總是試圖吸取系統研究的最新成果。
想必Rob Pike在google很幸福。願他做出更棒的系統。

Dennis M. Ritchie, 既然Ken Thompson是我的偶像,新聞組上人稱DMR的Dennis M.
Ritchie自然也是,畢竟兩人共同締造了UNIX,而Dennis幾乎獨力把C搞大(當然,C的前
身是B,而B是Ken Thompson一手做出來的)。兩人1983年分享圖靈獎,是有史以來少數幾
個因工程項目得獎的工程師(本來是唯一的一對兒,但Alan Kay才因為SmallTalk得獎,
所以就成了唯二的樂) 一個人一生能做出一個卓越的系統已經不易,DMR的C和UNIX長盛
不衰近30年,至今生機勃勃,DMR此生可以無憾的說。

D爺爺也算有家學淵源:他老爸在AT&T貝爾實驗室工作了一輩子,並在電路設計方面卓有
成就,還出了本頗有影響的書The Design of Switching Circuits,據說在交換理論和
邏輯設計方面有獨到的論述。當然,D爺爺和他老爸是不同時代的人:他老爸的研究成
形於晶體管發明之前,而D爺爺的工作離了晶體管就玩兒不轉樂。:-D

不要看D爺爺搞出了C,其實他最愛的編程語言是Alef,在Plan9上運行,支持並行編程。
Alef的語法和C相似,但數據類型和執行方式都和C大大不同。說到語言,D爺爺對後來
人有非常中肯的建議:抱著學習的目的來開發你自己的語言,不要冀望於它被眾人接
受。這個建議不光對語言開發有用,也適用於其它大型系統的開發。別的不說,DMR後來
領導自己的團隊在1995年和1996分別推出了Plan9和Inferno操作系統,又用多少人知道
呢?其實,D爺爺當初也沒想過C會風行世界。他開發C的初衷和Eric S. Raymond
在Cathedral and Bazaar里闡述的一樣,就是要消除自己對現有工具的不爽之處。誰
知D爺爺無心插柳,C竟然受到眾多程序員的狂熱擁戴,連D爺爺自己都大惑不解。在一次
采訪中D爺爺說大概那是因為C的抽象程度碰巧既滿足了程序員的要求, 又容易實現。當
然C一度是Unix上的通用語言也是原因。但不管怎麼說,D爺爺對編程語言出色的審美意
識奠定了C廣為流傳的基礎。

最後八卦一下。D爺爺的業余愛好和NBA大牛Karl Malone一樣:開卡車。不過D爺爺更喜
歡開NASCAR,而KM獨愛巨無霸。J D爺爺自稱心中不供偶像,如果一定要說一個,那就
是Ken Thompson了。現在Ken爺爺退休當飛機教練去了,而D爺爺當了貝爾實驗室系統開
發部的頭,整日忙於開支票。他倆合作20年,屢屢創造歷史。這段令人神往的佳話,也
就長留你我心中樂。

P.S., 很多人都以為Brian W. Kernighan是C的作者。其實BWK只是寫了那本經典K&R C。
據D爺爺說,他,Ken, 和Kernighan三人中,Kernighan最能寫文章,他次之,而Ken寫
得最少;但說到編程,Ken爺爺才是當之無愧的老大。

Edsger Wybe Dijkstra, 對,就是E.W. Dijkstra. 一提到EWD,很多人就會想起找最短
路徑的Dijkstra Algorithm,就好像一提到Sir. Tony Hoare,就想起Quick Sort一樣。
其實這些個演算法不過是兩個牛人在他們職業生涯中最瑣碎的貢獻。比如Dijkstra演算法,
無非是戴爺爺在1956年為了展示新計算機
ARMAC的計算能力,初試身手的成果,屬於他的演算法處女作。據戴爺爺自述,他搞出最
短路徑演算法的時候連紙筆都沒用。當時他和他老婆在阿姆斯特丹一家咖啡廳的陽台上曬
太陽喝咖啡,突然就把這個演算法想出來樂。而且當時的演算法研究還比較原始,牛人們忙
著用計算機搞數值計算,對離散演算法不屑一顧。那時連一個象樣的專注於離散演算法的專
業期刊都沒有。戴爺爺於是推遲發表這個演算法。直到1959年,他才把這個演算法發表
在Numerische Mathematik的創刊號上,權為捧場。:-)
EWD在多個領域牛氣沖天,端的是理論和編程兩手硬的高手。只不過他的很多工作比較
深刻,學校的老先生們覺得本科生接受不了,不給本科生講而已。

戴爺爺大概因為最短路徑演算法一戰成名,於是有人請他參加另一台計算機X1的設計工
作,並且把設計實時中斷系統的任務派給了他。現在看來實時中斷也許不算什麼,但要
知到,X1前根本就沒有實時中斷的概念。實現它簡直就是一場豪賭。戴爺爺起初還不情
願,但經不住項目負責人Bram和Carel的輪番 「吹捧」:我們知道實時中斷讓您工作變
得非常困難,但象您這樣的牛人肯定能做出來的說。結果戴爺爺被糖衣炮彈徹底擊穿,
接下了這個燙手山芋。兩三年後,他不僅搞出了實時中斷,還圍繞這個寫出了自己的博
士論文,順利戴上博士帽。

讓戴爺爺真正成名立萬的還是在X1上開發的Algo60,最早的高級語言之一。戴爺爺沒日
沒夜地工作了8個月,就搞出了Algo60,也因此獲得了 1972年的圖靈獎。因為Algo60,
戴爺爺發表了一篇石破天驚的文章:Recursive
Programming,於是人們才知道,原來高級語言也可以高效地實現遞歸,原來從此以後,
所有程序員都不可避免地和戴爺爺發明的一個詞(應該說是概念)打交道:堆棧。
而且Algo60還讓戴爺爺深入地思考多道程序設計的問題,最終發明了每個系統程序員
都繞不開的概念:semaphore。當然,戴爺爺總是把他發明的概念嚴格形式化,極具科
學家本色的說。和這些成就想比,他提出的吃飯的哲學家問題,也就沒什麼好說的了。

說來好笑,當時的大學(忘了哪所了)還是覺得戴爺爺沒有受過正統的數學訓練,也不是
專門搞數值分析的,所以最後不太情願地給了他一個教職。這種小挫折並不能妨礙象戴
爺爺這樣的牛人創造歷史。他一邊教數值分析(:-D) ,一邊開始開發一個新的操作系
統,並培養計算機科學家。幾年後,THE Multiprogramming
System橫空出世。THE是第一個支持鬆散耦合,顯式同步的進程並由此使得嚴格證明系統
沒有死鎖變得容易的操作系統。可惜戴爺爺任職的系不識貨,還強行解散了他的研究小
組(1972年戴爺爺給他的系主任說他得了圖靈獎,系主任的第一反應是你們搞計算機就
喜歡亂發獎)。這讓戴爺爺相當郁悶,得了抑鬱症。在極度郁悶之中,戴爺爺決定用寫作
來治療自己的抑鬱症。於是經典就誕生樂:Notes on Structured Programming。戴爺爺
從此被尊為結構化編程的奠基人,而且他的抑鬱症也被治好樂。

EWD太牛,結果他的故事也太多。先到這里吧。1973起,他的故事就在美國發生了。

Anders Hejlsberg,微軟.NET的首席架構師,編程語言設計和實現的頂尖高手。他一手
做出了 Turbo Pascal, 也是Delphi, J++(尤其是WFC),C#, 和.NET的主要作者。這些作
品的名字足以為他立傳。作為一個程序員,我在這樣的大師面前實在無語。生子當
如Anders的說。李維的<>里已詳細講述了Anders的傳奇故事,我就不用費舌了:

http: //java.mblogger.cn/iexploiter/posts/1505.aspx

Artima上有Anders談C#的系列訪談。MSDN上有一段Anders導游的錄像 。有興趣可以去看
看牛人的豐采。

閱讀全文

與如何入門到資深程序猿相關的資料

熱點內容
fxt交易平台哪個好用 瀏覽:717
什麼是利基市場兆易創新 瀏覽:48
如何做訴訟代理 瀏覽:476
有什麼小程序可以發布簡單問答 瀏覽:724
為什麼聯通卡有話費接不到信息 瀏覽:718
t3產品數據服務怎麼啟動 瀏覽:866
19日為什麼是非港股通交易日 瀏覽:717
哪裡有學扒輪胎的技術 瀏覽:268
蘋果信息表情包為什麼發不出去 瀏覽:556
為什麼進口冷凍產品好 瀏覽:637
吉林圖釘怎麼代理線上咨詢 瀏覽:678
毒上交易關閉多久退錢 瀏覽:647
大數據處理中會有哪些問題 瀏覽:909
虛擬產品在哪裡交易 瀏覽:925
泰安哪個奇石市場好 瀏覽:480
如何看對程序員的評價 瀏覽:945
淘寶上買衣服交易成功怎麼投訴 瀏覽:36
怎麼找靠譜的爬蟲數據 瀏覽:936
法蘭克數控車床如何找到對應刀的程序 瀏覽:559
什麼面膜代理好 瀏覽:168