rust学了一段时间,感觉比c++简单,能取代c++,你们觉得会取代吗?

马上要去实习了 是pc客户端的方向

leader要我选两个方向 求问一下大家应该选择哪个哦 

一个是用rust开发的 主要做视频渲染

求问大家 感恩的心!!

}

前段时间,B 站推出的青年节演讲视频《后浪》在朋友圈刷屏,看着“后浪”们丰富多彩的生活,同事们纷纷自嘲自己就是被拍在沙滩上的那一个,被生活疯狂蹂躏。然而在编程语言界,“后浪”们掀起的波澜则十分有限。与近年来陆续涌现的新兴编程语言相比,那些出道即巅峰、一巅几十年的“前浪”们,似乎还没有要退位让贤的意思。

在 TIOBE 公布的最新编程语言排行榜中,排名前十的语言中有 8 个诞生于上个世纪 90 年代,最“年轻”的是诞生于 2001 年的 C#,而位于榜首的 C 语言距今已有 48 年的历史。如果我们再来纵观自 2002 年以来的编程语言排行榜,基本上也还是这些老牌编程语言的身影,尤其是 C 与 Java 这两位“前浪”老大哥的江湖地位一直难以撼动。

数十年来,陆续出现的新兴编程语言不在少数,其中不乏一些以取代某种老语言为目的而设计的,那么这些编程语言界的“后浪”们,是否能够追上“前浪”们的脚步呢?下面不妨让我们来看看这些年编程界的知名“后浪”们。

2007 年,Rob Pike 认为 C++ 在 Google 分布式编译平台上的编译过程太过漫长,于是他和 Robert Griesemer 开始探讨 “简化编程语言相比于在臃肿的语言上不断增加新特性,会是更大的进步”。两人一拍即合,随即说服了身边的 Ken Thompson,三人决定要捣鼓一门新语言。几天后,他们在 Google 内部发起了一个叫 Golang 的项目 。很快,一个在 C 语言基础上进行了优化的新语言诞生了,这就是 Go 。

作为一个设计目的就是为了取代 C/C++ 的新语言,Go 的语法在很多地方借鉴了 C/C++ 。比如用花括号作为定界符,以分号作为语句结束等等,这使得 Go 很容易就能被精通 C/C++ 的开发人员接受。而在沿袭 C/C++ 基本语法的基础上,Go 新加入了很多针对当下流行的分布式系统的实用功能,比如超轻量级的线程 goroutine,在高并发的系统中,可以按照多线程的方式写程序,从而保证逻辑的清晰和简单,又可以获得非常高的性能。而同样的事情在 C++ 中则需要调用第三方框架,如果用多线程,会导致系统线程过多带来大量的上下文切换 overhead;如果采用基于消息的架构,虽然可以获得较高的效率,但程序逻辑会被打散,可读性和可维护性较差。

此外,Go 语言作为 Google 大力支持的“亲儿子”,拥有编译、测试、调试、性能分析等一整套成熟的工具,编译效率极高,再加上其还内置了 http、json、xml、正则表达式等很多后端系统开发中常用的库,可以说是一门已经非常成熟的工程化开发语言。而在这方面,C++ 则需要用到大量的第三方开源工具或库,在工程上需要花费更多的精力进行技术选型,同时也不利于后期维护。

基于上述的优点,Go 语言被公认为非常适合构建命令行实用程序和网络服务等,尤其是云计算场景下的高并发应用,如今广泛流行的容器引擎 Docker、容器编排系统 Kubernetes 都是用 Go 编写的,Go 也因此被一些人称为“容器语言”。

虽然 Go 在很多方面已经超越 C/C++,并且在云原生相关领域占有了一席之地,但是仍然难以撼动 C/C++ 语言在大量工业基础设施终端的地位。C/C++ 的优势仍然在于它的运行效率,如果是低级设备驱动程序、内核空间操作系统组件以及其他需要严格控制内存布局和管理的任务,C 依然是不二之选。

目前,Go 在各种权威编程语言排行榜上都名列前茅,且一直呈上升趋势,在云原生建设如火如荼地当下,Go 至少在“云”这一领域已经完成了对前辈的超越。

