lwch
【QQ:510134884】【Email:
lwch748@gmail.com
】
C++博客
首頁(yè)
新隨筆
聯(lián)系
聚合
管理
隨筆-91 評(píng)論-137 文章-0 trackbacks-0
5年編程之旅
其實(shí)早就想寫(xiě)本文了,一直想緬懷一下過(guò)去的自己。說(shuō)是說(shuō)5年,其實(shí)在很久之前我已經(jīng)用按鍵游俠(一個(gè)用VBS作為引擎的東西)開(kāi)始寫(xiě)腳本了,說(shuō)起編程還需要感謝豬哥,是他將我?guī)肓司幊踢@一領(lǐng)域(可悲的是現(xiàn)在都找不到QQ列表中的哪位了,豬哥希望您看到這篇文章之后能聯(lián)系我)。5年前,我性質(zhì)匆匆的買來(lái)了一本VC6和VS2005(好像是這個(gè)版本)入門的書(shū)打算開(kāi)始學(xué)習(xí)C++(目前這兩本書(shū)在某個(gè)妹子手里)。然后開(kāi)始了漫長(zhǎng)的C++學(xué)習(xí)之旅,記得當(dāng)時(shí)我是一邊摸索著學(xué)習(xí)C++的語(yǔ)法,一邊在寫(xiě)按鍵娃娃(值得慶幸的是目前這貨居然還能搜的到),下面我們來(lái)看一段有意思的代碼。
可以看到當(dāng)時(shí)的我是多么的稚嫩,居然把一個(gè)功能函數(shù)包裝成了一個(gè)類,居然還滿心歡喜的加上了一段注釋(很簡(jiǎn)單實(shí)用吧)-_-||
接下來(lái)是兩個(gè)比較奇怪的函數(shù)
看里面的兩個(gè)變量m_hDebugWnd和m_hCodeWnd按照道理來(lái)說(shuō)這兩個(gè)變量應(yīng)該是全局變量才對(duì),為什么被套上了m的定義?(我也是進(jìn)了理客才知道m(xù)是member的縮寫(xiě)-_-||請(qǐng)不要噴我),可能當(dāng)時(shí)看到別人代碼里是這么寫(xiě)的于是我也就照葫蘆畫(huà)瓢了。還有很多個(gè)文件里就這么幾行代碼兩三個(gè)函數(shù)的,這里就不列舉出來(lái)了。
然后是一個(gè)switch,先看代碼
以我現(xiàn)在的風(fēng)格來(lái)看,這里肯定變成一個(gè)enum,否則這里一改調(diào)用方也需要跟著改定義(可能當(dāng)時(shí)考慮到是給VB用的,所以就沒(méi)那么做了吧:))。
寫(xiě)著寫(xiě)著就寫(xiě)到了圖像查找的模塊,為了有效的實(shí)現(xiàn)一個(gè)查找算法我買來(lái)了一本
但是可悲的是,我至今都還停留在入門的階段,我也只是把里面模板匹配的部分看了一遍。直到幾個(gè)月前,BOSS提出需求說(shuō)是要做名片之類東西的矩形校正,我才完完整整的把這本書(shū)又看了一遍,雖然最后還是夭折了-_-||
與此同時(shí),看到網(wǎng)上說(shuō)數(shù)據(jù)結(jié)構(gòu)很重要,于是我也買了一本
但對(duì)于一個(gè)完全沒(méi)有系統(tǒng)的學(xué)習(xí)過(guò)編程的我來(lái)說(shuō),買的時(shí)候都沒(méi)有看清它里面講的是什么語(yǔ)言的,買回來(lái)才發(fā)現(xiàn)這個(gè)是Pascal版本的,當(dāng)時(shí)就崩潰了。。。(雖然之前有用過(guò)Delphi,但都沒(méi)用它寫(xiě)過(guò)過(guò)千行的代碼,然后就被我拋棄了)。
當(dāng)時(shí)為了讓模擬鍵盤(pán)鼠標(biāo)那些能過(guò)NP(NProtect當(dāng)時(shí)是個(gè)很牛逼的東西),我甚至還自己動(dòng)手寫(xiě)了個(gè)驅(qū)動(dòng),當(dāng)時(shí)對(duì)我來(lái)說(shuō)絕對(duì)是個(gè)非常大的挑戰(zhàn)。當(dāng)時(shí)看的資料也不知道已經(jīng)被我丟到哪里去了,說(shuō)實(shí)話其實(shí)驅(qū)動(dòng)寫(xiě)起來(lái)也沒(méi)什么復(fù)雜的,按照它的API和框架來(lái)寫(xiě)就是了,不過(guò)當(dāng)時(shí)比較蛋疼的是調(diào)試的時(shí)候經(jīng)常藍(lán)屏,最后我甚至搞了臺(tái)虛擬機(jī)來(lái)專門調(diào)試,奇怪的是當(dāng)時(shí)的那臺(tái)破機(jī)器跑虛擬機(jī)居然不卡。
這里有兩個(gè)函數(shù)非常熟悉,是從ring3切換到ring0和切回來(lái)的,在之后寫(xiě)OS的代碼里也有類似的代碼。其中有一些代碼現(xiàn)在不去翻資料已經(jīng)看不懂了:)
這里有一些有關(guān)于在驅(qū)動(dòng)中讀寫(xiě)內(nèi)存和隱藏進(jìn)程的代碼,隱藏進(jìn)程其實(shí)很簡(jiǎn)單,只要把這個(gè)進(jìn)程從鏈表中拿掉就可以了,而讀寫(xiě)內(nèi)存則需要切到Ring0(因?yàn)橛蠳P嘛)。
最后為了支持自定義窗口,我還為他做了一個(gè)窗口編輯器
很炫吧,呵呵:)下面我們來(lái)看一下它的幫助文檔,做的還是很不錯(cuò)的嘛
其實(shí)這個(gè)是按鍵娃娃的第一個(gè)版本。
原來(lái)它有這么多模塊
當(dāng)然我還為按鍵娃娃做了一些網(wǎng)站啊之類的東西,沒(méi)記錯(cuò)的話,按鍵娃娃應(yīng)該是在08年的時(shí)候做的,當(dāng)時(shí)開(kāi)奧運(yùn)會(huì),我甚至還為他配上了一堆福娃的圖標(biāo)。之后我記得應(yīng)該是和按鍵游俠的作者商量好了,一起來(lái)開(kāi)發(fā)自己的引擎,但比較糾結(jié)的是自始至終也只有我一個(gè)人在做(據(jù)說(shuō)他好像帶小孩去了),人家畢竟不是專業(yè)的程序員。應(yīng)此就有了QLanguage的第一個(gè)版本,當(dāng)時(shí)我給他取名叫ES
(Easy to Study)
語(yǔ)言。對(duì)于一個(gè)沒(méi)有學(xué)習(xí)過(guò)編譯原理的我來(lái)說(shuō),一切都是手寫(xiě)的,而且當(dāng)時(shí)還把詞法分析和語(yǔ)法分析都并在了一起,代碼真是一團(tuán)糟。我沒(méi)有記錯(cuò)的話,但是應(yīng)該是我讀南湖3年級(jí)和大一的時(shí)候,說(shuō)到考大學(xué),那真是簡(jiǎn)單加輕松啊,當(dāng)時(shí)就以211分進(jìn)了科技學(xué)院(名字很霸氣吧~還有不要鄙視我,三校生高考滿分是300分,我還是我們班最高的!)。
之后便開(kāi)始了大學(xué)生活,當(dāng)然大學(xué)生活是相當(dāng)無(wú)聊的,可悲的是大學(xué)三年我只去過(guò)一次圖書(shū)館,而且那次還是去輔導(dǎo)別人的。其他時(shí)間都在墮落的打著游戲(當(dāng)然偶爾無(wú)聊的時(shí)候也會(huì)寫(xiě)寫(xiě)代碼,前提是寢室里非常安靜的情況下,估計(jì)也只有沒(méi)人的時(shí)候),其實(shí)在這段時(shí)間里我多數(shù)時(shí)間是在周末回到家才去寫(xiě)QLanguage的,從大一到大二我一共做了兩個(gè)版本的QLanguage,第一個(gè)完全是手寫(xiě)的,手寫(xiě)的Lexer和手寫(xiě)的Parser。在這個(gè)版本做了一半的時(shí)候我看到了
vczh的博客
從他的博客里我知道了有《編譯原理》這門課,于是我就買來(lái)了下面這本書(shū)
通過(guò)讀了這本書(shū)之后,便有了第二個(gè)版本的QLanguage,當(dāng)時(shí)我瞬間就覺(jué)得代碼寫(xiě)的更結(jié)構(gòu)化了,不過(guò)這類書(shū)更偏理論,里面有一些算法但很少會(huì)有實(shí)現(xiàn)的代碼,于是我就在網(wǎng)上各種找代碼來(lái)看(其實(shí)這本書(shū)是我目前為止翻的次數(shù)最多的)。 話不多說(shuō),讓我們來(lái)看看當(dāng)時(shí)的代碼
當(dāng)時(shí)的編碼風(fēng)格簡(jiǎn)直糟透了隨意的有空格沒(méi)空格,加括號(hào)和不加括號(hào)之類的這里就不展開(kāi)說(shuō)了。就在我完成之際,我又迎來(lái)了人生的一個(gè)轉(zhuǎn)折點(diǎn)。大三了要實(shí)習(xí)了,當(dāng)時(shí)那是瘋狂的投簡(jiǎn)歷啊,看到一家有興趣的給他投簡(jiǎn)歷,有幸的是理客是第一家聯(lián)系我的,也就是我待到現(xiàn)在的公司(前三個(gè)月去過(guò)另外一家公司,反正背后的老板是同一個(gè),只是那邊人手不夠我去幫忙的罷了),而這家公司也是離我家最近的。當(dāng)時(shí)我?guī)е患埡?jiǎn)歷就這么過(guò)去了,進(jìn)了理客之后我才知道什么是編碼規(guī)范,易讀的代碼應(yīng)該是什么樣的,雖然現(xiàn)在QLanguage的代碼里還是有一些沒(méi)有按照規(guī)范來(lái)寫(xiě)的,不過(guò)我覺(jué)得看起來(lái)應(yīng)該還不算糟糕。其實(shí)在大三那年還有段小插曲,當(dāng)時(shí)看上個(gè)妹子,糾結(jié)了許久,最后毅然決定不再聯(lián)系,之后我便下定決心要把QLanguage做好,這才有了一個(gè)穩(wěn)定的功能豐富的QLanguage的第二個(gè)版本。
記得剛進(jìn)理客的時(shí)候還是個(gè)毛頭小子,根本不知天高地厚,總覺(jué)得別人的代碼寫(xiě)的沒(méi)我的好。但隨著時(shí)間的慢慢推移,我終于實(shí)習(xí)期滿了轉(zhuǎn)正了。當(dāng)初的高傲也不復(fù)存在了。在理客我做過(guò)PHP、Office Plugin、iOS、Android和Researcher,其中最復(fù)雜的莫過(guò)于圖像校正,說(shuō)是拍出來(lái)的名片圍成的四邊形要將他校正為一個(gè)正常的矩形,里面的難點(diǎn)在于要找到這四條邊。題外話,在理客的日子我覺(jué)得很開(kāi)心,不光因?yàn)槲艺J(rèn)識(shí)了新的妹子,更有一幫基友可以陪我扯淡,可以扯游戲也可以扯編程還可以扯東扯西的扯到宇宙去-_-||不過(guò)我覺(jué)得理客更像是一所學(xué)校(我剛進(jìn)去的時(shí)候就是做教育軟件的,可能老板的理念就是從這起的)。而現(xiàn)在看著一個(gè)一個(gè)辭職的辭職,被辭職的被辭職,心里難免會(huì)有一種淡淡的憂傷,不過(guò)我覺(jué)得最對(duì)不起的還是某個(gè)同事,我說(shuō)我要過(guò)來(lái),結(jié)果老板把他給開(kāi)掉了。
啰啰嗦嗦的終于把本文寫(xiě)完了,其實(shí)我看過(guò)的書(shū)還有很多,這里我簡(jiǎn)單的把他羅列出來(lái)
還有沒(méi)空看的
雖然這些書(shū)并不是最經(jīng)典的,但當(dāng)你把它們都看完的時(shí)候,工作也不成問(wèn)題了。
最后我發(fā)現(xiàn),要找以前的代碼真不是一件容易的事情,應(yīng)此我要做個(gè)文件和目錄的管理工具,具體的
實(shí)現(xiàn)方案
正在起草。可能本文中間會(huì)有些遺漏的地方,等以后想起來(lái)了再補(bǔ)上。其實(shí)這條路是沒(méi)有盡頭的,人類為了簡(jiǎn)化各種工作而發(fā)明了電腦和編程語(yǔ)言,應(yīng)此本著這個(gè)宗旨我會(huì)開(kāi)發(fā)更多簡(jiǎn)單實(shí)用的工具來(lái)簡(jiǎn)化工作和生活。
posted on 2013-06-17 23:22
lwch
閱讀(2217)
評(píng)論(7)
編輯
收藏
引用
所屬分類:
其他
評(píng)論:
#
re: 5年編程之旅 2013-06-18 02:24 |
zapline
哪兩個(gè)函數(shù)不是從ring3切換到ring0和切回來(lái)的
是關(guān)閉是/開(kāi)啟寫(xiě)保護(hù)
回復(fù)
更多評(píng)論
#
re: 5年編程之旅 2013-06-18 08:56 |
lwch
@zapline
一個(gè)意思的啦~
回復(fù)
更多評(píng)論
#
re: 5年編程之旅 2013-06-18 09:28 |
Richard Wei
還很年輕,加油
回復(fù)
更多評(píng)論
#
re: 5年編程之旅[未登錄](méi) 2013-06-18 10:20 |
jains
這精神我很敬仰, 我是散修, 目前還是入門, 我已經(jīng)入了差不多4年門.
為自己汗顏.
回復(fù)
更多評(píng)論
#
re: 5年編程之旅 2013-06-18 10:28 |
zapline
@lwch
你這篇文章里面很多錯(cuò)誤
例如 “而讀寫(xiě)內(nèi)存則需要切到Ring0(因?yàn)橛蠳P嘛)。”
我只能認(rèn)為你過(guò)NP是用的別人的代碼
要保存好自己的代碼的話,在github建個(gè)庫(kù)吧
回復(fù)
更多評(píng)論
#
re: 5年編程之旅 2013-06-18 11:04 |
lwch
@zapline
當(dāng)時(shí)確實(shí)用的是別人的代碼,幾年前的東西記不清了,不要這么較真。
回復(fù)
更多評(píng)論
#
re: 5年編程之旅
2014-08-19 13:35 |
萬(wàn)馬奔騰
感謝LWCH的娃娃,當(dāng)年陪伴一起度過(guò)了多少游戲時(shí)間.
回復(fù)
更多評(píng)論
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開(kāi)源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
5年編程之旅
Ubuntu下Nginx中Trac配置過(guò)程
實(shí)習(xí)一周總結(jié)
VC2010 Lambda表達(dá)式簡(jiǎn)單分析
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
編譯原理交流群: 83905136
QLanguage交流群: 38843264
我的騰訊微博
我的新浪微博
QLanguage的新浪微博
QLanguage項(xiàng)目(GoogleCode)
QLanguage項(xiàng)目(GitHub)
博客已轉(zhuǎn)移到:
http://blog.q-devel.com
<
2013年4月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(2)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類
(92)
CMinus(2)
NScript(26)
QLanguage(24)
STL(9)
操作系統(tǒng)(6)
其他(4)
設(shè)計(jì)模式(15)
數(shù)據(jù)結(jié)構(gòu)(4)
游戲(2)
隨筆檔案
(91)
2013年10月 (1)
2013年6月 (1)
2013年5月 (2)
2013年4月 (1)
2013年2月 (2)
2013年1月 (1)
2012年8月 (2)
2012年7月 (1)
2012年6月 (2)
2012年5月 (2)
2011年11月 (1)
2011年9月 (1)
2011年8月 (2)
2011年7月 (5)
2011年6月 (5)
2011年5月 (8)
2011年4月 (2)
2011年3月 (1)
2011年2月 (7)
2011年1月 (8)
2010年12月 (3)
2010年11月 (1)
2010年10月 (1)
2010年9月 (7)
2010年8月 (7)
2010年7月 (15)
2010年6月 (2)
相冊(cè)
QLanguage
Blogs
某牛人的Blog
Projects
NScript Compiler
QLanguage Compiler
Redis
Redis中文命令手冊(cè)
Websites
C++奮斗園
VC知識(shí)庫(kù)
程序員聯(lián)合開(kāi)發(fā)網(wǎng)
最新隨筆
1.?QParserGenerator的文法文件介紹
2.?5年編程之旅
3.?QParserGenerator代碼分析二(A fix&An example)
4.?QParserGenerator代碼分析一(生成LALR1 DFA)
5.?QCore/Library說(shuō)明文檔
6.?詞法分析器2(ε-NFA到DFA的轉(zhuǎn)換)
7.?詞法分析器1(正則表達(dá)式到ε-NFA的轉(zhuǎn)換)
8.?山寨STL實(shí)現(xiàn)之內(nèi)存池V2
9.?如何比較兩個(gè)變量的類型是否相同
10.?山寨STL實(shí)現(xiàn)之list
11.?山寨STL實(shí)現(xiàn)之內(nèi)存池
12.?山寨STL實(shí)現(xiàn)之vector
13.?山寨STL實(shí)現(xiàn)之traits,construct&destruct
14.?山寨STL實(shí)現(xiàn)之a(chǎn)llocator
15.?山寨STL實(shí)現(xiàn)筆記
搜索
積分與排名
積分 - 162867
排名 - 162
最新評(píng)論
1.?re: 5年編程之旅
感謝LWCH的娃娃,當(dāng)年陪伴一起度過(guò)了多少游戲時(shí)間.
--萬(wàn)馬奔騰
2.?re: 5年編程之旅
@zapline
當(dāng)時(shí)確實(shí)用的是別人的代碼,幾年前的東西記不清了,不要這么較真。
--lwch
3.?re: 5年編程之旅
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--zapline
4.?re: 5年編程之旅[未登錄](méi)
這精神我很敬仰, 我是散修, 目前還是入門, 我已經(jīng)入了差不多4年門.
為自己汗顏.
--jains
5.?re: 5年編程之旅
還很年輕,加油
--Richard Wei
閱讀排行榜
1.?LR(0),SLR(1),LR(1)分析器源碼(4761)
2.?觀察者模式(4341)
3.?自制虛擬機(jī)框架(3845)
4.?實(shí)習(xí)一周總結(jié)(3634)
5.?山寨STL實(shí)現(xiàn)之vector(3542)
評(píng)論排行榜
1.?使用面向組合子算法寫(xiě)詞法分析器(9)
2.?自制虛擬機(jī)框架(9)
3.?CosmosKernel初探(8)
4.?觀察者模式(8)
5.?代理模式(7)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 lwch
亚洲国产一成人久久精品
|
日本久久久久久久久久
|
亚洲国产精品成人AV无码久久综合影院
|
亚洲国产精品一区二区三区久久
|
99热成人精品热久久669
|
无码人妻久久久一区二区三区
|
欧美亚洲国产精品久久
|
国产精品久久久久免费a∨
|
久久久噜噜噜久久中文字幕色伊伊
|
国产99精品久久
|
97久久超碰成人精品网站
|
久久被窝电影亚洲爽爽爽
|
日本免费一区二区久久人人澡
|
久久久久久亚洲精品成人
|
亚洲综合伊人久久综合
|
69SEX久久精品国产麻豆
|
久久精品国产秦先生
|
久久精品国产99国产精品
|
色综合久久天天综线观看
|
久久婷婷五月综合97色直播
|
久久AV高潮AV无码AV
|
大伊人青草狠狠久久
|
久久久噜噜噜久久
|
国产成人久久精品一区二区三区
|
久久精品这里热有精品
|
国内精品久久久久久久涩爱
|
久久综合鬼色88久久精品综合自在自线噜噜
|
91精品国产高清久久久久久91
|
久久影视综合亚洲
|
精品久久久噜噜噜久久久
|
99久久精品国产一区二区三区
|
久久久久久久波多野结衣高潮
|
欧美久久一级内射wwwwww.
|
中文字幕人妻色偷偷久久
|
婷婷综合久久狠狠色99h
|
国产精品久久新婚兰兰
|
久久99国产精品二区不卡
|
中文字幕无码久久久
|
国产精品成人久久久久久久
|
MM131亚洲国产美女久久
|
久久亚洲国产精品五月天婷
|