一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

伴隨我成長的編程書

  一、

  這篇文章是應(yīng)之前在微博上爆過的下個周末某出版社的線下活動而寫的。回顧我和C++在這個世紀(jì)的第二個春天開始發(fā)生過的種種事情,我發(fā)現(xiàn)我并不是用一個正常的方法來學(xué)會如何正常使用C++的。我的C++學(xué)習(xí)伴隨著很多其他流行或者不流行的語言。現(xiàn)在手中掌握的很多淫蕩的技巧正是因為學(xué)習(xí)了很多編程語言的緣故,不過這并不妨礙我正常地使用C++來在合理的時間內(nèi)完成我的目標(biāo)。

  學(xué)習(xí)C++是一個艱難的過程。如果從我第一次看C++的書算起,現(xiàn)在已經(jīng)過了11年了。一開始的動機也是很不靠譜的。剛開始我很喜歡用VB6來開發(fā)游戲,但是我能找到的資料都是用C++來做例子的,文字部分又不豐富,于是我遇到了很多困難。因此我去三聯(lián)書店買了本C++的書,想著我如果學(xué)會了C++,就可以把這些例子翻譯成VB6的代碼,然后繼續(xù)用VB6來寫游戲。陰差陽錯,我買到的是一本語法手冊。不過那個時候我還小,不知道什么是MSDN,也不知道MSDN是可以打印出來賣的:

image

  不過因為C++在當(dāng)時并不是我學(xué)習(xí)的重點,于是我就沒事的時候翻一翻。我們都知道語言參考手冊(MSDN里面叫Language Reference)的順序都是按照類別而不是教學(xué)順序來排列的。于是當(dāng)我花了很長時間看完了第一遍的時候,就覺得這本書寫的云里霧里。剛開始講什么是表達(dá)式的時候,例子就出現(xiàn)了大量的函數(shù)和類這種更加復(fù)雜的東西。于是我選擇重新看一遍,基本的概念就都知道了。當(dāng)然這個時候完全不能算“學(xué)會C++”,編程這種事情就跟下象棋一樣,規(guī)則都很容易,但是你想要下得好,一定要通過長期的練習(xí)才能做到。

  當(dāng)然,在這段時間里面,我依然是一邊看C++一邊用VB6來學(xué)習(xí)編程。初二的時候?qū)W校發(fā)了QBasic的課本,當(dāng)時看了一個星期就完全學(xué)會了,我覺得寫代碼很好玩,于是從此就養(yǎng)成了我沒事逛書店的習(xí)慣(就連長大了之后泡MM也有時候會去書店,哈哈哈哈哈)。值得一提的是,我第二次去書店的時候,遇到了下面的這本書《Visual Basic高級圖形程序設(shè)計教程》:

image

  在這之前我買到的兩本VB6的書都是在教你怎么用簡單的語法,拖拖界面。然后就做出一個程序來。那個時候我心目中編程的概念就是寫寫記事本啊、寫字板啊、計算器等等這些東西,直到我發(fā)現(xiàn)了這本書。我還記得當(dāng)時的心情。我在書架上隨手翻了翻,發(fā)現(xiàn)VB竟然也可以寫出那么漂亮的圖形程序。

  這本書包含的知識非常豐富,從如何調(diào)用VB內(nèi)置的繪圖命令、如何調(diào)用Windows API函數(shù)來快速訪問圖片,講到了如何做各種圖像的特效濾鏡、如何做幾何圖形的變換,一直到如何對各種3D物體做真實感渲染,甚至是操作4維圖形,都講得清清楚楚。這本書比其他大多數(shù)編程讀物好的地方在于,讀者可以僅靠里面的文字,基本不用看他的代碼,就可以學(xué)會作者想讓你學(xué)會的所有東西。因此當(dāng)我發(fā)現(xiàn)我怎么著也找不到這本書的光盤(事實上書店就沒有給我)的時候,我并沒有感到我失去了什么。這本書的文字部分不僅寫得很詳細(xì),而且作者還很負(fù)責(zé)任。作者知道像圖形這種對數(shù)學(xué)基礎(chǔ)有一定要求的東西,程序員不一定懂——尤其是我那個時候才上初中,就更不可能懂了——所以在書里面看到一些復(fù)雜的數(shù)學(xué)公式的時候,作者都會很耐心的告訴你這些公式的來源,它們的“物理意義”,有些時候甚至還會推導(dǎo)給你看。因此可以想象,這本書包含的內(nèi)容也特別的豐富。這導(dǎo)致我在讀的時候不斷地找資料補充自己的數(shù)學(xué)知識,從而可以親自把那些程序?qū)懀ǘ皇浅┏鰜怼_@個過程一直持續(xù)到了我終于不用VB轉(zhuǎn)Delphi,到最后上大學(xué)改用C++的那個時候,我終于理解了整本書里面講的所有內(nèi)容,給我后面的很多事情打下了堅實的基礎(chǔ)。

  因為數(shù)學(xué)知識缺乏的關(guān)系,學(xué)習(xí)這些基礎(chǔ)知識又不可能那么快,所以我把一部分時間投入在了游戲開發(fā)里面,嘗試自己弄點什么出來。畢竟當(dāng)時對編程有興趣,就是因為“說不定游戲也可以用代碼寫出來”的想法,于是我得到了下面的這本書: 