Rust 是继 Go 之后另一个试图取代 C/C++ 的新语言。2010 年前后,随着大规模业务的拓展和分布式计算的流行,Graydon Hoare 也和 Rob Pike 一样看到了 C++ 等传统编程语言在高并发场景下的缺陷,试图创造更优秀的语言来替代它们。Rust 原本是 Graydon 从 2006 年开始捣鼓的个人项目,随后该项目得到了 Mozzila 基金会的资助,而 V8 搬到了服务器上,用来做服务器的软件并取得了成功。在往后的几年里,前端开发的模式因 JavaScript 而改变,React、React-Native、Vue 等基于 JavaScript 的明星项目迅速崛起,Dart 逐渐被人们遗忘在角落。

然而 Google 一直没有放弃 Dart 。2018 年,Google 对 Dart 进行了底层重构,并于 8 月推出了 Dart 2.0 版本,将其重新定义为一种同时支持 Web 和移动客户端开发、具有丰富工具箱和组件的语言。同年 12 月,Google 发布了用 Dart 编写的跨平台应用开发工具 Flutter,让 Dart 能够在服务端编写命令行程序,同时在前端可以编译成 JavaScript 运行在浏览器中。随后,Google 开始新一轮发力推广全新的 Dart ,包括为另一个知名前端框架 Angular 推出对应的 Dart 版本,指定 Dart 作为未来的操作系统 Fuchsia 的官方开发语言等,Dart 社区又焕发了勃勃生机。

可以说在刚刚诞生的前几年里,作为一门运行在浏览器中的脚本语言,Dart 是完败于前辈 JavaScript 的。而如今乘着“大前端”的变革浪潮,要说超越 JavaScript 虽然也不太现实(毕竟“凡是能用 JavaScript 写的东西终将用 JavaScript 来写” ),但 Dart 在未来一段时间里还是一个非常有潜力的“后浪”代表。

Kotlin 的语法融合了 Scala、Groovy、Python、Swift 等众多语言的特性,如果使用过其中任意一门语言,上手 Kotlin 将非常容易。与 Java 相比,Kotlin 引入了函数式编程方式,同时有各种语法糖简化了代码量。但与其他试图取代“前浪”的新语言不同,Kotlin 走的是一条 100% 兼容 Java 的道路(打不过就加入)众所周知,Java 这么多年屹立不倒的原因是因为其发展多年积累的庞大生态,包括丰富的函数库、IDE、编译器、成熟的应用生态等等。Kotlin 则可以调用 Java 的绝大多数库,也就可以直接使用 Java 现有的生态,因此很多开发者选择混用 Kotlin 与 Java。

由于采用的是与前辈和谐共生的模式,目前 Kotlin 已经超越 Scala 和 Clojure,成为 JVM 上第二大受欢迎的语言,尤其是在安卓开发领域得到了很多国内外开发者的认可,也是一个非常有前景的优秀“后浪”。

这些 21 世纪以后(2010 年前后)以取代老语言为目的而诞生的新语言中,能够顺利取代“前浪”的语言屈指可数。有的乘着新技术的东风在某一新兴领域成为了行业标杆。有的在与“前浪”的和谐共生中猥琐发育,静待日后的逆袭。当然,更多的是消逝在了历史的长河里,甚至没有泛起一丝涟漪……究其原因,如今仍然流行的语言诸如 C/C++、Java、Python、JavaScript 等等,虽然它们大多数诞生于上个世纪,但它们一直以来也都在针对新时代的需求不断地优化,经历了数十个甚至上百个版本的更迭,很多语言已经与诞生之初完全不一样了。再加上它们数十年来积累的函数库、IDE 、编译器、应用生态等自成一脉的丰富体系,让“后浪”们难以望其项背。

从商业的角度来说,在行业格局没有发生颠覆性变革的时候,现有的热门语言依靠多年积累的庞大用户基础,就足以形成垄断。就算有更好的新语言出现,它们也可以迅速吸收这些新语言的优良特性,就像大企业兼并小企业,或者直接照搬它们优秀的业务功能一样,让自己变得更好,也更容易被大部分开发者接受。所以要想在编程语言界把“前浪”们拍在沙滩上,“后浪”们要走的路还有很长很长。

}

我要回帖

更多关于 c++有必要学吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信