《C语言点滴》读者来信及回复

赵岩老师您好!我是一位来自四川的大二的男同学,是一名C语言的初学者,那天我冒着大雨在成都书店看C方面的书,最后买了您的那本《C语言点滴》(现在想想冒着大雨还是真值得哈:),您的书实在很有趣,我并不是计算机专业的学生,但您的书让我能了解了很多其他的东西,生动而有趣。我那天晚上花了一晚上去看一个关于 列指针和行指针的程序,看了半天头疼,翻开您的书看了指针那一章,我一下子就开窍了! 非常感谢您用生动的语言让我这样自己抱着各种书本自学C语言的学生体会到了轻松的味道! 我是一名自学者,现在学完了C语言的入门内容,我尝试编写了闹钟程序和通讯录程序,但是我现在有点迷茫,我的目标其实一方面是想学些编程方面的东西来自娱自乐,但是更多的方面其实是有那么一天我能帮我爸编写一个期货方面的软件,也就是说,我学C其实是想编写软件吧! 我想请教老师,如果我的目标是编写软件,我现在应该去学习和锻炼哪方面的内容,在您书内有一张这样的图,关于以后学习的方向,我是不是应该朝着“产品开发”方向去学习呢?我有没有必要学习其他的语言呢?

————————————回复———————————-
首先是感谢你喜欢这本书。尤其是冒着大雨,我猜一定是买完本书以后,又把书顶在头上跑回了家。最开始出版的时候,我就告诉陈冀康编辑书价要尽量便宜,陈编辑补充说再便宜也要塑封皮。如何分辨女孩背的是否是山寨包,一到下雨天立马就知道了,顶头上的都是山寨包!塞到衣服里的都是正品。为了提高本书在下雨天的销量,不得不佩服,编辑就是高!

我本来想写点鸡汤文鼓励你一下。但是现在人已经不再看完鸡汤文就跟打了鸡血般兴奋了!所以还是说点白话。总结为三个建议:

第一,我个人感觉不需要学习其他的语言,你需要把C/C++两种语言精通即可。我说的精通是指深入的精通,不仅需要知道每个语言的特性,还要知道为什么要有这个特性?这个特性最常用在什么地方?等等深层次的问题,而不要仅仅停留在语法层面上。 就像我书中介绍的C语言的函数指针,彻底了解它,你就会知道C#中一定有对应的东西存在,只不过叫做“代理”了。它们背后的概念和思想才是最有价值的,就是模拟出一个接口,来提高系统的模块化。至于在C#中如何定义一个代理,我写不出来。但是有一台联网的电脑,写出来也就是一分钟的事。

第二,多动手。以英语为例,你一定有这个体会,你可以看懂一篇文章,现在让你说一遍这篇文章的大意,你立马傻眼。背后的原因在于知识分为被动知识和主动知识。那些看到就明白,自己却不会用的是被动知识。对你有用的其实是主动知识,而且人的主动知识是被动知识的一个很小,很小的子集。要把被动知识变为主动知识,唯一的途径就是去使用,去动手。用过几次,错过几次,才能变成你的主动知识。切记,切记,切记!

第三,有没有想过为什么人一磕瓜子就停不下来,而一看书就不行?这是因为磕瓜子把一个大任务分解为很多小任务,而每个小任务都有回报!而看书恰好相反。所以在学习的路上,按照磕瓜子的战略去学习。不要上来就想编一个期货软件,今天写个hello world,明天打印个心型,后天在心上加个箭。。。。。。。

最后,说点题外话。这个世界并不是按照程序在运行。你发慢慢发现原来小成靠勤,中成靠命,大成靠爹!C/C++语言可能改变不了你的命运,但是你磕你的瓜子,毕竟也是带壳的!如果学习C/C++语言能带来些快乐,那就做一个快乐的程序员吧!(结尾上碗鸡汤,老磕瓜子人也容易上火。)