为什么我仍然使用C ++

当我于2010年加入Neurobat时,该公司的愿景是开发一个附加组件,该组件可为您的加热系统计算最佳设定点。 这样的设备必须小巧,便宜并且运行得相当快。 这就排除了当今可以舒适地运行Python的现代嵌入式PC。 整个应用程序,包括“智能”模型预测控制库,都必须使用编译成本机指令的语言进行编程

该库的大多数最初是用C编写的。不久,我们意识到设计可以从完全的面向对象中受益匪浅。 因此,一旦我们确保工具链支持C ++,便开始将许多模块移植到该语言。 (那是C ++ 98,这是我们的工具链支持的最新C ++版本。)

但是在2016年左右,该公司的策略开始从单一房屋转向使用大型商业建筑,其设施管理者对价格的敏感性低于房主。 转向可以运行Python的功能更强大的设备,甚至转向基于云的平台,已经变得很经济。 坚持使用C ++的必要性降低了,一些团队成员尝试将我们的库移植到Python。 最后,我也许是六位工程师中唯一了解库和C ++足以维护它的人之一。

但是,不仅在关闭公司之前,而且在关闭公司之后,我都做出了共同努力,以保持自己的C ++技能精明。 我读过《有效的现代C ++,现代C ++设计》,并且听了CppCast和cpp.chat的每一集。 在年度Google Code Jam竞赛中,我第一次使用C ++而不是Python。 我为什么要这样做? 更重要的是,您应该吗?

如果您正在执行任何类型的编程,我相信您将从了解C ++中受益,这就是原因。

  1. C ++已有30年的历史了,并且可能会保持高度相关的地位还有很多年。 与解释或编译为字节码的“托管”语言相反,它可能是最流行的被编译为机器指令的语言。 它显然主导着这一利基市场。 除了D,Rust和Go之外,我想不出其他选择。 C ++可能是在裸机上运行的最具表现力的语言,仅凭这一点就足以了解它。
  2. C ++仍然是编写对其他语言或环境的扩展的最佳选择。 没有C / C ++,扩展现有系统的唯一方法是用相同的语言编写库,该库的性能仅与该语言平台相同。 例如,我目前主要使用R,在为该环境编写高性能扩展时,C ++是非常自然的选择。
  3. 不管是好是坏,C ++都具有几乎人类所熟知的所有编程语言功能。 它被称为多范式语言,并且有充分的理由。 它结合了过程,功能,面向对象和通用编程的各个方面。 从正在考虑和发布的新功能的速度来看,它目前正在经历某种复兴。 如果您正在寻找一些智力上的挑战,请帮个忙,并为它提供一些C ++。

我知道C ++因其复杂性和语法而获得了一些不好的声誉,但是我相信大多数批评都是没有根据的。 我知道有很多真诚地声称自己爱C ++的程序员和声称自己喜欢Python的程序员。 学习曲线陡峭,但值得攀登。 你会加入我的旅程吗?