天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

伴隨我成長的編程書

  一、

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

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

image

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

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

image

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

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

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

image

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

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

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

image 

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

  二、

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

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

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

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

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

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

主站蜘蛛池模板: 俄罗斯15一16处交 | 一区在线观看在线 | 99re热精品视频国产免费 | 午夜福利体检 | 亚洲欧美精品一中文字幕 | 日本美女抠逼 | 亚洲一区在线观看无码欧美 | TUBE69CHINESE学生 TUBE19UP老师学生 | 成人高清护士在线播放 | 精品无码三级在线观看视频 | 精品熟女少妇AV免费观看 | 亚洲三级视频在线 | 四川少妇大战4黑人 | 男女高潮又爽又黄又无遮挡 | 久久精品无码人妻无码AV蜜臀 | 亚洲女初尝黑人巨磁链接 | 免费一级毛片在线观看 | 蜜芽在线播放免费人成日韩视频 | 欧美性xxx免费看片 欧美性xxx极品 | 青青草原社区 | 国产在线视频分类精品 | 伦理片在线线手机版韩国免费6 | 色综合久久88一加勒比 | 国产国产乱老熟女视频网站97 | 国产亚洲一区二区三区啪 | 夜色女人香 | 婷婷激情综合色五月久久竹菊影视 | 入禽太深在线观看免费高清 | 日本阿v片在线播放免费 | 国自产拍 高清精品 | 啊…嗯啊好深男男高h文 | 最美女人体内射精一区二区 | 好男人好资源在线播放 | caoporon超碰在线视频 | 东京热百度影音 | 最近中文字幕MV免费高清在线 | 午夜噜噜噜私人影院在线播放 | 久章草一区二区 | 欧美日韩国产码在线 | 国产精品嫩草影院在线观看免费 | 亚洲一区精品伊人久久伊人 |