nim-lang是以转译为其他编程语言为目的的编程语言。

关注nim-lang是因为它既可以转译成C/C++代码,又可以转义成JavaScript代码,灵活多变。且在内存管理方面,可以使用垃圾收集,也可以使用基于引用的方式,用途广泛。

另外,Nim还自包含,不需要额外的依赖。还具有强大的macro系统。措辞风格方面,采用了和python类似的缩进编排。

Features

  • “It combines successful concepts from Ada and Modula.” 尚不知道啥意思。
  • 对JavaScript后端提供一流的支持
  • 支持元编程相关的generics, templates, macros等
  • 料包管理器叫做Nimble,使用package.json来映射料包的名字和URL
    • 料包采用.nimble定义
  • 可以很方便封用C/C++/Obj-C的料库
  • 程序崩溃的时候会抛出异常,从Python学的

Frequently Asked Questions

  • 被nim学习的语言:Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon
  • 使用proc命名执行诀,func用于定义函数(即没有副作用的执行诀)
  • 如何产出执行最快的文件
    • -d:danger关掉所有检查
    • -d:release供一般使用
    • 可以使用--passc:-flto-d:lto打开编译时优化
  • 如何产出做小的可执行文件
    • -d:danger -d:strip --opt:size,外加编译时优化
  • 如何使用其他C编译器
    • 编辑config/nim.cfg

Learn Nim in 5 minutes

  • #开启单行注释
  • #[#开启多行注释,可嵌套
  • 或者使用discard

How I Start

对于文件main.nim,内容如下:

echo "Hello, world!"

其编译只需要执行nim c main.nim即可生成可执行文件main.exe

执行nim r main.nim则生成后会直接执行之,或者nim c -r main.nim

执行nimble init则可生成一个工程,使用nimble build来建构,nimble install来安装。

nimble默认生成的是release build

Nim basics

VSCode的Code Runner扩展可以通过Alt+Ctrl+N编译执行当前代码。

Nim Tutorial (Part I)

文档

其他参考