游戲之旅:我的編程感悟
發(fā)布時間:2017-01-18 來源: 人生感悟 點擊:
游戲之旅:我的編程感悟篇一:(游戲)程序員的學習資料
一個游戲程序員的學習資料
作者: weiqubo (3 篇文章) 日期: 三月 20, 2012 在 1:29 下午
想起寫這篇文章是在看侯杰先生的《深入淺出MFC》時, 突然覺得自己在大學這幾年關于游戲編程方面還算是有些心得,因此寫出這篇小文,介紹我眼中的游戲程序 員的書單與源代碼參考。一則是作為自己今后兩年學習目標的備忘錄,二來沒準對別人也有點參考價值。我的原則是只寫自己研究過或準備研究的資料,所以內容無 疑會帶上強烈的個人喜好色彩, 比如對網絡,數(shù)據庫等重要方面完全沒有涉及。因為自己主要對三維圖形引擎, 人工智能算法, 腳本系統(tǒng), 反外掛 (反反外掛? ^-^)等方面感興趣。這學期電腦都沒聯(lián)網了,在岳麓山閉關修煉中(^-^),連這篇文章都得在學校圖書館電子閱覽室(電影放映室?)上傳,內容很多憑記憶寫出, 如有誤差敬請訂正。程序員應該在理論學習與實踐編程中反復迭代,所以學習資料是一回事,須知盡信書不如無書。
一、書籍:
算法與數(shù)據結構:
《數(shù)據結構(C語言版)》——嚴蔚敏、吳偉民 清華出版社
我覺得其配套習題集甚至比原書更有價值,每個較難的題都值得做一下。
《Introduction to Algorithms》第二版 中文名《算法導論》
關 于算法的標準學習教材與工程參考手冊,在去年CSDN網站上其翻譯版竟然評為年度二十大技術暢銷書,同時《程序員》雜志上開設了“算法擂臺”欄目,這些溯 源固本的舉動,不由得使人對中國現(xiàn)今浮躁不堪的所謂“IT”業(yè)又產生了一線希望。這本厚厚的書,幸虧打折我才買得起。雖然厚達千頁,但其英文通俗曉暢,內 容深入淺出,可見經典之作往往比一般水準的書還耐讀。還能找到MIT的視頻教程,第一節(jié)課那個老教授嘻皮笑臉的,后面就是一長發(fā)助教上課了。
《C語言名題精選百則 技巧篇》——冼鏡光 機械工業(yè)出版社
作 者花費一年時間搜集了各種常見C程序段的極具技巧性的編程法,其內容都是大有來頭的,而且給出了詳細的參考資料。如一個普通的Fibonacci數(shù)就給出 了非遞歸解、快速算法、擴充算法等,步步深入,直至幾無油水可榨。對于視速度如生命,連一個普通的浮點數(shù)轉化為整數(shù)都另辟蹊徑以減少CPU cycle的游戲程序員,怎可不看?
《計算機算法基礎(第二版)》—— 佘祥宣等 華中科大出版社
我看到幾個學校的研究生拿它作教材(研究生才開算法,太開玩笑了吧)。這本書薄是薄了點,用作者的話來說,倒也“精辟”。其實此書是《Fundamentals of Computer Algorithms》的縮寫版,不過原書出版太久了,反正我是沒找到。
《The Art of Computer Programming》Volume 1-3
作 者Donald E. Knuth是我心目中與馮.諾依曼、Dijkstra、Shannon并列的四位大師。這本書作者從讀大學本科時開始寫,一直寫到博士時,十年磨一劍,足 見其下足了功夫?勺鳛橛嬎銠C技術的核心——算法與數(shù)據結構的終極參考手冊。創(chuàng)新處也頗多,譬如常見的Shell排序他在書中提出可用(3i-1)/2的 間隔,這使其稍快于O(n1. 5)。當然這套書描述高度數(shù)學化,為此恐怕一般的人(我?)最好還得先看一本數(shù)學預備書《Concrete Mathematics》(直譯為混凝土數(shù)學?^-^)再說。可惜的是這套書才出到第三卷,并沒有覆蓋全部常見的算法內容。不過好在對于游戲程序員來說, 越常見的算法用得越多,這也不算是什么要命的損失。
《STL源碼剖析》—— 侯捷 華中科大出版社
侯 捷不用介紹了,華人技術作家中的旗艦,說其有世界級水準也不為過。這本書我以為是C++與數(shù)據結構的葵花寶典(欲練此功,必先自宮)。也就是說,不下幾層 地獄很難看懂,因為它要求的預備知識太多了,如STL、數(shù)據結構、泛型編程、內存管理都要很扎實(為此
是不是還要看看有內存管理設計模式之稱的 《Small Memory Software》這本書呢?),但是一旦看懂,真會是所向披靡。
《Data Structures for Game Programmers》
每個數(shù)據結構的例程都是一個小游戲,還用SDL庫實現(xiàn)了一個算法演示系統(tǒng)。雖然內容失之于淺,但起碼讓人了解了數(shù)據結構在游戲中的作用。
其 實游戲程序并不比其它程序特殊,甚至要求基本功更加扎實,所以花時間做一些看似與實際應用不甚相干的習題,對今后的工作是大有裨益的。而且有些應用很廣的 算法,如常被人津津樂道的A*算法及其變種,牽涉到圖的檢索周游與分枝-限界法,恐怕還得讀一些艱深的論文才能充分明白運用,如Donald E. Knuth的《An analysis of alpha-beta cutoffs》。其實還有不少此類的好書,如《Data Structures and Algorithms in C++》、《Programming Pearls》、《More Programming Pearls》(算法珠璣)等,我卻以為要先看嚴謹一點的著作,再看內容隨筆一點的書。
匯編:
《IBM-PC 匯編語言程序設計》第二版
國內經典教材。
《The Art of Assembly Language》
這本書足有1600頁,噢!
C語言:
《The C Programming Language》第二版
雖然篇幅短小,但每個例程都很經典。(我們老師開始拿它作教材,后面換為譚小強的C語言書,理由為:例子盡是些文本處理。我就納了悶了,難道現(xiàn)代的計算機程序不是將大量時間消耗在字符串與文本的處理上嗎?)
C++:
學過C語言,再學C++,先看這本《C++ Primer》的縮寫版:
《Essential C++》
對C++有個入門了解,再看
《C++ Common Knowledge: Essential Intermediate Programming》
就不會有什么重要的知識點完全不知所措了,接下來是
《The C++ Standard Library : A Tutorial and Reference》
標準庫,當然主要是標準模板庫的標準學習參考手冊,然后最好平時邊寫程序邊參悟。 《Effective C++》等
我是說書名以形容詞 + C++的那些書,計有七八本,慢慢看吧,羅馬不是一日建成的。
(《Essential C++》、《Effective C++》、《More Effective C++》、《Accelerated C++》、《Effective STL》、《Exceptional C++》、《More Exceptional C++》、《Imperfect C++》,雖然書名格式相似,但每一本都絕非馬虎之作。)
誰說C++程序比C程序要慢?那就請看下面:
《The Design and Evolution of C++》
知其過去才能知其未來,才能應用。
《Inside the C++ Object Model》
揭露C++的編譯器模型。
《Efficient C++ Performance Programming Techniques》
當算法優(yōu)化已到極致,在運用匯編之前,最后還可看看此書,有時高級和低階都能做成相同的事情。
還有兩本特別的書:
《Modern C++ Design : Generic Programming and Design Patterns Applied》
作者想把設計模式和泛型編程結合起來,并寫了個嘗試提供一切的Loki庫來實作,不過其觀點并未得到C++社區(qū)的普遍響應。盡管如此,本書仍稱得上思想前沿性與技術實用性結合的典范。
《C++ Template Metaprogramming》
把 編譯器當作計算器?本書介紹了Boost庫的MPL模板元編程庫。當然提到Boost庫,對于游戲程序員不能不提到其中的Graph庫,有《The Boost Graph Library》一書可看。還有其中Python庫,號稱國內首款商業(yè)三維圖形引擎的起點引擎就用了Boost-Python庫。說實話我覺得起點引擎還 是蠻不錯的,那個自制的三維編輯器雖然界面簡陋,但功能還算蠻完善,給游戲學院用作教學內容也不錯。另有一個號稱中國首款自主研發(fā)的全套網游解決方案。我 看到它那個三維編輯器,心想這不就是國外一個叫freeworld3D的編輯器嗎?雖然有點偏門,但我以前還較勁嘗試破解過呢。還把英文界面漢化了,大概 用exescope這樣的資源修改軟件就能搞定吧。我又心想為什么要找freeworld3D這個功能并不太強大的編輯器呢?僅僅是因為它便宜到幾十美 金?它唯一特別一點的地方就是支持導出OGRE圖形引擎的場景格式,這樣一想不由得使人對它圖形引擎的“自主”性也產生懷疑了。這樣的“自主”研發(fā)真讓人 汗顏,只要中國還沒封sourceforge這個網站(據說以前和freeBSD網站一起被封過?),國人就能“自主”研發(fā)。
有人還會推薦《C++ Primer》《Thinking in C++》《The C++ Programming Language》等書吧,誠然這些書也很好,但我總覺得它們太大部頭了。還不如多花點時間看看國外好的源代碼。 Windows編程
《Operating System Concepts》第五版
國內有些操作系統(tǒng)的教程其實就是它的縮寫版。
《Windows 95 System Programming Secrets》
深入剖析了Windows操作系統(tǒng)的種種種種,有人愛看《Linux內核完全注釋》,有人愛看《自己動手寫操作系統(tǒng)》這樣煽情的書,但我想作為商業(yè)的操作系統(tǒng),把Windows內核剖析到這地步也高山仰止了。
《Programming Applications for Microsoft Windows》第四版
先進程線程,再虛存管理,再動態(tài)鏈接庫,最多講到消息機制。作者在序言中說:“我不講什么ActiveX, COM等等,因為當你了解了這些基礎后,那些東西很快就會明白!”可以作為《Programming Windows》的先修課。
計算機體系:
《Computer Systems : A Programmer’s Perspective》
和《The Art of Computer Programming》在我心中是計算機史上兩本稱得上偉大的書,計算機組成原理,操作系統(tǒng),匯編,編譯原理,計算機網絡等等課程匯成這本千頁的大書,因為計算機在作者眼中就是一個整體。
開源閱讀:
《Code Reading : The Open Source Perspective》
張大千臨摹了幾百張明代石濤的山水,畫出的畫以假亂真,后來他去敦煌潛心臨摹幾年,回來畫風大變,終成大家。程序員其實有4 0%的時間是在讀別人的源代碼,侯捷先生說:“源碼面前,了無秘密”,又說“天下大事,必作于細”,可以與他的《上窮碧落下黃泉,源碼追蹤經驗談》參看。
MFC:
《深入淺出MFC》
我 實在以為沒有看過侯捷先生的《深入淺出MFC》的人多半不會懂得MFC編程。其實我是
打算用一年多的時間寫一個給游戲美工用的三維編輯器,順便作為畢業(yè)設 計。圖形庫就用MFC吧,反正也沒得選擇。如果要用wxWidgets無非是獵奇而已,還不是MFC的翻版,當然它跨平臺了。就象阻擊手對自己槍械的零件 了如指掌一樣,要想用MFC寫出非玩具程序的人一定要了解其內部構造。還有一本書叫《MFC深入淺出》,并不是同一本。
IDE:
《Microsoft Visual Studio 2005 Unleashed》
工欲善其事,必先利其器。當然我認為與其用形如Source Insight、Slick Edit、Code Visualizer之類的代碼閱讀器、圖形化工具,還不如用自己的大腦。但如果你嫌打源代碼慢的話,可以用Visual AssistX。如果嫌老是寫重復相似的代碼的話,可以用Code Smith。單元測試可以用CppUnit,Boost庫中的測試框架也不錯。有心情可以吧Visual Studio外接Intel的Compiler,內嵌STLport,但不是大工程,性能分析沒必要動不動就用下VTune吧。
程序員之路:
《游戲之旅——我的編程感悟》(#add不怎么樣)
云 風大哥。在我心目中游戲程序員國外首推卡馬克,國內首推云風。也許過兩年我會到網易當云風大哥的助理程序員吧。It’s my dream.(^-^)他寫這本書的時候本著只有透徹理解的東西才寫出來,因此內容不會很酷新,但是相信我,每讀一遍都有新的收獲,主要還不是知識上的, 因為知識是學無止境的,授人以魚不如授人以漁,精神上的啟迪才是長久的。誠如經典游戲《 仙劍 奇?zhèn)b傳》的主力程序員兼美術指導姚壯憲(人稱姚仙)在序言中所說的“云風得到的只是一些稿費,而整個中國民族游戲產業(yè)得到的將是一次知識的推動”,此言不虛矣。
《編程高手箴言》(#add差)
梁 肇新是豪杰超級解霸的作者,本來每個合格的程序員(Programmer , 而非Coder)都應該掌握的東西,現(xiàn)在變成了編程高手的獨家箴言。不知是作者的幸運還是中國IT業(yè)的悲哀。知識點還是講得蠻多的,不過對MFC的地位頗 有微詞。我實在認為MFC的名聲就是那些不懂得用它的人搞臭的。不過作者的牢騷也情有可原,每個具有創(chuàng)造力的程序員都應該不太喜歡framework。
《Masters of DOOM: How Two Guys Created an Empire and Transformed Pop Culture》中文名《DOOM啟世錄》
卡 馬克,羅洛斯,這些游戲史上如雷貫耳的名字。(現(xiàn)在卡馬克已專注于火箭制造上,羅洛斯則攜妻回鄉(xiāng)隱居)要不是沒上過大學的卡馬克和圖形學大師亞伯拉罕的功 勛,可能到現(xiàn)在游戲中還不知三維為何物。勿庸置疑,在計算機界歷史是英雄們所推動的。這本書真實的記錄了這些塵世英雄的所為所思。
作為程序員的我對這幾本策劃與美工的書也產生了濃厚興趣,以前搞過一兩年的3DS MAX插件編程,覺得用maxscript還是好過MaxSDK,畢竟游戲開發(fā)中所多的是模型場景數(shù)據的導入導出,大可不必大動干戈。
策劃:
《Creating Emotion in Games : The Craft and Art of Emotioneering》
在壯麗煊目的宏偉三維世界背后,在殘酷的殺戮,動人心魄的情節(jié)背后,我們還需要什么來抓住玩家的心?答對了,就是emotion.真正打動人心的,才是深入骨髓的。
《Ultimate Game Design : Building Game Worlds》
從名字可以看出,寫給關卡設計師的,特別是講室外自然場景的構建頗有可取之處。 《Developing Online Games : An Insider’s Guide》
就象名為反模式的書講軟件團隊運營一樣,這本書講商業(yè)運作多過技術。一個歷經艱難,現(xiàn)在盛大的游戲程序員,翻譯了這本書。
美工:
《Digital Cinematography & Directing》
數(shù)字攝影導演術,每當你在3DS MAX或者Maya等三維創(chuàng)作軟件中擺放攝影機,設計其運動軌跡時,你可曾想過你也站在導演的位置上了?
《The Animator’s Survival Kit》
看 著這本講卡通角色運動規(guī)律的書,一邊產生溫習《貓和老鼠》的念頭,一邊繼續(xù)對前不久新聞聯(lián)播中關于中國產生了某計算機自動卡通動畫生成軟件報道的蔑視,這 條報道稱此舉可大大加快中國卡通動畫的產量。我且不從技術上探討其是否是在放衛(wèi)星(其實我知道得很清楚,前文已表,本人搞過一兩年的卡通動畫輔助軟件編 程),但計算機機械生成的動畫怎可代替人類充滿靈性的創(chuàng)作?
《The Dark Side of Game Texturing》
用Photoshop制作材質貼圖,還真有些學問。
三維圖形學:
搞三維圖形學首先還是要扎扎實實的先看解析幾何、線性代數(shù)、計算幾何的教材,后面的習題一個都不能少。國內數(shù)學書還是蠻好的。蘇步青大師的《計算幾何》稱得上具有世界級水準,可惜中國CAD的宏圖被盜版給擊垮了。現(xiàn)在是我們接過接力棒的時候了。It’s time! 《Computer Graphics Geometrical Tools》
《計算機圖形學幾何工具算法詳解》算法很多,紕漏處也不少。
《3D Math Primer for Graphics and Game Development》
淺易,可作為三維數(shù)學的“速食“。
《Mathematics for 3D Game Programming & Computer Graphics》第二版
比上面那本深入一些,證明推理的數(shù)學氣也濃一些,可作為專業(yè)的數(shù)學書與編程實踐一個過渡的橋梁吧。內容涉獵也廣,射線追蹤,光照計算,可視裁剪,碰撞檢測,多邊形技術,陰影算法,剛體物理,流體水波,數(shù)值方法,曲線曲面,還真夠豐富。
《Vector Game Math Processors》
想學MMX,SSE嗎,那就看它吧,不過從基礎講起的,要耐心哦。
DirectX:
《Introduction to 3D Game Programming with DirectX 9.0》
DirectX入門的龍書,作者自己寫的簡單示例框架,后面我干脆用State模式,把所有例子綁到一塊兒去了。
《Beginning Direct3D Game Programming》
作 者取得律師學位后變成了游戲程序員,真是怪也哉。本書雖定位為入門級書,內容頗有獨特可取之處。它用到的示例框架是DXSDK Sample Framework,而不是現(xiàn)在通行的DXUT。要想編譯有兩種辦法吧,一是自己改寫成用DXUT的。二是找舊的Sample Framework。我又懶得為了一個示例框架下載整個早期版本的DirectX,后面在Nvidia SDK 9.5中發(fā)現(xiàn)了。 《Advanced Animation with DirectX》
DirectX 高級動畫技術。骨骼系統(tǒng),漸變關鍵幀動畫,偶人技術,表情變形,粒子系統(tǒng),布料柔體,動態(tài)材質,不一而足。我常常在想,從三維創(chuàng)作軟件導出的種種效果,變 成一堆text或binary,先加密壓縮打包再解包解壓解密,再用游戲程序重建一個Lite動畫系統(tǒng),游戲程序員也真是辛苦。
OpenGL:
《NeHe OpenGL Tutorials》
雖是網絡教程,不比正式的書遜,本來學OpenGL就不過是看百來條C函數(shù)文檔的工夫吧,如果圖形學基礎知識扎實的話。
游戲之旅:我的編程感悟篇二:軟件工程導論總結報告
軟件工程總結報告
序言
本期軟件工程專業(yè)導論課程結束后,為圓滿完結本期此課程的學習,特此總結個人學習所得以求些許回報先生無私教導。
主體
第一節(jié)課主要講述了軟件工程各領域之間的聯(lián)系以及貫穿始終的基礎為何。其中較為基礎并相當重要使的應該是算法。對于算法重要性與基礎性的理解,我個人有比較切身的體驗。比如前不久的ACM競賽,在比賽中我所在的小組以及當場幾乎所有小組都遇到這樣一個問題:超時—這無非就是個人設計的算法的效率不夠高,這也證明我們對算法理論知識的匱乏(不清楚優(yōu)化個人算法的方法)。我對軟件工程這一專業(yè)有了一個較為全面的把握,對我個人未來進取方向而言也起到了一定的指導作用。
第二節(jié)課老師帶來了三位本專業(yè)的前輩向我們傳授大學生活應如何度過以及對我等一些問題作出解答。其中我個人印象深刻的是其中一位學姐PPt中引用李開復的那部分內容。即試著記錄下自己一整天做的所有事以及其所花費的時間,再仔細研究自己在哪些事上浪費了時間,應該如何整改。我個人認為這方法可能有一定直觀性,因為直觀的數(shù)據更能深刻的反映真實和刺激一個人整改,但此法實施起來又太古板,中覺得生活有些教條化、章程化,缺乏新意與自由。求上進,珍惜時間也無需以喪失人生情趣為代價。還有就是學長再提潘老師曾講過的那些重要、緊急優(yōu)先次序。他提到的個人的學習生活情況
倒沒什么深刻感,但我認為他引用的一番話較有道理,大概意思是比起個人興趣更為優(yōu)先的應該是謀生的本領,尤其是當自己感興趣的正好是冷門時。當掌握了一些實實在在有能保證自身良好發(fā)展前景后,再去做一些自己感興趣的事也來得及。于我而言,一個人尚不能獨善其身,何求其兼濟天下。成己方成人就是如此道理。
第三節(jié)課主要講解了大學學習生活中應著重的基礎課以傳遞重基礎的要旨。據個人體會,其中英語科目實是基礎中的基礎,主要是為辨認單詞(即代碼變量以及注釋)意義以達到理解他人算法并順利接手他人接下來的工作。企業(yè)和公司出于其本身利益主張雇方市場--講究項目的可接手性,而不希望對現(xiàn)有人員的過分依賴。離散數(shù)學則應該是為之后學習其他編程專業(yè)知識做理論知識的鋪墊。概率統(tǒng)計更多應是對統(tǒng)計有關算法及理論的學習(個人認為現(xiàn)實生活中許多問題都可以運用概率統(tǒng)計的方法加以解決,因此應是很重要的基礎知識)。C/C++(Java)語言是作為編程的工具使用,無疑是基礎(現(xiàn)今水平下的我們主要用C編代碼)。數(shù)據結構則應是提供特定的解決問題的結構思想以便進行數(shù)據處理方面工作。算法的重要性以及基礎性的個人體會已包含在第一節(jié)課中。計算機體系結構與匯編課程與操作系統(tǒng)原理課程主要在于理解計算機系統(tǒng)運行原理能加深對代碼運行原理的理解,對于現(xiàn)今水平的我也能更深層次的理解c語言的指針操作等方面知識。匯編語言能夠直接對硬件進行操作,生成的程序與其他的語言相比具有更高的運行速度,占用更小的內存,因此在一些對于時效性要求很高的程序、許多大型程序的核心模塊以及工業(yè)控制方面大量應
用。匯編語言仍然是程序員必須了解的語言,甚至在某些行業(yè)與領域,匯編是必不可少的,非它不可適用。在此課堂上也講到了程序員的優(yōu)秀品質。1.對于優(yōu)秀程序員,首先必須要掌握一門編程語言、編程工具的使用以及掌握程序設計方法。2.由于一項工程往往無法單單靠個人完成,多是由團隊完成。團隊成員間的相處情況對工作進度和質量的影響尤為重大。因此需要謹慎處理人際關系。3.由于成員間需要交流彼此想法,因此需要有較好的語言表達能力。4. 工程項目中需要成員間不時交換彼此想法和工作進度以求盡量減少工作中的問題。在如今的大學生活中以上三點的實踐可通過加入實驗室與老師、學長一起做項目得到鍛煉。5. 雖然程序員需掌握大量專業(yè)理論知識,但需著重用于解決問題。6.程序員的思維往往不是絕對高效和不可在優(yōu)化的,因此,程序員需要勤讀書以求個人思維的不斷完善。以上兩點可通過閱讀專業(yè)名人與業(yè)界經驗人士著作踐行。7.學習重視范例,但需勤實踐。8..對于程序員更多需要的應是實踐,在實踐中往往能發(fā)現(xiàn)問題并進一步完善個人知識體系。以上兩點可通過在學校oj平臺上做題和加入實驗室做項目踐行。9. 照一般思維想,擁有某些領域內的專長知識才能為自己創(chuàng)造優(yōu)勢。培養(yǎng)專長需要著重下功夫,但并不意味著要忽略其他科目的學習。力求在全面發(fā)展的基礎上占有一技之長的一席之地。10.認真學習網絡和數(shù)據庫知識。此些能力對個人編程能力的形成至關重要。11.堅持寫博客、寫文章(不一定要與專業(yè)知識有關,當然如果與專業(yè)知識有關最好),這樣能培養(yǎng)個人表述能力。
12.減少個人程序漏洞可通過站在測試者的角度進行思考。(主要就是
千方百計找自己的錯誤)13.團隊合作時個人編程習慣應保持一致,以便成員間代碼的交流。習慣不一致會導致彼此代碼交流出現(xiàn)障礙?偛荒軓娗笏诉m應你個人各種各樣的習慣,這樣也會導致工作效率低下。15.參加技術研討會(大事件)以便完善個人知識體系以及緊跟時代知識更新。研討會上大家會針對核心熱點問題提出個人想法有利于個人思維能力的完善和提高,也能加強自己的專業(yè)素養(yǎng)。16.萬家通吃還是一門獨大?那么你認為樹的高度是怎么計算的呢?一枝最高即樹最高,全枝較高即樹較高而不是最高。在精英的群體中樣樣都會但不精通的人是不占任何優(yōu)勢的。17.編程或許是一件繁雜且無聊的工作(有些時候編代碼會花很長的時間,你需要長時間的),但要想成為靠譜程序員就要停止抱怨,保持好奇心。靠譜的程序員需要能靜得下心來鉆研與舍我其誰的自信。最終形成解決問題的能力。我認為現(xiàn)在的大學生都有這樣一個問題:對將來自己要找的工作認為有一個明確的定向。由此我們需要對當今各公司的招聘要求進行詳加了解,考慮個人將來職業(yè)定向以便尋其標準發(fā)展自身知識涉獵領域。
第四節(jié)課主要講自信與學會調試這兩個問題。遇到一個問題首先你要有能解決它的信心才有可能解決它,如果一開始就自我否定那何談解決這個問題。其實這也能理解為戰(zhàn)勝自己嘛。其實這方面我也有個人比較切實的經歷:記得是學C語言沒多久的時候的事,有一次測試的三道題中有一道題的文字描述很長,當時我就覺得那道題很難。結果是三道題只做出來一道。我是被第二道題難住了,但最后我仔細讀了讀那道長篇幅的題,卻發(fā)現(xiàn)它很簡單。所以變成不僅考驗一個人
的編程技巧還有內心。調試對程序員而言也是一項很重要的能力,F(xiàn)在我們寫的代碼量還不大,即使有錯誤也可能不用調試只需縱觀代碼即可解決(盡管代碼量不大,但我自己有些時候出的問題只靠一行一句看代碼是很費事的。比如:循環(huán)體中的循環(huán)變量i誤寫為j,這我就得檢查半天)。但今后代碼量一旦加大就必須得靠調試才可能順利解決問題了。我相信將來的工作中也正需要這樣的能力。除此之外的題外話中我注意到了這樣一個觀點:編代碼有時還得注意一些特別的心得。老師舉的一個例子是以前他寫的一個程序。他發(fā)現(xiàn)程序出錯,且知道錯誤大概在哪一部分,但由于過程繁雜又加上寫代碼以致頭腦反應能力下降,錯誤難究其本。最后是交給他帶的一研究生解決的。援引此例,他就是想對我等傳遞這樣一個觀點。且不論其正確與否,我得到以下心得:寫代碼也要勞逸結合,要保證思路清晰正確。在此課上,老師就是否加入實驗室問題答疑。其中有一個使我印象深刻的觀點:編程能力沒有好和不好的說法。這點我不是太贊同。個人認為對于一個問題,大學生或多或少都有些許解決的思路但能否編寫代碼解決這就是編程能力高低的體現(xiàn)。
通過這四節(jié)課的學習,雖說不想數(shù)據結構等課一樣學會什么變成技巧,但我覺得有時個人領會更為重要,就像武學一樣,招式都是外在的,最重要的還是內功心法。因此,對于此四節(jié)課的學習我想我的體會是頗多的也是頗有指導性意義的。想必對我接下來的大學生活也能起到些指引作用。
參考文獻:云風--《游戲之旅:我的編程感悟》、戴默--《80x86
游戲之旅:我的編程感悟篇三:游戲程序員應該看的書-網上摘錄
想起寫這篇文章是在看侯杰先生的《深入淺出MFC》時,突然覺得自己在大學這幾年關于游戲編程方面還算是有些心得,因此寫出這篇小文,介紹我眼中的游戲程序 員的書單與源代碼參考。一則是作為自己今后兩年學習目標的備忘錄,二來沒準對別人也有點參考價值。我的原則是只寫自己研究過或準備研究的資料,所以內容無 疑會帶上強烈的個人喜好色彩,比如對網絡,數(shù)據庫等重要方面完全沒有涉及。因為自己主要對三維圖形引擎,人工智能算法,腳本系統(tǒng),反外掛(反反外掛? ^-^)等方面感興趣。這學期電腦都沒聯(lián)網了,在岳麓山閉關修煉中(^-^),連這篇文章都得在學校圖書館電子閱覽室(電影放映室?)上傳,內容很多憑記 憶寫出,如有誤差敬請訂正。程序員應該在理論學習與實踐編程中反復迭代,所以學習資料是一回事,須知盡信書不如無書。
一、書籍:
算法與數(shù)據結構:
《數(shù)據結構(C語言版)》——嚴蔚敏、吳偉民 清華出版社
我覺得其配套習題集甚至比原書更有價值,每個較難的題都值得做一下。
《Introduction to Algorithms》第二版 中文名《算法導論》
關 于算法的標準學習教材與工程參考手冊,在去年CSDN網站上其翻譯版竟然評為年度二十大技術暢銷書,同時《程序員》雜志上開設了“算法擂臺”欄目,這些溯 源固本的舉動,不由得使人對中國現(xiàn)今浮躁不堪的所謂“IT”業(yè)又產生了一線希望。這本厚厚的書,幸虧打折我才買得起。雖然厚達千頁,但其英文通俗曉暢,內 容深入淺出,可見經典之作往往比一般水準的書還耐讀。還能找到MIT的視頻教程,第一節(jié)課那個老教授嘻皮笑臉的,后面就是一長發(fā)助教上課了。
《C語言名題精選百則 技巧篇》——冼鏡光 機械工業(yè)出版社
作 者花費一年時間搜集了各種常見C程序段的極具技巧性的編程法,其內容都是大有來頭的,而且給出了詳細的參考資料。如一個普通的Fibonacci數(shù)就給出 了非遞歸解、快速算法、擴充算法等,步步深入,直至幾無油水可榨。對于視速度如生命,連一個普通的浮點數(shù)轉化為整數(shù)都另辟蹊徑以減少CPU cycle的游戲程序員,怎可不看?
《計算機算法基礎(第二版)》—— 佘祥宣等 華中科大出版社
我看到幾個學校的研究生拿它作教材(研究生才開算法,太開玩笑了吧)。這本書薄是薄了點,用作者的話來說,倒也“精辟”。其實此書是《Fundamentals of Computer Algorithms》的縮寫版,不過原書出版太久了,反正我是沒找到。
《The Art of Computer Programming》Volume 1-3
作 者Donald E. Knuth是我心目中與馮.諾依曼、Dijkstra、Shannon并列的四位大師。這本書作者從讀大學本科時開始寫,一直寫到博士時,十年磨一劍,足 見其下足了功夫。可作為計算機技術的核心——算法與數(shù)據結構的終極參考手冊。創(chuàng)新處也頗多,譬如常見的Shell排序他在書中提出可用(3i-1)/2的 間隔,這使其稍快于O(n1. 5)。當然這套書描述高度數(shù)學化,為此恐怕一般的人(我?)最好還得先看一本數(shù)學預備書《Concrete Mathematics》(直譯為混凝土數(shù)學?^-^)再說?上У氖沁@套書才出到第三卷,并沒有覆蓋全部常見的算法內容。不過好在對于游戲程序員來說, 越常見的算法用得越多,這也不算是什么要命的損失。
《STL源碼剖析》—— 侯捷 華中科大出版社
侯 捷不用介紹了,華人技術作家中的旗艦,說其有世界級水準也不為過。這本書我以為是C++與數(shù)據結構的葵花寶典(欲練此功,必先自宮)。也就是說,不下幾層 地獄很難看懂,因為它要求的預備知識太多了,如STL、數(shù)據結構、泛型編程、內存管理都要很扎實(為此是不是還要看看有內存管理設計模式之稱的 《Small Memory Software》這本書呢?),但是一旦看懂,真會是所向披靡。
《Data Structures for Game Programmers》
每個數(shù)據結構的例程都是一個小游戲,還用SDL庫實現(xiàn)了一個算法演示系統(tǒng)。雖然內容失之于淺,但起碼讓人了解了數(shù)據結構在游戲中的作用。
其 實游戲程序并不比其它程序特殊,甚至要求基本功更加扎實,所以花時間做一些看似與實際應用不甚相干的習題,對今后的工作是大有裨益的。而且有些應用很廣的 算法,如常被人津津樂道的A*算法及其變種,牽涉到圖的檢索周游與分枝-限界法,恐怕還得讀一些艱深的論文才能充分明白運用,如Donald E. Knuth的《An analysis of alpha-beta cutoffs》。其實還有不少此類的好書,如《Data Structures and Algorithms in C++》、《Programming Pearls》、《More Programming Pearls》(算法珠璣)等,我卻以為要先看嚴謹一點的著作,再看內容隨筆一點的書。
匯編:
《IBM-PC 匯編語言程序設計》第二版
國內經典教材。
《The Art of Assembly Language》
這本書足有1600頁,噢!
C語言:
《The C Programming Language》第二版
雖然篇幅短小,但每個例程都很(來自:www.newchangjing.com 蒲公英文 摘:游戲之旅:我的編程感悟)經典。(我們老師開始拿它作教材,后面換為譚小強的C語言書,理由為:例子盡是些文本處理。我就納了悶了,難道現(xiàn)代的計算機程序不是將大量時間消耗在字符串與文本的處理上嗎?)
C++:
學過C語言,再學C++,先看這本《C++ Primer》的縮寫版:
《Essential C++》
對C++有個入門了解,再看
《C++ Common Knowledge: Essential Intermediate Programming》
就不會有什么重要的知識點完全不知所措了,接下來是
《The C++ Standard Library : A Tutorial and Reference》
標準庫,當然主要是標準模板庫的標準學習參考手冊,然后最好平時邊寫程序邊參悟。 《Effective C++》等
我是說書名以形容詞 + C++的那些書,計有七八本,慢慢看吧,羅馬不是一日建成的。 (《Essential C++》、《Effective C++》、《More Effective C++》、《Accelerated C++》、《Effective STL》、《Exceptional C++》、《More Exceptional C++》、《Imperfect C++》,雖然書名格式相似,但每一本都絕非馬虎之作。)
誰說C++程序比C程序要慢?那就請看下面:
《The Design and Evolution of C++》
知其過去才能知其未來,才能應用。
《Inside the C++ Object Model》
揭露C++的編譯器模型。
《Efficient C++ Performance Programming Techniques》
當算法優(yōu)化已到極致,在運用匯編之前,最后還可看看此書,有時高級和低階都能做成相同的事情。
還有兩本特別的書:
《Modern C++ Design : Generic Programming and Design Patterns Applied》
作者想把設計模式和泛型編程結合起來,并寫了個嘗試提供一切的Loki庫來實作,不過其觀點并未得到C++社區(qū)的普遍響應。盡管如此,本書仍稱得上思想前沿性與技術實用性結合的典范。
《C++ Template Metaprogramming》
把 編譯器當作計算器?本書介紹了Boost庫的MPL模板元編程庫。當然提到Boost庫,對于游戲程序員不能不提到其中的Graph庫,有《The Boost Graph Library》一書可看。還有其中Python庫,號稱國內首款商業(yè)三維圖形引擎的起點引擎就用了Boost-Python庫。說實話我覺得起點引擎還 是蠻不錯的,那個自制的三維編輯器雖然界面簡陋,但功能還算蠻完善,給游戲學院用作教學內容也不錯。另有一個號稱中國首款自主研發(fā)的全套網游解決方案。我 看到它那個三維編輯器,心想這不就是國外一個叫freeworld3D的編輯器嗎?雖然有點偏門,但我以前還較勁嘗試破解過呢。還把英文界面漢化了,大概 用exescope這樣的資源修改軟件就能搞定吧。我又心想為什么要找freeworld3D這個功能并不太強大的編輯器呢?僅僅是因為它便宜到幾十美 金?它唯一特別一點的地方就是支持導出OGRE圖形引擎的場景格式,這樣一想不由得使人對它圖形引擎的“自主”性也產生懷疑了。這樣的“自主”研發(fā)真讓人 汗顏,只要中國還沒封sourceforge這個網站(據說以前和freeBSD網站一起被封過?),國人就能“自主”研發(fā)。
有人還會推薦《C++ Primer》《Thinking in C++》《The C++ Programming Language》等書吧,誠然這些書也很好,但我總覺得它們太大部頭了。還不如多花點時間看看國外好的源代碼。
Windows編程
Operating System Concepts第五版
國內有些操作系統(tǒng)的教程其實就是它的縮寫版。
《Windows 95 System Programming Secrets》
深入剖析了Windows操作系統(tǒng)的種種種種,有人愛看《Linux內核完全注釋》,有人愛看《自己動手寫操作系統(tǒng)》這樣煽情的書,但我想作為商業(yè)的操作系統(tǒng),把Windows內核剖析到這地步也高山仰止了。
《Programming Applications for Microsoft Windows》第四版
先進程線程,再虛存管理,再動態(tài)鏈接庫,最多講到消息機制。作者在序言中說:“我不講什么ActiveX, COM等等,因為當你了解了這些基礎后,那些東西很快就會明白!”可以作為《Programming Windows》的先修課。
計算機體系:
《Computer Systems : A Programmer’s Perspective》
和《The Art of Computer Programming》在我心中是計算機史上兩本稱得上偉大的書,計算機組成原理,操作系統(tǒng),匯編,編譯原理,計算機網絡等等課程匯成這本千頁的大書,因為計算機在作者眼中就是一個整體。
開源閱讀:
《Code Reading : The Open Source Perspective》
張大千臨摹了幾百張明代石濤的山水,畫出的畫以假亂真,后來他去敦煌潛心臨摹幾年,回來畫風大變,終成大家。程序員其實有4 0%的時間是在讀別人的源代碼,侯捷先生說:“源碼面前,了無秘密”,又說“天下大事,必作于細”,可以與他的《上窮碧落下黃泉,源碼追蹤經驗談》參看。
MFC:
《深入淺出MFC》
我 實在以為沒有看過侯捷先生的《深入淺出MFC》的人多半不會懂得MFC編程。其實我是打算用一年多的時間寫一個給游戲美工用的三維編輯器,順便作為畢業(yè)設 計。圖形庫就用MFC吧,反正也沒得選擇。如果要用wxWidgets無非是獵奇而已,還不是MFC的翻版,當然它跨平臺了。就象阻擊手對自己槍械的零件 了如指掌一樣,要想用MFC寫出非玩具程序的人一定要了解其內部構造。還有一本書叫《MFC深入淺出》,并不是同一本。
IDE:
相關熱詞搜索:之旅 感悟 編程 游戲 我的世界編程游戲 我想學游戲編程
熱點文章閱讀