====== Hello World! ======
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に読み込んで実行することももちろん可能です。