六年之痒--与编程爱好者共勉

这是我六年军校生活最要好的一个朋友昨天写的。这六年来我和这位朋友都是一直在摸着石头过河,没有任何人指点,也走了N多弯路,看了N多的垃圾书。只不过我所学比他杂的多,也浮躁得多,到现在也没有哪一门技术敢自称精通。本科的时候抱怨管理太严,环境太差;上了研之后环境改善了很多,但又总是很难静下心来好好学一些的东西。比如对Unix/Linux系统比较感兴趣,想把Stevens的APUE和UNP认认真真的学一遍,也想研究研究Linux的源码,但又一直静不下心来,结果那三本书只是当工具书来查阅,Linux的源码也就看了启动部分和进程管理中的部分内容,只有Maurice.Bach的书是完整的看了一遍,但也是囫囵吞枣,里面不少东西也没真正理解,真是惭愧。

六年之痒--与编程爱好者共勉

很久没有写过东西了,今天下午突然手有些痒,做为一个快毕业的人,很想能留下些什么...写些什么呢?想想自己在电院上了四年本科、两年研究生,除了增加了一些人生的阅历特别是对人情世故和部队的了解外,也就学习了一些编程上的东西了。

其实对编程产生兴趣还是源于小霸王学习机,呵呵,很古老的东西啊。当时小学升初中,家里给买了台小霸王,初次接触到了BASIC,自己利用业余时间学着编些小程序,自娱自乐;后来慢慢学习了LOGO,用称为“海龟”的小东西画些图形,乐此不疲。初次控制计算机的喜悦和对编程的爱好让我投入了较多的精力,也导致了成绩的下滑,结果老师得出结论是我早恋了(一个同学若干年后告诉我的),呵呵。也算是吧,只是,恋的对象是Programming。受到老师的多次警告和受不了不如人的成绩后,我“迷途知返”,一直到高中毕业考入大学,中间没有再花过多的时间在学习编程上。当然,原因之一是高考的压力;之二是我已经把学习机上的BASIC能学的东西都学了,除了当时的内存操作死活看不懂外(那时根本就不知道什么是内存)。我生长在一个小县城,没有环境去接触更高级的编程语言,现在想想有坐井观天的感觉...
来到大学后,接触到了一个更为广阔的天地,认识了一些志同道合的同学,像Wizard、jyarmy等等。感觉视野突然开阔了很多。在大一那个对军校充满失望饱含郁闷的日子里,唯一可以喜悦的也就是能够更深入的“重操旧业”,继续自己唯一的爱好。和许多朋友一样,C是我正式开始学习的第一门程序设计语言,不同的是,我是自学,比学校的课程提前了半年,因为我等不到学校开课。以前有过BASIC的基础,了解了程序设计的基本思想,再加上自己对于计算机方面的东西还算有点灵气,我很轻松的学会了C语言的基本语法和用法。当学校开课后,我目睹了很多同学在第一次接触程序设计的困难面前倒下去,结果导致了以后四年的痛苦和懊悔,没有C语言的基础,《面向对象程序设计》、《数据结构》、《操作系统》等等这些会用到程序设计语言基础的课程让大家都好为难,特别是计算机专业的重中之重《数据结构》。想对大一的师弟师妹们说一声,无论在C语言课程中遇到多大困难,千万不要放弃...

C语言后自然而然的是C++,C++是我学习时间最长的一门语言,也是让我受益最深的一门语言。C++语言的语法书看了一遍又一遍,面对着Visual C++的那个命令行窗口写了一个又一个程序,心中慢慢泛起了一种急躁、一种无聊。看着其他同学做出的精美的网页、好玩的Flash,心中煞是羡慕,为什么我总是黑底白字的字符窗口。曾经急切地想去看到出自自己之手的Windows窗口,在碰了几次钉子后重新又回到了命令行。

