鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 编程语言开发 > c++ > >

我关于C和C++的一点观点

来源:互联网 作者:佚名 时间:2013-08-20 07:48
嗯,我昨天写了一篇《我这一年》,表示最近有点时间了,可以写点博文了,网友们就很热情,马上在回帖中提问,其中有一篇比较引起我注意,就是和我讨论我的书《0b

 嗯,我昨天写了一篇《我这一年》,表示最近有点时间了,可以写点博文了,网友们就很热情,马上在回帖中提问,其中有一篇比较引起我注意,就是和我讨论我的书《0bug-C/C++商用工程之道》里面对C和C++的应用比例和深度问题。

应该说,我自己一直定位还是技术人员,我呢,也有兴趣在关于技术方面展开一些讨论,所以我暂时放下准备回复的一些其他朋友们的问题,先回答这个问题。

先立一个大前提,我无意引发语言之争,在我心目中,各种语言无优劣之分,合用的就是最好的,不同意这个观点的朋友,就不必向下看了。谢谢!

原文如下:

肖舸老师您好!
  我是一名在校计算机专业在校研究生,一直默默关注您的博客,您所写的东西给了我莫大的帮助,开阔了不少视野。之前买了您的书《0 bug C/C++商用工程之道》,目前阅读了大概2/3,我觉得的书中的内容对我受益匪浅,除了增长了经验性质的东西,也学习了不少实用的以前不曾所知的技术,真的非常谢谢您!希望以后还能出这样类似的好书!
学习归学习,肖老师是业界的专家,而我只是初出茅庐的小鸟,不过我对肖老师书中的个别观点不太苟同。肖老师C语言的功底非常深厚,但是对C++的理解一定不够深,或者说对面向对象的编程不够深(至少在写这本书之前)。肖老师鼓励我们不用多态、继承等面向对象的高级特性,只是把C++当作了一门多了封装特性的C语言,开发方式上仍然是纯面向过程的,这点至少这是本人从书中所看到的,我想肖老师那时肯定没看过关于设计模式方面的书吧,以至总是把C++当做只是多了对象的C语言去用。《0 bug C/C++商用工程之道》中讲解到的基础库,因为都只是基础功能性质的数据结构或库,所以对面向对象的高级特性依赖不多,但是在开发实际应用层面上的东西或软件架构时,面向对象的高级特性能有效降低系统的耦合性,增强系统可维护性。
  不过我仍然觉得《0 bug C/C++商用工程之道》是一本不可多得的好书,个人只是不太苟同里面对于C++使用的观点,这个纯属自己本人观点。再次谢谢肖老师,希望能再读到类似的好书!

我的回复:

这位朋友你好,感谢你对我书的关注,关于你的问题,我可以做一点说明和探讨。

嗯,关于C和C++使用深度比例的问题,我同意你的看法,我其实对C++了解并不深入。对于你说的多态、继承等面向对象的高级特性,理解不深刻。设计模式也没怎么看。呵呵,是不是有点失望?

是这样的,香港服务器租用,我是商业化程序员,从1995年我进入游戏公司,正式成为一个职业程序员开始,嗯,怎么说呢,压力一直在这么多年伴随着我,其中主要就是生存压力。

了解我的朋友都知道,我原来是学习建筑的,计算机软件专业是半路出家,就是因为喜欢,所以我放弃以前国营单位的建筑施工员职务,专门跑到成都一家公司打工,写程序。

这种情况下,我起点比别人低,又要在这个行业里面生存,怎么办呢?

我首先要学习,以获取足够的职业技能,来满足工作的需求,不然就会被炒掉。但另一方面,我也不可能像大学里面的学生一样,系统地学习,为啥?我还得先写出程序来,让老板赚到钱,我也才能领到我的薪水吃饭。

所以,我的学习,我想,社会上很多职业程序员的学习模型,大概都差不多,我归纳就是“用以致学”。即用到哪块知识,就恶补哪块,很K书,多做实验,多掌握一点细节特性,以便立即应用到工作中。

说个笑话,以前我基本上每找到一份工作,都需要恶补1~2个月,为啥,因为工作机会这个东西,只有我将就他,不可能他将就我,如果他需要的知识我没有,我就恶补,然后还要在以后的工作中,边做边学。

这样做的好处和坏处都是显而易见的:

坏处是我没有经过系统的理论训练,对于很多理论上已经定论的东西,不知道,非得自己试验出来,才能深刻了解。实际上,这是走了很多弯路,做了无用功。而且,我在工作中的用词、用语习惯,和很多科班出生的人不一样,大家沟通不容易。

但好处是我们脑子里面没有条条框框,一个语言、一个技术,大家都说好,我未必说好,我喜欢自己来测试,看能不能带到我的工作中有效帮助我,不行的就算了。并且,由于很多试验我不是听人说的,而是自己做试验的结果,所以很多东西很凌厉,实用性很强,对于解决实际工作中的问题,很有帮助。

所以,这个问题我认为见仁见智,还真说不好那个就是最优秀的,科班出身和实做出身,都能成才,也都有混不下去吃不上饭的。你说是不?

但我想有一点是最重要的,长期这么坚持,我养成了一个习惯,就是“实践是检验真理的唯一标准”,特别强调实验法和方法论,很少去人云亦云。结合到我们的软件专业,我也总结出一句话,你看看能理解不:“计算机是检验程序的唯一标准”。

一个程序、一个语言,一门技术,你说好不好,没用,我说好不好,也没用,计算机说了算。我今天有个用户需求,它满足了,并且开发起来多快好省,就是好东东,满足不了,说什么都是假的。这就是我对技术的看法。呵呵,你看呢?

嗯,归纳到C和C++语言上,我是这么看得,两个都是语言啦,它们和其他Basic语言、汇编语言、C#、PHP、Java。。。等等,这些语言来说,并不具有什么高贵之处,任何语言,能解决问题就是好语言。大家觉得呢?

我呢,前期从汇编入行,如果说我有面向过程的情节,我是同意的,对于面向对象,我学了一点,能理解,够用了,我觉得就好了,我毕竟不是语言专家,不需要对一门语言掌握到100分的。只要它能满足我程序开发需求就好了,这中间,还不能产生太大的学习成本,因为我不可能脱产几个月去学习,那不用等我学好,工作就丢了,我也饿死了。呵呵。

但是,后来即使我薪水慢慢增高,已经有条件深入研究C++这门语言的时候,其实我也没有兴趣去研究它了。

我想我说到重点了:为什么我没有兴趣去研究它?

我得说,是开发需求。

长期的程序生涯,我想很多职业程序员都会意识到一个问题,语言不重要、平台不重要、技术不重要、算法不重要、数据结构不重要,所有这些,其实都不重要。

重要的是如何满足用户需求。

在开发中,用户需求千变万化,程序员如果不能够抽象需求的共性,而是疲于奔命地以项目制,就事论事的开发,自己的经验技术没有一个高效的积累,会累死的。

年轻时,我们还可以加班拼命,但是年纪大了呢?也和年轻人一样加班?我今年快40了,这半年加班说实话自己觉得有点来不起了,现在还行,过个三五年,我也加不动了,那个时候怎么办?

网友评论
<