代码要怎么直接运行,写的代码要怎么运行

首页 > 实用技巧 > 作者:YD1662024-02-03 05:17:28

【CSDN 编者按】从日常生活中发现电梯软件的系统崩溃,到将一个业余项目发展成为最受开发者喜爱的编程语言,这是全球开发者

Graydon Hoare与Rust的一段奇妙故事。

原文链接:https://www.technologyreview.com/2023/02/14/1067869/rust-worlds-fastest-growing-programming-language/

未经授权,禁止转载!

作者 | Clive Thompsonarchive page 译者 | 弯月

出品 | CSDN(ID:CSDNnews)

许多软件项目的建立都是因为某个地方的某个程序员遇到了一个需要解决的问题。Graydon Hoare 的故事也源于此。

代码要怎么直接运行,写的代码要怎么运行(1)

Rust 诞生背景

2006 年,Hoare 是一名 29 岁的计算机程序员,就业于开源浏览器公司 Mozilla。有一天,回到温哥华的公寓,他发现电梯坏了,原因是电梯的软件系统崩溃了。这已不是第一次发生这样的事情。

Graydon Hoare 住在 21 楼,想到要爬楼梯回家,他顿时感到很恼火:“我们这些从事计算机工作的人甚至无法制造出一部不会崩溃的电梯!”

Graydon Hoare 知道,许多此类的崩溃都是由于程序使用内存的方式存在问题而造成的。电梯之类的设备内部的软件通常是用 C 或 C 等语言编写的,用这两种语言编写的代码运行速度非常快,而且代码非常紧凑。然而,问题在于,这两种语言也很容易意外引入内存错误,这些错误会导致程序崩溃。根据微软的估计,其代码中 70% 的漏洞是由于使用这些语言编写的代码存在的内存错误造成的。

对于大多数人而言,当知道自己需要爬到 21 楼时,都会很生气,但也就仅此而已了。但 Graydon Hoare 决心为此做点什么。于是,他打开笔记本,开始设计一种全新的计算机语言,他希望这种语言能够编写出没有内存错误、小而快的代码。他将其命名为 Rust,英文单词“rust”本是一种真菌,中文中叫植物锈病的不少都是这类真菌造成的,他说这个名字的寓意是:“为了生存而过度设计”。

代码要怎么直接运行,写的代码要怎么运行(2)

成为“最受程序员喜爱”的编程语言

17 年后,Rust 发展成为了全球最热门的新语言之一。有将近 280 万程序员使用 Rust 编写代码,从微软到亚马逊,许多公司都将其视为未来的关键。聊天平台 Discord 使用 Rust 来加速其系统,Dropbox 使用它来将文件同步到用户的计算机,而 Cloudflare 使用它来处理超过 20% 的互联网流量。

在 Stack Overflow 的年度调查中,Rust 连续七年蝉联“最受程序员喜爱”的编程语言。就连美国政府也在积极地推广 Rust 软件,将其作为确保流程更安全的一种方式。与许多成功的开源项目一样,Rust 的发展也离不开社区的共同努力,现有数百名贡献者仍在支持,其中许多是志愿者。Graydon Hoare 本人在 2013 年退出了该项目,很放心地将其移交给了其他工程师,包括 Mozilla 的核心团队。

创造一种新的计算机语言并不罕见。许多程序员都会利用业余时间建立一个小项目。但是,能够在 JavaScript、Python 或 Java 等众多流行的编程语言之中站稳脚跟,实属罕见。

代码要怎么直接运行,写的代码要怎么运行(3)

C/C 的天然“大坑”

为了理解 Rust 为何如此实用,我们应该深入了解编程语言对计算机内存的处理。

简单来说,你可以将计算机中的动态内存想象成一块黑板。软件运行时会不断地在黑板上写数据,记录哪个数据保存到了哪里,并在不需要的时候将其擦除。但是,不同的计算机语言,管理这块黑板的方式也不同。C 以及 C 等早期的语言倾向于赋予程序员很大的权力,让他们来决定何时以及如何使用这块黑板。这种能力很强大,代码可以动态控制内存,加快软件的运行速度。这就是为什么 C 和 C 常用于编写“裸机”代码,即直接与硬件交互。许多没有 Windows 或 Linux 之类的操作系统的机器,比如透析机或收银机等,都运行着这样的代码。(此外,C 和 C 之类的语言也用于更高级的计算:有时操作系统需要与硬件通信。Windows、Linux 和 MacOS 的内核都是用 C 语言编写的。)

虽然 C 和 C 的速度很快,但这是有代价的。编程人员需要仔细记录写入哪块内存,以及何时擦除。如果不小心忘记删除某些内容,结果会怎样?可能会导致软件崩溃,当软件尝试使用它认为是空的内存,但实际上其中已保存了数据,就会崩溃。或者,这会成为非法用户的入侵渠道。

黑客会发现程序没有正确清理内存,本应被清除的密码或财务等信息仍然存在,他们就会偷偷攫取这些数据。随着 C 和 C 代码的规模增大,即便是程序员再细心,也可能会犯很多内存错误,从而导致软件中 bug 累累。

无人机公司 Fusion Engineering 的联合创始人兼 Rust 库团队负责人 Mara Bos 表示:“在 C 或 C 中,你总是会担心代码随时出现问题。”

上个世纪 90 年代,Java、JavaScript 和 Python 等一系列语言开始流行。这些语言采取了完全不同的方法。为了减轻编程人员的压力,这些语言使用“垃圾收集器”自动管理内存,这些组件会在软件运行时定期清理内存。你可以编写没有内存错误的代码。但缺点是失去了细粒度的控制。程序的执行速度也减慢了(因为垃圾收集占用了关键的处理时间)。用这些语言编写的软件需要使用更多的内存。因此,编程世界分成了两大阵营。如果软件需要快速运行或在嵌入式设备的微型芯片上运行,则选用 C 或 C 编写更合适。如果是网络应用程序或手机应用,则可以选用一种更新的、具有垃圾收集功能的语言。

代码要怎么直接运行,写的代码要怎么运行(4)

首页 123下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.