难道从C++到Visual C++就那么困难吗?我相信自己是方法不对。于是,一边继续C++的历程,一边开始寻找一条适合自己的Visual之路。说是适合自己的,因为我不想做一个“拖、拉”程序员,不想让自己一开始就绑在那些方便界面设计工具上,我想从了解底层开始。一个偶然的机会,我看到了侯捷的《深入浅出MFC》。虽然没有对Windows API的了解,但凭借较为深厚的C++语言功底,我把这本书啃了两遍,算是对MFC有了些稍微深入的了解。正当我要开始走进Windows程序设计大门的时候,大三结束了,我面对着决定未来的一次考验:考研。几个好朋友都对我
说,把编程暂时放下吧,先要解决现实问题。在那段辛苦的日子里,特别是最后阶段,我把绝大部分的精力都投入到了复习中去,但并没有完全忘记自己的爱好--我开始学习C#语言和.net框架。微软这个全新的开发平台让我体会到了与C++不同的感觉,也让我对Windows程序设计有

了更为直观的认识。考研结束,精神完全放松了,期待已久的毕业设计来了。因为感觉自己没有办法在半年的时间内用Visual C++做出像样的东西,我选择了基于.net平台开发。可惜的是,在那半年自由的空间里我并没有抓紧时间,在前一个月的喜悦和激情过后,我走上了和大部分同学相同的路,开始看电影、玩游戏。由于以前的一些基础,还好最后交给指导老师的是一个还算像样的东西。

幸运的,我考上了研究生,又多出了三年的学习时间。研一开始,我决定深入地去学习Windows程序设计,仍然抱着最初的想法:了解底层、学习底层。而Microsoft给我们的底层,就是Windows API。我翻看了一下同学的《Visual C++技术内幕》,发现这本书讲操作重于实现,于是跑去书店挑了本《MFC Windows 程序设计》(第2版)。这本书主要讲MFC,尽量不用Visual C++里面提供的一些工具,而是手工编写实现,很符合我的口味。在把这本书从头到尾看了一遍之后,更燃起了自己去学习Win API的欲望。买了一套《Windows程序设计》(第5版)后把上册啃了
一遍,了解了Windows API的用法,对于以前所学的一些东西有了更进一步的深入认识,心中煞是喜悦。最后,把《Windows核心编程》(第4版)从头到尾看了一遍之后,对于Windows程序设计的了解更深入了一步。

讲完这些,时间也就到了现在,我又开始进入一个对我来说全新的领域--Web编程。纵观这几年走的路程,心里感慨颇多,懊悔居多。虽然自称对于编程有无尽的爱好,却难以抵制电影、游戏的诱惑,难以克服懒惰的毛病,以致浪费了大量的时间。买的很多书都没有看完,有些虽看了一遍确实有如浮云掠影。要说这六年最大的收获,应该算是对于Windows程序设计学习方法上的一些感悟,虽然以前在回贴中和大家交流过,但还没有这么长篇大论的写过。现在写出来供大家参考,也希望能对理学院刚入学的师弟师妹有所帮助。

这几年一直不断有新的程序设计方法、框架出现,Visual C++ 6.0仍然是我们最常用的工具之一。说到Visual C++,首先还是要讲明它和C++、Windows程序设计的关系,这也是一个老生长谈的话题。C++是一门程序设计语言,仅此而已。C++的标准库对于我们来说比较陌生,熟悉的也就
是cout、cin等输入输出流而已。标准库博大精深,却没有界面开发的东西,因为标准库为了是将一些常用的功能以一种平台无关的标准的形式实现,而界面是和运行平台紧密相关的。Visual C++里面有一个标准库的实现,因此很多C++的书籍都采用Visual C++做为一种开发工具,进行程序设计的编译和演示。其实我们在学习C++阶段所用到Visual C++的只是它的C++编译器,即里面的cl.exe等程序。Visual C++只不过给我们提供了一个可视化的界面和自动地将编译、连接等过程实现,它也掩盖了很多值得我们去学习的东西。这期间我们所建立的项目都应该是“Win32 Console Application”。当我们使用Windows API进行程序设计的时候,特别是用到Windows所提供的界面之后,我们再去建立项目就是“Win32 Application”了。这里面需要学习的东西就是Windows程序设计的原理和API的使用,而一般是使用C/C++语言调用Windows API函数。Visual C++里面最重要的应该是MFC库了。微软将Windows API封装为各种类,以方便使用。其实MFC的封装面向对象特性并不好,为了性能等原因做了很多折中。在学习了Windows API之后学习MFC应该比从学完C++直接去学MFC轻松的多。因此,Visual C++只是一个工具,它提供了C++的编译器和可视化的设计界面以及MFC等库。所以,在我看来,要学习MFC,首先要深入学习C++程序设计语言、了解Windows API,然后再去看MFC,当了解了MFC里面那些类、宏之后,再去使用方便的Wizard。而现在很多同学所走的路是在对C++一知半解的情况下直接对着《Visual C++技术内幕》茫然地去重复里面的例子。现在像大家推荐几本我认为较好的书籍:

