关系经济人类预测化学自然
投稿投诉
自然科学
知识物理
化学生物
地理解释
预测理解
本质社会
人类现象
行为研究
经济政治
心理结构
关系指导
人文遗产

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

2月22日 先锋客投稿
  【CSDN编者按】Carbon真的能成为C的替代品吗?目前我们只能猜测,但请不要忘记Swift或Kotlin等语言的诞生。
  原文链接:https:semaphoreci。comblogcarbon
  未经授权,禁止转载!
  作者ManuelRubio译者弯月出品CSDN(ID:CSDNnews)
  在2022年的CppNorth大会上,ChandlerCarruth发表了一项主题演讲,标题是:CarbonLanguage:AnexperimentalsuccessortoC,其中提到了一门名为Carbon的全新开源开发语言,号称是C的继承者。
  但是,为什么我们需要C的继承者?这个想法从何而来?
  在2019年CppCon大会的最后一天,ChandlerCarruth和TitusWinters发表了一项惊人的演讲,他们讨论了什么是C?我认为,该演讲传达的一个最有趣的想法是,语言是工具,我们必须使用正确的工具来完成工作。
  在谈话的最后,他们提出了不同的建议,旨在解决C开发人员面临的一些常见问题,这些建议包括:
  注重性能的软件。我们不仅需要考虑速度,还要考虑延迟、内存利用率和电池利用率等。
  软件的进化,语言的进化。C是几十年前编写的,语言设计者也会犯错,我们应该根据当前大多数语言的变化来改进和升级C但是,社区中总是有人反对改变。
  简单且易于阅读、理解和编写。我认为JohnCarmack的这句话总结得很好:原始C语言的一大优点是,大多数高级开发人员都有能力编写自己的C编译器,而了解自己所用的工具是非常有价值的。但如果是C编译器的话,我就需要大量的时间来学习编写。
  安全与测试。更安全的API、廉价的安全缓解措施以及使用持续集成单元和集成测试的综合测试方法。所有不受信任的输入都会持续进行模糊测试,所有测试都使用检查构建模式(sanitizer、断言等)。
  快速且可扩展的开发,本质上就是模块。
  硬件、操作系统、环境。定义我们承诺支持的内容,并以可预见的方式持续推进。我们不会有意去破坏已有20年历史的平台,但我们也不会继续支持。
  我们可以改进C或使用其他语言吗?
  在2022年的CppNorth大会上,Carruth为我们提供了这方面的信息。他首先提到了上一次演讲的建议,并讨论了为什么C无法实现这些它们。主要问题在于,C积累了几十年的技术债务,在此期间社区优先考虑的是向后兼容性,因此未能修复技术债务。
  那么,是否可以利用现有的一种语言来代替C?使用垃圾回收的语言很棒,但我们不会考虑它们,因为这些语言会付出性能的成本,而且大多数C开发人员认为他们不想在这方面让步。
  Rust编程语言是一个不错的选择,因为它是内存安全的,并且非常适合作为低级语言的替代品,但请看下面的替代关系,Rust实际上无法替代C:
  CC
  JavaScriptTypeScript
  ObjectiveCSwift
  JavaKotlin
  CRust?
  Rust是一门运行良好的语言,如果你准备开发一个新项目,那么非常推荐。但如果你需要将C生态系统连同各种深层次的依赖都迁移到Rust,那将会是一项非常艰巨的任务。我们不推荐这种做法。
  我们需要的是一位继承者。这里的继承者指的是在现有生态系统中构建的语言,无需建立新语言,它可以提供互操作性,而且学习和采用也很方便,理想情况下,所有的辅助工具也可以继续提供支持。从本质上来说,继承者是其父辈语言的超集。
  Carbon编程语言是什么?
  在讨论了C的问题后,Carruth提出了一个问题:下一步该怎么办?在讨论了为什么我们不能改进C,为什么我们不能使用Go语言或其他垃圾收集语言,以及我们不能使用Rust语言(或其他低级语言)后,Carruth认为我们需要为C创建一门继承者:Carbon。
  Carbon采纳了改进C的建议,并将其融入了语言的设计目标,同时他们还照顾到了一个新的关键性目标,也是最重要的一个目标:与现有C代码的互操作性和迁移。
  根据官网的信息,Carbon语言的创建理由如下:
  从根本上说,Carbon是一种后继语言,而不是尝试逐步发展C。Carbon将围绕与C的互操作性以及现有C代码库和开发人员的大规模采用和迁移而设计。〔。。。〕通过这种方法,我们可以在C现有生态系统的基础上构建软件,并继续支持现有的投资、代码库和开发人员群体。
  Go或Dart会消失吗?
  Carruth是谷歌编程语言与软件基础技术主管,而且Carbon语言这项计划始于谷歌,所以人们担心Golang甚至Dart的支持可能会减弱。然而,谷歌是一家大公司,他们需要通过不同的平台和不同的项目开发软件。这意味着,他们需要不同的语言来处理不同的工作。
  谷歌的生产环境使用Go来提供一些服务(dl。google。com的下载服务器),但正如Carruth所说,大型C项目的迁移非常困难,而且无法完成。
  Dart是一种建立在JavaScript和其他语言之上的语言,其使命是成为Flutter项目的主要语言,解决跨平台创建应用程序的问题。由于Flutter不支持C,因此Carbon在这种环境下基本没有任何用处,因此Dart语言不会受到影响。
  如何使用这种新语言?
  在2022年的CoreC会议期间,JonRossPerkins(谷歌的资深软件工程师,拥有两年Carbon语言的经验)谈到了Carbon语言的语法和权衡弊端。
  首先,他强调了目前这个项目仍处于实验阶段,但我想通过工具初步窥探一下这个生态系统。RossPerking提到了该项目的下列工具:
  编译器。无需多说,代码的编译非常重要。
  格式化程序。正确地格式化代码。
  语言的自动升级。从比格式化程序更高的层次上整理我们的代码。
  IDE和LSP支持。
  重构支持。
  包管理器。
  关于编写代码,保持开发的上下文不变很重要,但是,我们需要保留那么多信息吗?为了简化上下文,Carbon提供了特定的保留字,这样工具的使用会更容易,代码的可读性也更高。这些保留字包括:
  var:用于声明变量。
  class:用于定义类。
  fn:用于定义函数。
  interface:用于定义接口。
  let:用于声明常量。
  示例如下:spanclasscodesnippetouterspanclasscodesnippetkeywordvarspanradius:Printer(Circle);spanspanclasscodesnippetouterspanclasscodesnippetclassspanclasscodesnippetkeywordclassspanspanclasscodesnippettitleCirclespanspanspanspanclasscodesnippetouterspanclasscodesnippetclassspanclasscodesnippetkeywordclassspanspanclasscodesnippettitlePrinterspanspan(templatet:!Type)spanspanclasscodesnippetouterfnDraw()spanspanclasscodesnippetouterspanclasscodesnippetclassspanclasscodesnippetkeywordinterfacespanspanclasscodesnippettitleShapespanspanspanspanclasscodesnippetouterletPi:f32span
  我认为,我们可以直接看看语法的细节以及代码示例。但在浏览代码之前,我需要说明该语言目前仍处于实验阶段,并且与大多数实验一样,它可能会逐步发展起来,也有可能会消失。但就目前的情况来看,这是一个很有希望的项目。
  关于语法,由于第一版还没有正式发布,所以将来实际的代码可能会与这里有所出入。如果你想看看该语言最新的发展,可以查看设计文档https:github。comcarbonlanguagecarbonlangblobtrunkdocsdesignREADME。md),其中包含设计人员和开发人员贡献的建议和变更。spanclasscodesnippetouterspanclasscodesnippetkeywordimportspanspanclasscodesnippetbuiltinMspanspanclasscodesnippetouterspanclasscodesnippetcommentReturnsthesmallestfactorofn1,andspanspanspanclasscodesnippetouterspanclasscodesnippetcommentwhethernitselfisprime。spanspanspanclasscodesnippetouterfnSmallestFactor(n:i32)(i32,bool){spanspanclasscodesnippetouterspanclasscodesnippetkeywordletspanlimit:i32spanclasscodesnippetbuiltinMathspan。Sqrt(n)spanclasscodesnippetkeywordasspani32;spanspanclasscodesnippetouterspanclasscodesnippetkeywordvarspani:i32spanclasscodesnippetnumber2spanspanclasscodesnippetouterspanclasscodesnippetkeywordwhilespan(ilimit){spanspanclasscodesnippetouterspanclasscodesnippetkeywordletspanremainder:i32spanspanclasscodesnippetouterspanclasscodesnippetkeywordifspan(remainderspanclasscodesnippetnumber0span){spanspanclasscodesnippetouterCarbon。Print(spanclasscodesnippetstring{0}isafactorof{1}span,i,n);spanspanclasscodesnippetouterspanclasscodesnippetkeywordreturnspan(i,spanclasscodesnippetliteralfalsespan);spanspanclasscodesnippetouter}spanspanclasscodesnippetouterspanclasscodesnippetkeywordifspan(ispanclasscodesnippetnumber2span){spanspanclasscodesnippetouterispanclasscodesnippetnumber3spanspanclasscodesnippetouter}spanclasscodesnippetkeywordelsespan{spanspanclasscodesnippetouterspanclasscodesnippetcommentSkipevennumbersoncewegetpast2。spanspanspanclasscodesnippetouterispanclasscodesnippetnumber2spanspanclasscodesnippetouter}spanspanclasscodesnippetouter}spanspanclasscodesnippetouterspanclasscodesnippetkeywordreturnspan(n,spanclasscodesnippetliteraltruespan);spanspanclasscodesnippetouter}span
  以上代码使用了两个不同的函数。看来Carbon包中的函数是默认导入的,而Math包需要导入才能使用。
  我们还使用了两个常量(let)。第一个limit是整个函数的常量,而第二个remainder是while循环范围内的常量,每次迭代都会创建并绑定一个值。常量limit还声明了一个不同于Math。sqrt函数返回的类型,但它利用asi32进行了转换。
  我们看到return中定义了一个元组。基于这种技术,函数将返回两个值,而不是一个值。Python、Erlang或Elixir等语言也使用了这种数据类型。这样,我们就可以不同情况下处理一组值。
  展望未来
  目前Carbon还是一个实验性项目,但你可以查看它的线路图,了解近期的进展。通过前面所说的文档,我们可以看到Carbon的预期发布时间(停止实验)原定于2023年,后来变成了2024年,如今又推出到了2025~2026年。然而,我们可以看到Carbon正在快速发展,而且没有停止。
  Carbon真的能成为C的替代品吗?目前我们只能猜测,但请不要忘记Swift或Kotlin等语言的诞生。在文本开头,我们列举了有关C的多项建议,相信大多数想要解决这些问题的大公司都会接受并采用Carbon。
