5年編程之旅


    其實早就想寫本文了,一直想緬懷一下過去的自己。說是說5年,其實在很久之前我已經用按鍵游俠(一個用VBS作為引擎的東西)開始寫腳本了,說起編程還需要感謝豬哥,是他將我帶入了編程這一領域(可悲的是現在都找不到QQ列表中的哪位了,豬哥希望您看到這篇文章之后能聯系我)。5年前,我性質匆匆的買來了一本VC6和VS2005(好像是這個版本)入門的書打算開始學習C++(目前這兩本書在某個妹子手里)。然后開始了漫長的C++學習之旅,記得當時我是一邊摸索着學習C++的語法,一邊在寫按鍵娃娃(值得慶幸的是目前這貨居然還能搜的到),下面我們來看一段有意思的代碼。
 
    可以看到當時的我是多么的稚嫩,居然把一個功能函數包裝成了一個類,居然還滿心歡喜的加上了一段注釋(很簡單實用吧)-_-||

    接下來是兩個比較奇怪的函數
 
    看里面的兩個變量m_hDebugWnd和m_hCodeWnd按照道理來說這兩個變量應該是全局變量才對,為什么被套上了m的定義?(我也是進了理客才知道m是member的縮寫-_-||請不要噴我),可能當時看到別人代碼里是這么寫的於是我也就照葫蘆畫瓢了。還有很多個文件里就這么幾行代碼兩三個函數的,這里就不列舉出來了。

    然后是一個switch,先看代碼
 
    以我現在的風格來看,這里肯定變成一個enum,否則這里一改調用方也需要跟着改定義(可能當時考慮到是給VB用的,所以就沒那么做了吧:))。
    寫着寫着就寫到了圖像查找的模塊,為了有效的實現一個查找算法我買來了一本
圖片 
    但是可悲的是,我至今都還停留在入門的階段,我也只是把里面模板匹配的部分看了一遍。直到幾個月前,BOSS提出需求說是要做名片之類東西的矩形校正,我才完完整整的把這本書又看了一遍,雖然最后還是夭折了-_-||
    與此同時,看到網上說數據結構很重要,於是我也買了一本
圖片
    但對於一個完全沒有系統的學習過編程的我來說,買的時候都沒有看清它里面講的是什么語言的,買回來才發現這個是Pascal版本的,當時就崩潰了。。。(雖然之前有用過Delphi,但都沒用它寫過過千行的代碼,然后就被我拋棄了)。
    當時為了讓模擬鍵盤鼠標那些能過NP(NProtect當時是個很牛逼的東西),我甚至還自己動手寫了個驅動,當時對我來說絕對是個非常大的挑戰。當時看的資料也不知道已經被我丟到哪里去了,說實話其實驅動寫起來也沒什么復雜的,按照它的API和框架來寫就是了,不過當時比較蛋疼的是調試的時候經常藍屏,最后我甚至搞了台虛擬機來專門調試,奇怪的是當時的那台破機器跑虛擬機居然不卡。

    這里有兩個函數非常熟悉,是從ring3切換到ring0和切回來的,在之后寫OS的代碼里也有類似的代碼。其中有一些代碼現在不去翻資料已經看不懂了:)



    這里有一些有關於在驅動中讀寫內存和隱藏進程的代碼,隱藏進程其實很簡單,只要把這個進程從鏈表中拿掉就可以了,而讀寫內存則需要切到Ring0(因為有NP嘛)。
    最后為了支持自定義窗口,我還為他做了一個窗口編輯器

    很炫吧,呵呵:)下面我們來看一下它的幫助文檔,做的還是很不錯的嘛

    其實這個是按鍵娃娃的第一個版本。

    原來它有這么多模塊

    當然我還為按鍵娃娃做了一些網站啊之類的東西,沒記錯的話,按鍵娃娃應該是在08年的時候做的,當時開奧運會,我甚至還為他配上了一堆福娃的圖標。之后我記得應該是和按鍵游俠的作者商量好了,一起來開發自己的引擎,但比較糾結的是自始至終也只有我一個人在做(據說他好像帶小孩去了),人家畢竟不是專業的程序員。應此就有了QLanguage的第一個版本,當時我給他取名叫ES(Easy to Study)  語言。對於一個沒有學習過編譯原理的我來說,一切都是手寫的,而且當時還把詞法分析和語法分析都並在了一起,代碼真是一團糟。我沒有記錯的話,但是應該是我讀南湖3年級和大一的時候,說到考大學,那真是簡單加輕松啊,當時就以211分進了科技學院(名字很霸氣吧~還有不要鄙視我,三校生高考滿分是300分,我還是我們班最高的!)。
    之后便開始了大學生活,當然大學生活是相當無聊的,可悲的是大學三年我只去過一次圖書館,而且那次還是去輔導別人的。其他時間都在墮落的打着游戲(當然偶爾無聊的時候也會寫寫代碼,前提是寢室里非常安靜的情況下,估計也只有沒人的時候),其實在這段時間里我多數時間是在周末回到家才去寫QLanguage的,從大一到大二我一共做了兩個版本的QLanguage,第一個完全是手寫的,手寫的Lexer和手寫的Parser。在這個版本做了一半的時候我看到了
