对一个老鸟来说,学生基本上是没有编程之路的。但是今天在CSDN上看见个大二的学生也侃侃而谈编程(该文章居然被推荐到了我的邮箱,不知道在CSDN上有号的人是否也收到了?),我
觉得,我以毕业生的身份谈的话,应该算有点点资格吧。
记得我第一次接触电脑是上初一的时候,那时是95年,windows95好象在南宁还没那么普遍。我们学的就是DOS,那时的我不是什么好学生,
所以基本上是没听课,什么也没学到。后来老师教我们BASIC语言,我更是听不懂了,我都不知道考试如何通过的。可以说,那时虽然我上过微机课,但是完全
是电脑盲,并且,对此没有什么兴趣。
后来就一直没接触过电脑,感觉电脑离我很远。上高中后,到了高三我才学会上网,而且是很菜的那种菜鸟(不过那时网吧也刚刚在南宁兴起,就是98、
99年那时侯)。学校高三居然开网页设计课,不过不是教什么ASP,我记得是教方正奥思软件的。我胡乱弄,也能弄个简单的网页。老师也教我们一些编程,可
惜那时是高三,我没有去学,所以不知道教什么语言。
后来考大学填志愿,我的志向是学电子类的,后来想想,学计算机不但能学电子知识,还能学编程,于是我改成了计算机专业。其实那时高考填志愿有很多
插曲,我甚至还想过填法律专业,因为我想过当律师。反正,当时我没想太多,没想填什么专业将会影响我未来的职业,完全没想到这一点!
后来我就这么糊涂的进入了计算机专业。记得专业发书下来的时候,我马上翻与编程有关的书——居然只有一本,就是学过计算机的人都知道的,由唐浩强
编著的《C语言程序设计》,其他书都是什么英语、数学、计算机导论。那时我很仔细的翻《C语言程序设计》,希望能找到如何编QQ、Realplayer之
类的程序,可是都是些无聊的,诸如“hello world”的程序。我想:什么时候我才可以设计一个窗口,一些图片那样的漂亮软件呢?
学习C语言就这么开始了。我很笨,老师讲scanf()函数我基本听不懂。嵌套for语句我也一窍不通。连写“hello
world”也要看书,因为我老是记不住stdio.h这个头文件名。后来我想,我是没什么编程头脑的了,再想起初一的时候学BASIC也是一窍不通,我
更是确定这一点。那时,我学C语言,完全是靠死记硬背,什么都不理解!
就这样,下学期我又开始要学习C++了。那时我越来越觉得力不从心。不过,我没有放弃,于是我拿起由钱能编的那本《C++程序设计》(那时唐浩强
还没出C++程序设计的书)天天晚上去自习室看,并且我自己也写程序,当然是在白纸上写,上实验课时再验证是否正确。不过,我写的程序除了“hello
world”这样的简单程序是可以运行的以外,其他的都是错误百出!这些错误,我一直不知道怎么解决,现在想起来,是因为我那时没理解C++,只是死记语
法造成的错误。
后来一学期都是学习硬件的知识,我又开始偷懒,那一年,我基本没写什么C/C++程序。当时,我开始学身边的同学看JAVA,那时我很喜欢
JAVA,很喜欢JAVA一两句语句就可以编出漂亮的界面,我觉得JAVA不愧是高级语言。也许就是这个语言太“高级”了,JAVA我看到最后时,渐渐失
去了对他的兴趣——因为,JAVA太简单了,我无法接受调用一个API函数就可以解决一些复杂的问题这样一个“高级语言”,我想,作为一名程序员,如果只
会调用API是很肤浅的,至少,这样无法满足我的好奇心,因为我想知道API函数里面是怎样实现这些功能的呢?
到了大三,一门课程把我从水里捞了出来——那就是数据结构!我早闻数据结构是一门教你编程的课程,我甚至在CSDN上看到有人说:没学过数据结构,不要和我说你会编程!后来学习数据结构的时候,我感觉果然如此。我又开始写C语言程序,实现数据结构里面的算法。
顺便说,很多同学都笑我敲数据结构里面的代码,理由很简单:数据结构的代码不会生成漂亮软件。的确,数据结构的代码,运行起来,不过是在黑白色的
debug窗口里面显示些数字、字符串而已。debug比起JAVA、MFC等等IDE里面的代码所生成的软件,简直是“东施”和“西施”的差别。而且,
我写的程序无非就是排序啦、查找啦之类的,可以说基本没有实际意义,这又和JAVA里面那些华丽的API所解决的问题比起来,几乎是连小儿科都不如。
但是,千万不要小看数据结构,不要小看黑白色的debug。不要因为敲几句代码就能有个漂亮界面而得意,以为自己水平有多高。试想,即便你读到博士,主干课也不会有学习如何使用J2ME、MFC编程!因为,他们不是技术,是技能!
单从数据结构是没法说为什么的,学习后续课程,我慢慢明白,计算机是学什么的了。一门课程点醒了我——操作系统!!!我终于知道,什么是内核,什
么是底层,系统如何在下面支持着上面的漂亮应用程序。编写内核,需要你有很强的编程能力,你必须熟练掌握数据结构知识、各种常用算法。而且,由于是内核程
序,可以调用的类库、申请的内存空间是非常少的。这些,习惯一上来就调用API的人怎么能完成这些任务?他们甚至连基本的计算机组织结构都不知道。那一
年,我继续夯实数据结构基础,不断的在计算机上运行各种数据结构程序,虽然都很简单,但我的编程能力终于有了飞跃!
到了大四,也就是现在,我选择嵌入式方向,个人梦想是能写自己的操作系统。虽然有时被人说这是意淫,但我还是坚持。
我个人认为,学习编程,最要紧是上机自己编。有些同学数据结构考试的分数比我还高,但是就是不会编,实现不了。还有些是技术错误,这些,看什么书都没用,惟有自己编一次,才能真正理解。
我推荐得书也许不是最好的,但是个人就是看着这些书走过来的,还有,我不打算介绍国产书,大家应该知道为什么,国货当自强,虽然我在国产书上也学到不少东西。
《21天学通C++》:21天当然学不会C++,我看这本书之前已经有C++基础了,由于上课,没时间细看什么书,于是决定选一本言简意赅的书,于是就选这本。
《操作系统概念》:操作系统界的圣经,地球人都知道。很厚,没必要都看完,其实操作系统无非三样:进程管理和调度、内存管理和中断控制。看完这三部分内容就可以了,其他的用时再看也迟。
《数据结构、算法和应用》:这是本新书,内容丰富,代码详实,有很多实际例子,非常值得一看!特别推荐!
《C++编程思想,1,2卷》:不要以为自己的C++有多厉害,你看了这两本书,你会发现有很多C++知识你刚刚开始学而已。
《linux内核解析与实现》:这本书很薄,可是每一章你都可以学到很多linux内核知识,看不懂源代码吗?那就先看这本,他是指南针!同样,
你可以只看进程管理和调度、内存管理和中断控制部分。其他的可以用到再看(或者说,老师都会教你其他的,虽然浅,但是够用了)。
还有很多书值得去看,但是我的时间(要上课、要考试)、精力有限,目前只看其中几本而已。
如果非要说国产书的话,比如梁肇新的《编程高手箴言》,虽然书里面极力贬低linux,取笑玩linux的“高手”,但是里面有很多经验可以学习。
总之,我觉得我现在的水平是这样的:就象一匹千里马,可是四肢被绑住,身上还驮着很重很重的东西,等待伯乐替我解除这些累赘,然后,飞奔出去,蛟龙出海!
阅读(1835) | 评论(0) | 转发(0) |