您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

Google终于开始革C++的命了

时间:2022-07-28 14:46:06  来源:  作者:码农翻身

微软想通过TypeScript 革了JAVAScript的命

苹果想用Swift革了Objective-C的命

JetBrAIns 想用Kotlin 革了Java的命

现在,google终于要拿C++开刀了。

 

这个黑色圆圈中的C可不是C语言,而是叫做:

Carbon

为啥Google要搞一个Carbon呢?C++不是Google的五大语言之一吗?

C++,Java,Python/ target=_blank class=infotextkey>Python,JavaScript,Go

长期以来,C++是构建性能关键型应用程序员的主要语言,也积累了大量的项目和类库。

但是C++本身非常复杂,数十年下来,这些项目和类库慢慢变成了技术债务。

C++虽然也在努力发展,但是受到了官僚委员会流程的阻碍,这个流程以标准化而不是设计为导向,添加新功能很困难,一个特别委员会可能需要数年的瀑布流程才能做出重要决定。

可以想象,当Google的人面对着海量C++代码的系统,想改进C++又很难的时候,那种无奈的心情。

既然如此,那就重启炉灶,用碳(Carbon)去燃烧C++吧!

为什么不直接用Rust?

可能很多人有这个疑问,Rust也面向系统级编程,并且被Mozilla设计成内存安全的语言,用来替代C语言。

Google认为,对于新项目来说,用Rust很合适,但是问题在于:

它不像 Java 和 Kotlin 那样具有“双向互操作性”,C++的生态迁移到Rust是很困难的。

而Carbon的目标是C++的后继,是围绕与C++的互操作性以及迁移现有C++代码库而设计的。

不得不说,生态的威力再一次展现,当你想让别人搬家的时候,最好能把他手头的财产一并都搬走,否则每个人都会恋恋不舍。

Carbon的设计目标是这样的:

  • 性能要和C++相媲美,要不然就没有吸引力了
  • 和C++无缝的,双向的互操作
  • 代码应该容易编写、阅读
  • 有着实用的安全和测试机制
  • 要有一个温和的学习曲线,别把人都吓跑了
  • 支持现有的软件设计和架构

开发团队还将着手创建一个内置的包管理器,这几乎是每个语言必备的工具了。

这样,Carbon就可以像TypeScript和Kotlin那样,基于现有C++的生态系统,吸引开发人员,保护现有投资。

看下Carbon的代码吧:

import Console;// Prints the Fibonacci numbers less than `limit`.fn Fibonacci(limit: i64) {  var (a: i64, b: i64) = (0, 1);  while (a < limit) {    Console.Print(a, " ");    let next: i64 = a + b;    a = b;    b = next;  }  Console.Print("n");}

用fn来定义函数,用var 来声明变量,变量类型后置,有Go语言的影子。

用大括号定义函数体和代码块,用分号来分割语句,while 关键字, 有C语言的感觉。

Console.Print(...),有点C#的味道。

总之,虽然号称是C++的后继,但一点儿也不像C++。

语言特性

 

我浏览了一下,感兴趣的特性有这些:

指针

指针号称是C语言和C++的精华,可以直接操作内存,强大又灵活。

不过指针也是万恶之源,把指针指向不该指向的地方,程序马上崩溃。

Carbon中也有指针:T* p , 但是为了安全,并不支持指针的算术运算如 p++

Carbon中没有空指针,要指向一个无效的对象,需要使用Optional(T*)

既然有指针,还要和C++互操作,那垃圾收集之类的技术肯定是没法用了,自己小心地管理内存吧。

只提供一种方法来做事情

对于一件事情,Perl语言提供了很多方式来做,在非常灵活的同时也让代码维护者非常困扰。

C++也是这样,例如可以用 "&&" 或者 "and"来表示逻辑运算,可以用struct 和class 来封装数据。可以用0xaa和0xAA表示十六进制。

为了提高代码的可读性和可维护性,促进团队协作,Carbon决定向Python学习:应该只有一种最好的,最明显的方式来做事情。

安全

Carbon 对软件的考量是这样的:

内存安全:不允许越界访问,取消null指针,取消未初始化的指针,禁止访问已经释放的地址

类型安全:不允许用不正确的类型来访问有效的内存

数据竞争安全:防止多个线程在没有“同步”的情况下对内存地址进行读写

其他的特性例如泛型、类.....我这里就不一一赘述了,感兴趣的可以到Github上去看看:
https://github.com/carbon-language/carbon-lang

开发方式

Carbon 是Google内部发起的,但是Carbon团队认为为了未来取得成功,未来需要独立的、开放的社区来主导。

不能像C++委员会那样,虽然保证了国家和公司的代表性,但是限制太多,成本高昂,不出席会议就没有发言权,只有现场人员的投票才能决定。

这和现在的主流开源方式大相径庭,所以Carbon不走“ISO流程”,要拥抱开源,将来由软件基金会和志愿者领导。

一点儿想法

看着Google以及其他国外大厂孜孜不倦地折腾新语言,新系统,不由得联想到国内的大厂,能不能也学学人家,投入资源,做一点儿底层的东西,对IT界做点儿贡献了?别老是在应用层琢磨商业模式了。

我相信,经过20多年的发展,国内绝对有人有能力做类似事情,就看有没有环境去做了。

 

 



