一位怀疑论者眼中的C++发展史

一位怀疑论者眼中的C++发展史


作者: Chad Perrin
翻译:PurpleEndurer,2011-01-17第1版
分类: C/C++, Go, Mac OSX, Objective Caml, Objective-C, Programming Languages
标签: C, 苹果公司, Apple Inc., C++, Language, Bjarne Stroustrup, Objective-C, C/C++, 编程语言, Programming Languages, 软件开发, Software Development, 软件/网站开发, Software/Web Development

 

  Bjarne Stroustrup把编程语言C++设计为C语言的一个改进版,融入了一些增强特性。其中最生要的可能就是内置了面向对象编程机制,如该项目早期开发阶段的暂定名称所示:“带类的C(C with classes)”。
  它大量应用于注重性能的软件开发,特别是在非常复杂的应用程序开发领域,在其中使用一点OOP就对那类复杂处理大有帮助。不幸的是,C++本身是一个极其复杂、令人讨厌的语言。
  起初,设计者承诺C++会成为带有面向对象编程机制的C语言超集。在大约同一时间(之后不到三年)围绕相同的目标发展出了另一种语言,即Objective-C。

  在很大程度上,语言之间的差异可以归结为两点:


▲它们设计所受的影响
▲它们对早期目标的实现程度


  在维基百科的条目中,C++受到了大量语言的影响,这些语言包括C(这很自然), Ada 83,ALGOL 68,CLU,ML和Simula。对大部分C++普通用户来说,要不加思索地把这些语言列出来可能会有困难,并且即使让普通C++程序员各自列出清单,再从中随机抽出两张清单来进行比较,上面列出的语言一般也不尽相同。这些语言对C++的影响在一定程度上被它们对新语言的屈从而掩盖起来了,并且有一些人可能会提议苦艾酒(absinthe)是另一个重要的影响。


  *PurpleEndurer注:维基百科中的C++条目

http://zh.wikipedia.org/zh-cn/C%2B%2B

 

  相比之下,Objective-C所受的两大影响,即使是最菜的Objective-C程序员(可能不包括那些不知道程序设计语言的历史比MacOS X更悠久的人)也会立即想到:C和Smalltalk。维基百科上关于Objective-C的文章里提供了这两个,并且也只有这两个,它们对Objective-C语言设计的影响显而易见。
  就达到早期设计目标——提供C语言的一个具有面向对象编程机制的超集这一方面说,Objective-C在所有必要细节上展现出了成功,而C++在某些方面看起来更像是在权衡中放弃了这些目标,来追求光彩眩目的替代品的结果。
  由于Objective-C受到的影响要比C++更简单,如此一来语言设计也更简单。苹果公司(以及之前的NeXT)选择Objective-C作为其主要面向对象应用程序和系统开发语言的原因看起来很明显,就是因为它提供了设计上的简洁和优雅——至少与C++的设计相较而言。此外,被选为苹果公司平台(如MacOS X和iOS)上的语言,也许会让它显得更为卓越,但在普及和影响力方面,C++却是明显的赢家。即使在现在,C++在问世这么多年后仍被大量使用着,并没有像Objective-C那样经历过大沉浮。例如,它是非苹果平台上的所有最流行网络浏览器的核心实现语言;Chromium,火狐,IE浏览器和Opera都大幅使用C++来创建。甚至苹果公司的Safari浏览器也主要是用C++编写,尽管MacOS X上的其他浏览器都是使用Objective-C语言开发。
  事实也许是,C++比Objective-C早大约三年时间进入市场,这导致了C++的巨大成功,而Objective-C则在受欢迎程度上失了先机。最终我们虽然可以在每一个主要书店的架子上都发现与Objective-C语言有关的编程书籍,但这些书着重于介绍MacOS X和苹果iOS平台上的开发。把Objective-C当作通用、与平台无关的语言来使用的想法显然不够受欢迎,相关的书籍自然也不为售书商所亲睐了。
  C++所受的批评似乎大大多于它所获的赞誉。与此同时,谈论Objective-C的人(大部分)是苹果软件平台的开发者。专注于苹果软件平台的开发者通常会被对苹果软件平台存有偏见的其它程序员认为是靠不住的,如此一来,他们对Objective-C的高度赞扬在非苹果平台开发者中影响不大。
  C++语言所受的可能最好的两个批评都得归因于Stroustrup自己。第一个是他声称“用C语言很容易搬起石头砸自己的脚,而在C++里你想搬起石头砸自己的脚更为困难了,不过一旦你真的做了,整条腿都要报销。”(C makes it easy to shoot yourself in the foot, and C++ makes it harder — but when you shoot yourself in the foot with C++, you typically blow off your whole leg.)第二个是他接受IEEE电脑杂志的采访,该杂志因被认定不能出版而被搁置。在采访中他“承认”C++从一开始就完全是个玩笑,他又诙谐地颂扬它的缺陷。Stroustrup已经否认该文章,称这是一个骗局,并说他认为如果文章是他自己写的那将会更有趣。


  *PurpleEndurer注:关于这次采访可参考:面向对象是个骗局?!