image

  這本書是我覺得21天驚天陰謀系列里面唯一一本良心的書。它并沒有只是簡單的羅列知識,而是教你利用VB6內(nèi)置的功能搭建從簡單到復(fù)雜的游戲程序。我第一次看到關(guān)于鏈表的知識就是在這里。可惜在我還沒學(xué)會如何使用VB6的類模塊功能之前,我就已經(jīng)投向了Delphi,因此并沒有機會實踐這個知識。不過在此之后,我用VB6寫的小游戲,已經(jīng)嘗試把游戲本身的模塊(這是VB6的一個功能,就跟namespace差不多)分離,積累一些基礎(chǔ)代碼。

  在這段時間里面,我學(xué)習(xí)語法都學(xué)得很慢。循環(huán)甚至是在我用人肉展開循環(huán)的方法一行一行復(fù)制粘貼出了一個井字棋的AI之后才學(xué)會的。后來很晚才學(xué)會了寫函數(shù),全局變量則更晚了。于是在那個時候我寫了很多看起來很愚蠢的代碼。曾經(jīng)我以為一個函數(shù)的全局變量在退出函數(shù)之后是會保留的,然后對著自己寫出來的不能運行的代碼感到十分的莫名其妙。還有一次做一個記事本,因為不知道“當(dāng)前文件路徑”要存在什么地方,于是在界面上放了一個Label來放文件名。后來有了雄心壯志,想用VB搞定一個長得像Basic的超簡陋的腳本。這當(dāng)然最后是失敗了,但是我依稀記得,我當(dāng)時取得的成就就是把腳本語言的字符串分割成了一個一個的token之后,保存在了一個表格控件里面,以便之后(后來這個“之后”沒寫出來)讀的時候方便一點。之后還嘗試寫一個讀四則運算字符串計算結(jié)果的程序,都是先找最里層的括號,把那條不帶括號的簡單式子計算完之后,把結(jié)果也處理成字符串replace回去。直到整個字符串收斂成一個值為止。一直等到我后來買到了一本系統(tǒng)介紹VB6語法和用法的書之后,我的代碼才稍微變得不像猴子打出來的。

  在剛開始學(xué)編程的時候,基本上都沒有什么固定的方向,都是在書店里面碰到什么就寫什么。于是有一次我在書店里看到了《Visual Basic 網(wǎng)絡(luò)高級編程》:

