『壹』 《代碼整潔之道》epub下載在線閱讀,求百度網盤雲資源
《代碼整潔之道》([美] Robert C. Martin)電子書網盤下載免費在線閱讀
資源鏈接:
鏈接:https://pan..com/s/1jGwYjazmD65UY7cvRqyCfQ
書名:代碼整潔之道
作者:[美] Robert C. Martin
譯者:韓磊
豆瓣評分:8.7
出版社:人民郵電出版社
出版年份:2020-2
頁數:387
內容簡介:
軟體質量,不但依賴架構及項目管理,而且與代碼質量緊密相關。這一點,無論是敏捷開發流派還是傳統開發流派,都不得不承認。本書提出一種觀點:代碼質量與其整潔度成正比。干凈的代碼,既在質量上較為可靠,也為後期維護、升級奠定了良好基礎。作為編程領域的佼佼者,本書作者給出了一系列行之有效的整潔代碼操作實踐。這些實踐在本書中體現為一條條規則(或稱「啟示」),並輔以來自實際項目的正、反兩面的範例。只要遵循這些規則,就能編寫出干凈的代碼,從而有效提升代碼質量。
本書閱讀對象為一切有志於改善代碼質量的程序員及技術經理。書中介紹的規則均來自作者多年的實踐經驗,涵蓋從命名到重構的多個編程方面,雖為一「家」之言,然誠有可資借鑒的價值。
作者簡介:
作者 | Robert C. Martin
世界級軟體開發大師,設計模式和敏捷開發先驅,敏捷聯盟首任主席,C++ Report前主編,被後輩程序員尊稱為「Bob大叔」。20世紀70年代初成為職業程序員,後創辦Object Mentor公司並任總裁。Martin還是一名多產的作家,至今已發表數百篇文章、論文和博客文章。除本書外,還著有《代碼整潔之道:程序員的職業素養》《敏捷軟體開發:原則、模式和實踐》《UML:java程序員指南》等。
譯者 | 韓磊
互聯網產品與社區運營專家,技術書籍著譯者。曾任CSDN及《程序員》雜志副總經理、總編輯,廣東二十一世紀傳媒新媒體事業部總經理等職。現任AR初創企業亮風台廣州公司總經理。除本書外,還譯有《夢斷代碼》《C#編程風格》等書。與劉韌合著《網路媒體教程》,與戴飛合譯《Beginning C# Objects中文版:概念到代碼》。
『貳』 一個好的程序員至少應該具備哪些條件
樓上的幾位顯然誤會我的意思了,我並不是說不應當寫文檔加註釋注重團隊精神,看看下面的一篇文章,那位三天就寫出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導游的錄像 。有興趣可以去看
看牛人的豐采。
『叄』 王者榮耀打野怎麼建立優勢
王者榮耀這款游戲想必很多小夥伴都玩過,畢竟這是目前最火爆的團隊競技類游戲。在這款游戲里,有著五個不同的位置,分別是對抗路、中路、打野、射手和輔助這五個位置。這五個位置都非常的重要,可以說是缺一不可。其中,打野位置非常的受玩家歡迎,這個位置也是很多大神玩家最喜歡玩的位置。但是這個位置的任務非常重,如果玩兒不好,很容易受到其他位置的謾罵,所以說這個位置對游戲意識要求特別高。在我看來,想要玩好打野位置,必須提升打野速度、學會反野技巧、掌握抓人套路。下面就讓我說一下具體原因吧。
一、提升打野速度作為一個打野,提升打野速度是最基礎的。因為只有打野快了,你才能更好的控制野區資源。而且刷野速度,也影響著你的支援速度。而且很多時候,你刷野慢,敵方打野刷野快,他可能就比你等級高,會對你在野區造成壓力。所以想玩兒好打野,就必須提升你的打野速度。
各位看官,對於王者榮耀中打野如何建立優勢這一問題,有想法的小夥伴兒可以在下方評論哦。
『肆』 lol怎麼升級最快
你好,英雄聯盟里獲得經驗的方法有3
1.從死亡的敵方小兵處獲得,當敵方小兵死亡時你在其附近就能獲得經驗,而且殺死小兵還能得到更多的經驗
2.擊殺英雄獲得,殺死敵方英雄會獲得大量經驗值
3.擊殺野怪,不要小看野怪的經驗,打野的英雄升級速度和中路幾乎一樣
英雄聯盟里,附近友方英雄越少你就會獲得越多的經驗。所以中單的英雄總比其他路的英雄早到6級。
SO!
要升級快的話。。。
1,多殺小兵,殺小兵是游戲里最最重要的經驗來源
2,殺英雄。。。。。(我在想這句要不要打的說。。)
英雄聯盟游戲中的經驗獲取方式是分為幾種的,分別為:補兵、擊殺敵人、獲得助攻、擊殺野怪這幾種方法都是可以獲得經驗的,而對於玩家來說,補兵所帶來的經驗是自己比較重要的一部分。
畢竟在線上的時候玩家都是需要進行補刀的,就算是輔助英雄不補刀,那麼也是可以吃掉死亡的小兵吃到的經驗的,而擊殺英雄相對於補刀來說就沒有那麼的普遍了,雖然擊殺英雄也是可以獲得經驗的,但是最為重要的經驗還是來自於補刀的。
所以想要讓自己快速的升級,良好的發育是分不開的,自己穩定的補刀,然後不瞎跑不亂跑,適當的志願隊友,拿幾個人頭,這樣自己的等級提升就會比較的迅速了
可以考慮買時間+場數雙倍經驗卡,如果你是小號,可以考慮去淘寶買cdk禮包,大部分都是一個450的英雄+1天+4勝經驗卡,價格從3塊到10塊不等,視英雄而定,還有些比如幾個英雄+符文+經驗卡的也不過十幾塊,是很劃算的,可以去淘寶搜一下,不過所謂88英雄禮包全是騙人的,不要上當,沒有抽獎cdk,要買就買固定說明裡面有什麼的個人買了不少,電信的小號基本上就是靠人機刷上來的,一場能有400到500的樣子,具體記不太清了,很久沒玩新號了,qt語音掛兩天也會能兌換一張4勝經驗卡,每月一次,還有就是一些活動,游戲人生有送,關注下就可以了。
『伍』 程序員入門:如何自學編程
1、選定方向
編程的世界是多元紛繁的,大的方向就分前端開發、後端開發、移動開發、雲計算、數據處理、智能硬體、物聯網、虛擬現實等等,光編程語言都幾十種。如果沒有做過功課,貿然進入只會分分鍾懵逼。所以最好是根據自己的興趣愛好再結合市場前景,先選定一個方向,再選擇一門語言,然後頭也不回的深深扎進去。
2、優化學習方式
做好筆記,記錄經驗,我們大多數人並沒有過目不忘的神技,很多時候我們學了也不一定馬上掌握,需要過後花時間慢慢領悟,而且還有忘掉的風險,所以對於重要的知識點都要做好筆記。
3、多看官方文檔,外文資料
互聯網是一個更新迭代很快的行業,所有編程語言都會不斷的更新新功能和修復舊Bug,網上查的資料很有可能是舊的解決方案,現在已經不適用了。所以最好最快的方法就是查看官方文檔。
4、動手做項目
我們學習編程的最終目的就是用所學的做出具有一定功能的項目,而做項目又是最好的學習和鞏固知識的方式。如果前期能力不足就先做一些簡單的功能模塊,一步一步慢慢來,不要一開始就要實現各種酷炫炸天功能,遇到不會的就在網上查, 現在互聯網這么發達,獲取資源也及其方便。
『陸』 程序員的十個階梯是什麼
一階段:《數據結構》《軟體工程》《C語言》《C++》《C#》《PHP》《Java》《Swift》《設計模式》《框架》
第二階段:《莫生氣》《佛教》《道》《來自》《思想與政治》《論持久戰》
第三階段:《脊椎匡扶指南》《腰間盤突出康復指南》《心臟病的預防與防止》《高血壓降壓寶典》《強迫症的自我恢復》
第四階段:《迷戀》《謝謝你折磨我》《自私與貪婪》《走向奴役之路》
第五階段:《活著》
第六階段:《棺材的質量與選材》《墓地的風水與選擇》《死後的思想》
第七階段:《中國傳統喪葬禮儀概述》
第八階段:《論投胎的方法與技巧》
第十階段:《論出生後如何不成為程序員》
『柒』 如何從初級程序員過渡到中高級程序員
在程序員圈,一直流傳著這樣一個傳說,用發量來判斷程序員的級別,這明顯是種調侃。那麼,中級程序員,相對於初級程序員,有哪些不一樣的特質呢?
總得來說,比較於初級而言,中級程序員在執行層面屬於攻堅力量,他們不僅能獨立完成高檔難度的開發使命,並且在用戶體驗(質量提高)和功能優化(優化效率)都能作更全面的考量。
以下,是小編總結的關於中級程序員七大特點,各位可以對號入座。
(一)善於溝通
程序員內向的居多,喜歡交流的很少,但中級程序員往往能夠克服自己的內新的恐懼心理,多和同事交流。
甚至有管理者認為,程序員應該80%的時間,花在同事的交流上。不僅是部門內的同事,也還包括跨部門溝通,敲代碼的需要經常與產品經理、運營的同事溝通需求。
日本不少跨國公司,甚至有讓程序員去體驗幾個月銷售員的傳統。公司要求,程序員在敲代碼的同時,也要能夠理解一線用戶的需求。
交流對於初級程序員了解技術的發展,也相當有好處:讀讀博客、學學新語言和框架、討論討論話題、看看同行在做什麼。自掃門前雪,很難成為一個優秀的程序員。閉門造車型的程序員終將被時代的潮流所淘汰。
(二)對編程有激情
有些程序員干這一行只是為了掙錢,如果有更好的職業,他們會毫不猶豫的辭掉程序員的工作。
能夠順利晉升為中級程序員的人,往往熱愛編程,喜歡鑽研代碼中的問題,他們感到能指揮電腦來幫助人們和自己解決現實生活中的問題是一種神奇的能力。當遇到問題無法解決時,他們會茶不思、飯不想,無法入睡。
每個人都有心理上的舒適區,但是中級程序員,會不斷地突破自己心理上的舒適區。
他們很樂於經常去研究沒有接觸過的代碼,也正因為這樣,成長速度快的中級程序員會越來越熟悉不同的代碼結構和設計模式。
(三)精通代碼調試
幾乎所有的程序員寫代碼都不是一遍就能寫好的。精通代碼調試 ( debug )很多人在寫代碼的過程中,經常會有的一個問題就是:為什麼我寫出來的代碼不能運行?為什麼運行的結果不是我想要的?
中級程序員非常快的就明白自己代碼的問題可能是什麼。代碼調試是一個很重要的能力,但是偏偏學校里不教,面試的時候考官也不經常提及。那麼怎麼去調試代碼呢?
代碼調試是有一套方法論的。最簡單的就是在代碼里輸出日誌來判斷,復雜一點則需要去接觸一些高級的工具,或者直接帶有 Debug 功能的編輯器。
(四)主人翁精神
部分初級程序員剛入行,可能還沒有進入狀態,往往認為自己是打工者,以打工者的身份和心態工作。
中級程序員卻會把自己當成企業的主人,他們知道企業的利益和自己休戚相關。
成熟的程序員明白一點,作為一名優秀的企業員工,自己是生產者而非消費者。他們心中一直想得是自己能夠為公司,為顧客創造什麼價值,而不僅僅只想著待遇。
(五)工具型思維
中級程序員知道如何能更高效的完成任務,如何更能有效的解決問題。其原因是工具型思維,如同荀子所言,「君子生非異也,善假於物也。」
Facebook 前技術總監 Bobby Johnson 說,高效率的程序員都把時間花在製作工具上。很多人也認為工具是很重要的,但是他們並沒有花時間去製作、整合自己的工具。但是,Jonson 團隊最出色的員工耗費了他們 1/3 的時間在工具製作上,這些工具可以用來發布代碼,監控系統,以及能讓他們花更少的時間去做更多事情。
中級程序員遇到問題時,不鑽牛角尖,善於利用外部工具解決自己的問題,特別是能熟練應用搜索引擎。
(六)刻意練習迭代速度
魔鬼在細節上,如果一個程序員想要提高自己的工作效率,就需要他能夠不斷地在細節方面,進行微創新,提高效率。
舉一個例子,假設一個初級程序員,每次要花 12 秒鍾去搜索某個函數是在哪裡定義的。如果,他每天做這個動作 60 次,就要花 12 分鍾去搜索函數定義。
中級程序員會選擇用一個好一點的編輯器,每次找到函數定義只要 2 秒鍾,那麼他每天將節約 10 分鍾,每年節約 40 個小時。如果能夠找到 3 個這樣的場景去優化一下,那麼對於中級程序員來說,每年可以節約一個月的時間。
(七)系統學習
學習是要有方法的,尤其是在職場中,程序員的自我學習要符合兩點要求:一是有結果;二是高效。因此,系統性學習,非常重要。
高級程序員系統學習指南如下:
第一步,源碼分析。看看大牛是如何寫代碼的,提升技術審美,提升核心競爭力。
第二步,工程化。工欲善其事必先利其器,不管是小白,還是資深開發,都需要先選擇好的工具,提升開發效率和團隊協作效率,讓自己有更多的時間來思考。
第三步,分布式。從深度到廣度的完善自己的知識體系,准備迎接高並發大數據的挑戰
第四步,微服務。繞微服務的通用模式,學習spring Cloud的常見用法及原理,讓微服務的開發更加方便 快捷,讓微服務應用更加穩定 可用。
第五步,性能優化。從JVM底層原理到內存優化 再到各個中間件的性能調優,做最科學和最嚴謹的性能調優。
第六步,並發編程。深入了解底層原理,不只是做一個開發者。
第七步,積極參加大牛的分享。
(八)總結
可以理解,對於初入職場的程序員來說,他們在內心也知道學習的重要性,但因為沒有時間,被老闆的需求給填滿,沒有精力去提升自我。
然而,根據人類的學習曲線來說,任何一門新的技藝,都是一條對數曲線。其分為兩個階段:緩慢期和高速發展期,即初期很慢,後期進展迅速。
如果,能夠讓程序員在剛進入職場的時候,便擺脫初級程序員的桎梏,直接擁有中級程序員的實力,是不是就能跨越學習曲線的緩慢期呢。
知名IT教育機構傳智播客已開通了中級程序員課程,發布了全新的項目,想學習的小夥伴抓緊
『捌』 求《奔跑吧程序員》全文免費下載百度網盤資源,謝謝~
《奔跑吧程序員》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1PS4DgpqdNgyyBE93xCH3wA
『玖』 誰能指導下我
如何學習 C++
如何學習一門較復雜的編程語言
前言
呵呵,大家好,我又來了,其實我天天在,大多數時候總是回答一些套話,比如"同意上傳。文件名:......文件夾:......",或者"確認完畢,加1分,謝謝支持"之類,大概傳過書的朋友都見過吧。
前幾天,心血來潮,寫了一篇如何選書的帖子,寫完以後,手癢難忍,不知哪條蟲又醒了過來,趁熱再來一篇,談談如何學習 C++,總題為"斑竹觀點",不知道以後還會寫什麼,也許就這兩篇打住,也許會洋洋灑灑寫成系列(吹牛不上稅吧?稅務局別來找我呀),那就要看我有沒有心情和那麼多閑工夫了,至於別人想不想看,愛不愛看,我可管不了,自己痛快就行啦。你自己願意惡心自己,就往下看,哈哈......
閑話少敘,書歸正傳。話說在很久很久以前,C++ 紅紅火火,風頭正勁,天下多少英雄豪傑為其馬首是瞻......
(呸,廢話連篇,看西紅柿......)哇,不好,我躲,我躲,我躲躲躲......
慘,掌聲沒有,爛西紅柿來了一筐,等我去換身衣服先......
......西服換成馬褂,咱接著來。睡覺的醒一醒啦,快看呀,窗戶外面下刀子了!
自從 Java 問世以來,C++ 陣營人氣日下,唉,人的本性就是喜新厭舊,最近又新出一小妞,叫什麼 C# 的,攪得人心惶惶,明明是 Java 的克隆加變異,她干媽(那個叫什麼 M$ 的)非要和人家 C++ 攀親戚,說是 C++ 親生,和 Java 對著干。唉,這世道,亂套了,不知道這人心都是怎麼長的。
我不怕你們的西紅柿了,我准備了紙糊盾牌,嘿嘿,除非本·拉登親自出馬......
但是,C++ 周圍總還是有一群誓死效忠的追隨者長伴左右,任你風吹雨打,我自巋然不動。C++ 把純粹與高效,精美與詭異完美地,近乎奇跡般地集於一身,吸引著那些喜歡尋幽攬勝的探險家們。當然 C++ 並非不實用,但我今天不想談 C++ 的工業應用(那是我的工作,俗),超脫起來,來看看純粹的 C++。如果你想為了找工作而學習 C++,我勸你就此打住,別往下看了,我幫不了你,瞎耽誤工夫,我也勸你別學 C++,改行 Java 吧,或者 VB 也成。如果你是一個專職程序員,下一個項目是關於 C++ 的,而你還不會,想臨時抱抱佛腳,你也別看了,我想你的公司會組織你們集體去抱的,你們可以針對你們的項目學習一個夠用的子集大概就可以了。我這篇帖子不是佛腳,不講如何速成,我只是想針對現在眾多想學習 C++ 卻又無從下手的學生提出我自己的建議。你可以不同意我的觀點,那麼請准備好西紅柿,等我講完了,我給你們時間扔(事先聲明,我要好的,爛的不要啊)。
好了,如果你的耐心已經讓你忍耐至此,而且還想忍耐下去的話,我希望你能忍到最後,再也沒一句廢話了,你沒有理由看完上面的廢話不往下看。
一、什麼是 C++?
一看我的標題,大概又有人舉西紅柿了,您慢著點兒,別閃了腰或岔了氣!很多人不知道這個問題的正確答案。如果你還認為"C++ 是 C 的超集",那你可是大大落伍了,這是二十年前的答案了。如果你說"C++ 是一種面向對象的程序設計語言",哈哈,沾邊,但也不對,在98年 C++ 國際標准公布以後尤其不對!
C++ 之父 Bjarne Stroustrup 曾有一篇論文 Learning Standard C++ as a New Language,《程序員》雜志2001年4月號有陳崴的譯文《將標准 C++ 視為一個新語言》,把 C++ 和它那個好像還不是右派的爹徹底劃清了界限。文章對 C 和 C++ 在 Complexity(復雜度)和 Efficiency(效率)兩方面做了比較,指出 C++ 已經完全不同於 C 的觀念,並對如何學習標准 C++ 提出建議。有興趣的朋友可以看看,很有啟發性。
C++ 發展至今,其歷史已足夠寫一本書了,Bjarne 的經典名著 The Design and Evolution of C++,詳細記述了 C++ 設計和發展過程中(1979-1994)的種種考慮與妥協,它不講 C++ 是什麼樣的,它只講 C++ 為什麼會成為這樣。不建議初學者去看這本書,實在是咬不動,我當初已經看得頭破血流了,而且這本書只講到1994年為止,多少有些過時了,如果你已比較好地掌握 C++,並想了解其歷史,看看倒是有些參考價值。
C++ 雖然起源於 C,語法也比較相似,其迅速成功並成為主流很大程度上也歸功於 C 的成功。但經過多年的發展,其最精妙,最有吸引力的部分正是不同於 C 的那一部分。Koenig & Moo 夫婦在為想成為更好的 C++ 程序員的人提出的3條建議中第1條就是"避免使用指針",你相信嗎?指針正是 C 的核心呀。C 的宏、位運算、結構、聯合、數組、強制類型轉換、指針,在 C++ 程序中都應該盡量避免(在少量涉及底層的程序設計中例外),C++ 語法上強調的是類、對象、模板、標准庫、引用、異常和 const 關鍵字,思想上強調的是面向對象和泛型。
在 Proceral Programming, Object-Based Programming, Object-Oriented Programming, Generic Programming 中,C 僅僅支持第一種,而就是在 Proceral Programming 的程序中,如果使用了標准庫,一個 C++ 程序也可以和實現同樣功能的 C 程序完全不同。
Bjarne 曾不止一次強調 C++ 不僅僅是一種 Object-Oriented Programming Language,那是 Java,C++ 是一種集各種編程風格於一身的程序設計語言,Object-Oriented Programming 只是其中一種,並不比其它幾種風格重要。我目前很懷疑 C++ 對面向對象的支持程度,雖然它一度在這方面風光無限,但多年發展,它並沒有形成一個類似於 Java 或 Python 或其它語言那樣的類庫,也很少取得成功的像樣的類庫(不能說一個沒有,但畢竟很少),反而,在難產到1998年的 C++ 的第一個標准化文本中的庫卻是基於 Template 和 Generic 的。哈,這多少有些諷刺意味,在別的語言還唧唧喳喳討好面向對象的時候,C++ 拋下一個媚眼,卻轉身投入泛型的懷抱。見風使舵的 Java 和 C# 好像上錯了賊船,又都趕著往自己身上貼泛型的金,弄得人不人鬼不鬼,當初,Java 可是批判 C++ 過於復雜最起勁的一個,在可以預見的將來,它的復雜程度將不低於 C++。拜託,有點創意好不好,別總讓人神經衰弱了!
Java fans 們不要扁我,下次我寫"如何學習 Java"時,咱哥們友情後補。
廢話太多,第一個問題就此打住。
二、選用什麼樣的編譯器?
這個問題也是初學者經常問的問題,其實一句話,對於初學者來說,現有的較新的編譯器,除了易用性外,沒有任何區別。
有人總是在用 VC 還是 BCB 還是 GCC 上爭論不休,我想如果你能把這三種編譯器的區別用出來,你現在就不會看我這篇破玩意兒了。但有人現在還在用 Turbo C++ 3.0/3.1,如果你真想學好 C++,我勸你還是換換的好,那東東確實是個好東東,但已經被 Borland fans 們當作古董收藏起來了(我也留著一套呢,還有 TC 2.0),你也收起來吧,沒准什麼時候能賣個好價錢。
我要講的一個重要問題是不要把 VC 與 C++ 混為一談,也不要把 VC 當作另一種語言。首先,VC 的全稱是 Microsoft Visual C++,注意,前面帶有公司的名字,即使是 Java,也沒有叫過 Sun Java,這就意味著 VC 是一個產品,它是 C++ 眾多編譯環境中的一種,它不僅僅帶有一個 C++ 語言的編譯器,它還帶有一個用於開發 Windows 應用程序的 Application Framework - Microsoft Foundation Classes Library (MFC),又一個帶公司名的傢伙,它只是用 C++ 語言在 Windows API 外面加了一層包裝而已,省得赤裸裸的,讓程序員們在工作的時候總走神去看那些不該看的地方, 這個東西多少讓開發 Windows 程序變得更容易一些。呵呵,不要再把 VC 當作語言了。
在易用性層面上,我還是推薦初學者使用 VC,用這個東東的比較多,遇到問題也好找人問。至於版本,6.0 應該夠用,但這個版本已經是5年前的東東了,畢竟早了些,與標準的兼容性也多有詬病,如果有條件的話,可以用 VC .NET,這個東東的最新版本是剛剛發布的2003版,我還沒見過,我只用過它的上一個版本。經過 C++ 大腕 Lippman 親手調教過的2003版,據說對標準的兼容性已經有了根本性的轉變,管他呢,又是一個宣傳用語,只要你不是特意去實驗標准中的那些犄角旮旯,現在流行的編譯器都已經絕對夠用了。
三、選書很重要
這是一個最讓人撓頭的問題,選什麼書總是見仁見智,什麼書最好是一個永遠找不到標准答案的難題,來我們這個論壇的朋友多半是沖著書來的。我不想評論哪本書好哪本不好,我只是大致列一個書單,簡單講兩句。
我的書單並不定位於一個沒有任何語言編程基礎的初學者,我覺得這樣的初學者不適合直接學習 C++ 語言。我的書單定位於那些有其它語言的一定的編程基礎的 C++ 初學者,他至少應該知道什麼是變數,什麼是運算符,什麼是表達式,關鍵字,語句,程序,至少應該知道賦值語句是干什麼的,分支判斷語句干什麼,循環語句干什麼,當然他不必知道 C/C++ 的詞法和語法,也就是說他有以上的概念,但不知道這些東西在 C/C++ 中是如何實現的。在這個基礎上,我把書單分為入門類、進階類、應用技巧類。
入門類:
C++ Primer, 3rd Edition
Thinking in C++, 2nd Edition
C++ 大學教程(這本書我沒看過,但不少初學者說不錯,留此存目)
The C++ Standard Library: A Tutorial and Reference
進階類:
The C++ Programming Language, Special Edition
The Design and Evolution of C++
Inside C++ Object Model
C++ Templates: The Complete Guide
STL 源碼剖析
Generic Programming and the STL
Modern C++ Design: Generic Programming and Design Patterns Applied
應用技巧類:
Effective C++, 2nd Editon
More Effective C++
Exceptional C++
More Exceptional C++
Effective STL
Ruminations on C++
對這個書單我有幾點說明:
1、除我註明的那本以外,其它書我基本看過,或瀏覽過,了解其大致內容。也因此這些書就局限在我的眼光之內,既然不願給大家推薦我沒看過的書,也就難免有遺珠之憾。
2、很多人認為 The C++ Programming Language 是入門書,我認為不妥,這本書號稱"專家自學指南",並非浪得虛名,讀者水平越高越能從這本書里學到更多的東西。如果身邊沒有一個很好的老師隨時指導的話,我不建議初學者選用這本書,一上來就看這本書容易產生挫折感,影響學習的信心。這本書也可以作為語言參考手冊常備身邊,隨用隨查。
3、入門類前三本選一本即可,第一本我詳細讀過,第二本我大致瀏覽過,第三本沒看過。第四本我極力推薦,每個初學者都應該好好看看,很多人認為應該歸入進階類,我放在入門類自有我的道理。有網友反應 Thinking in C++ 對於初學者太難,我感覺如果符合了我上面對初學者的初步要求的話,讀這本書應該沒什麼問題。
4、我不建議用國內的書入門,我見過大部分國內書的內容只是講了一個更好的 C,不是 C++。我認為初學者應選擇一本對語言介紹比較全面、詳細的書,以便對 C++ 有一個全面而系統的認識,一知半解是學習的大忌。如果一本自稱全面的 C++ 書中缺少 String, Containers, Generic Algorithms, Namespaces, Templates, Exception Handling, RTTI 中的一個,你有理由不看它,如果一本自稱全面的 C++ 書沒有講到標准庫或 STL,你有理由不看它,如果一本自稱全面的 C++ 書中的頭文件還帶有 ".h" 後綴,你有理由不看它。
5、應用技巧類並非最後再看,我單獨把這些書列出,是因為這些書要和前兩類書一起看,沒有先後順序。
6、選書的原則以及與每一階段學習的關系,到下一部分我還要繼續展開。
7、上述大部分書都有中文版,翻譯質量大部分還不錯,建議英文較好的最好直接讀英文版,英文不好的也可看中文版。
下面我談談對紙版書和電子版書的看法。初學時最好去買一本紙版書,這樣無論你躺著,坐著還是站著,也無論你身在何處——教室、圖書館、實驗室、湖邊長廊,你都可以很方便地拿出來看。很多同學的實驗室和寢室中都配有電腦,似乎看電子版很方便,但是當寢室中老大在大呼小叫地打 CS,老二抱著電話和准老婆談情說愛,老三抱著枕頭說著夢話,老四抱著吉他唱著調跑到北冰洋去的自創情歌時,無論你是老幾,我不相信你能對著電腦屏幕,心平氣和地看著 C++ Primer 電子版,寢室根本不是學習的地方,最好還是拿上一本紙版書,到自習室、圖書館去吧。
課間短劇
講到此處,digerati 同學舉手發言:"老師,我有筆記本電腦啦,我可以帶到自習室去,還是看電子版。"
涅盤老師當場被噎出四個跟頭,暈了過去。五分鍾後悠悠醒轉,感覺口乾舌燥。"水......水......"
涅盤老師喝了兩口水,清清嗓子,繼續講課:
剛才,digerati 同學說得......說得......很好......是吧......哈哈......這個......那個......是呀......啊......
你可以把筆記本電腦帶到自習室去,但你在馬路邊等 MM 或者 GG 的時候,或者坐公共汽車的時候,筆記本電腦總是不如紙書方便嘛?是吧?
zhazha 同學舉手發言:"老師,我有掌上電腦啦,比你那本兩塊磚頭重的書方便多了,我可以在等 MM 的時候看電子版。"
涅盤老師當場被噎了八個跟頭,一天都沒有醒。
轉天,涅盤老師才醒過來,有氣無力地抬起胳膊,伸出手:"眼鏡......給我眼鏡......"
zhazha:"老師,您戴著呢。"
涅盤老師:"那我怎麼什麼都看不見啊?"
zhazha:"您還沒睜眼呢!"
涅盤老師艱難地睜開眼睛:"怎麼還看不見呢?"
zhazha:"老師,您睡了一整天了,揉揉眼睛。"
涅盤老師用力揉揉眼:"還是不清楚。"
zhazha:"您再揉揉......"
涅盤老師:"還是不行......"
zhazha:"您再揉揉......"
涅盤老師:"還是不行......"
如此反復50次。
涅盤老師雙眼紅腫,極為憤怒,不耐煩地嚷著:"不能再揉了!!!我為什麼還是看不清???"
digerati:"老師,很抱歉,我們忘了告訴您,昨天您眼鏡的兩個鏡片都摔碎了,現在您只戴著眼鏡框......"
涅盤老師:"@#&*@$%$#&"又暈了過去......
......
幾天以後,繼續上課,涅盤老師原來只有兩名同學,現在他面對空空的教室......
同學們,啊......上次課,啊......digerati 同學 和 zhazha 同學,啊......上課搗亂,啊......被停課請家長,啊......家長至今未到,啊......他們現在還在辦公室罰站,啊......如果其他同學,啊......再上課搗亂,啊......就和他們一樣的下場,啊......
就在涅盤老師對著空教室慷慨激昂的時候,digerati 和 zhazha 正舒舒服服地坐在辦公室的沙發上,翹著二郎腿,喝著涅盤老師的龍井茶......哈哈!
四、學習過程很辛苦
不要問我學習 C++ 有什麼捷徑,因為我也不知道。
如果你的學校里開設 C++ 課程,那你很幸運,送你八個字:"課前預習,課後復習",按時完成作業之類是作為學生的基本要求,我就不在這里重復了。下面的內容是針對學校里不開設 C++ 課程的學習者的。
我不可能一步一步教你如何學習 C++,不同的人經歷不同,環境不同,學習能力不同,適用於一個人的方法不一定適用於另一個人,我只講幾條經驗,供大家參考:
1、不要死摳語法:初學者最容易犯的錯誤就是抱著一本大書死摳語法,結果語法倒是很熟,程序還是一行都不會寫,學習的積極性也受到很大打擊。學習編程,語法是最不重要的,最重要的是思路。語法可以從任何一本書上查出來,比如說,用到循環語句的時候,你忘了語法,你可以翻書去查,但如果該用循環的時候你不知道用循環,該賦值的時候不知道用賦值,語法再熟有什麼用呢?
2、建立面向對象的概念:在這一點上,我很欣賞 Thinking in C++,第一章是 Introction to Objects,第二章是 Making & Using Objects,先讓讀者建立起對象的概念。面向對象概念開始建立的時候確實比較難,但這一關早晚得過,不過這一關就永遠寫不出真正的 C++ 程序,因此從開始就要培養這一思維方式,不必一蹴而就,要慢慢來,一點一點把思想方法轉變過去。只要面向對象的概念建立起來,以後無論學習 Java 還是 C#,都不過是小菜一碟,新東西很少了。
3、盡早接觸標准庫:這也就是我把 The C++ Standard Library: A Tutorial and Reference 歸入入門類的出發點,標准庫的概念接觸越早越好,要把使用標准庫作為天經地義的事情,作為自己的編程習慣,能用的地方一定要用。幾乎所有的 C++ 大師都強調過這一點,The C++ Programming Language 第三章就是 A Tour of the Standart Library,已經提前得不能再提前了,可見其重視程度。而國內的 C++ 教材要麼不講,要麼簡簡單單一帶而過,暈!
4、認真分析例題:從別人的源代碼中學習是最簡單的學習方法。書上的例題大部分都是作者精心挑選的,最能體現某種語法特點或思想觀念的程序,認真體會這些例題,理解程序的邏輯和結構,多問自己幾個問題:作者為什麼要設計這個類?這個類有什麼作用?作者是如何設計這個類的?如何使用這個類的?這個類是否還可以用在別處?等等。把上述問題中的"類"換成"函數"、"模板"等同樣適用。遇到不好理解的例題我有一個笨辦法,就是把源程序輸入一遍,這個辦法確實很有效,看了半天也看不懂的程序,只要輸入一遍基本就能理解了,而且還加深了印象。不要不動腦子一個字母一個字母敲,敲完都不記得敲的什麼了,要看一行或一段再自己輸入。
5、培養良好的編程風格,積累編程技巧:只要你對 C++ 有了一個初步的概念,就可以開始看我在上一部分列出的應用技巧類書籍了。並不是每一個條款都那麼高難,你也不是一定要按順序讀,一邊學一邊就可以挑選自己能看懂的條款研究一番。當然初學者不可能理解很深,好在這些書也不是看一遍就夠的,有些條款隨著你學習的深入,反復閱讀會有更深的體會。如果一本全面的書是正餐的話,這些書就是佐餐的小菜,提供人體必須的維生素、礦物質和微量元素,全面吸收才能茁壯成長。
6、擅於利用身邊的工具與環境:大多數編程環境都提供豐富的工具供用戶使用,比如調試器等,參照用戶手冊,利用這些工具對自己寫的程序進行分析、監視和跟蹤,可以在很大程度上提搞學習和工作效率。互聯網更是一個豐富的資源,特別是 google 和 MSDN,利用這些可以解決你的大多數問題,即使沒有找到答案,還可以上論壇去問。我不提倡動不動一點小問題就到論壇上發一些諸如"救火""救命"之類的帖子,很無聊,這樣的帖子我基本不看,大多數人都不會看,在論壇上要有提問的技巧,將你的問題,你所使用的環境,問題出現的條件等描述清楚,包括你自己的思考,你自己的想法,雖然你的帖子是在提問,但如果寫得好還可以給別人一些啟發。
7、學無止境:C++ 語言還在不斷發展,C++ 語言的國際標准也正在修訂,早一天了解就能早一天受益。推開這扇門吧,有一片奇異的風景在等著你。