牛人的编程学习经历和好书推荐

你现在觉得学编程很累吗?嗯,那很正常,只有电影中的天才黑客才轻松,但他们只敲空
    
    
格和回车...
    
    
看看我的学习经历,或许对你有帮助。
    
    

  
  
   
    
  
  
我的编程经历:
    
    
  大一,熟悉电脑,极品飞车,古墓丽影......
    
    

  
  
   
    
  
  
  大二那年,在报纸上看了米特尼克的报道后,非常崇拜,于是开始学解密(那时候分
    
    
不清hackercracker的区别),自然地学起汇编(我一直认为我能很好地运用指针得益于
    
    
我不错的汇编功底),crack的入门比较简单,看过一些教程后,就可以动手解了。当时,
    
    
懂得用SoftIcehmemcpy处设断在很长一段时间都是我炫耀的资本(现在想来那时被人称
    
    
为解密高手真是脸红啊@)。后来软件解的多了(都是简单的),就想象Cracker那样做个
    
    
注册机,扬名天下。
    
    

  
  
   
    
  
  
  于是开始学C,因为对汇编很熟,所以在指针的理解上没遇到什么困难,花了一个月左
    
    
右学完了。
    
    

  
  
   
    
  
  
  接着开始了Windows编程之旅,幸运的,第一本书选择了Charles Petzold 的《Progr
     
     
amming Windows而不是《Inside VC》,Petzold的书虽然简单,但编排的非常好,循序
    
    
渐进,很有成就感,看着看着就入了迷,花了几个月看完了上册(早把学习动机忘了),
    
    
信心大增。下册难啃多了,象很多第一次接触位图的人一样,被DDB/DIB搞的晕头转向,只
    
    
看了一半都不到就放弃了,从此很长时间对它们畏之如虎。
    
    

  
  
   
    
  
  
  转看C++,看了一遍,什么虚函数,override operator,模板根本不懂,只知道个概
    
    
念(要理解还得靠实践,书中什么teacherstudent的关系对freshman根本说不清),但
    
    
总算还掌握了类的用法。
    
    

  
  
   
    
  
  
  连受打击,对编程没什么兴趣了,进入低潮。疯狂迷恋quake3
    
    

  
  
   
    
  
  
  大三上,偶然的,在书店里看到了Jeffrey Richter 的《Advanced Windows》,站着
    
    
看完了SEH那章,立即取钱买下了它。头一次,看技术书有种想跳起来大喊的冲动。它比P
    
    
etzold那本难了许多,更甚的是翻译还差,到现在已经看了好几遍了还没完全消化。看完
    
    
后,眼界开阔了许多,重燃对编程的兴趣。
    
    
  大三下,兴趣转到压缩方面,从图书馆借到Mark Nelson 的《数据压缩原理与范例
     
     
,一边看一边写程序封装,hehe,那时候就像巴浦洛夫试验中的狗一样,看到性能优化就
    
    
流口水。FLibPCXTGAGIF的编解码部分就是基于那时候的代码完成的。RLE还好说,
    
    
但写LZW算法是我编程生涯中最痛苦的一段经历:中途不能调试,没有验证数据-只能手动
    
    
编解码,位运算,速度。500多行的代码前后搞了快半年,我算知道身处悬崖中间的感觉了
    
    

    
    

  
  
   
    
  
  
  大四以前的两年大都是在看书学习,编程基本上全是验证性质的,超过1000行以上的
    
    
程序都没写过。
    
    

  
  
   
    
  
  
  大四,学了两年的SDK编程,还是不肯学MFC,抱着SDK不放,总自豪地告诉别人每一行
    
    
代码都是自己写的。看着周围使用MFC的人越来越多,不服气,发誓做一套界面库来(第一
    
    
次写可以称之为工程的东西),开头没遇到什么困难,消息转发用虚函数实现,FCWnd基类
    
    
写好了,dialoglistboxscrollbarstaticbutton很快就出来了,但编Toolbar时遇
    
    
到了障碍,而且随着程序的日渐臃肿,许多弊端开始显露出来,通用控件和OwnDraw控件产
    
    
生了非常棘手的冲突,在Try NN次后,终于放弃。开始使用MFC,确实非常简单好用,而且
    
    
网上还有很多扩展类,唉,我这半年究竟干了些什么。终于认识道:什么东西都自己从头
    
    
写是不可能的。这或许就是最初的团队精神了。
    
    
  看着编出的50K鸡肋,感觉很可惜,不过也很高兴,经过此役,我对virtualstat
    
    
ic函数的理解加深了,而且关于进/线程,内存映射文件的封装类还是可以用的,填补了M
    
    
FC的空白。
    
    

  
  
   
    
  
  
  大五,轻松,时间多多,对自己极度的自信,准备直接工作,对图象处理,文件格式
    
    
