0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

谷歌宣布了一门新的编程语言Carbon

OpenCV学堂 来源:量子位 作者:量子位 2022-08-02 11:39 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

f272973e-11a6-11ed-ba43-dac502259ad0.png

对于谷歌方开发者称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的两个圆面积之和。二者对比如图:

f2c4d0ee-11a6-11ed-ba43-dac502259ad0.jpg

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

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

f2d90e6a-11a6-11ed-ba43-dac502259ad0.png

不过至于安全问题,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”,是很了不起的。

f2f363c8-11a6-11ed-ba43-dac502259ad0.jpg

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

f306c684-11a6-11ed-ba43-dac502259ad0.jpg

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

f31c2f56-11a6-11ed-ba43-dac502259ad0.jpg

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

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

f333389a-11a6-11ed-ba43-dac502259ad0.jpg

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

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

f34a052a-11a6-11ed-ba43-dac502259ad0.jpg

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 谷歌
    +关注

    关注

    27

    文章

    6244

    浏览量

    110256
  • 编程语言
    +关注

    关注

    10

    文章

    1959

    浏览量

    38911
  • C++
    C++
    +关注

    关注

    22

    文章

    2122

    浏览量

    76709

原文标题:“C++继任者”火到GitHub趋势榜一,C++之父却不认可!

文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    为什么单片机还在用C语言编程

    ,只是C语言是最适合单片机编程的高级语言、单片机编程的特点 1.对单片机编程来说,我
    发表于 11-28 07:37

    C语言编程技巧

    个成员是个未知大小的数组,适用于动态分配内存并关联个可变长度的数组。‌ ‌3、匿名结构体和联合体‌:C语言允许在结构体或联合体中定义不带标签的内部结构体或联合体,简化代码结构。
    发表于 11-27 06:46

    C语言和单片机C语言有什么差异

    有些扩展,及些特殊写法如C51扩展的 data xdata bit sbit类的,还有些中断程序写法 void int() interrput 1类的。 2、C是
    发表于 11-14 07:55

    芯原与谷歌联合推出开源Coral NPU IP

    芯原股份近日宣布谷歌联合推出面向始终在线、超低能耗端侧大语言模型应用的Coral NPU IP。
    的头像 发表于 11-13 11:24 282次阅读
    芯原与<b class='flag-5'>谷歌</b>联合推出开源Coral NPU IP

    文了解Mojo编程语言

    Mojo 是种由 Modular AI 公司开发的编程语言,旨在将 Python 的易用性与 C 语言的高性能相结合,特别适合人工智能(AI)、高性能计算(HPC)和系统级
    发表于 11-07 05:59

    谷歌AI模型点亮开发无限可能

    在 2025 年的 Google 谷歌开发者大会上,AI 不是一门“技术”,更是股彻底改变开发范式的“力量”,助力开发者们在海外市场更上层楼。AI 已经不仅仅是生成几行代码,它正在
    的头像 发表于 08-29 09:29 858次阅读

    跟老齐学Python:从入门到精通

    础的学习者介绍一门时下比较流行、并且用途比较广泛的编程语言,所以,本书读起来不晦涩,并且在其中穿插很多貌似与Python 编程无关,但与学
    发表于 06-03 16:10

    单片机c语言编程实例大全

    单片机c语言编程实例大全_18
    发表于 04-30 16:11 6次下载

    设计个基于浮点数运算的协处理器,使用C语言编程时没法输入float型数据,请问有哪些部分需要修改?

    我设计个基于浮点数运算的协处理器,使用C语言编程时没法输入float型数据,请问有哪些部分需要修改?SDK,EXU_decoder浮点寄存器都需要修改吗,谢谢
    发表于 03-07 16:03

    谷歌2.5亿美元收购HTC XR业务

    近日,HTC与谷歌共同宣布项重要协议。根据协议内容,谷歌将向HTC支付2.5亿美元的交易金额,并吸纳部分HTC的XR研发团队加入其麾下。
    的头像 发表于 01-24 13:51 819次阅读

    CARBON LiDAR:首款高效实惠固态光束控制芯片

    CARBON LiDAR传感器采用高度集成的硅光子芯片,其尺寸仅与指甲相当,但功能强大。它提供高分辨率、毫米级的精度以及出色的物体检测能力,并能够实现高达200米的静态与动态目标分割。这系列的卓越性
    的头像 发表于 01-24 11:11 912次阅读

    数字电路编程语言介绍

    数字电路编程语言是专门为描述和模拟数字电路而设计的编程语言。它们通常具有以下特点: 硬件描述语言(HDL) :大多数数字电路
    的头像 发表于 01-24 09:39 1388次阅读

    gitee 支持的编程语言有哪些

    Gitee(码云)是个基于 Git 的代码托管和研发协作平台,类似于 GitHub 和 GitLab。它支持多种编程语言,允许开发者托管和管理代码,进行版本控制,以及协作开发。以下是
    的头像 发表于 01-06 09:50 1107次阅读

    三菱PLC编程语言解析

    三菱电机(Mitsubishi Electric)是全球知名的自动化和制造解决方案供应商,其PLC(可编程逻辑控制器)产品广泛应用于工业自动化领域。三菱PLC编程语言主要基于国际标准IEC
    的头像 发表于 12-26 17:36 2223次阅读

    Triton编译器支持的编程语言

    Triton编译器支持的编程语言主要包括以下几种: 、主要编程语言 Python :Triton编译器通过Python接口提供
    的头像 发表于 12-24 17:33 1456次阅读