草庐IT

Google推出编程语言Carbon,旨在取代C++,网友:C++无法取代

程序员客栈 2023-03-28 原文
2022 年 7 月 19,Google 首席软件工程师 Chandler Carruth 在多伦多举行的 Cpp North 大会上发布了 Carbon。

Carruth说,尽管很多人可能认为 Rust 是 C++ 的继承者,但它缺乏 Carbon 提供的“双向互操作性”水平。如果 Rust 今天适合你,你应该使用它,但是将 C++ 生态系统迁移到 Rust 将非常困难。Carbon 目标是与现有的 C++ 代码完全互操作,并且让你从 C++ 到 Carbon 的过渡尽可能容易。

Carbon 是 Google 内部构建的最新编程语言,是一个仍处于实验阶段的开源项目,该项目的代码公开托管在 GitHub 上。

当产品出现问题时,最简单、最快的解决方法就是逐步改进现有产品,但为什么谷歌选择开始使用一种全新的语言呢?

C++ 是 C 语言的继承者,无疑是编程语言里最重要的语言之一。C++ 为 Python 机器学习、JavaScript 库、游戏开发和现代编程语言中使用的许多其他工具提供支持。

C++ 也是较早的面向对象编程语言之一,具有适应性强的设计、多功能性和广泛的兼容性。C++ 启发了 Java 等更新的语言,使该语言可用于开发游戏、医疗设备、人工智能和控制系统以及许多其他应用程序。

但是,C++ 的问题同样很多:

  • 跨各种功能的累积技术缺陷(例如:整数提升规则)。与 C 的向后兼容性使得修复技术缺陷变得更加困难,并使代码更改难以实施。
  • 向 C++ 添加新功能的演进过程非常困难,需要面对语言背后的严格治理以及可能长达数年的漫长审批过程。
所以 C++ 不能满足谷歌的的一些要求,比如性能要求、软件和语言的演变、易于理解和编写、快速和可扩展的开发等等。但用C++解决这些问题实在是太难了,或者说太慢了。但C++对于谷歌来说非常重要,据说谷歌的产品服务中有超过20亿行的C++代码。

所以谷歌只能采用另外一种方案,开发一种新的语言,可以与C++实现双向互操作。类似于创建 TypeScript 以弥补 Javascript 或 Kotlin for Java 的缺点的方式。经过谷歌工程师对多语言的深入研究和评估,引入了Carbon编程语言。

提到C++ 的继承者,很多人认为Rust是一个不错的选择,目前来说Rust 是一种更可行的语言,甚至 Carbon 本身的创造者也承认这一点。但它不具备 Java 和 Kotlin 等语言的“双向互操作性”,因此难以稳定迁移,这不符合谷歌的初衷。

Carruth阐述了Carbon的目标和宗旨,创建性能关键型软件,同时支持软件和语言的发展。另一个核心目标是使代码易于阅读、理解和编写。这可以为现代操作系统平台、硬件架构和环境实现快速且可扩展的开发。同样重要的是,carbon 还支持与现有 C++ 代码的互操作性和迁移。Carbon使用开源构建,用户可以根据设定的目标和优先级为程序做出贡献。

对于谷歌推出的新语言Carbon,网友也是众说纷纭。有人认为C++非常健壮,坚不可摧,是无法取代的基石。有人认为推出新语言只是一种作秀,对开发软件去起不到什么作用。也有人认为,Carbon的项目非常必要,因为C++在一些重要领域发展滞后,无法解决。Carbon的互操作性让他对这个项目非常期待。

距离Carbon发布已过去半年时间了,你用过这门新的语言吗?你的体验如何?

有关Google推出编程语言Carbon,旨在取代C++,网友:C++无法取代的更多相关文章

  1. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  2. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  3. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  4. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  5. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  6. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  7. ruby - 无法覆盖 irb 中的 to_s - 2

    我在pry中定义了一个函数:to_s,但我无法调用它。这个方法去哪里了,怎么调用?pry(main)>defto_spry(main)*'hello'pry(main)*endpry(main)>to_s=>"main"我的ruby版本是2.1.2看了一些答案和搜索后,我认为我得到了正确的答案:这个方法用在什么地方?在irb或pry中定义方法时,会转到Object.instance_methods[1]pry(main)>defto_s[1]pry(main)*'hello'[1]pry(main)*end=>:to_s[2]pry(main)>defhello[2]pry(main)

  8. ruby - 无法在 60 秒内获得稳定的 Firefox 连接 (127.0.0.1 :7055) - 2

    我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类

  9. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  10. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

随机推荐