Tags:   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
凌晨3点北京鬼市,天亮就消失,2大规矩:看货不问价,照货不照人
顾名思义,鬼市开市的时间节点在天明之前,至于起点有的是三更,有的是五更,并无一等。其实鬼市各地都有,只不过北京的鬼市更出名,就连老北京人也觉得这里阴森森的,却又很向往想去探险...【详细内容】
2024-04-19  Search:   点击:(3)  评论:(0)  加入收藏
老美怂了?美国众议院计划给予字节跳动额外180天出售TikTok
据外媒报道,迫使字节跳动剥离TikTok的新众议院法案将包括一项条款,赋予总统允许公司额外180天时间完成出售的自由裁量权。该法案已于3月13日获得众议院投票通过,预计将在周六放...【详细内容】
2024-04-19  Search:   点击:(4)  评论:(0)  加入收藏
Meta AI 全球市场扩张,并上线网页版 meta.ai
IT之家 4 月 19 日消息,Meta 公司近日宣布 Llama 3 大语言模型之外,扩展 Meta AI 服务到美国之外的 13 个国家和地区,还宣布上线专门的聊天网站:meta.ai。Meta 公司在新闻稿中表...【详细内容】
2024-04-19  Search:   点击:(2)  评论:(0)  加入收藏
重磅!Meta推出开源大模型Llama 3,性能直逼GPT-4
每经编辑:杜宇当地时间4月18日,AI 领域迎来重磅消息,Meta正式发布了人们等待已久的开源大模型Llama 3。与此同时,Meta首席执行官扎克伯格宣布:基于最新的Llama 3模型,Meta的AI助手...【详细内容】
2024-04-19  Search:   点击:(4)  评论:(0)  加入收藏
多地将禁止超标车上路,还可以选择骑行电摩,交警告诉你上牌流程
超标电动车由于不符合电动车的安全性能标准,存在着安全隐患,所以在过渡期结束以后,这种车辆将禁止上路行驶,接下来有多地将禁止超标电动车上路。广大车主除了选择电动自行车以外...【详细内容】
2024-04-19  Search:   点击:(3)  评论:(0)  加入收藏
喝完一瓶啤酒,多久才能开车?
首先,需要明确的是,酒驾是极其危险的行为,不仅危及自身安全,还可能威胁到他人生命。根据交通法规,当驾驶人血液中的酒精含量达到或超过20mg/100ml时,即被认定为酒驾,而超过80mg/100...【详细内容】
2024-04-19  Search:   点击:(2)  评论:(0)  加入收藏
古代富人都喜欢“扬州瘦马”,什么是“扬州瘦马”?说出来别不信
扬州的繁荣也催生了一些不道德的商机,其中之一就是“扬州瘦马”。这与其说是一个关于马的故事,不如说是一个关于封建社会对女性的摧残的故事。在中国古代,妇女地位低下,一些父母...【详细内容】
2024-04-19  Search:   点击:(4)  评论:(0)  加入收藏
夫妻一方可查询配偶财产状况,为何多地先后立法?
专家认为,这有助于保障妇女对婚姻财产的知情权。不过近年来实践发现,即便有地方出台类似规定,在现实的执行中仍会遭遇一些阻力,尤其是在查询房产和银行存款方面文|《财经》记者...【详细内容】
2024-04-19  Search:   点击:(3)  评论:(0)  加入收藏
“货币战争”开打?五大央行集体出动!
作者:暴哥来源:暴财经pro(ID:icaijing123)1997年东南亚金融危机重演?亚洲五大央行出手,绝不能让悲剧重来!1美元掀桌子,亚洲货币遭遇一场全面风暴!在《美元开始收割了!》一文中暴哥说过,...【详细内容】
2024-04-19  Search:   点击:(3)  评论:(0)  加入收藏
电影《变形金刚:起源》首支预告片发布:擎天柱、威震天还是好朋友
快科技4月19日消息,日前,1986年之后首部《变形金刚》动画电影《变形金刚:起源》发布首款预告片,影片暂定9月13日北美上映。该片将时间线拨回赛博坦时期,实现了观众一直以来期待的...【详细内容】
2024-04-19  Search:   点击:(2)  评论:(0)  加入收藏
▌简易百科推荐
Meta如何将缓存一致性提高到99.99999999%
介绍缓存是一种强大的技术,广泛应用于计算机系统的各个方面,从硬件缓存到操作系统、网络浏览器,尤其是后端开发。对于Meta这样的公司来说,缓存尤为重要,因为它有助于减少延迟、扩...【详细内容】
2024-04-15    dbaplus社群  Tags:Meta   点击:(3)  评论:(0)  加入收藏
SELECT COUNT(*) 会造成全表扫描?回去等通知吧
前言SELECT COUNT(*)会不会导致全表扫描引起慢查询呢?SELECT COUNT(*) FROM SomeTable网上有一种说法,针对无 where_clause 的 COUNT(*),MySQL 是有优化的,优化器会选择成本最小...【详细内容】
2024-04-11  dbaplus社群    Tags:SELECT   点击:(3)  评论:(0)  加入收藏
10年架构师感悟:从问题出发,而非技术
这些感悟并非来自于具体的技术实现,而是关于我在架构设计和实施过程中所体会到的一些软性经验和领悟。我希望通过这些分享,能够激发大家对于架构设计和技术实践的思考,帮助大家...【详细内容】
2024-04-11  dbaplus社群    Tags:架构师   点击:(2)  评论:(0)  加入收藏
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(5)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(9)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(16)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(14)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(9)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(15)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(10)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条