AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

Stroustrup 专访:畅想 C++17

  • 2015-05-21
  • 本文字数:2252 字

    阅读完需:约 7 分钟

最近, Bjarne Stroustrup (设计并最初实现 C++ 的作者)公开的一份草案引发了一场激烈讨论,讨论的话题围绕着 C++17 的设计目标以及可能加入的新特性。据 Stroustrup 说,C++17 将会有以下三个设计目标:

  • 改善对大规模可靠软件的支持。
  • 支持更高级的并发模型。
  • 简化语言核心。

针对以上的每个设计目标,Stroustrup 列举了可加入 C++17 的新特性。以下列举一些可能成为 Stroustrup 首选的特性:

Stroustrup 警告人们不要陷入 C++17 的定义误区,列表中这些相关语言特性和标准库组件不一定可以清晰描述 C++17 未来的发展方向。真正重要的是,C++17 与 C++14 不同,这一版将作为主要版本发布,所以它需要承载一些能帮助用户更好地使用这门语言的“三两个主要特性”,例如:概念、模块和范围。

有趣的是,文档中同时也在尝试阐明 C++17 拒绝发展的方向,Stroustrup 为此特意列举了一个不受欢迎列表:

  • 将 C++ 转换为一个本质上不同的语言,或提供一系列高阶隔离子语言。
  • 为了与“每一门其它语言”竞争或让 C++ 支持一个新“范式”而给它增加新特性。
  • 增加语言的复杂度,或限制它解决“最苛刻的系统编程任务”的能力。

InfoQ 借此机会采访 Stroustrup。

你能简单评论一下 C++17**** 特性列表么?你心目中是否已有一个性能实现的优先级列表?

概念将改变我们对泛型编程的看法,使泛型编程逐渐成为主流趋势。大家经常抱怨 C++ 的错误消息提示,这是无可厚非的事实,所以概念也将努力提高错误消息的质量。我们需要将概念加入标准库以使它的影响最大化。

模块应极大地改善编译时间,并限制过度使用宏造成的负面影响,打造更好的 C++ 工具。

使用更高级的并发模型编写并发代码比使用低阶的线程和锁的方式更容易,生成的代码运行速度更快。

这些特性可以简化代码,进而提高代码质量,所以非常理想化。

** 委员会在过去几年中为 C++17**** 做出许多贡献,并计划在未来进一步改进,看起来多亏了他们的努力,C++**这门语言才能逐渐克服一些它最具争议的局限性,这证明委员会在这个过程中确有所为。你是否愿意评价委员会一直以来所做的工作?如此成功的背后有什么秘诀?

你必须面对“委员会设计”带来的问题,召集 100 多人(如果算上未出席会议但参与讨论的差不多 300 人左右)共同创造一些可靠的新东西是一项艰巨的任务。

令人吃惊的是,我们经常采用一些管理手段。的确,有很多事实证明我们本可以做得更好,委员会的工作也可能令人感到沮丧,但是让一个人来管理这么多人显然不可能。这不是委员会与个人的问题,而是如何运营委员会的问题,我们无法避之不谈。当今世界中很少有单一个体可以完成的重要工作。

**C++17**** 证实了 C++**** 本质上要成为一门复杂的多范式底层语言(底层意味着允许使用非常细的粒度控制语言语义)。在此基础上,委员会仍然不断努力使 C++**** 更易用。你能为我们阐述一下更易理解的 C++**背后的语言哲学么?

我们不应该考虑 C++ 的阶级属性,而应该把它当做这样一门语言:拥有直接操作硬件的卓越本领;具备一系列抽象机制,允许我们根据自身需求提高抽象等级。许多重要任务需要依赖临近硬件的编程,但偏向于底层的编程体验相对较差,C++ 可以帮助我们远离硬件,零开销的抽象无需我们增加任何成本。与直接编写机器码相比,“零开销抽象”不浪费任何一个字节和循环。通常,一个函数调用(尤其是一个间接函数调用)的开销非常大,C++ 可以提供硬件访问和抽象,同时也可以高效地解决类似的问题。相比其它语言,C++ 有着巨大的性能优势。

我不再称之为“多范式”语言。我发现这一定义让许多人只是简单地选用其中一个范式,他们没有发挥 C++ 全部的力量。不幸的是,我所做的工作目前还没有一个很好的流行定义。

委员会有他们的哲学观听起来不太公平,我们是在多种背景下成长的不同个体,我们的看法自然有所不同。我上面描述的是大多数人赞同的 C++,那正是 C++ 绝不会向异议妥协的奠基之道。我们必须严格统一语言的向下兼容性,C++ 委员会渴望进一步改进,但他们真的不希望自己那数十亿行代码失去作用。关于语言的改进,这些至关重要:哪些改进更有效,哪些改进在合理的时间尺度可行,如何将这些改进表达为语言的一部分,标准库如何定义。让这么多人在这些细节上达成一致无比艰难,我们又不得不给出最终方案,因此我写下这篇综述报告,并且我们将在下次会议上讨论相关问题。

