刚接触 Nim 时,想随手试下 let、var、proc 的用法,或者跑个简单的循环?如果非得先下载编译器、配环境、建文件,确实有点折腾。
咱们绿叶网的 Nim 在线编译器就是为你量身定做的。打开网页直接写代码,一键运行看结果,特别适合新手边学边试,也适合平时快速验证一小段相对独立的算法逻辑。
页面上方就是咱们的 Nim 在线编译器:左边写代码,右边看结果。操作起来非常直观,轻松就能上手。
咱们来跑个简单的例子:定义一组成绩,挑出 80 分及以上的,并计算这批成绩的平均分。
proc average(scores: openArray[int]): float =
var total = 0
for score in scores:
total += score
result = total.float / scores.len.float
let scores = @[88, 72, 95, 61, 90]
var excellent: seq[int] = @[]
for score in scores:
if score >= 80:
excellent.add(score)
echo "80 分及以上:", excellent
echo "平均分:", average(scores)运行结果如下。
80 分及以上:@[88, 95, 90]
平均分:81.2像这样的小段代码,用在线编译器验证最爽快了,完全不需要专门去建个本地项目。
Nim 在线编译器更适合 “小段代码、马上验证” 的场景。它能省掉本地环境配置,让注意力先放在语言本身。比较常见的用途包括:

简单来说,Nim 是一门 “长着 Python 的脸,操着 C 语言的心” 的编程语言。
第一眼看到它,你会觉得非常亲切,因为它像 Python 一样用缩进来控制代码块,看起来十分清爽。但它其实是一门正儿八经的 “静态类型、编译型语言” 。
它有一个很特别的设计:代码写完后,Nim 编译器通常会先把它翻译成 C 语言(也可以翻译成 C++ 或 JavaScript),然后再借用这些生态的底层工具编译成最终的程序。所以,它既能像 C 一样编译出体积小、运行快的原生程序,也能通过转译跑在浏览器环境里。

Nim 虽然不像 Java、Python 那么大众,但如果你想要 “代码写得少,程序跑得快”,它在下面这些场景里非常得心应手:

新手小伙伴看 Nim 的代码,第一感觉通常是:“这不就是 Python 吗?” 它同样抛弃了大括号,用缩进来排版,if、for 等结构看着特别干净。
但骨子里,Nim 在编译阶段会进行严格的类型检查。之所以平时看不到满屏的类型声明,是因为它有聪明的类型推断。
let name = "Leaf"
let count = 3
let price = 19.9
echo name
echo count * 2
echo price + 1.0上面的 name、count 和 price,你都没有标明它们是字符串、整数还是浮点数,但编译器能根据后面的赋值自己推导出来。这就让你既享受了静态语言的安全保障,又保留了写动态脚本般的丝滑体验。
在 Nim 里,这三个关键字都能用来声明变量,但分工很明确,弄懂它们对初学者来说很关键:
let language = "Nim"
var count = 1
const maxCount = 10
count += 1
echo language, ":", count, "/", maxCount一句话总结就是:以后还要改,用 var;运行一次定型后就不改了,用 let;写代码时就已经确定的固定值,用 const。平时多用 let,能让代码更安全、意图更清晰。
因为 Nim 编译器是个 “翻译小能手”。默认情况下,它不是直接把代码变成机器指令,而是先把代码翻译成 C 语言代码,然后再丢给平台上的 C 编译器去打包成程序。除了 C,它也支持生成 C++ 或 JavaScript 代码。
但这不代表 Nim 只是 C 语言的 “换皮”。Nim 有自己独立且完善的类型系统、内存管理(垃圾回收)和丰富的标准库。
之所以总提到它们,是因为 Nim 能直接无缝调用 C/C++ 庞大的现成代码库。很多成熟的底层功能直接拿来用就好,不用苦哈哈地从零重写,这也是 Nim 开发系统级程序的一大优势。

这是 Nim 很有特色的一部分(元编程)。
简单来说,它们能让程序在编译阶段自己生成代码。template(模板)像是一个智能的代码替换工具,而 macro(宏)甚至能直接读取和修改代码的语法树结构。有了它们,你可以创造出最符合业务逻辑的专属写法。

不过给新手小伙伴的建议是:前期先别管它。先把基础的变量、循环、函数(过程)、数组等摸透,再去挑战模板和宏。还没学会基础语法就开始折腾代码树,只会给自己徒增难度。
代码写得多了以后,鼠标点来点去多少有点慢。Nim 在线编译器支持下面这些常用快捷键,小伙伴们先把几个高频的记住就够用了。
Ctrl + Enter:运行代码。Ctrl + Z:撤销、Ctrl + Y:重做。Ctrl + C:复制、Ctrl + V:粘贴。Ctrl + A:全选。Ctrl + X:剪切。Ctrl + /:注释或取消注释。Ctrl + Home:跳转到首行的行首。Ctrl + End:跳转到末行的结尾。其中最值得记住的还是 Ctrl + Enter。刚修改完一个 proc、for 循环或者类型声明,顺手运行一次,很快就能知道代码是否符合预期。