我是如何学习计算机的

2012-07-01 00:00 [故事] [心情]


又翻出来一篇以前的文章,应该是 04 年左右写的,当时发在单位内部的论坛上。

现在看起来有些幼稚,不过,我是从那时成长起来的。


有人说我的计算机水平很高,其实不是这样的,我只不过是可能比他们对计算机更感兴趣,对计算机相关的问题更关注一些。

想学好计算机不是一朝一夕的事。有人说“兴趣是最好的老师”。是的,如果你感兴趣的事,你肯定乐意花时间去学习的研究,只要付出了就会有收获,慢慢地就会进步的。

我是物理系统毕业的,但我特别喜欢计算机。我最早接触计算机是在 1997 年暑假(刚参加完高考),其实只不过是一台“小霸王”。人家的,我从来都没有用过,但那年暑假我背过了键盘。

那一年我未能如愿以偿地考入第一志愿的大学,第二志愿也没有能进入计算机系。我们学校第一学期不开计算机课,但一个老乡带我去“计算中心”上了一次机,我学会了 CAI(一个 DOS 下的教学软件)。由于我早就背过键盘,所以很快就学会了打字。

后来我就自己经常去上机(其实也不经常,那时候机票对我来说还有点贵)。第二学期开《计算机文化基础》课的时候,我比好多人学得都快。我学会了 DOS、UCDOS、Foxbase、和 WPS,还有一些其他的工具软件如 PCTools 和 ARJ。就在那年暑假,我自己学习了 C 语言。所以后来开 C 语言 课的时候,我还是比大部分人学得快。

再后来我们学校也有了 586 的机器,有了 Windows95。当时还觉得奇怪,怎么这个机器一开机就是这个样子。后来就天天到图书馆找关于 Windows95 的书。那时候学校外面也有人开机房了,带光驱的机器一小时 2 块,不带光驱的 1 块或 1 块 5。呵呵,后来上网都比这便宜。但那时候没办法,省吃俭用,我学会了 Win95 和 Word7.2(好像是这个版本,反正不是 Word97)。

这期间我毛遂自荐到学校的毕业生分配办公室当学工助理,主要是干点杂活,写个字什么的,我写字还不错,主要是因为敢写。当时学生处的计算机 586 带光驱在学校里算是很先进的。主要是上面有一个《全国毕业生分配决策与支持系统》,运行于 DOS 环境。学生处的老师也不懂计算机,该系统由计算机系的一个 师兄帮助管理。很快那位师兄就毕业了,由于我计算机基础还算不错,所以老师同意我来试试(其实是因为当时找不到象我这样“品学兼优”的学生 ^_^)。我经过努力,基本上弄清楚了那套系统的结构。系统是用 C 语言编写的,而我对 C 语言有很好的了解,所以后来遇到什么问题我都能一一解决。同时也巩固了我 的地位。老师又不懂计算机,所以那台计算机就是我的了。最重要的是,后来我拿到了办公室的钥匙。从此我可以在下班后尽情地使用计算机了。噢,对了,我每个月 还可以得到几张大团结稍微补贴一下生活。

由于工作需要我学会了 Word 和 Excel,并且用得相当熟练(后来还学会了其高级应用,使用宏语言 VBA 编程)。这期间我学会了上网,知道什么 是 BBS,什么是 Web 浏览器。我开始练习用 C 语言编写程序、做网页。当时也没什么创造力,就只是去图书馆抄了代码回来实验。由于我经常在办公室呆到很 晚,没少跟传达老大爷发生冲突。但不打不成交,后来我们还成了朋友,几年后在市场上遇见时还感到很亲切。

有一年暑假我没有回家,在另一个办公室帮忙,学会了使用 Windows3.2,并从那时开始用五笔打字。

其实对我帮助最大的是我在 1999 年学会了使用 Linux(关于 Linux 请参阅我的另一篇文章《我和 Linux》)。Linux 是自由和开放 的,学习它使我更深入地了解整个计算机。而且学习应用物理给了我良好的硬件知识,也培养了我很好的逻辑思维能力。我偷着在办公室的计算机上装上 Linux,我也曾偷着将整个机器拆成零件又装起来。结合课上学的《微机原理》知识,我对计算机的了解又更深入了一步。那时的计算机质量就是好,凭我怎样 折腾,它就是不坏。而与此相反的是后来到了单位以后我曾重装过好多次操作系统,也“弄坏“了好几台机器。

后来我又自学了《数据结构》等相关的计算机知识,学会了使用 C++ Builder 编写程序,学会了 SQL 语言和数据库。摩尔定律给我们带来了很多好处:我换了一台奔腾 2——有 64M 内存的计算机。作为毕业设计,我将整个《全国毕业生分配决策与支持系统》重新用 C++ Builder 编写了一遍,在 Windows 上运行,使用起来更方便。

