lwch
【QQ:510134884】【Email:
lwch748@gmail.com
】
C++博客
首页
新随笔
联系
聚合
管理
随笔-91 评论-137 文章-0 trackbacks-0
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,其中最复杂的莫过于图像校正,说是拍出来的名片围成的四边形要将他校正为一个正常的矩形,里面的难点在于要找到这四条边。题外话,在理客的日子我觉得很开心,不光因为我认识了新的妹子,更有一帮基友可以陪我扯淡,可以扯游戏也可以扯编程还可以扯东扯西的扯到宇宙去-_-||不过我觉得理客更像是一所学校(我刚进去的时候就是做教育软件的,可能老板的理念就是从这起的)。而现在看着一个一个辞职的辞职,被辞职的被辞职,心里难免会有一种淡淡的忧伤,不过我觉得最对不起的还是某个同事,我说我要过来,结果老板把他给开掉了。
啰啰嗦嗦的终于把本文写完了,其实我看过的书还有很多,这里我简单的把他罗列出来
还有没空看的
虽然这些书并不是最经典的,但当你把它们都看完的时候,工作也不成问题了。
最后我发现,要找以前的代码真不是一件容易的事情,应此我要做个文件和目录的管理工具,具体的
实现方案
正在起草。可能本文中间会有些遗漏的地方,等以后想起来了再补上。其实这条路是没有尽头的,人类为了简化各种工作而发明了电脑和编程语言,应此本着这个宗旨我会开发更多简单实用的工具来简化工作和生活。
posted on 2013-06-17 23:22
lwch
阅读(2176)
评论(7)
编辑
收藏
引用
所属分类:
其他
评论:
#
re: 5年编程之旅 2013-06-18 02:24 |
zapline
哪两个函数不是从ring3切换到ring0和切回来的
是关闭是/开启写保护
回复
更多评论
#
re: 5年编程之旅 2013-06-18 08:56 |
lwch
@zapline
一个意思的啦~
回复
更多评论
#
re: 5年编程之旅 2013-06-18 09:28 |
Richard Wei
还很年轻,加油
回复
更多评论
#
re: 5年编程之旅[未登录] 2013-06-18 10:20 |
jains
这精神我很敬仰, 我是散修, 目前还是入门, 我已经入了差不多4年门.
为自己汗颜.
回复
更多评论
#
re: 5年编程之旅 2013-06-18 10:28 |
zapline
@lwch
你这篇文章里面很多错误
例如 “而读写内存则需要切到Ring0(因为有NP嘛)。”
我只能认为你过NP是用的别人的代码
要保存好自己的代码的话,在github建个库吧
回复
更多评论
#
re: 5年编程之旅 2013-06-18 11:04 |
lwch
@zapline
当时确实用的是别人的代码,几年前的东西记不清了,不要这么较真。
回复
更多评论
#
re: 5年编程之旅
2014-08-19 13:35 |
万马奔腾
感谢LWCH的娃娃,当年陪伴一起度过了多少游戏时间.
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
5年编程之旅
Ubuntu下Nginx中Trac配置过程
实习一周总结
VC2010 Lambda表达式简单分析
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
编译原理交流群: 83905136
QLanguage交流群: 38843264
我的腾讯微博
我的新浪微博
QLanguage的新浪微博
QLanguage项目(GoogleCode)
QLanguage项目(GitHub)
博客已转移到:
http://blog.q-devel.com
<
2013年6月
>
日
一
二
三
四
五
六
26
27
28
29
30
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
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔分类
(92)
CMinus(2)
NScript(26)
QLanguage(24)
STL(9)
操作系统(6)
其他(4)
设计模式(15)
数据结构(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)
相册
QLanguage
Blogs
某牛人的Blog
Projects
NScript Compiler
QLanguage Compiler
Redis
Redis中文命令手册
Websites
C++奋斗园
VC知识库
程序员联合开发网
最新随笔
1. QParserGenerator的文法文件介绍
2. 5年编程之旅
3. QParserGenerator代码分析二(A fix&An example)
4. QParserGenerator代码分析一(生成LALR1 DFA)
5. QCore/Library说明文档
6. 词法分析器2(ε-NFA到DFA的转换)
7. 词法分析器1(正则表达式到ε-NFA的转换)
8. 山寨STL实现之内存池V2
9. 如何比较两个变量的类型是否相同
10. 山寨STL实现之list
11. 山寨STL实现之内存池
12. 山寨STL实现之vector
13. 山寨STL实现之traits,construct&destruct
14. 山寨STL实现之allocator
15. 山寨STL实现笔记
搜索
积分与排名
积分 - 160859
排名 - 162
最新评论
1. re: 5年编程之旅
感谢LWCH的娃娃,当年陪伴一起度过了多少游戏时间.
--万马奔腾
2. re: 5年编程之旅
@zapline
当时确实用的是别人的代码,几年前的东西记不清了,不要这么较真。
--lwch
3. re: 5年编程之旅
评论内容较长,点击标题查看
--zapline
4. re: 5年编程之旅[未登录]
这精神我很敬仰, 我是散修, 目前还是入门, 我已经入了差不多4年门.
为自己汗颜.
--jains
5. re: 5年编程之旅
还很年轻,加油
--Richard Wei
阅读排行榜
1. LR(0),SLR(1),LR(1)分析器源码(4702)
2. 观察者模式(4325)
3. 自制虚拟机框架(3807)
4. 实习一周总结(3613)
5. 山寨STL实现之vector(3520)
评论排行榜
1. 使用面向组合子算法写词法分析器(9)
2. 自制虚拟机框架(9)
3. CosmosKernel初探(8)
4. 观察者模式(8)
5. 代理模式(7)