开发者是否该学习C++语言

  次阅读 作者:智能小宝 来源:互联网 2016-01-26 10:27 我要评论(0)

随着C++ 11和C++ CX的引入,很多人重新燃起了对这门语言的兴趣。不少开发者,尤其是Windows开发者,都想知道是否应该放弃C#和Java,转而支持C++。 John Sonmez认为这并不需要。

在 为什么C++并没有 王者归来 (Why C++ Is NotBack ) 一文中,John Sonmez认为只有如下三个原因才会使用C++:

● 需要榨干软件每一寸可能的性能,并且想用支持面向对象抽象的语言来实现。

● 编写直接面对硬件的代码。(例如,编写底层驱动。)

● 内存控制与定时极为重要,因而系统的行为必须是完全确定的,还必须能够手动管理内存。(想一下控制机器移动部件的嵌入式实时操作系统。)

Herb Sutter高度称赞了这篇文章,认为文中的 观点有些深度,没有夸张 。关于C++的应用场景,他又做了一些补充:

● 服务,依赖于运行时会更为困难。

● 测试,对比一下全部或者大部分采用静态链接的应用程序与在最终用户机器上往往是首次执行时才编译或即时编译(JIT)的应用程序,后者无法完整地测试。

John Sonmez反对学习C++,过于复杂是原因之一。即使C++ 11让开发容易了一些,但是程序员仍然不得不学习各种老式的C++编码方法。 你会碰到20年前的C++代码,看起来就像是完全不同的语言。 为了加强其观点,他向准备应聘C++职位的开发者提出了36个问题。下面列出几条:

1.在C++中,基本数据类型有多少种初始化方式?你能都说出来吗?

12.什么是复制构造函数,何时会用到?尤其是与赋值操作符相比,你能区分吗?

16.在C++中,何时适合通过引用来返回值,何时不适合?

33.为什么绝对不应该在析构函数中抛出异常?

反对C++的另一个理由是 编程语言真正需要的是简化并提高抽象层次,而不是反其道而行之 。他继续道,

编写底层代码的需求总是存在的,但我们今天编写的大部分都是较高层次的代码

很多年前,当我终于无法再坚持认为我用C++开发应用的速度比C#快时,我跳下了C++这条船。

我坚持良久,试图让自己相信我在C++上的所有投入并没有白费,但是事实证明, C#带来的简化是如此之大,以至于与此相比,C++所提供的额外的力量并不值得这些额外的付出。

在文章结尾,John Sonmez说到,学习C++对于理解计算机的一般工作原理仍然是有用的, 但是我认为C++不会东山再起,这是好事 。

开发者是否该学习C++语言 三联

关于这一点,Alo补充到:

我是从C++开始的,而且我职业生涯的前四年都花在了C++上。这种经验对我非常有价值,正如您的文章中所指出的那样,因为一旦把C++学到了足够的水平,就可以很快地捡起其他任何语言;此外,还能从一个更低的层次上更深刻地理解软件工作原理如果从其他层次更高的语言开始学习编程,获得这种知识的难度就大多了。正因如此,我一直不赞成让程序员从Java开始学起。

Richard Dunks反驳到:

我认为,在第一学期的程序设计导论课程和数据结构的教学中,C++是没什么帮助的,因为光实现就要耗费很多时间,反而让同学们忽略了他们要复现的结构。我很高兴自己能够精通C++,但我认为这并不值得,而且C++绝对不是一门万能的教学语言。

Stephen Cleary有一条评论谈到了可重用性:

我原来是C++开发者,几年之前,市场的压力让我成了一名C#开发者。C#的确更有生产率,但是完全不可能实现C++模板那种级别的代码复用。

经典的例子就是容器、迭代器和算法这三驾马车。在C++中,能够创建一个用于任何容器的算法,而且可以在编译时对算法加以调整以便必要的情况下利用随机访问能力。你可以用C#试试。这还是尚未谈到 新C++ 的情况;1998年的C++对代码复用的支持就比现在的C#好了。

关于性能,Herb Sutter给出了如下建议:

在任何语言中,如果非常关注性能,都会大量使用数组(未必 总是 使用,只是 大量 用到)。不过这在有些语言中很容易,可以很好地控制一般内存布局,特别是控制数组;而在其他语言或环境中就困难一些(有可能让你使用,但更为困难),如果这些语言或运行时特别偏爱通过指针构造的数据结构,你就不得不放弃 或者 尽量避开 。

除了在Herb Sutter和John Sonmez的相关博客上的大量高质量评论,Reddit的Programming和Coding子群组也有很多可以学习的东西。

C++

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...