Nimのインストールが無事に終わってnim
コマンドが使えるようになったところで、さっそくコードを書いて動かしてみることにします。最初のプログラムは予想される通り、伝統的なHello Worldです。テキストエディタを起動して次のコードを打ち込みます。
echo "Hello, world!"
1行だけと極めてシンプルになっています。この内容のファイルを適当な作業用ディレクトリに、hello.nimという名前で保存します。Nimで書かれたプログラムを実行するには、コンパイルを必要とします。nim c hello.nim
とすることでコンパイルできます。
$ nim c hello.nim Hint: used config file '/home/freemikan/.choosenim/toolchains/nim-2.0.2/config/nim.cfg' [Conf] Hint: used config file '/home/freemikan/.choosenim/toolchains/nim-2.0.2/config/config.nims' [Conf] ...................................................................... Hint: [Link] Hint: mm: orc; threads: on; opt: none (DEBUG BUILD, `-d:release` generates faster code) 27611 lines; 0.118s; 30.383MiB peakmem; proj: /home/freemikan/code/NimTutorial/hello.nim; out: /home/freemikan/code/NimTutorial/hello [SuccessX]
やや冗長なメッセージが出力されますが、[SuccessX]というところに目を向けると、正常に完了したであろうことが窺えます。nim c hello.nim
の代わりに、nim compile hello.nim
とすることも出来ます。コンパイルの結果、helloという名前の実行可能ファイルが生成されます。それを実行してみます。
$ ./hello Hello, world!
期待通りの結果が得られました。
nim
には、コンパイルと実行を同時に行ってくれるサブコマンドr
もあります。
$ nim r hello.nim Hint: used config file '/home/freemikan/.choosenim/toolchains/nim-2.0.2/config/nim.cfg' [Conf] Hint: used config file '/home/freemikan/.choosenim/toolchains/nim-2.0.2/config/config.nims' [Conf] Hint: mm: orc; threads: on; opt: none (DEBUG BUILD, `-d:release` generates faster code) 10086 lines; 0.014s; 10.488MiB peakmem; proj: /home/freemikan/code/NimTutorial/hello.nim; out: /home/freemikan/.cache/nim/hello_d/hello_47C5784933AC9B407791D45AD5FD951C951DB01D [SuccessX] Hint: /home/freemikan/.cache/nim/hello_d/hello_47C5784933AC9B407791D45AD5FD951C951DB01D [Exec] Hello, world!
最下行にHello, world!と出力されていることが確認できます。同様のことを行う別のオプションもあります。nim compile –run hello.nim
や、nim c -r hello.nim
でも同じ結果が得られます。
nim
はJavaScriptにコンパイルする能力も備えています。
$ nim js hello.nim Hint: used config file '/home/freemikan/.choosenim/toolchains/nim-2.0.2/config/nim.cfg' [Conf] Hint: used config file '/home/freemikan/.choosenim/toolchains/nim-2.0.2/config/config.nims' [Conf] ....................................... Hint: opt: none (DEBUG BUILD, `-d:release` generates faster code) 21576 lines; 0.054s; 19.828MiB peakmem; proj: /home/freemikan/code/NimTutorial/hello.nim; out: /home/freemikan/code/NimTutorial/hello.js [SuccessX]
hello.jsが生成されています。Node.jsでこれを実行することが出来ます。
$ node hello.js Hello, world!
WebブラウザでHTMLに読み込んで実行することももちろん可能です。