投诉 评论 转载

纸上得来终觉浅!每次外国发生战争国内总会陨落评论界的将星俄乌冲突一周年了,我们不讨论战况和预测战争的结局,那是各路专家们操心的事情。今天只是想复盘一下我们国内的许多特约评论员、时事评论员和军事专家的表现。在这一年多的时间里,这些人是……推广无论你春天穿什么,有它都会加分!晚上好昨天跟你们分享了年后心态的变化在懒了两三年后,那种想要认真打扮自己的劲儿又回来了。评论区好多朋友都说有同感,有些人陆续买了不少新衣服新首饰,有人给自己定了每周末都要……清风不计一身不争一时为百姓谋福祉,当有不计一身、不争一时的格局和胸襟。春秋时期,郑国子产为兴国富民推行改革,可刚开始国人不懂他,贵族咒骂他:取我衣冠而褚之,取我田畴而伍之,孰杀子产,吾其与之。子产……各方热议网络安全保险目前我国共有30余家保险公司备案了77款南方财经全媒体记者郑嘉意北京报道2月23日,由工业和信息化部和四川省人民政府主办,国家工业信息安全发展研究中心(以下简称中心)承办的2023年网络和数据安全产业高峰论坛网……你只知诸葛亮以奇制胜,曹操奸雄一世,可知二人同样重视子女教育阅读此文前,诚邀您点击一下关注,既方便您进行讨论与分享,又给您带来不一样的参与感,感谢您的支持。引言古人云:夫君子之行,静以修身,俭以养德,夫淡泊无以明志,非宁静无……北向资金单日净卖出33。75亿元,减仓电气设备机械设备化工e公司数据统计显示,2月10日北向资金单日净卖出33。75亿元,其中沪股通净卖出13。38亿元,深股通净卖出20。37亿元。北向资金成交金额837。20亿元,占A股总成交额9。……星云法师的教育事业一直赔钱也要办学校释星云,台湾佛光山开山宗长,人间佛教推动者,逝于2023年2月5日下午,终年97岁。星云法师去世前几年,因出血性脑中风送往高雄长庚医院,最终移除了约有一个拳头大小的血块,……浅析1830年革命中的君主制,探讨从拉斐特到比利时宪法摘要1831年的比利时宪法标志着大陆从恢复君主立宪制,到建立君主制的议会君主立宪制的决定性一步。当时,比利时革命者所期望的新的权力平衡被共和君主制一词所占领。值得注意的是……苏联建设的三大工程,俄罗斯至今受益苏联曾是世界两个超级大国之一,也是当时世界上面积最大的国家。苏联的总面积约2240万平方公里,包括俄罗斯等15个加盟共和国。在20世纪的世界舞台上,苏联起到了举足轻重的作用。苏……Google后开发的Carbon真的会取代C吗?【CSDN编者按】Carbon真的能成为C的替代品吗?目前我们只能猜测,但请不要忘记Swift或Kotlin等语言的诞生。原文链接:https:semaphoreci。c……周王室是天下共主为什么不扩张自己土地?周王朝在初期是天下诸侯中实力最强大的国家,没有哪一个诸侯,或者部落能够撼动周王室。春秋战国时期的局面也是周武王无法料到的,周武王姬发建立周王朝后,因政治形势严峻,为稳固政权,便……吉林扶余,一个在县县级市市辖区之间不断切换身份的城市渤海国扶余府扶余故地,江畔新城。这句话说的是由吉林省松原市代管的扶余市,扶余市因古代扶余国(抚余、夫余、凫臾)而得名,尽管这里以扶余命名的时间仅百余年,但扶余县这个……
为什么国产手机拍照很强,但拍视频却落后于苹果?你老家的名称叫什么?有由来吗?拳手为什么要跳绳?什么样的家庭条件可以买帕拉梅拉?杨可习惯逆行尧舜禅位寒气传到刘强东美人计供上这个四斤大海灯,我家连被窝都是香的多国驻华大使进博会让世界共享中国发展机遇背上骂名38年后被澄清决战决胜四季度国网顺昌供电公司召开电网改造重点工程项目推进会围炉经典记忆第四弹丨那些中悲大悲超大悲的苦情歌,你可以来几悲
如何打开一个文件孩子20岁了还有叛逆期吗孩子20岁了还有叛逆期应该如何解决瞧瞧黄晓明送给杨颖的豪宅,被称为酒店式公寓里的劳斯莱斯,羡慕股四头肌拉伤最快速的恢复方法怎么预防股四头肌拉伤立志做数据分析?这里有一份老司机的建议行政处罚的基本原则是什么?我的玩具朋友邵美琪真有点老了,穿拼色裙看着身材挺好,但眼下皱纹挺明显想念家人的作文2017塞北随笔细节可以看出一个人的素质我最敬佩的人

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找菏泽德阳山西湖州宝鸡上海茂名内江三亚信阳长春北海西安安徽黄石烟台沧州湛江肇庆鹤壁六安韶关成都钦州