`

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,其中最复杂的莫过于图像校正,说是拍出来的名片围成的四边形要将他校正为一个正常的矩形,里面的难点在于要找到这四条边。题外话,在理客的日子我觉得很开心,不光因为我认识了新的妹子,更有一帮基友可以陪我扯淡,可以扯游戏也可以扯编程还可以扯东扯西的扯到宇宙去-_-||不过我觉得理客更像是一所学校(我刚进去的时候就是做教育软件的,可能老板的理念就是从这起的)。而现在看着一个一个辞职的辞职,被辞职的被辞职,心里难免会有一种淡淡的忧伤,不过我觉得最对不起的还是某个同事,我说我要过来,结果老板把他给开掉了。
    啰啰嗦嗦的终于把本文写完了,其实我看过的书还有很多,这里我简单的把他罗列出来

图片

图片

图片
    还有没空看的
图片
    虽然这些书并不是最经典的,但当你把它们都看完的时候,工作也不成问题了。
    最后我发现,要找以前的代码真不是一件容易的事情,应此我要做个文件和目录的管理工具,具体的实现方案正在起草。可能本文中间会有些遗漏的地方,等以后想起来了再补上。其实这条路是没有尽头的,人类为了简化各种工作而发明了电脑和编程语言,应此本着这个宗旨我会开发更多简单实用的工具来简化工作和生活。
0
7
分享到:
评论

相关推荐

    游戏之旅--我的编程感悟【有目录】

    2.5 Apple II 上的编程之路.......................................... 39 XIII 第1 章计算机,游戏,我_ 我,云风,从二十年前的计 算机游戏萌芽阶段一路走来。计 算机,并不神秘。程序,也只是 表达计算机控制...

    我的编程感悟(中文PDF)(共37M二分卷)分卷二

    2.5 Apple II上的编程之路 39 第3章 编程语言 45 3.1 C 语言 46 3.2 BASIC 50 3.3 C++ 51 3.4 汇编语言 54 3.4.1 概述 55 3.4.2 程序的本质 57 3.4.3 寄存器 58 3.4.4 寻址方式 60 3.4.5 汇编指令 61 3.4.6 C/C++ ...

    [ASP.NET.AJAX编程参考手册(涵盖ASP.NET.3.5及2.0)].(美)霍斯拉维.扫描版.pdf

    7.7 继续应用生命周期之旅 7.7.1 endCreateComponents 7.7.2 raiseLoad 7.7.3 应用生命周期小结 …… 第8章 开发客户端控件 第9章 事件冒泡机制及客户端Button控件 第10章 类型描述扩展 第11章 数据类 第12章 客户-...

    旅游大数据平台方案.docx

    IDC亚太区(不含日本)最新关于大数据和分析(BDA)领域的市场研究表明,大数据技术和服务市场规模将会从2012年的5.48亿美元增加到2017年的23.8亿美元,未来5年的复合增长率达到34.1%。该市场涵盖了存储、服务器、网络、...

    c++ primer中文版【第三版】 PDF电子书

    版别版次:2003年7月第5次印刷 ISBN书号:7-5083-0989-8 出版日期:2002年3月 开本:787*1092 1/16 字数:1621千字 页数: 1033 Stanley Lippman 他的职业是提供关于C++和面向对象的训练、咨询、设计和指导。...

    leetcode伪代码-100DaysOfCode:#100DaysOfChallenge的进度日志,我开始学习并一直致力于编码、编程和学习

    之旅 普拉夫·帕雷克积极寻找前端开发人员/软件开发人员的角色 时间线 日 :pushpin: 日期 :tear-off_calendar: 完成的课程/任务 :alarm_clock: 参考链接 :link: 第一天 2020 年 5 月 4 日 Python中HashTable的实现 ...

    c#学习笔记.txt

    Sun就从来没有将它的Java交给过ECMA,以至于正当Microsoft尽力在Visual J++基础上拓展Java功能,并使之与Windows操作系统紧密结合在一起的时候,Sun公司对Microsoft提出了法律诉讼,控告Microsoft违反了许可证协议中...

    高效算法:竞赛、应试与提高必修128例.[法] Christoph Dürr Jill-Jênn Vie(带书签文字版).pdf

    曾任法国国际编程大赛Prologin主席,并于2014年获Google RISE Award。 目录 第 1 章 引言 1 1 1 编程竞赛 1 1 1 1 线上学习网站 3 1 1 2 线上裁判的返回值 4 1 2 我们的选择:Python 5 1 3 输入输出 6 1 3 1 读取...

    java-best-practices:编码,设计和架构Java应用程序的最佳实践

    从最畅销的5门课程中学习在28分钟的惊人学习路径中进行重新训练Java最佳实践Java最佳实践程序员之旅如何成为一名优秀的程序员? 问为什么? 编程常见问题我应该成为所有设计模式的专家吗? 什么是NFR? 编码Java技巧...

    ROS机器人16小时强化培训资料

    韩国“ROS国家旅游研讨会”于2017年8月21日至25日在首尔大田釜山釜山光州举行。有超过540名工程师和学生参加了由ROBOTIS有限公司组织的这次活动。(由Pyo博士指导)和GIST,东大大学,庆北国立大学,KAIST,首尔国立...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    1.2 准备好开始Java之旅 3 1.2.1 下载JDK 4 1.2.2 安装JDK 5 1.2.3 配置环境变量 6 1.2.4 测试环境是否安装成功 8 1.2.5 如果失败了怎么办? 9 1.3 让自己的第一个程序运行起来 10 1.3.1 编写自己的Hello ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    1.2 准备好开始Java之旅 3 1.2.1 下载JDK 4 1.2.2 安装JDK 5 1.2.3 配置环境变量 6 1.2.4 测试环境是否安装成功 8 1.2.5 如果失败了怎么办? 9 1.3 让自己的第一个程序运行起来 10 1.3.1 编写自己的Hello ...

    人工智能作文400字(2).doc

    在一台高配置的电脑中运行它 ,它每一手棋只需要思考5秒钟,就可以打败大部分业余选手,如果延长它的思考时间, 它可以轻松击败人类顶尖的职业棋手。 人工智能正在深刻的'改变着我们的生活,给我们带来很多便利和...

    21S-ASIAAM-191A:加州大学洛杉矶分校亚裔研究系的高级课程旨在利用网络技术并增强社区的能力以促进社会变革

    191A亚洲人–促进社会变革的Web开发和GIS:转变公民社会的关键数据 美国亚裔研究系,2021年Spring 周二和周四2:00 PM – 3:15 PM ...欢迎来到我们的网络编程和映射之旅! 本课程专为非地图绘制人员和

    电子商务调研报告.docx

    (5) 熟悉HTML, Javascript及ASP以支援网站维护 (6) 拥有媒体机构或及会务及公关活动策划公司网络 (7) 熟悉各种不同行业之客户名单的渠道 系统应用工程师 1、一年以上系统集成项目实践工作经验;熟悉各类专业投影设备...

    常见的关系型数据库管理系统.docx

    5.access 常见的关系型数据库管理系统全文共2页,当前为第2页。 常见的关系型数据库管理系统全文共2页,当前为第2页。 Access是一个在Windows操作系统下工作的关系数据库管理系统。它采用windows编程思想,利用...

    asp.net知识库

    C++ 泛型编程系列讲座之实施 泛型技巧系列:简单类型选择器 C# 泛型简介 我眼中的C#2.0新功能特性 泛型技巧系列:避免基类及接口约束 New Article 不该用Generics实现Abstract Factory的理由 C#2.0-泛型 C#2.0-...

    图书管理系统可行性分析报告

    届时已销售数量估计 1 3(售出两套) 5(售出两套) 总计 13500 38000 60000 说明: 第一年的试运行由于软件不是很完善,因而费用会较低。后两年由于软件价格要相对的提高,因而可能购买方不是很多,仅作保守估计...

    sp2-ex3-number-with-units:使用C ++课程分配#3的系统编程2

    1999年,价值1.25亿美元的NASA卫星由于单位不匹配而坠毁-开发该卫星的团队之一以公制单位工作,另一支团队则以英国单位工作(请参见更多示例)。 为了避免再次发生这种情况,他们雇用了您,并要求您编写一个代表带...

    C语言入门经典(第4版)--源代码及课后练习答案

     本书是编程语言先驱者Ivor Horton的经典之作,是C语言方面最畅销的图书品种之一,在世界范围内广受欢迎,口碑极佳。  本书的目标是使你在C语言程序设计方面由一位初学者成为一位称职的程序员。 内容简介  本书是...

Global site tag (gtag.js) - Google Analytics