社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

“C++继任者”火到GitHub趋势榜一,C++之父:规范不足,无法评价

开源前线 • 2 年前 • 267 次点击  
本文经AI新媒体量子位(ID:QbitAI)授权转载,转载请联系出处
Alex 发自 凹非寺

今年的CPP North C++大会上,谷歌宣布了一门新的编程语言Carbon,并称其将是“C++的继任者”

谷歌将其在GitHub上开源。虽然这个语言目前还处于实验阶段,但还是很快吸了引众多程序员前来围观,还一度登上了GitHub趋势榜第一,现已收获标星21.3k。

对于谷歌方开发者称Carbon是C++的继承者一事,有国外媒体询问了C++之父Bjarne Stroustrup的看法,老爷子表示:

这些年总是有新的语言试图成为C++的继承者,我欢迎对编程语言和编程风格进行实验;

Carbon太新且规范不足,我无法真正做出有意义的技术评论。而通常在不开发全新语言规则、库和管理方案的情况下,很难提供C++的替代方案。

所以谷歌团队为什么非要搞一个C++“替代版”而不是继续完善现有的C++?毕竟他们自己内部都在广泛使用这个语言。

为什么不去升级C++?

对此,带领团队开发Carbon的谷歌工程师钱德勒·卡鲁斯(Chandler Carruth)解释称,C++至今已有40岁了,其自身的很多问题困扰着现在的开发人员。

数十年来,C++已积累了许多技术负债。其维护者优先考虑向后兼容,以便继续支持广泛使用的项目,但这样容易导致代码量巨大。

而且C++虽然有开源的编译器(如gcc),但也有不少闭源编译器,其中的某些功能可能要过很久才能改善升级。

此外,C++语言的发展也受到了官僚委员会管理程序的阻碍,该程序以标准化而非设计为导向,这种做法导致很难给其添加新功能。

解决这些问题的最佳方法是避免直接继承C或C++的“遗产”,而是从语言基础开始,例如:现代泛型系统、模块化代码组织、一致的简单语法等。

卡鲁斯也在CPP大会上提到,该语言并不是为了和C++未来改进版本竞争,而是——

“探索用C++做不到的事”

正如微软创建TypeScript来更新JavaScript那样,Carbon作为一种在C++基础上开发的新语言,将为更多开发者解决内存安全和泛型等问题,来弥补C++的不足。

目前Carbon语言的亮点包括:

  • Introducer关键字和简单语法;

  • 函数输入参数为只读值;

  • 指针提供间接访问和变体;

  • 使用表达式命名类型;

  • 通过包名导入APIs;

  • 强大且经过定义检查的泛型

  • ......

此外,谷歌正在继续开发Carbon以支持以下功能:

  • 性能关键型软件;

  • 软件和语言的演变;

  • 易于阅读、理解和编写的代码;

  • 实用的安全和测试机制;

  • 快速且可扩展的开发;

  • 现代操作系统平台、硬件架构和环境;

  • 与现有C++代码的互操作性和迁移性。

开发团队还将创建一个内置包管理器,这是C++中非常缺乏的。

举个简单的例子:用C++代码和Carbon代码分别计算半径为1和2的两个圆面积之和。二者对比如图:

图源:GitHub;左为C++代码,右为Carbon代码

下图展示了Carbon和C++互通性。程序员可以在Carbon上调用C++库、方法和函数,而不需要额外的开销,反之亦然。

不过至于安全问题,Carbon并没有一开始就建立内存安全系统。

卡鲁斯介绍说,由于C++内存安全性很差,所以Carbon的研发起点很低,该项目优先考虑的是迁移而不是安全;希望以后Carbon至少可以和Go或Swift一样安全。

事实上,在Carbon之前,Mozilla(就是开发火狐那个)于2015年就发布了一个也标榜自己为“C++继承者”的语言:Rust,而且这个Rust很注重内存安全性。

那为什么不大力发展Rust呢?

“Carbon是为有大量C++库者准备的”

卡鲁斯在CPP会议上对此回应称,C++和Rust之间的衔接性不好,要将C++的生态系统转移到Rust非常困难。

对于那些已经拥有大量C++代码库的开发者来说,要把自己之前的东西搬到Rust编辑器上就很麻烦了。

而Carbon被设计成一种C++的后继语言,它以后将实现和C++无缝连接,并具备与C++的双向互操作性,这对于有大量C++代码库者非常友好。

对于那些没有这种“烦恼”的程序员们,卡鲁斯表示,想用Rust的话就继续用好了。

网友纷纷围观

前来围观Carbon的一众网友中,有人表示支持谷歌开发这个新语言:

若能在这里直接调用C语言库的低层级Stuff函数,而不需在开头加行extern “C”,是很了不起的。

有人认同其简化语言和提升安全性的目标,但他觉得要在现有的语言中改进内存安全并不太容易,现有的C++特征和API很可能会约束这个新语言的发展。

当然也有网友并不看好Carbon,认为谷歌有弃用创新软件的习惯,这个听起来很炸的项目可能会半途而废。

还有人提出:Carbon这个用C++实现的语言居然想要替代C++?

有网友觉得,现在Rust正在逐步成为低级程序语言,Carbon和Rust有不少相似之处,仅凭“让C++迁移更容易”并没有什么卖点。

此外,Hacker News上还有网友想到了D语言(DLang),这个语言和C++的互通性很不错。而且D语言也有Carbon的不少功能,包括和C++相互调用、减少额外的开销等。

可惜由于D语言的初期定位不够清晰,一度试图涵盖Java和C++的功能,导致它比较小众。

对这个号称“C++继承者”的Carbon,你怎么看?欢迎在评论区留言~

传送门:
https://github.com/carbon-language/carbon-lang

参考链接:
[1]https://devclass.com/2022/07/25/c-inventor-stroustrup-says-googles-carbon-too-new-and-under-specified-for-meaningful-technical-comment/

[2]https://www.youtube.com/watch?v=omrY53kbVoA
[3]https://news.ycombinator.com/item?id=32151609
[4] https://www.reddit.com/r/programming/comments/w2thvo/carbon_an_experimental_c_successor_language/

--- EOF ---


推荐↓↓↓
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/138643
 
267 次点击