Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Rust:冉冉升起的新力量

Rust:冉冉升起的新力量

作者头像
用户1682855
发布于 2019-03-06 09:55:53
发布于 2019-03-06 09:55:53
7660
举报
文章被收录于专栏:前沿技墅前沿技墅

你肯定有过夏夜仰望星空的时候,但不知道你是否思考过这样一个问题:如何才能知道宇宙万物星罗棋布的规律?科学家们殚精竭虑地研究,就是为了探寻这个秘密。如果科学家们能和宇宙的设计者对话,就可以通过设计者的亲口描述了解其对宇宙万物的规划,这样就可以对研究宇宙万物起到提纲挈领的作用,科学家们的工作会更有成效。但是,没有这种“如果”。

一门编程语言就像一个小宇宙,语言中的各种语法概念就像一颗颗星辰。对于初学者来说,看这些语法概念与看星罗棋布时产生的迷惑是相似的。幸亏编程语言是由人类创造的,编程语言的作者可以被找到,编程语言的源码也可以被看到,甚至一些好的编程语言还会为你准备好非常丰富的文档,供你参阅学习。通过这些信息我们可以了解到:一门语言缘何诞生?它想解决什么问题?它遵循什么样的设计哲学?一门好的语言是有内涵哲学的语言,它表里如一,有所想,有所为。

Rust语言就是这样一门哲学内涵丰富的编程语言。通过了解Rust遵循什么样的设计哲学,进一步了解它的语法结构和编程理念,就可以系统地掌握这门语言的核心,而不至于在其纷繁复杂的语法细节中迷失。

缘起

任何一门新技术的兴起,都是为了解决一个问题。自操作系统诞生以来,系统级主流编程语言,从汇编语言到C++,已经发展了近50 个年头,但依然存在两个难题:

  • 很难编写内存安全的代码。
  • 很难编写线程安全的代码。

这两个难题存在的本质原因是C/C++属于类型不安全的语言,它们薄弱的内存管理机制导致了很多常见的漏洞。其实20 世纪80 年代也出现过非常优秀的语言,比如Ada 语言。Ada拥有诸多优秀的特性:可以在编译期进行类型检查、无GC 式确定性内存管理、内置安全并发模型、无数据竞争、系统级硬实时编程等。但它的性能和同时期的C/C++相比确实是有差距的。那个时代计算资源匮乏,大家追求的是性能。所以,大家都宁愿牺牲安全性来换取性能。这也是C/C++得以普及的原因。

时间很快到了2006年,自称“职业编程语言工程师”的Graydon Hoare(简称为GH),开始开发一门名为Rust的编程语言。

什么是“职业编程语言工程师”?用GH自己的话说,职业编程语言工程师的日常工作就是给其他语言开发编译器和工具集,但并未参与这些语言本身的设计。自然而然地,GH萌生了自己开发一门语言的想法,这门语言就是Rust

“Rust”这个名字包含了GH 对这门语言的预期。在自然界有一种叫作锈菌(Rust Fungi)的真菌,这种真菌寄生于植物中,引发病害,而且号称“本世纪最可怕的生态病害”之一。这种真菌的生命力非常顽强,其在生命周期内可以产生多达5 种孢子类型,这5 种生命形态还可以相互转化,如果用软件术语来描述这种特性,那就是“鲁棒性超强”。可以回想一下Rust的Logo形状,像不像一个细菌?Logo上面有5个圆圈,也和锈菌这5种生命形态相对应,暗示Rust语言的鲁棒性也超强。Rust也有铁锈的意思,暗合裸金属之意,代表其系统级编程语言属性,有直接操作底层硬件的能力。此外Rust在字形组合上也糅合了Trust和Robust,暗示了信任与鲁棒性。因此,Rust真可谓一个好名字。事实证明,Rust语言不仅仅是名字起得好。

期待

GH认为,未来的互联网除了关注性能,还一定会高度关注安全性和并发性。整个世界对C和C++的设计方式的青睐在不断地发生改变。其实20世纪七八十年代涌现了很多优秀的语言,拥有很多优秀的特性,但它们的内存模型非常简易,不能保证足够的安全。比如Ada语言的动态内存管理虽然是高规格的安全设计,但还是引起了非常重大的安全事故(20世纪90年代,欧洲空间局阿丽亚娜五号运载火箭发射失败,原因是Ada在将64位浮点数转换为16位无符号整数时,发生了溢出。)。

