ex1: Hello World

作为一个程序员,我们要有一个很有仪式感的开端:对于一门新语言,让它成功地在屏幕上输出 Hello World。

想用 Rust 完成这件事非常简单,首先创建一个*.rs文件,这代表一个 Rust 语言的代码文件,不妨就叫它ex1.rs。使用你的编辑器在里面输入

fn main() {
    println!("Hello World!");
}

保存文件后我们的代码就完成了

Rust 是一门预编译静态类型语言,简单来说就是你需要先写好代码,编译器把整个程序编译完成后会生成一个可执行文件,这个程序可以在正确框架的计算机上直接运行。(如果你使用过 C 或 C++ 的话你应该对这个概念非常熟悉)为了让我们的程序能够运行起来,我们需要进行“编译”,把人类能理解的代码变成计算机可以理解的代码。在命令行中运行下面的代码进行编译

rustc ex1.rs

运行结束后你可以在当前目录下看到一个编译完成的二进制可执行文件

$ ls # 使用 ls 指令查看目录下的文件
ex1.rs ex1

接下来就可以运行程序了

$ ./ex1 # 在 Linux 下直接指定文件,如果是可执行文件则会进行执行

Hello World!

我们就成功地使用 Rust 语言编写并成功运行了第一个程序

代码说明

作为我们的第一个程序,我们分析一下代码的结构。

最外面的fn main()就是函数定义,说明了我们程序的入口:main函数,这与很多其他语言一样。

println!可以看到后面有一个感叹号,这是一个宏(macro)。宏的概念在 C 和 C++ 中比较常见,它代表了一种简化操作,你可以认为它通过你的输入,构造出了一个别的什么语句。关于 Rust 的宏我们会在未来提到,现在不妨就记住打印是这样就可以了。

println!可以在打印之后进行换行,print!则是在打印后不换行,两者都是宏。

Rust 通过;标注语句(statement)的结束,如果不写分号的话 Rust 认为这是一个表达式(expression),而表达式是有值的。这个概念如果学过《编译原理》的话会更好理解,我们先在这里提一下,之后再进行更深入的讨论。

弄坏它

有的教程中,我们会故意设计一些弄坏程序的方法,让你见识到 Rust 编译器的能力。在这里,你可以尝试:

  1. println!的感叹号删除

  2. println!语句最后的分号去掉

重新编译程序,看看结果如何

碎碎念

Why Hello World

为什么我们写的第一个程序是 Hello World 呢?似乎所有的程序设计语言教程都是这么教的,但是具体的原因好像没有特别说明。据说 Hello World 最早出现在一个 B 语言的编程教程中,之后被引用到 C 语言的教程中,逐渐就传开了。

在我们上课的时候,老师告诉我们一个 Hello World 程序可以认为是一个计算机程序的最小的缩影。它有一个完整的程序结构,有一个可以和外界交互的方法,可以进行编译和运行,给人一种:“我可以让电脑输出 Hello World 了,那么我以后也可以让它做别的事情。”的感觉。当然,之后我们就会意识到为了编写一个完整的程序有多么困难,但是 Hello World 还是能在一开始给人很大的信心。

最后更新于