Google 后开发的 Carbon 真的会取代 C++ 吗?

123419dd83f90f4f587676fbf41780b9.gif

【CSDN 编者按】Carbon 真的能成为 C++ 的替代品吗?目前我们只能猜测,但请不要忘记 Swift 或 Kotlin 等语言的诞生。

原文链接:https://semaphoreci.com/blog/carbon

未经授权,禁止转载!

作者 | Manuel Rubio   译者 | 弯月

出品 | CSDN(ID:CSDNnews)

在 2022 年的 CppNorth 大会上,Chandler Carruth 发表了一项主题演讲,标题是:Carbon Language: An experimental successor to C++,其中提到了一门名为“Carbon”的全新开源开发语言,号称是 C++ 的继承者。

但是,为什么我们需要 C++ 的继承者?这个想法从何而来?

在 2019 年 CppCon 大会的最后一天,Chandler Carruth 和 Titus Winters 发表了一项惊人的演讲,他们讨论了什么是 C++?我认为,该演讲传达的一个最有趣的想法是,“语言是工具,我们必须使用正确的工具来完成工作。”

在谈话的最后,他们提出了不同的建议,旨在解决 C++ 开发人员面临的一些常见问题,这些建议包括:

  • 注重性能的软件。我们不仅需要考虑速度,还要考虑延迟、内存利用率和电池利用率等。

  • 软件的进化,语言的进化。C++ 是几十年前编写的,语言设计者也会犯错,我们应该根据当前大多数语言的变化来改进和升级 C++——但是,社区中总是有人反对改变。

  • 简单且易于阅读、理解和编写。我认为 John Carmack 的这句话总结得很好:“原始C语言的一大优点是,大多数高级开发人员都有能力编写自己的 C 编译器,而了解自己所用的工具是非常有价值的。但如果是C++编译器的话,我就需要大量的时间来学习编写。”

  • 安全与测试。更安全的 API、廉价的安全缓解措施以及使用持续集成单元和集成测试的综合测试方法。所有不受信任的输入都会持续进行模糊测试,所有测试都使用检查构建模式(sanitizer、断言等)。

  • 快速且可扩展的开发,本质上就是模块。

  • 硬件、操作系统、环境。定义我们承诺支持的内容,并以可预见的方式持续推进。我们不会有意去破坏已有 20 年历史的平台,但我们也不会继续支持。

4bf58ff0fb81d7112093de0c717d14e6.png

我们可以改进 C++ 或使用其他语言吗?

在2022年的 CppNorth大会上,Carruth 为我们提供了这方面的信息。他首先提到了上一次演讲的建议,并讨论了为什么 C++ 无法实现这些它们。主要问题在于,C++ 积累了几十年的技术债务,在此期间社区优先考虑的是向后兼容性,因此未能修复技术债务。

那么,是否可以利用现有的一种语言来代替 C++?使用垃圾回收的语言很棒,但我们不会考虑它们,因为这些语言会付出性能的成本,而且大多数 C++ 开发人员认为他们不想在这方面让步。

Rust 编程语言是一个不错的选择,因为它是内存安全的,并且非常适合作为低级语言的替代品,但请看下面的替代关系,Rust 实际上无法替代 C++:

  • C –> C++

  • JavaScript –> TypeScript

  • Objective C –> Swift

  • Java –> Kotlin

  • C++ –> Rust?

Rust 是一门运行良好的语言,如果你准备开发一个新项目,那么非常推荐。但如果你需要将 C++ 生态系统连同各种深层次的依赖都迁移到 Rust,那将会是一项非常艰巨的任务。我们不推荐这种做法。

我们需要的是一位“继承者”。这里的“继承者”指的是在现有生态系统中构建的语言,无需建立新语言,它可以提供互操作性,而且学习和采用也很方便,理想情况下,所有的辅助工具也可以继续提供支持。从本质上来说,“继承者”是其父辈语言的超集。

4967008406354cc11543b452a878bb79.png

Carbon 编程语言是什么?

在讨论了C++的问题后,Carruth 提出了一个问题:下一步该怎么办?在讨论了为什么我们不能改进 C++,为什么我们不能使用 Go 语言或其他垃圾收集语言,以及我们不能使用 Rust 语言(或其他低级语言)后,Carruth 认为我们需要为 C++ 创建一门“继承者”:Carbon。

Carbon 采纳了改进 C++ 的建议,并将其融入了语言的设计目标,同时他们还照顾到了一个新的关键性目标,也是最重要的一个目标:与现有 C++ 代码的互操作性和迁移。