大学时我学习的资料很大一部分都来自图书馆,另一部分就是来自网上。感谢互联网给了我们一个开放的世界。

毕业后我被分到解放路机房工作。那里的同志对我都很关心和照顾。我可以自由使用单位的计算机,使用 ISDN 上网也比在学校里好多了。

我开始维护一个使用 Foxpro 编写的“机房管理系统”,由于该系统是机房的人自己编写的,所以很实用,也有全部的源代码。当然它也是好多人努力 的结果,我还曾见过一个运行于 DOS 和 Foxbase 系统上的“机房管理”软件。当时那些软件都是非常优秀的,还获过奖,也成为了实现无纸化办公的一个重 要开端。它也是我们目前办公系统的一个重要的原型。

先说点其他的。最让我高兴的是我可以自由地学习我所钟爱的 Linux。Linux 上有非常丰富的软件,也有非常丰富的文档。每学习一个软件或一种功能,我都到网上搜索相关的文档或书籍,从头到尾看。上夜班让我有足够的时间。

后来我又学习了 FreeBSD。它是一个真正的 UNIX 操作系统。通过学习它我得以从另一个角度理解计算机、理解操作系统、理解 Linux。

出于对 Linux 的偏爱,我开始讨厌 Windows 经常死机(虽然 Win2000 出现以后情况有所改观,但问题还是太多)、中毒、经常需要重装操 作系统。而且 Windows 平台绝不是一个真正的系统的理想选择,Foxpro 也不是一个很好的开发工具。我开始实验在 Linux 编程,并将一些小程序移 植到 Linux 上。开始是使用 C 语言,后来我学习了 PHP。我经过认真考虑,使用了 B/A/S(Browser/Application/Server)三层结构,使用 Linux 做服务器而使用 Windows 浏览器做客户端,去除了原“机房管理系统”一部分已经不使用的功能,将整个系统重新编写改成了“程 控机房综合办公系统”。

该系统只有到我们搬到胜利路上班才充分发挥了其重要的作用:随着我对交换机和 DCN 网络理解的加深,我新编写了接收和分拣交换机报告的程序,实现 了报告自动分拣,实现了与交换机系统的紧密结合。从此我们的系统与网络再也不能分离。而且在以后与莱山机房的联合办公中更使我们深切感受到了它的好处。

这期间我也走过弯路,程序和界面也几经修改。每次遇到不会的问题我就上网查找答案。我参考别人做的东西,征求大家的意见。领导和各位同事都给了我莫大的支持。

呵呵,累了,吃了个苹果,继续写。

当我拿到一个程序或软件时,我会试图了解程序的开发者和程序所使用的编程语言。我会的编程语言很少,但我了解它们的优势和弱点。当从开发者的角度 去理解一个程序或软件时,我就会理解为什么它总是会在某些地方出现一些莫名其妙的错误,在哪些地方还可以怎么做就可以使我们使用起来更方便。同时也可以高 我编程的水平。

2003 年 12 月份,我终于省下几千大元买了一台计算机,上了我们单位的宽带网。我在我的机器上使用 Linux。我机器上也有个 Win2000,是为我的朋友们准备的。但现在病的不成样子了,我也懒得管它。他们总是抱怨我的机器不好用,512M 内存的机器还那么慢。管他呢,谁让他们不学习 Linux 呢。

说实话随园主人说得对,“书非借不能读也”。当你有了自己的计算机时就不怎么珍惜了。这两年我除了学会了怎样在 Linux 上看电影以外几乎什么都没学。在我的计算机上有成 G 的计算机图书和资料可是我一本都没有看。

我曾参加过公司组织的计算机比赛,有一次还代表公司比赛在烟台市考出了最好的成绩。真有些奇怪。如果说只考 Word 和 Excel 倒也罢了,他们还 考 Photoshop、Powerpoint、VB、VC 和 flash。那些软件我都不会,主要是没大有兴趣。有一次考试还要让我用 flash 把两个人塞 到一个汽车里去,我可没那个本事。我只好瞎蒙,反正 VB、VC 等跟 Word 的界面都差不多,写几个 Basic 或 C 语言代码还是像样的,存盘还是会的。就这 样。这样的比赛赛不出真实水平,也没有意思。谁还能一下子会那么多软件。不过通过比赛我总结出一个经验,如果你也参加这样的考试的话不妨在考试目录下搜索 一下相关的例子文件(有时候出题者会给你一个例子,让你照着它做),把它直接 Copy 到答案目录中去改个名字也许就能得分。但这也是没有办法的办法,如果 职称考试的时候你使用这样的方法考不过的话不准来找我。

还是说到兴趣。我看到一些爱打游戏的人计算机都很棒。因为他们对游戏有兴趣,他们要学习怎样配置计算机使游戏玩起来更爽,他们要学习各种攻略试验 各种软件来修改游戏,很自然地就学会了一些其它的东西。我不会打游戏,反应慢手慢,眼睛也慢。我喜欢朴素的美,太花哨的东西让我眼花缭乱。谁来帮我把我们 的网站多做几张图片?