所以,GH对这门语言的期望如下。

  • 必须是更加安全、不易崩溃的,尤其在操作内存时,这一点更为重要。
  • 不需要有垃圾回收这样的系统,不能为了内存安全而引入性能负担。
  • 不是一门仅仅拥有一个主要特性的语言,而应该拥有一系列的广泛特性,这些特性之间又不乏一致性。这些特性可以很好地相互协作,从而使该语言更容易编写、维护和调试,让程序员写出更安全、更高效的代码。

总而言之,就是可以提供高的开发效率,代码容易维护,性能还能与C/C++媲美,还得保证安全性的一门语言。正是因为GH 以这种观点作为基石,才使得今天的Rust成为了一门同时追求安全、并发和性能的现代系统级编程语言。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前沿技墅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
编程语言中的变革者 | 敢于打造理想世界的 Rust
在历史的早期,程序员们写代码,都是直接机器码编程,就是纸带机,大家都在那戳一个个小孔来编程。
张汉东
2020/04/21
2.3K4
Rust 从入门到精通01-简介
Rust语言在2006年作为 Mozilla 员工 Graydon Hoare 的私人项目出现,而 Mozilla 于 2009 年开始赞助这个项目。第一个有版本号的 Rust 编译器于2012 年 1 月发布。Rust 1.0 是第一个稳定版本,于 2015年5月15日发布。
IT可乐
2022/09/19
8180
Rust 从入门到精通01-简介
Rust: 编译器驱动开发
考虑到,我用这门语言的时间只有一星期多,某些观点和感受并非那么准确。因此,我的观点并不适合作为一份参考材料。
Phodal
2020/07/13
1.4K0
微软喜提Rust拟替代C/C++?凭什么!
今日 @开源中国 一则消息引发热议:微软计划将 Rust 作为 C 和 C++ 的安全替代品。
博文视点Broadview
2020/06/10
1.5K0
微软喜提Rust拟替代C/C++?凭什么!
Reddit 观察:你何时会考虑使用 Cpp 而非 Rust ?
一位同时使用过 Rust 和 Cpp 的开发者,他用 Rust 主要是实现 Web 服务器和命令行工具,而 Cpp 则用于游戏开发(虚幻引擎)和编写虚幻引擎插件。
张汉东
2023/09/13
3730
Reddit 观察:你何时会考虑使用 Cpp 而非 Rust ?
深入浅出Rust内存安全:构建更安全、高效的系统应用
在过去几年中,Rust编程语言以其独特的安全保障特性和高效的性能,成为了众多开发者和大型科技公司的新宠。尤其是其内存安全特性,成为了广泛讨论和赞扬的焦点。本文旨在深入探讨内存安全的概念、Rust在内存安全方面的独到之处,以及这些特性对系统开发的深远影响。
运维开发王义杰
2024/02/05
6500
深入浅出Rust内存安全:构建更安全、高效的系统应用
为什么永远不会有语言取代 C / C++ ?
每个 CPU 都带有一种称为 ISA(指令集架构)汇编的电路语言。ISA 程序集是一种硬件语言,由基本数据操作、数学计算和结构化编程(即 jmp)的操作组成。但是,为每个计算需求编写汇编代码无疑是耗时的,因此过去的程序员发明了对人类友好的语言和编译器。
C语言与CPP编程
2022/10/31
1.2K0
为什么永远不会有语言取代 C / C++ ?
C,C++,还是 Rust?
最近工作中,对我司的 MPP 数据库产品 (https://github.com/cloudberrydb/cloudberrydb) 进行存算分离的改造,我们的组件最开始是 C++ 写的,但是由于产品本身是基于 Postgres (C 语言),所以又引入了非常多的 C 代码。
roseduan
2023/12/11
5180
C,C++,还是 Rust?
第1章 JVM语言家族概览
所谓编程语言只是一个抽象的规范,而编译器是这个规范的实现,它是在这个规范的严格定义下被实现的.
一个会写诗的程序员
2018/08/17
1.4K0
现代编程语言哪家强?2020年,你或许应该了解这7门编程语言
如果我们把人类的现代文明看作一辆汽车,那么软件开发行业就像汽车的发动机,编程语言就像发动机的燃料。那么问题来了,你应该学哪种编程语言?
AI研习社
2020/02/12
1.3K0
白宫发文,呼吁开发者放弃C、C++:Rust被「钦点」内存安全
近日,在一份 19 页的报告《回归基础构件:通往安全软件之路》中,白宫国家网络主任办公室(ONCD)呼吁开发者使用「内存安全的编程语言」,比如 Rust 语言。报告指出,从一开始就选择内存安全的编程语言,是以安全设计方式开发软件的重要途径。
机器之心
2024/03/07
2880
白宫发文,呼吁开发者放弃C、C++:Rust被「钦点」内存安全
真正的杀死C++的不是 Rust
【编者按】“C++ 已经死了 80%?”本文作者已经使用 C++ 18 年了,他在体验了数十门编程语言后,他指出,尽管 C++ 在过去几十年中一直是程序员最常用的编程语言之一,但它存在一些问题,如不安全、效率低、浪费程序员的精力等。因此,文章探讨了一些可能会取代 C++ 的语言和技术,包括 Spiral、Numba 和 ForwardCom 等,并分别对它们进行了详细的介绍。
C语言与CPP编程
2024/05/17
3140
真正的杀死C++的不是 Rust
Rust语言在中国大学内普及状况调研报告【2022】
在 Rust 语言发布七周年(2022.5.15)之际,本人代表Rust 中文社区发起本次调研活动,旨在了解 Rust 语言在广大高校中的教育普及状况。本次调查报告一共有224人参与,其中有效数据为219份。希望这份报告可以反映出广大学生对于学习 Rust 语言的渴望和呼声。
张汉东
2022/08/31
1.4K0
Rust语言在中国大学内普及状况调研报告【2022】
C++ 与 Go、Rust、C#:基于实践场景的语言特性对比
C++ 作为老牌编程语言,变量声明方式多样,既可以使用传统的 int num; 方式,也支持 auto 类型推导,例如 auto it = vec.begin(); 。C++ 拥有丰富的数据类型,包括基本数据类型、结构体、类,还支持复杂的自定义类型,并且存在隐式类型转换,但这也可能导致一些潜在的类型错误。
羑悻的小杀马特.
2025/05/13
1880
C++ 与 Go、Rust、C#:基于实践场景的语言特性对比
对 王垠《对 Rust 语言的分析》的分析
当时觉得这篇文章对 Rust 语言的分析太偏颇,但是王垠说这篇文章会一直更新。这几年也有不少新手在群里引用王垠这篇文章对 Rust 的看法,或者直接问我,我原以为过去五年了,王垠应该对文章里对观点有所更新吧,然而并没有。
张汉东
2021/07/14
2.3K2
Go是更好的编程语言吗?
第一次接触GO是5年前,14年4月份,也是在我司,全职钻研一周,彼时C++中毒太深,内心排斥其他编程语言,看其他语法总觉得有点怪,而且有“C/C++能做任何事,故无用其他语言之必要”的思想在作祟。
AI科技大本营
2019/05/13
2K0
Go是更好的编程语言吗?
什么是好的编程语言?
本文作者是高级系统开发工程师 Torbear Gannholm。Torbear 有着 30 多年的开发经验,对技术很深刻的理解。对于什么是好的编程语言,他发表了一篇文章分享了自己的观点。以下是他的全文:
AI研习社
2019/11/23
2.9K0
用 Rust 拯救 60 岁老程序员:用 Ada 写了几十年的飞机程序,现在终于可以改用 Rust 了
针对具有更高安全需求的行业,AdaCore 表示将为其 Rust fork 提供长期支持。
深度学习与Python
2023/09/08
6770
用 Rust 拯救 60 岁老程序员:用 Ada 写了几十年的飞机程序,现在终于可以改用 Rust 了
编程语言50年来的变化,我用50种编程语言告诉你“Hello world”怎么写!
当我们学习一门新的语言时,“Hello, World!“通常是我们所写的第一个程序。 因此,所有程序员在职业生涯中至少完成了“Hello, World!“程序员在职业生涯中通常使用一种以上的编程语言,他们中的大多数甚至至少已经实现了十几种。
风骨散人Chiam
2021/09/06
9520
2024年,Rust和Go学哪个更好?
Rust vs. Go,在2024年,应该选择哪一个?或者说应该选择哪种语言——GoLang还是Rust。这可能是许多程序员在选择语言时考虑的一个问题。选择理想的编程语言被视为在这个不断变化的环境中取得成功的重要抉择。
程序新视界
2023/12/04
3.9K0
2024年,Rust和Go学哪个更好?
推荐阅读
相关推荐
编程语言中的变革者 | 敢于打造理想世界的 Rust
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档