http://sd.csdn.net/a/20100929/280061.html

 

  在读到这篇虚构的采访文章时,人们一时可能会不由地放弃了对“C++真的从一开始就完全是个笑话”的问责。如果是这样,那么这个笑话似乎是以Objective-C受损为代价的,它默默无闻地徘徊了将近一个时代——电脑技术的时代——在最终于苹果软件开发社区觅得适合的位置之前。事情的事实是,没有Objective-C和Cocoa,苹果公司将几乎肯定会在寻求支持其平台的开发者时遇到真正的麻烦;在使用这些工具进行开发的过程发现了许多喜悦,这有助于受苹果公司的法律和市场部门拘束的开发者们克服他们的一些疑虑。

  现在有人可能会认为C++的日子屈指可数了。那些看起来似乎更适合于同样工作的备选方案纷纷涌现,而Objective-C作为明显的直接竞争对手,在某些方面却是其中最无关紧要的一个。Objective Caml经常被举为高性能语言的一个棒样,它不仅经常在基准测试中以显著幅度领先于C++,而且提供更加简洁和组织良好的源代码,并向开发者们提供更干净、更有趣的开发模式,它甚至不起源于同一个编程语言家族。D语言旨在参与同一领域的竞争,但其专有根源可能妨碍其广泛采用。谷歌的Go语言虽然作出了有争议的取舍,但毫无疑问,它在设计上为包括并发在内的某些类型的软件开发提供了巨大的优势。

 

  *PurpleEndurer注:关于Objective Caml,可参考:OCaml - 维基百科,自由的百科全书
http://zh.wikipedia.org/zh/OCaml

 

  不过,由历史经验教训来看,我倾向于认为在未来一段时间内,C++还有一段漫长、稳定的任期。它甚至偷偷进入操作系统内核开发领域多年,这对那些关心操作系统可靠性之类事情的人来说是一个可怕的想法。毫无疑问,C++为某些对性能要求较高的编程类型提供了一些优于C语言的优势,并且它的库支持极其广泛——堪称传奇。尽管如此,至少其对把持开发者的某些力量似乎是基于对替代品的一无所知,这是一个不会很容易就被潜在竞争对手推到一边置之不理的特点。(完)
http://blogs.techrepublic.com.com/programming-and-development/?p=3379&tag=leftCol;post-3379

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 38
    评论
C 语言也能干大事 第一课板书................................................................................................................................. 1 第二课板书.................................................................................................................................3 第三课板书.................................................................................................................................4 第五课板书............................................................................................................................... 11 第六课板书............................................................................................................................... 13 第七课板书............................................................................................................................... 15 第一课板书 1、C 语言不是只能开发黑底白字的控制台界面程序。学习本课的基础:本课程不讲 C 语言 基础知识,C 语言考及格,学的过程中配合复习,有不懂的回去翻书。 2、学完本课程以后同学们做的一些作品赏析:计算器、俄罗斯方块、音乐播放器、学生管 理 系 统 ( http://www.rupeng.com/forum/thread-2487-1-1.html ) 邮 件 客 户 端 , ( http://www.rupeng.com/forum/thread-3697-1-1-uid7.html ) , Web 论 坛 (http://www.rupeng.com/forum/thread-3991-1-1-uid7.html)可以开发游戏、网络程 序、网站程序等。C 语言什么都可以开发 3、准备工作,安装 VC6(在网上搜“Visual C++ 6”,找合适的地址下载) 。VC6 在 Vista、 Windows 下启动可能有兼容性提示。 4、开始做第一个 C 语言的程序 【文件】→【新建】 ,打开【工程】选项页,选择【Win32 Application】 不 要 选 错 了 ) ( ,在 “位置”中修改工程保存的路径。 (以前用 Tubor C 的同学会问“什么叫工程?”。在以前大家 用 TurboC 写的程序一般也就是一个文件, 但是用 C 语言写大程序的时候不可能把所有的代 码都写在一个文件中,肯定要写很多文件。“工程(Project)”就是这些文件的一个集合。 ) 在“工程名”中写入你为这个工程取的名字, 最好有一定意义。 下一步【一个简单的 Windows 程序】 5、向 Windows 的世界问好 MessageBox(NULL,TEXT("世界你好"),TEXT("问好"),MB_OK); VC6 在 Vista、Windows 下编译调试时可能有兼容性提示。 6、学本课程常见问题 (1)为什么不用 TurboC? Turbo C(Win-TC)太老了,界面还是 DOS 界面,库也是 DOS 的库,没有网络开发包、 没有 Windows 界面开发包。TC 只能用来学 C 的基础,要进行实际开发必须使用先进一点 的工具。还是让 TurboC 进博物馆吧。 (2)为什么不用更高版本的 VC? 我们不使用高版本的 VC 主要是如下考虑: VC6 和高版本的 VC 没有本质区别 (VC6 是 1998 年的东西,大部分人、公司还是用 VC6,市面上的书也都是用 VC6) ,只不过是升级了一下 C++的版本、STL 的版本而已,对咱们这次学习没有什么影响;VC6 的操作方式和 VC2008 1

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值