根据官网的信息,Carbon 语言的创建理由如下:

“从根本上说,Carbon 是一种后继语言,而不是尝试逐步发展C++。Carbon 将围绕与 C++ 的互操作性以及现有 C++ 代码库和开发人员的大规模采用和迁移而设计。[...] 通过这种方法,我们可以在 C++ 现有生态系统的基础上构建软件,并继续支持现有的投资、代码库和开发人员群体。”

8d621ac6953b90770fe58b4b0c595887.png

Go 或 Dart 会消失吗?

Carruth 是谷歌编程语言与软件基础技术主管,而且 Carbon 语言这项计划始于谷歌,所以人们担心 Golang 甚至 Dart 的支持可能会减弱。然而,谷歌是一家大公司,他们需要通过不同的平台和不同的项目开发软件。这意味着,他们需要不同的语言来处理不同的工作。

谷歌的生产环境使用 Go 来提供一些服务(dl.google.com 的下载服务器),但正如 Carruth 所说,大型 C++ 项目的迁移非常困难,而且无法完成。

Dart 是一种建立在JavaScript 和其他语言之上的语言,其使命是成为 Flutter 项目的主要语言,解决跨平台创建应用程序的问题。由于 Flutter 不支持 C++,因此 Carbon 在这种环境下基本没有任何用处,因此 Dart 语言不会受到影响。

a83b91f7585a4b787348f523be8a39fc.png

如何使用这种新语言?

在 2022年 的 Core C++ 会议期间,Jon Ross-Perkins(谷歌的资深软件工程师,拥有两年 Carbon 语言的经验)谈到了 Carbon 语言的语法和权衡弊端。

首先,他强调了目前这个项目仍处于实验阶段,但我想通过工具初步窥探一下这个生态系统。Ross-Perking 提到了该项目的下列工具:

  • 编译器。无需多说,代码的编译非常重要。

  • 格式化程序。正确地格式化代码。

  • 语言的自动升级。从比格式化程序更高的层次上整理我们的代码。

  • IDE 和 LSP 支持。

  • 重构支持。

  • 包管理器。

关于编写代码,保持开发的上下文不变很重要,但是,我们需要保留那么多信息吗?为了简化上下文,Carbon 提供了特定的保留字,这样工具的使用会更容易,代码的可读性也更高。这些保留字包括:

  • var:用于声明变量。

  • class:用于定义类。

  • fn:用于定义函数。

  • interface :用于定义接口。

  • let:用于声明常量。

示例如下:

var radius: Printer(Circle);
class Circle
class Printer(template t:! Type)
fn Draw()
interface Shape
let Pi: f32

我认为,我们可以直接看看语法的细节以及代码示例。但在浏览代码之前,我需要说明该语言目前仍处于实验阶段,并且与大多数实验一样,它可能会逐步发展起来,也有可能会消失。但就目前的情况来看,这是一个很有希望的项目。

关于语法,由于第一版还没有正式发布,所以将来实际的代码可能会与这里有所出入。如果你想看看该语言最新的发展,可以查看设计文档https://github.com/carbon-language/carbon-lang/blob/trunk/docs/design/README.md),其中包含设计人员和开发人员贡献的建议和变更。