我花费了大量时间在 C++ 及其标准化上,因为它是许多行业最重要的一部分:计算机、半导体、运输业、电信业、金融业、制造业、航空航天、娱乐业,还有许多其它行业。在大多数至关重要的系统和配件的内部,C++ 发挥着重要作用,它能为科学事业构造软件系统,做出微不足道的贡献,以上的这一切激励着我继续前行。C++ 是一个注定被用来构建重要构件的工具。

很久之前网上流传了一份 Stroustrup 在会议上的发言概要,引发了大规模讨论( reddit / Hacker News / The Register ),这份草案是后续的补充。

查看英文原文: Stroustrup: Thoughts on C++17 - An Interview


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-05-21 05:345669
用户头像

发布了 63 篇内容, 共 134.5 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

Mini LED显示屏:未来电视领域的潜在颠覆者?

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

YashanDB共享集群产品能力观测:细节足见功底

YashanDB

数据库 yashandb

深度解析:利用API技术高效采集淘宝商品信息(涵盖价格、详情图、主图、SKU属性等)

代码忍者

API 接口 pinduoduo API

统一身份安全管理体系的业务协同管理和支撑能力

芯盾时代

iam 零信任 权限管理系统 统一身份管理平台

自动化测试AI智能体:掌握AI,人人都是自动化测试工程师

测试人

软件测试

融合创新,智领未来 | 2024华为云开源开发者论坛云原生精彩回顾

华为云原生团队

云计算 容器 云原生

两招玩转阿里云系统事件监控

阿里巴巴云原生

阿里云 云原生

携手向未来,共绘新蓝图,零售创新峰会2024在桂林圆满落幕

极客天地

云智慧跻身2024亚太区ITSM软件市场第八,成唯一入选中国公司

云智慧AIOps社区

ITSM ITSM软件 IT服务管理

通过阿里云 Milvus 和 LangChain 快速构建 LLM 问答系统

阿里云大数据AI技术

阿里云 Milvus LLM rag PAI

关系型数据库设计三大范式

京东科技开发者

【YashanDB知识库】kettle同步大表提示java内存溢出

YashanDB

数据库 yashandb

【YashanDB知识库】查看表空间是否加密

YashanDB

数据库 yashandb

读懂NotebookLM,或许能治愈AI应用缺失症

脑极体

AI

全新CleanMyMac专业测评:Mac电脑专业的系统清理和优化工具

阿拉灯神丁

CleanMyMac X Mac软件 如何清理苹果电脑 苹果系统清理 mac系统维护

Suning商品详情API接口的开发应用与收益

科普小能手

电商 API 接口 API 测试 苏宁API接口 苏宁商品详情接口

阿里云联合中国信通院等单位发布首个云计算智能化可观测性能力成熟度模型标准

阿里巴巴云原生

阿里云 云原生

【YashanDB知识库】kettle同步PG至崖山提示no encryption pg_hba.conf记录

YashanDB

数据库 yashandb

数据管理的演进之路:从自建系统迈向云原生时代

代码忍者

苦熬3个月,阿里Java岗五面,成功上岸获offer!Java面试题库分享

程序员高级码农

Java 程序员 面试 Java 面试 Java 面试题

AI听力陪练APP的技术框架

北京木奇移动技术有限公司

软件外包公司 AI口语练习 AI听力练习

ARMS 用户体验监控正式发布原生鸿蒙应用 SDK

阿里巴巴云原生

阿里云 云原生

极狐GitLab 正式发布安全补丁版本 17.6.2、17.5.4、 17.4.6(修复 12 个漏洞)

极狐GitLab

gitlab 安全漏洞

Databend 产品月报(2024年11月)

Databend

数据库

700PB数据的数仓依然“快稳省”!ByteHouse这本白皮书揭秘关键(内附下载链接)

字节跳动数据平台

OLAP 云数据仓库 云数仓

Databend 为什么使用 Rust 开发?

Databend

rust语言

垃圾短信?手机自动识别垃圾短信逻辑的分析

京东科技开发者

【YashanDB知识库】MySQL迁移至崖山char类型数据自动补空格问题

YashanDB

数据库 yashandb

思特奇构建开放数智生态,携手运营商智迎AI新纪元

科技热闻

学习下Redis内存模型

京东科技开发者

Stroustrup专访:畅想C++17_C++_Sergio De Simone_InfoQ精选文章