vczh的博客從他的博客里我知道了有《編譯原理》這門課,於是我就買來了下面這本書
圖片
    通過讀了這本書之后,便有了第二個版本的QLanguage,當時我瞬間就覺得代碼寫的更結構化了,不過這類書更偏理論,里面有一些算法但很少會有實現的代碼,於是我就在網上各種找代碼來看(其實這本書是我目前為止翻的次數最多的)。 話不多說,讓我們來看看當時的代碼

    當時的編碼風格簡直糟透了隨意的有空格沒空格,加括號和不加括號之類的這里就不展開說了。就在我完成之際,我又迎來了人生的一個轉折點。大三了要實習了,當時那是瘋狂的投簡歷啊,看到一家有興趣的給他投簡歷,有幸的是理客是第一家聯系我的,也就是我待到現在的公司(前三個月去過另外一家公司,反正背后的老板是同一個,只是那邊人手不夠我去幫忙的罷了),而這家公司也是離我家最近的。當時我帶着一紙簡歷就這么過去了,進了理客之后我才知道什么是編碼規范,易讀的代碼應該是什么樣的,雖然現在QLanguage的代碼里還是有一些沒有按照規范來寫的,不過我覺得看起來應該還不算糟糕。其實在大三那年還有段小插曲,當時看上個妹子,糾結了許久,最后毅然決定不再聯系,之后我便下定決心要把QLanguage做好,這才有了一個穩定的功能豐富的QLanguage的第二個版本。
    記得剛進理客的時候還是個毛頭小子,根本不知天高地厚,總覺得別人的代碼寫的沒我的好。但隨着時間的慢慢推移,我終於實習期滿了轉正了。當初的高傲也不復存在了。在理客我做過PHP、Office Plugin、iOS、Android和Researcher,其中最復雜的莫過於圖像校正,說是拍出來的名片圍成的四邊形要將他校正為一個正常的矩形,里面的難點在於要找到這四條邊。題外話,在理客的日子我覺得很開心,不光因為我認識了新的妹子,更有一幫基友可以陪我扯淡,可以扯游戲也可以扯編程還可以扯東扯西的扯到宇宙去-_-||不過我覺得理客更像是一所學校(我剛進去的時候就是做教育軟件的,可能老板的理念就是從這起的)。而現在看着一個一個辭職的辭職,被辭職的被辭職,心里難免會有一種淡淡的憂傷,不過我覺得最對不起的還是某個同事,我說我要過來,結果老板把他給開掉了。
    啰啰嗦嗦的終於把本文寫完了,其實我看過的書還有很多,這里我簡單的把他羅列出來

圖片

圖片

圖片
    還有沒空看的
圖片
    雖然這些書並不是最經典的,但當你把它們都看完的時候,工作也不成問題了。
    最后我發現,要找以前的代碼真不是一件容易的事情,應此我要做個文件和目錄的管理工具,具體的實現方案正在起草。可能本文中間會有些遺漏的地方,等以后想起來了再補上。其實這條路是沒有盡頭的,人類為了簡化各種工作而發明了電腦和編程語言,應此本着這個宗旨我會開發更多簡單實用的工具來簡化工作和生活。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM