游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3801|回复: 10

学习C++必须“罢黜百家,独尊儒术”么?wxh zt

[复制链接]

1367

主题

1993

帖子

2118

积分

金牌会员

Rank: 6Rank: 6

积分
2118
发表于 2004-11-16 20:37:00 | 显示全部楼层 |阅读模式

许多朋友都认为,学习C++要专一,了解过多的其它语言就把精力分散了,有百害而无一利。我不同意这种观点。

我认为,程序语言的演化是相互学习、相互借鉴的,一个好的语言往往是吸纳了多种其它语言的优点、摒弃了它们的缺点才形成自己的风格的。所以,了解的知识面越宽,所能够横纵比较的范围才越大,才越能够明白C++为什么要设计成这个样子。

闲言少叙,现看看Bjarne Stroustrup设计C++的灵感都源于何处,一下摘自《The C++ Programming Language (Special Edition)》:

很清楚,C++大大地受惠于C。除封闭了其它类型系统中的少量严重漏洞之外,C++仍然保留C作为一个子集。我还保留了C在功能上的强项,能在足够低的层次上处理最苛刻的系统设计工作。C转而从其前驱BCPL受惠颇多;事实上,BCPL的//注释约定也被(重新)引进了C++。给C++以灵感的另一个主要来源是Simula67;类的概念(包括派生类和虚函数)都是从那里搬过来的。C++有关重载运算符和自由地将声明放置在可以出现语句的任何位置的功能,使人联想到Algol68。
.......
模板机制部分地受到Ada中类属(generic)的启发(包括其威力及其弱点),部分地受到Clu语言参数化模块地影响。与此类似,C++的异常处理机制部分地受到Ada、Clu 和ML的影响。其它方面的开发是在1985~1995的时间跨度中做出的,例如,多重继承、纯虚函数,以及名字空间,这些基本上是在C++使用经验推动下推广而来的,而不是由其它语言引进的。

由此可见,C++语言的设计者Bajarne Stroustrup、STL的设计者Alex Stepanov绝非只懂一种语言,我推测他们每人至少懂个七、八、十来种,不然怎么取长补短的设计出如此优秀的C++语言呢?

另外,C++重实用的语言,而不是那种盲目追求完美的语言。在《C Traps and Pitfalls》(中文版叫做《C陷阱与缺陷》)的中文版的附录上记录着这样一个典故:

王曦和孟岩采访Andrew Koenig时,曾问:“有时,编写平台无关的C++程序比较困难,而且开发效率也不能满足需求。您是否认为把C++与其它的语言,尤其类似Python和TCL/TK那样的脚本语言合并使用是个好主意?” Koenig回答说:“是的。我最近在学习Python,得出的看法是:Python和C++构成完美的一对组合。Python程序比相应的C++程序短小精悍,而C++程序则比Python快得多。因此,我们可以用C++来构造那些对性能要求很高的部分,然后用Python把它们粘在一起。Boost中的一个作者Dave Abrahams写了一个很不错的C++库,很好的处理了C++和Python的接口问题,我认为这是一个好的想法。”

C++的专家尚这么说,我们何必又何必强出头,盲目狂热,做愤青呢? 俗话说,艺多不压身,多学有啥不好?站得高方才望的远,知道的多才能领悟的深。当然,这只是我的个人看法,并非希望强加于你。我认为,学习也需顺其自然,别把人家的建议当金科玉律,方法和资料需由着自己的性格和习惯来选取,别人觉的好的,未必适合你!

0

主题

108

帖子

153

积分

注册会员

Rank: 2

积分
153
QQ
发表于 2004-11-16 21:55:00 | 显示全部楼层

Re:学习C++必须“罢黜百家,独尊儒术”么?wxh zt

      楼主的第一句话里“了解过多的其它语言就把精力分散了”,这里重在“过多”二字,有了这二字,我觉得这话还是对的。
      像C++这样的现代语言已经足够复杂和庞大,对于一般程序员来说,花好几年时间也未必能熟练使用它,学很多语言是不必要的,也是不可能的。
      罢黜百家,独尊儒术倒也不必,我想关键是要专注于一种语言,尽可能的去精通它,在此基础上,掌握其他一、二种语言,以和自己擅长的语言相配合使用。比如做游戏开发,深入学习C++,再学个脚本语言,比如python,用C++和Python搭配使用,这样比较方便。
      其他语言得以存在,就证明了它们有自己的特点,很多语言功能上虽不及C++,但开发方便,或者在某一方面有长处。
      但楼主所举的例子对大部分程序员不适用,因为大部分程序员不需要像Bjarne Stroustrup那样发明一个新语言。也不可能深入到计算机语言大师那样的地步,有时过于广泛,最后反倒一样不精,这不是一件好事。

1

主题

60

帖子

60

积分

注册会员

Rank: 2

积分
60
发表于 2004-11-16 22:06:00 | 显示全部楼层

Re:学习C++必须“罢黜百家,独尊儒术”么?wxh zt

C++不是一个完美的语言。不支持metadata,不支持reflection。从未来的角度看这绝对是致命缺陷,也决定了它的应用是有很大局限性的。尽管一辈子研究C++也研究不完,但也不能把目光只局限在C++里。

不过目前就使用场合的广泛性而言,没有其他语言能够超过C++。因为它比其他语言更多的面向机器。它提供比其他语言更多的灵活度。仅此而已。

68

主题

710

帖子

719

积分

高级会员

Rank: 4

积分
719
QQ
发表于 2004-11-17 12:04:00 | 显示全部楼层

Re:学习C++必须“罢黜百家,独尊儒术”么?wxh zt

各有所长!
本着解决问题去选择编程语言才是最高效的!!
不是吗?

11

主题

136

帖子

142

积分

注册会员

Rank: 2

积分
142
QQ
发表于 2004-11-17 14:06:00 | 显示全部楼层

Re:学习C++必须“罢黜百家,独尊儒术”么?wxh zt

支持一下

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2004-11-17 18:11:00 | 显示全部楼层

Re:学习C++必须“罢黜百家,独尊儒术”么?wxh zt

讨厌讨论语言的好坏问题

17

主题

159

帖子

159

积分

注册会员

Rank: 2

积分
159
QQ
发表于 2004-11-17 18:14:00 | 显示全部楼层

Re:学习C++必须“罢黜百家,独尊儒术”么?wxh zt

对于新手来说楼主的说法不现实,我们学一种语言都累个半死哪有精力学别的

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2004-11-17 21:03:00 | 显示全部楼层

Re:学习C++必须“罢黜百家,独尊儒术”么?wxh zt

是我们学语言.不是被语言来玩的。 学着是来用的。语言只是个工具而已.仅此

5

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2004-11-18 03:48:00 | 显示全部楼层

Re:学习C++必须“罢黜百家,独尊儒术”么?wxh zt

再有一门语言弄得比较精的前提下,别的语言,多了解点也没有坏处。
不过话又说回来,只要你有一种语言能写得很好,那随便拿一种别的语言来,你要弄明白语法也很容易

28

主题

685

帖子

703

积分

高级会员

Rank: 4

积分
703
发表于 2004-11-18 10:31:00 | 显示全部楼层

你需要学习三种语言:底层开发语言,RAD开发语言,脚本

rt
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-23 09:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表