image 

  這本書是我在學(xué)習(xí)VB的過程中最后一本我覺得不錯的書了。雖然VB本身也提供了很多訪問網(wǎng)絡(luò)資源的控件,但是這本書并沒有讓你僅僅會用被人的輪子來寫代碼,而是一步一步的告訴你這些網(wǎng)絡(luò)協(xié)議的內(nèi)容,然后讓你用Socket來跟這些服務(wù)器直接交互。我記得我最后成功的做出了一個郵件收發(fā)程序,跟聯(lián)想1+1系列自帶程序的功能已經(jīng)可以媲美了。

  二、

  當(dāng)我發(fā)現(xiàn)C++實在是太難,根本沒辦法真的把網(wǎng)上那些C++的程序改成VB之后,我上了高一,接觸了NOI。NOI讓我得到的一個收獲就是,讓我在上了大學(xué)之后很堅定的不把時間浪費在ACM上,從而有了很多時間可以搞圖形、編譯器和女同學(xué)。參加高中的NOI培訓(xùn)讓我知道了什么是數(shù)據(jù)結(jié)構(gòu),還有什么是指針。老師在講Pascal的時候說,要靈活使用指針才可以寫出高性能的程序。這讓我大開眼界,不僅因為VB沒有指針,而且當(dāng)時用VB寫圖形的程序感覺怎么樣也快不上去(當(dāng)然這有大半原因是因為我代碼寫得爛,不能全怪VB)的同時,還讓我認(rèn)識了Delphi。Delphi跟VB一樣可以拖控件,而且控件長得還很像。于是我就抱著試一試的心理,開始學(xué)習(xí)如何用Delphi來寫代碼。

  因為有《Visual Basic 高級圖形程序設(shè)計教程》的知識作為背景,我很快就掌握了如何用Delphi來開發(fā)跟圖形相關(guān)的程序。那個時候我覺得該做的準(zhǔn)備已經(jīng)準(zhǔn)備好了,于是用Delphi寫了一遍我在VB的時候總是寫不快的一個RPG游戲。這個游戲雖然不大,但是結(jié)構(gòu)很完整。在開發(fā)這個游戲的過程中,我第一次體驗到了模塊化開發(fā)的好處,以及積累基礎(chǔ)代碼對開發(fā)的便利性。同時也讓我嘗到了一個難以維護(hù)的程序是多么的可怕。這個游戲前后開發(fā)了八個月,有一半的時間都是在寫代碼。對于當(dāng)時的我來說,程序的結(jié)構(gòu)已經(jīng)過于復(fù)雜,代碼也多到差不多失控的地步了。后來我統(tǒng)計了一下,一共有一萬兩千行代碼。由于那個時候我的調(diào)試能力有限,而且也不知道如何把程序?qū)懗梢子谡{(diào)試的形式。結(jié)果我等到了我的核心部分都寫完了之后,才能按下F9做第一次的運行(!!!)。當(dāng)然運行結(jié)果是一塌糊涂。我花了很大的努力才把它搞到能跑。

  由于程序本身過長,我在開發(fā)的過程中覺得已經(jīng)很難控制了。再加上我發(fā)現(xiàn)我的同一個模塊里的函數(shù)基本上都是下面的形式:

PrefixFunction(var data:DataStructure, other parameters ...)

it知識庫伴隨我成長的編程書,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 成人两性视频 | 日韩免费视频播放 | 亚洲骚色| 久久亚洲不卡一区二区 | 国产91在线精品 | www.色噜噜| 亚洲视频一区二区三区四区 | 国产丝袜美腿高跟白浆 | 免费视频不卡一区二区三区 | 五月天999| 欧美三级在线观看视频 | 国产啪在线91 | 一区二区三区舞蹈区 | 夜色55夜色66亚洲精品网站 | 一区二区三区免费视频观看 | 欧美日一区二区三区 | 国产一区二 | 国产伦精品一区二区三区视频小说 | 视频在线观看一区二区三区 | 狠狠综合| 亚洲 图片 小说 欧美 另类 | 欧美日韩国产一区三区 | 国产原创麻豆 | 欧美视频网址 | 免费看美女毛片 | 国产一级精品高清一级毛片 | 在线观看视频一区二区三区 | 久久婷婷五色综合夜啪 | 国产欧美在线亚洲一区刘亦菲 | 亚洲激情视频在线 | 91在线一区二区三区 | 国产大片线上免费观看 | 中文国产成人精品久久水 | 555夜色666夜色精品站 | 丁香婷婷在线观看 | 久久中文字幕综合不卡一二区 | 久久看视频 | 特级做a爰片毛片免费看一区 | 99激情网| 亚洲妇人成熟性成熟网站 | 欧美日韩中文一区二区三区 |