import Math;
// Returns the smallest factor of `n` > 1, and
// whether `n` itself is prime.
fn SmallestFactor(n: i32) -> (i32, bool) {let limit: i32 = Math.Sqrt(n) as i32;var i: i32 = 2;while (i <= limit) {let remainder: i32 = n % i;if (remainder == 0) {Carbon.Print("{0} is a factor of {1}", i, n);return (i, false);}if (i == 2) {i = 3;} else {// Skip even numbers once we get past `2`.i += 2;}}return (n, true);
}

以上代码使用了两个不同的函数。看来 Carbon 包中的函数是默认导入的,而 Math 包需要导入才能使用。

我们还使用了两个常量(let)。第一个limit是整个函数的常量,而第二个remainder是 while 循环范围内的常量,每次迭代都会创建并绑定一个值。常量limit还声明了一个不同于 Math.sqrt 函数返回的类型,但它利用 as i32 进行了转换。

我们看到 return 中定义了一个元组。基于这种技术,函数将返回两个值,而不是一个值。Python、Erlang 或 Elixir 等语言也使用了这种数据类型。这样,我们就可以不同情况下处理一组值。

765fba73420f8d210b9db6474f39bebd.png

展望未来

目前 Carbon 还是一个实验性项目,但你可以查看它的线路图,了解近期的进展。通过前面所说的文档,我们可以看到 Carbon 的预期发布时间(停止实验)原定于 2023 年,后来变成了 2024 年,如今又推出到了2025~2026 年。然而,我们可以看到 Carbon 正在快速发展,而且没有停止。

Carbon 真的能成为 C++ 的替代品吗?目前我们只能猜测,但请不要忘记 Swift 或 Kotlin 等语言的诞生。在文本开头,我们列举了有关C++的多项建议,相信大多数想要解决这些问题的大公司都会接受并采用 Carbon。

 

681d6fe59ceffd17253081e2860f1ecd.gif

 

033ee2e15382e99cafc60ff412bd0902.jpeg

☞科大讯飞回应薪酬回溯制度;OpenAI 宣布开放 API,可将 ChatGPT 集成到自己的产品;Godot 4.0 发布|极客头条
☞离职两年后,程序员遭前东家索赔:Bug 是你写的
☞ChatGPT API 低价上线,网友:用上 import openai,能开一家创业公司!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/60418.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

email邮箱注册,5分钟教会你这些方法大全

不同的人&#xff0c;根据需求不同&#xff0c;可以注册诸如免费邮箱、VIP邮箱、企业邮箱等等。我们可以通过邮箱品牌之一的TOM 邮箱为例&#xff0c;5分钟教会大家如何注册这3类邮箱。 一、尊贵VIP邮箱注册方法&#xff1a; VIP邮箱账号注册可支持3-5位超短靓号&#xff0c;…

电子邮箱免费注册,比较好用的电子邮箱怎么注册?如何申请?

电子邮箱免费的很多&#xff0c;我们常用的163、TOM、QQ等&#xff0c;如果公司用&#xff0c;就要用企业电子邮箱了。申请企业电子邮箱&#xff0c;注册3年用6年&#xff0c;注册5年用10年&#xff0c;这是在网上看到TOM企业邮箱的优惠&#xff0c;以下是企业邮箱总结。 TOM企…

个人邮箱怎么注册呢?个人邮箱申请能绑定微信收发邮件吗?

个人邮箱怎么注册呢&#xff1f;个人邮箱申请能绑定微信收发邮件吗&#xff1f; 大多数职场人都在偷偷的努力着 学习新的方法&#xff0c;通过更高效的方式完成工作&#xff01; 在新的时代下&#xff0c;唯一不变的就是瞬息万变 脑部了一万种功成名就的场景&#xff0c;不…

2022还不知道登陆邮箱账号怎么填写?个人邮箱登录注册流程看详解

今年入冬以来&#xff0c;我国多地散发新冠肺炎疫情。浙江三地同日报告新增、满洲里大规模核酸共检出阳性431例、上海新增本土1例。“奥密克戎”以惊人的速度传播&#xff0c;目前已至少在38个国家和地区出现。 疫情在即不仅需要配合日常防疫工作还要做好个人的防护&#xff0…

免费注册 Proton.me电子邮件教程

免费注册 Proton.me 1.登录自己的 Protonmail 帐户。 2.访问此页面&#xff0c;单击 “转到设置” 选项&#xff0c;在左侧边栏中&#xff0c;选择 “身份和地址”。 3.会在此页面顶部看到 proton.me 字样。 4.单击 “激活用户名 proton.me ” 按钮。 5.申请成功后&#xff…

Python 简单编写一个注册邮箱

金秋九月&#xff0c;又是开学的新的一学期&#xff0c;大家见到新同学新同事一定要问好&#xff0c;不要社死!!! 我们步入正题: 编写一个简单的注册邮箱程序 我在编写这个小程序的时候里面&#xff0c;有的代码是简化了: 还是那句话: 编写程序前&#xff0c;先理清思路&#x…

测试用例:邮箱注册

思维导图&#xff1a; 测试用例&#xff1a; 用例编号分类所属等价类测试描述输入数据预期结果实际结果测试人员测试时间000001邮件地址有效6-18个字符&#xff0c;可使用字母、数字、下划线&#xff0c;须以字母开头Jianghe_123456可用提示&#xff1a;恭喜&#xff0c;该邮件…

Python启蒙——检测邮箱是否有新邮件,并邮件通知(二)

承接上回&#xff0c;知道了新邮件返回的消息后&#xff0c;可以更近一步&#xff0c;来实现发邮件。 发邮件我们要用到SMTP的服务&#xff0c;来发送邮件。 发送邮件一般有收件人地址、抄送人地址、邮件主题、邮件内容等内容&#xff0c;从SMTPLIB这个类的解释和例子如下&am…

教育邮箱怎么注册申请,教育电子邮箱注册小妙招

临近秋季开学很多小伙伴咨询学校邮箱的问题&#xff0c;学校是否会给学生配备邮箱&#xff0c;学校都用什么邮箱&#xff1f; 最近我的妹妹刚拿到录取通知书&#xff0c;里面写着让她办理一个教育邮箱&#xff0c;她不太知道什么是教育邮箱&#xff0c;还给教务处的招生处老师…

大话Stable-Diffusion-Webui-将stable-diffusion-webui接入微信群(一)

文章目录 效果原理WeChatRobot安装克隆项目安装pc端微信安装 WeChatRobot配置 WeChatRobot接入sd的文生图apisd配置WeChatRobot中接入sdconfig.yaml增加sd的配置robot.py开发代码robot.pyconfig.yaml效果 原理 通过一个玩转微信的开源项目

AI智能机器人,在这里也可以体验~

“ 大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 ” 现在是&#xff1a;2023年2月17日00:14:42 前言 最近AI智能chatgpt特别的火&#xff0c;相信好多人都已经体验过了&#xff0c;之前我的群里也接入过&#xff0c;奈何总是收到警告和…

python中成语接龙游戏_Python实现成语接龙

这是一篇用Python实现成语接龙小游戏的具体开发教程。Python实现这个功能非常容易,以下分为两个版本,一个是简易版,能够实现基本的功能。还有一个是拓展版,是在简易版上进行拓展,功能更为复杂且完善。 这个可以应用在很多方面,比如说聊天机器人,而且还可以结合itchat这个…

AI绘画结合GPT 把Ai绘画与摄影玩明白

一、绘画与摄影有什么关系&#xff1f; 绘画和摄影是两种不同的艺术形式&#xff0c;它们都以其自身独特的方式捕捉和表达现实。在某些方面&#xff0c;它们是相互联系的&#xff0c;而在其他方面&#xff0c;它们又有所不同。​ 相似之处&#xff1a;绘画和摄影都是创造性的…

电脑用户名中文改英文步骤总结

背景&#xff1a;在单位领了两台新电脑&#xff0c;脑子一热用户名直接设置成中文名字了&#xff0c;后来在装许多环境的时候都出现中文乱码、路径错误等情况&#xff0c;因此需要改成英文账户名。 步骤&#xff1a; 先修改本地的账户名。打开控制面板并点击用户账户&#xf…

「ChatCat」创建你的专属机器人

没有OpenAI账号&#xff0c;不能科学上网&#xff0c;还没找到合适工具的朋友可以看过来。 【ChatCat】可以创建自己的应用&#xff0c;自己使用/供其他人使用&#xff1b;也可以简单粗暴直接使用官方ChatGPT&#xff1b;还可以生成山水图配文案&#xff0c;你想怎么用&#x…

找了程序员男朋友,她们是这样报喜的...

最近收到好多女生在面向对象脱单的消息&#xff0c;继续安利面向对象给还单着的盆友们。如果你身边有单着的朋友或同事&#xff0c;请帮忙推荐哦&#xff5e; 还不了解面向对象&#xff1f; 面向对象是一个真实、高效的相亲平台&#xff0c;为单身青年服务。目前&#xff0c;人…

当你交了一个程序员男朋友后,会变成什么样……

当你交了一个程序员男朋友后&#xff0c;会变成什么样…… 程序员&#xff0c;是一种职业&#xff0c;但由于网络上关于程序员的段子络绎不绝&#xff0c;导致这一职业在大家心中也有了不一样的颜色。 比如&#xff0c;很多人会认为和程序员交往一定是件特别的事情&#xff0…

跳槽也不一定涨薪,2023,别再裸辞了····

马上又到一年一度的“金三银四”&#xff0c;很多蠢蠢欲动但还在犹豫的职场打工人&#xff0c;大概心中都有一个疑问&#xff1a;经历了疫情三年寒冬的互联网, 真的会在2023年这个春天打响复苏第一枪吗&#xff1f; 如果说“求稳”与“苟着”是2022年职场的主流心态&#xff0…

广发证券传媒互联网首席分析师旷实:大模型引发的创新浪潮不会很快结束丨数据猿专访...

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 AI大模型引爆了今年一季度的热点。 今年春节期间&#xff0c;来自微软投资的OpenAI旗下产品ChatGPT成为科技行业关注焦点&#xff0c;出现即推热了市场情绪。随后&#xff0c;国内百度首发文心一言&#xff0c;阿里、华为、…