由于网管要做值班系统,我们的办公系统几乎就停止了开发,我着实轻松了一阵。但网管的值班系统最终不适合我们使用。我本来设想与他们联合以后会有 许多好处,比方说一点:我们填的《局数据软件及重要命令修改记录表》中有一个调单号,那么我们是不是希望在以后查询的时候通过点击一下调单号就看到调单的 内容呢?后来我还是修改了一下我们的系统,加入了现在的这个论坛,并在设备维护中心成立的时候将名字改为“设备维护中心综合办公系统”。我还将系统移植到 了另一台性能更好的 UNIX 服务器(PHP 代码不用改变,但一些 C 代码需要改写和重新编译)。其实该系统一直都是胜利路这边用得最多,后来在完成了周报日 报模块以后才为大家所使用。我非常感谢领导的大家的支持。

学习编程最好的方法就是看人家写的优秀的代码。在学习中我渐渐发现我以前写的代码是多么的 ugly。我曾在 2004 年 4 月份将源代码组织整理了一 遍以利于以后继续开发,但我没有时间和精力重写全部的源代码。所以直到现在我们还同时使用两种连接数据库和获取数据的方式。现在我又学习一种更好的组织源 代码的方法,但这只可能在以后的项目中实现了。

说到这里再详细举一个我学习的例子吧。在编写这套办公系统的时候,为了选择一种数据库我曾上网查阅了大量的资料。后来决定使用 Postgresql。因为它是免费的,并且也是最符合 SQL92/SQL99 标准的。不利的地方是网上的参考资料比较少。为了学习这种数据库,我下载了 数据库系统的手册,从 7.0 到后来 7.4 的手册我都几乎一字不漏地读过。为了使用 PHP,我也曾在家里一台破 486 的 DOS 机器上读过 PHP 的英文手册。最近又看了几个 PHP 程序和手册,但现在脑子不好使了,看了很快就忘了。

其实编程没有什么复杂的,特别是这种信息管理系统,几乎不需要什么特殊的算法。只需要学会如何读取和写入数据库就行了。所以大家也不要觉得会写个 程序就有什么了不起。那天有个同志让我帮忙编写一个组合数的算法我都写不出来,写了一个冒泡排序的函数也费了我好长时间。我不是学计算机的,所以基础并不 好。我想有时间学学《运筹学》和《数学模型》方面的知识,但一直懒得学。

但无论如何学习一些编程的基本知识还是有必要的。即使你从来不编软件,如果你了解怎样编程,了解各种开发工具的优缺点,你就能更好的使用别人编写 的软件。更重要的是你可以更深入的理解一些病毒的知识。有时候我们的 Windows 系统会出现一些奇怪的毛病,杀毒软件又查不出病毒来,没办法就得重装系 统。我已经说过我的机器上有个 Win2000。为了免得每次都要重装系统我 Clone 了一下。系统崩溃以后再恢复一下就可以了。不幸的是有一次我 Clone 了一个病毒,每次恢复的时候自然病毒就一起恢复了。气得我好长时间不动它,我的同学在那段时间里也基本上学会了在 Linux 上使用 QQ 聊天。后 来心情好的时候又看了一下,原来内存中有个进程,杀死进程,找到磁盘上对应的程序删了,一会儿又有了。重开机启动到命令行模式,把文件删除了就好了。那次 蒙志新的机器不好用了,让我看看。我懒得看,我已经说了我对 Windows 有便见,老爱中毒。我告诉他重装算了那种奇怪的问题没办法解决,可他不愿意重新 系统。后来我还是看了看,发现有一个奇怪的进程,找到了磁盘上对应的文件。将进程杀掉,磁盘上的文件改个名(不要删掉,万一改错了还可以改回来)就完事 了,后来再也没坏过(也是蒙志新保护的好,他机器上有防火墙)。有时候看似很难的问题解决起来却很简单。但有时候也不这么简单。上次看到唐静的机器中毒 了,还杀不掉。从进程找到磁盘上的文件,不让改名,不让删。重启到安全模式(安全模式一般不加载额外的驱动程序或其他的程序),将文件改名,再重启动,那 个进程就不存在了。我不知道那天问题最后解决了没有,因为后来我走了。杀毒软件不是万能的,有时候要靠你手工做,而这些要靠你对计算机深入地理解。说到这 里我要声明,这几次解决问题纯粹是瞎蒙,如果你也碰到这种问题别找我,我讨厌老喜欢中病毒的机器。

越说越远了,现在都离题千里了。但都是我学习过程中的一些做法和感受,任大家批评吧。

呵呵,写完了再吃个苹果,谢谢小王姐姐! =D

《大道至简》

七歌
微信公众号

七歌杜金房
微信视频号