C++语言学习:
《C++ Primer》、《C++程序设计语言》(C++之父写的那本)、《Thinking in C++》其实这几本书没有必要全看,前两本是最为全面的和经典的C++教材,个人倾向于像初学者推荐第一本,因为我看过第二本,讲得虽然深入但是没有第一本易懂。《Thinking in C++》里面对于一些问题讲解也比较深入,在看完《C++ Primer》之后有时间可以研读一下《C++程序设计语言》和《Thinking in C++》,深入地把C++学好是很有好处的,C++虽然不是面向对象程序设计语言的开山鼻祖,但却是使用最为广泛的一种多用途语言,现在的Java、C#都是在C++基础之上发展而来的,C++精通了,学习Java、C#会轻松地多。除了这几本经典的教材,还有一些深入、提高的书可以看,包括《Effective C++》、《C++沉思录》、《Inside the C++ Object Model》等等。这些书可以让你更深入地了解C++语言的特性,包括优点和缺点等等。

Windows程序设计学习:
《Windows程序设计》(第5版)是首推书籍,特别是上册,看完这本书就能够基本掌握Windows程序设计的原理和API的使用。《Windows核心编程》(第4版)是绝对地提高书籍,只有深入学习并掌握了这本书的内容才能够向Windows程序设计高手的境界踏出第一步,不过,啃完这本书需要勇气、毅力,加油吧同志们!

MFC程序设计:
《Visual C++技术内幕》(第4版、第6版)是最为经典的Visual C++学习教材,里面讲得更多是如何应用Visual C++的可视化开发工具进行Visual C++程序设计。
我个人更为倾向的书是《MFC Windows程序设计》(第2版),这本书是MFC版的《Windows程序设计》,它按照后者的思路向读者介绍MFC的原理、实现方法以及背后隐藏的东西,让读者了解地更为深入、全面、底层。

还有,对于程序设计有爱好的朋友不要吝啬钱,买书是必不可少的,借来的书可以读一时却不能随手参考、翻阅。现在市场上的书特别多,但

前面向大家推荐的书都是大家公认的经典,个人认为有这几本书也就够了,很多书买来也是浪费,特别是那些不负责任的“剪刀书”。


.net学习:
.net是Microsoft推出的新一代的Windows开发平台(虽然它自称是跨平台的),.net平台的类库和运行于.net平台之上的C#(当然还有VB.net等)语言虽然也是内容丰富,但是学习起来比MFC轻松不少,这得益于Microsoft的完全面向对象的封装。另外,MSDN中文版里面关于.net的内容都是翻译过的,学习起来也省了不少力气。

学习.net首先要学习一门.net平台的语言,如C#、VB.net、C++/CLI或者J#等,个人推荐C#,毕竟这是专门为.net设计的,没有历史包袱,语法优美,微软对于C#的支持也是最卖力的,从Visual Studio里面C#的编辑器就能看出来。学好语言后自然是.net框架的学习,推荐《.net框架程序设计》(修订版),这是我见过的翻译最好的书。不过这是面向.net framework 1.x
的,新的2.0版的书的中文版还没有出来,这“得益于”我们伟大的清华出版社,希望屡次跳票的2.0版的书能保证翻译质量。在了解.net框架后就可以面向应用学习不同的方向了,比如Form编程、ASP.net、ADO.net等等,其实Form编程和ADO.net更为基础一些。


看到这里的朋友也许会发现,我所学习的东西都是Windows平台上的。其实我也想看看“窗外”的世界,也多次开始学习Unix、Linux,可总是半途而废,也许是它们八字不合,无论怎么强迫自己去学都提不起兴趣,每次都草草收场。六年了,不知不觉地把自己牢牢绑在了Microsoft战车上...


罗罗嗦嗦地写了这么多,突然想起来还没给这篇东西想个名字,呵呵,想起一部电影《七年之痒》,我和那些结婚七年的人的那种感觉很相似,和原来所钟爱的一起走过了六年,感觉有些累、有些心猿意马、有些想放弃,然而克服这些之后,迎来的又将是些什么呢? 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值