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

伴隨我成長的編程書

  一、

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

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

image

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

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

image

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

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

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

image

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

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

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

image 

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

  二、

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

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

  由于程序本身過長,我在開發的過程中覺得已經很難控制了。再加上我發現我的同一個模塊里的函數基本上都是下面的形式:

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

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

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

主站蜘蛛池模板: 中文字幕无限乱码不卡2021 | 亚洲激情视频 | 国产免费美女视频 | 中文字幕一区婷婷久久 | www.碰| 亚洲视频一区二区在线观看 | 久久一日本道色综合久 | 日韩一区二区三区视频在线观看 | 真实国产乱子伦视频 | 日本一区二区三区久久久久 | 91精品福利手机国产在线 | 中文字幕日韩精品有码视频 | 亚洲黄色在线观看 | 日韩精品资源 | 国产91九色在线播放 | 一级做a爰毛片 | 爱啪精品导航在线 | 国产精品第九页 | aiai在线观看| 亚洲乱码在线播放 | 欧美成人v视频免费看 | 无码精品日韩中文字幕 | 五月激情网站 | 色视频在线观看网站 | 日本久久久久久久中文字幕 | 中文字幕一区二区三区免费看 | 婷婷亚洲五月 | 国产自精品 | 久久久久久久久久综合情日本 | 国产成人 免费观看 | 亚洲国内精品 | 好吊妞在线观看 | 中文字幕一二三四区2021 | 99精品视频在线成人精彩视频 | 一区二区免费 | 午夜精品在线视频 | 亚洲日本一区二区三区 | 在线看的黄色网址 | 91久久青青青国产免费 | 伊人久久婷婷 | 午夜精品免费 |