发生了浓厚的兴趣,把petzold的下册终于搞定(这回看就象看GRE中的数学一样简单了)
    
    
,把几年写的代码做成FLib,然后就开始做Demo - PicViewer,开始只是想把它做成个演
    
    
示的DEMO,但越做越感兴趣,而且我的界面编程水平也得到了提高,因此决定把它做成一
    
    
个完善的图象处理软件。但快乐的生活中却暗藏着杀机,“清零”把时间记错了,好说歹
    
    
说才又给了次机会,要不都毕不了业;工作又找不到合适的,唉.这个世界只相信学历。毕
    
    
业后捡起了遗忘已久的高数,还是考研吧......
    
    

  
  
   
    
  
  
  回顾自己的学习经历,走了很多弯路:在汇编上花的时间过长,而且是干int 21h这种
    
    
无用功,要不是一次自己辛辛苦苦优化的代码比VC-Release慢,我可能还沉浸于中。花了
    
    
几个月去封装窗口类,写两千行的代码去理解虚函数到底值不值得呢?
    
    

  
  
   
    
  
  
  转眼4年过去了,这其间的经历真可用“酸甜苦辣”来形容,虽然掌握了一些技术,但
    
    
,现在的我还远远不能称之为高手,才学4年编程,有太多的东西等着去征服 :网络,D3
    
    
DWDMCOMLinuxJava......或许十年后,等我长到身后的塑像那样髙时,可以这么
    
    
认为。(给我来信的话,叫我foolish就行了^-^
    
    

  
  
   
    
  
  

  
  
   
    
  
  
学好VC的建议  
   
   
  在我初学编程的时候,特别想有人能告诉我,先学哪个,看那本书好,可惜没人告诉
    
    
我,自己绕了好多弯路总算走上正轨了,但,如果最开始就有人能扶我一把,可能能到更
    
    
高的境界,我把我的一些想法写出来,希望对初学者有帮助。
    
    

  
  
   
    
  
  
  我以为,初学者先学SDK,再学习MFC比较好,而这时学习MFC就不用怎么看书,多看源
    
    
+MSDN就可以了。
    
    
至少我是这么认为的,全新的《深入潜出MFC》现在还摆在我书架上没翻过。
    
    
我觉得比较好的学习路线 
    
    
C ==>Programming Windows(上)》==> C++ ==>Advanced Windows==>Programm
     
     
ing Windows(位图)》
     
     
==> 学习MFC,听说Jeff Prosis有一本书非常不错,也有中文版。(残念)
     
     
==> 学习HookWindows 95 : A Developer's Guide -- 
    
    
==>Inside The C++ Object Model==>Inside Windows 2000
     
     
至此,九阳神功已有小成,除了驱动,再往下学习别的应该都没什么困难。
    
    
你可以大量的看源代码,这对提高水平很有帮助。
    
    
PicViewer的就是我仿照PJ NaughterDIBImage编写的。
    
    

  
  
   
    
  
  
  MFC?直到现在,我还是只把它当作一套不错的界面库,其他我都用FLib+STL实现。C
    
    
File?有了内存映射文件,ReadFileWriteFile只能去干读/写端口的事了。建议系统相
    
    
关:内存,REG,映射文件还是自己封装一遍的好。
    
    

  
  
   
    
  
  
  当你写过一些代码后,应该确定一种固定的编程风格,我是 follow Petzold's styl
   
   
efeels good
   
   
并尝试写一个应用软件,这可以提高编程的整体性。
    
    

  
  
   
    
  
  
  VC的调试器非常优秀,没有SI强大,但简单实用,memeorycall stackdisASM,这
    
    
些都需要无条件地熟练掌握。
    
    

  
  
   
    
  
  
  最后,在任何情况下也不要认为自己精通C++,即使在看完《Inside C++ Object》。
    
    

  
  
   
    
  
  

  
  
   
    
  
  
我认为经典的一些书 
    
    
Charles Petzold 的《Programming Windows -- 入门
    
    
Jeffrey Richter 的《Advanced Windows -- 经典中的经典,我太喜爱这本书了
    
    
Jeffrey Richter 的《Windows 95 : A Developer's Guide -- Hook
    
    
Matt Pietrek  Windows 95 System Programming SECRETS -- PE
    
    
Stanley Lippman 的《Inside The C++ Object Model -- 适合于摆在床头,睡觉前翻几
    
    

    
    
Mark Nelson 的《数据压缩原理与范例》 -- ZipRarGif不再神秘
    
    
Don Box 的《Essential COM -- 你很想把你的C++类放入DLL中吗?但......
    
    
Walter Oney 的《Programming the Windows Driver model -- 底层Driver
    
    
SolomonRussinovich 的《Inside Windows 2000 -- 你真的了解Windows吗?一本看起
    
    
来会打击自信的书。
************************************************
文章来源:

    
    
     
     http://bbs.ustc.edu.cn/cgi/bbsanc?path=/groups/GROUP_3/CS/D6F5A8D99/M.1046357873.A
    
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值