看Visual C++的书,是学不了C++语言的

来源:互联网 发布:mysql 常用sql语句 编辑:程序博客网 时间:2024/05/21 12:45

Visual C++的书,是学不了C++语言的

         偶尔看到这样一句话,觉得很在理啊!

         上个星期五放的假,没有回家,前一阵子在图书馆淘了一本《Inside The C++ Object Model》,我之所以借了这本书是因为是侯先生翻译的,侯先生的书我看过几本,觉得写的或者翻译的不错,最出名的有著作《深入浅出MFC》和译作《Exceptional C++》等。翻了几页觉得还不错,由于那时要考试也没时间去看,就等着考完试再看。

         这两天有时间了,兴致很高地跑到图书馆去啃这本书,才发现,这书的难度太大了,但是硬着头皮还是能看懂一些,看完第二章,我感觉自己坚持不下去了,又回到前言,看看这本书适合什么人看的,主要写什么东东的。恰好被王为看见了,她笑着说:“看你看了两天了,怎么才看了这么点啊?”我解释道,“完全看不懂,又重新看一遍呢!”

         这本书主要专注于C++对象导向程序设计的底层机制,包括结构式语意、暂时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承。让你知道:一旦你能够了解底层实现模型,你的程序代码将获得多么大的效率。

这两年多,我的思想逐渐在变化,也一直在思考的一个问题是——我们的大学要把我们培养成什么样的人才?暂不说学校想造就什么样的大学生吧,就说你自己想变成什么类型的人。在大三以前,我考虑更多的是,两年了,我学过了C++、数据结构等专业课,但是呢,我不能做出什么玩意儿,不熟悉VC平台开发,可以说什么都干不了!我内心是非常着急的,于是就在图书馆借MFC的书在啃,也能按照书上的步骤做个计算器什么的,但是MFC函数那么多,只记住几个函数过几天又忘记了,可以说大二上我是花了零零散散半年的时间都在看相应的书籍,但是说实在的,到现在我又归零了,什么都忘记了。为什么呢?因为我没抓住问题的本质,也正是我这篇文章的题目《看Visual C++的书,是学不了C++语言的》!因为以前我看的书都是关于如何用VC进行开发,而没有讲到MFC最核心的消息响应机制、MFC框架等等问题。

我那时把自己定位在应用上,学到的东西就想有实际效果。所以我曾经自学过photoshop,选修了flash、网页制作等公共选修课;就在其他人拿着计算器算自己一学期平均成绩的时候,我选择将成绩单复制到一个文件里,直接编了个简单的程序读文件并计算;当我看见大二每次做完大物实验,每次都要处理非常繁琐的数据,而且每次都是一样的计算过程的时候,我想到编了一个简单的大物数据处理器;大二下学期初花了一百多块钱买了一个单片机,自己在宿舍编程烧写进去,那种成就感远比在黑框框下出来一个结果要强;之所以很早就在自己的专业方向定在嵌入式上时,也是因为这个直接应用型较强……

现在回想起来,前两年确实只想着学习就要应用出来,看到别人能做出的东西自己心里就着急的慌,例如看见非计算机的做网站做的忒棒,那些大专生做软件做的忒好,我就想亏我还是重点大学的学生,我这两年学到什么了,能做什么?能做一个数据库吗?能做一个网站吗?….

而这个学期,我逐渐明白,原来我是“计算机科学与技术”专业的学生,科学永远是在技术的前面,我不能把自己定位成到大学是学一门技术的,而更多的掌握这门科学。我如果将来做软件的话,可能学不学数电、模电无所谓,甚至还有微机、组成、编译不学都没关系(大专生基本上都不开设这些课程),只要教你怎么在.net下开发程序,教你Java、数据库等等,这些人出来做软件就成了“IT民工”也很难编写出高质量的软件。

我意识到,大学如果只学技术的话,我们还不如去读大专、去各种培训学校,那里在短时间会让你学会一门技术。但是,我们是仅仅局限于此吗?IT行业发展太快了,我们学的一门技术也许过一年就被淘汰了,那时,你是选择再去培训学校还是放弃这个行业呢?所以我想大学学习主要是了解这个行业的特点,把握这个行业的发展趋势,以及提高自己解决问题的能力,还有这个专业的核心技术。

大三这半年我一改以前的坏毛病,不再去花时间看怎么使用一门语言,而是转向去挖掘这门语言的内在机理。发现图书馆真的很多好书,看这些书才知道原来我以前所理解的很多问题都只停留在表面,其实真正本质的东西绝不是死住语言的语法。例如我们调试程序的时候,编译的时候会出现很多errors,如果我们不知道编译器在背后做了哪些工作,调试程序将会变得非常麻烦。

程序员部落酋长Joel在《软件随想录:程序员部落酋长Joel谈软件》一书中,给计算机系学生的八条建议中有这样一段话:

“毕业之前学好C。…我不管你懂多少延续(continuation)、闭包(closure)、异常处理(exception handling),只要你不能解释为什么while(*s++=*t++);这句代码的作用是复制字符串,或者不觉得这是世界上对你来说再自然不过的事情,那么你就是在盲目无知的情况下编程。在我看来,这就似乎一个医生不懂得最基本的解剖学就在开处方,他看病的根据完全是因为那些娃娃脸的医药厂商销售待表说这种药有用。

要学的还很多,知识是无穷的,技术也是学不完的,要想立足于这变化的行业,就必须要适应变化,要有快速学习新知识的能力!

 

 

 

原创粉丝点击