对人工智能常见的误解有哪些_C ++的常见误解

对人工智能常见的误解有哪些

“字母黑色漩涡”,由纳撒尼尔·舒曼Unsplash

C ++在最近几年得到了巨大的发展,但仍被许多人视为2000年代初的语言。 让我们消除一些神话……

C ++是一种垂死的语言

C ++实际上正在增长! 即使计算机变得越来越快,我们对它们要做什么的要求也在不断增加。 C ++是使我们能够最大程度地发挥硬件潜力的少数语言之一。

CPP Con的Stroustrup的演讲显示了C ++的发展轨迹。

C ++冗长且无用

使用新的auto关键字和lambda语法,C ++可以是正确,快速简洁的。

例如,比较JavaScript和C ++ 14中的这两个程序:

好的,所以C ++会稍长一些,但是请考虑一下您得到的回报:

  • 强类型系统和编译时类型检查
  • 没有像Node.js这样的运行时依赖项
  • 执行时间的分数

C是C ++的子集

尽管通常可以在C ++中包含C代码,但并非总是如此。 以下代码段是有效的C,但不是有效的C ++:

您需要了解C才能了解C ++

C ++是其自己的语言,具有自己的习惯用法和最佳实践。 如果您仅学习C ++作为C的扩展,那么您将不会学习这些模式并且可能编写容易出错的代码!

凯特·格雷戈里(Kate Gregory)对此进行了精彩的演讲,这很值得您花时间。

有多少开发人员因为被教导像C那样使用C ++而对C ++产生了消极的体验?

C比C ++快

C ++允许您编写可编译为等效C的抽象。这意味着,一定要小心,C ++程序的运行速度至少与C程序一样快。 与C相比,C ++的优势在于它使我们能够使用模板,OOP和功能组合来构建可重用的抽象。

C ++为您提供了在类型系统中编码意图的工具。 这使编译器可以从您的代码中生成最佳二进制文件。

C ++不是跨平台的

C ++ 语言是完全跨平台的。 许多人声称不是C ++的原因是,标准库没有为文件系统,网络访问等提供平台抽象,而Java等语言却没有。

相反,C ++要求您使用一个库或编写自己的库。 这似乎很痛苦(尽管使用软件包管理器要痛苦得多),但这实际上是一件好事。

  1. 为了面向新平台,编译器实现者的实现量较少。
  2. 功能有限的平台目标可以支持C ++。 如果该标准要求平台由于硬件限制而无法提供某些功能,将会发生什么?
  3. 您可以自由选择最适合您的应用程序的库。 这不是一种适合所有人的尺寸。
apt-get是C ++的软件包管理器

我们在上一篇文章中介绍了这一细节,但简短的版本是:

  • apt-get仅适用于Debian变体
  • apt-get更改您的系统,这在项目之间切换时很不方便
  • apt-get不是新版本和实验版本库的好来源
C ++与类有关

在早期,C和C ++之间的最大区别是C ++提供了类。 这仍然是事实,但是类不再是C ++的主要功能。 在现代C ++中,重点是RAII模式。 C ++并非真正与类有关,而与确定性资源管理有关。

垃圾回收对于可靠的软件是必需的,因此C ++对大型项目不利

C ++资源管理(内存只是其中一种)的方法是使用RAII模式而不是集中式垃圾收集器。

这有点像其他语言中的“使用”模式。 例如,在C#中,我们可以编写:

在C ++中,处置应由析构函数完成:

请注意,这实际上并不那么冗长; 另外,我们可以对内存其他资源使用相同的模式。

但是还有另一个优点:对象处置的顺序和时间由其使用范围决定。 这使得可以在功能级别上控制垃圾回收过程,而大多数垃圾回收语言仅允许( 有限 )全局级别的控制。

在大型项目中,这是更大的好处,因为它可以防止一个模块将垃圾收集延迟引入另一个模块。 这就是为什么C ++是游戏开发和音频处理的首选语言的原因。

为了提高性能,您必须编写低级代码

C ++编译器在优化高级代码方面做得非常出色。 这样,您就可以避免编写低级的文字,同时还能获得出色的性能。 有时性能甚至会更好,因为编译器可以执行优化,而手工编写将非常棘手。

我们最喜欢的示例是使用我们的新C ++序列库Conduit 。 该程序使用lambda,协程等计算各种斐波那契数的总和:

但是它编译为:

这意味着优化器能够计算60个斐波纳契数,并在编译时将最后50个求和!

既然你在这里...

我们最近发布了BuildInfer ,这是一种用于优化C / C ++构建脚本的新工具。 看一看

翻译自: https://hackernoon.com/common-misconceptions-of-c-4f49f36b92a

对人工智能常见的误解有哪些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值