本文共 2502 字,大约阅读时间需要 8 分钟。
rust编程语言
在今年的 ,Steve Klabnik谈到了Mozilla的 。 Klabnik以前撰写了Rust入门教程,标题为 ,这个演讲也有类似目的。 但是,这次演讲不是针对Ruby,而是针对一般程序员。 因此,演讲的主题是: $ LANGUAGE-ists的Rust 。
Klabnik的演讲包括三个部分。 首先,他介绍了Rust语言的起源以及有关该语言的发展方向的一些信息。 第二部分介绍了代码示例。 示例从无所不在的“ Hello World”到更复杂的示例,这些示例突出了一些使Rust与其他语言区分开的功能。 最后一部分提供了用于学习有关Rust的更多资源。
下面,我将介绍Steve Klabnik演讲中的一些要点,但我强烈建议或 。 我从他的演讲中学到了很多东西,我想你也会。
Rust是一种系统语言,可以替代C ++。 从理论上讲,您可以将Rust用于要使用C ++的任何编程项目。 Rust相对于C ++的优势在于,Rust从头开始设计为“安全,并发和快速”。
Rust最初是在Mozilla工作的Graydon Hoare的个人项目。 当Mozilla想要成立研究与开发部门时,Rust成为其第一个项目。 Mozilla写了很多C ++代码,并且不得不处理C ++的缺点。 例如,在上一届竞赛中Firefox中发现的所有三个漏洞都是由于C ++(例如,指针管理不当)引起的。 在Rust中,这类编程错误甚至都不会编译。
Hoare不再领导Rust的发展。 他已经从事其他项目。 Rust已达到足够成熟的开发阶段,因此即使没有原始开发人员,该项目也可以继续进行。 这并不意味着Rust是一个完全成熟的项目。 当前版本是0.10版本,新版本确实破坏了兼容性。 早期版本中的代码示例和文档可能不适用于最新版本,因此新用户可能会感到困惑。 1.0版即将推出,该版本将稳定所有内容。
Rust处于生命周期的关键时刻。 它还不完全成熟,因此可能会让某些人推迟使用它,但是它需要人们在1.0版本之前使用该语言进行改进。 该项目需要来自不同角度的人们的广泛关注,以确保Rust 1.0发行版尽可能的好。
use std::io::println;fn main() { println("Hello, world");}
这是用Rust编写的标准“ Hello World”应用程序。 对于具有任何C风格,花括号语言的经验的人来说,它应该看起来足够熟悉。 第一行导入println
函数。 Main是用fn
而不是int
, public static void
等声明的。 Rust与C / C ++ / C#/ Java程序员习惯使用的稍有不同,但足够紧密,因此并不完全陌生。
int main(void){ char *s = "hello world"; *s = 'H'; }
此C ++代码将带有警告编译,但在运行时将出现段错误。 Rust旨在阻止这种情况的发生,如以下示例所示。
fn main() { let s = &"hello world"; *s = "H";}segfault.rs:3:4 3:6 error: type &str cannot be dereferencedsefault.rs:3 *s = "H"; ^~error: aborting due to previous errortask 'rustc' failed at 'explicit failure', ...
Rust不会编译,而是打印出以上错误消息。 这是Rust的优势之一。 它对安全性的关注意味着它旨在防止像上面的C ++示例中的错误那样将其转化为编译后的代码。
fn main() { let nums = [1, 2]; let noms = ["Tim", "Eston", "Aaron", "Ben"]; let mut odds = nums.iter().map(|&x| x * 2 - 1); for num in odds { spawn(proc() { println!("{:s} says hello from a lightweight thread!", noms[num]); }); }}
这段代码展示了Rust的几个功能。 Rust使用let
关键字定义变量。 代码的第二和第三行创建一个整数向量( nums
)和一个字符串向量( noms
)。 Rust支持类型推断,因此没有必要明确声明向量包含整数或字符串。 下一行突出显示了默认情况下Rust中的变量不可更改的事实。 如果要使变量可变,请使用mut
关键字。 for
循环看起来就像您在更现代的语言(如Ruby或Python)中看到的一样,但是它可以编译为与传统C ++ for循环相同的机器代码。 代码的spawn(proc())
演示了Rust如何创建一个可以在其中运行函数的线程。 最后, println!
一行显示Rust如何处理替换。 在示例中, {:s}
将被noms[num]
的值替换。
我所介绍的示例仅涉及表面。 Klabnik的演示包括Rust代码的许多其他示例。 如我上面所述,他的演讲非常值得一看。 您将学到很多东西。 如果要尝试演示中的示例,只需确保下载了Rust 0.10。 当前的夜间版本已更改了某些内容,因此某些示例将不起作用。
在结束他的演讲时,Klabnik建议使用以下资源来了解有关Rust的更多信息。 但是,他的确警告说Rust的官方教程“很糟糕”,并且正在被重写。
查看并参与其中。
翻译自:
rust编程语言
转载地址:http://jxpzd.baihongyu.com/