点击上方蓝色“飞雪无情”关注我的公众号,设个星标,第一时间看文章
前几天,在多伦多开了一个CppNorth大会,就是在这个大会上,Google的工程师正式宣布开源Google内部打造的编程语言Carbon,想用它来替代C++,称之为C++的继任者。

这让我想到了2010年发布的Rust,也是要替代C++,但是现在12年过去了,C++依然坚挺,在TIOBE Index 公布的7月份编程指数中,C++排在了第四位,而Rust则在第29位。
这也不难理解,毕竟有那么多C++项目,Rust又不支持「双向互操作」,所以从C++迁移到Rust并不是那么简单,而且已经熟练了使用C++的开发者们,也不愿意再学一门Rust语言重写一遍,其实也没必要,倒是有些新的项目会考虑Rust。
如果你看下Carbon的整体设计,会有一股浓浓的Rust味道(和Kotlin也很像),并且也改善了C++很难迁移到Rust的问题,支持Carbon、C++「双向互操作」,可以直接导入C++代码运行使用,这一点和Kotlin很像,在Kotlin中就可以直接使用Java代码。
事实上,在Carbon宣布开源的PPT中,的确提到了Java到Kotlin 、JavaScript到TypeScript的进化,所以Carbon也被定为C++到Carbon的进化。
不过从目前的使用情况来看,TypeScript进化算是比较成功的,越来越多的前端开发者认可了这门语言,但是Kotlin还存在悬念,Kotlin目前应用比较多的还是Android开发,Java后端开发并不是那么愿意去学这门语言来替换Java。
顺带提一句,2011年面世的Kotlin,现在TIOBE Index排名第35位。

Google为什么想把C++进化到Carbon呢?首先他们认为C++数十年的技术债务太大,很难逐步概念,还不如直接创建一门新语言,这样就避免继承C++的很多问题,可以从零到一的设计这门语言。这和我们自己开发项目很像,历史包袱很重的时候,还是不如废弃重新做个项目来的快。
第二个就是现在编程语言提供了出色的开发体验,比如Golang、Rust等等,这个的确是,现代语言的库管理、格式化、命名、并发等,使用上都非常方便,工作效率很高。
但是这些语言也不能替换C++,Carbon的认为的原因就是上面提到的迁移成本大。
所以Carbon的设计目标就有了:可以和C++无缝集成,也就是双向互操作性,现有的C++库可以直接用;现代语言体验好,高效;性能不能太差,要匹配C++。
从 https://github.com/carbon-language/carbon-lang 官网Repo来看,还有很多特性处于TODO状态,所以这些个目标什么时候能实现,还不好说。
即使正式版本发布了,能不能替代C++又是一个未知数,这一点从Kotlin、Rust就能看出来,数十年的努力,也没有达到。
一门语言要想普及,必须得低成本的解决企业开发问题,这样才有普及的可能。开发成功本,效率低,开发者不愿意学,企业找不到相应的开发者,都是普及的阻碍。就像Kotlin,Java后端的开发者是不愿意换的,那么企业去哪招人?即使招到,成本也高,Kotlin在后端自然就不容易普及。
据说,Carbon的诞生还和C++ ABI有关。Google想改变C++的ABI,解决内部的问题,但是被C++委员会给否了,所以才在内部搞了Carbon这个项目,用于在代码层面全面兼容C++,解决内部的C++ ABI问题。
一言不合就开发新编程语言,不光我们打工人卷,编程语言也卷。现在Carbon的加入,就是C++、Rust和Carbon一起卷,这还是近亲(同一类的),远的还有Golang、Python、Java、TypeScript一起卷,以后出门聊天,只会一门编程语言,都不好意思张嘴。

扫码关注
分享、点赞、在看就是最大的支持
3954

被折叠的 条评论
为什么被折叠?



