#序
PythonとCで書かれた多量のコードを読む必要に迫られ、Pythonっぽい文法に慣れておこう思う今日このごろ。
せっかくなので、Cに近しいPython風シンタックスのNim言語に入門してみようと思った。
Nimって何、という人には、pythonな人が書かれた、以下がお勧めかな。
http://h-miyako.hatenablog.com/entry/2015/01/13/201846
#Windowsで、Nimしてみる。
コンパイル言語の中できわめて簡潔なシンタックスを持つNim、マイナー言語の例にもれず、webではギークな方々が黙々と試している系の記事が目につく。せっかく、"Nim in Action"の出版が(英語だけど)迫り、バージョン1.0も近づいているのに、ガチ勢以外お断りな雰囲気が漂っているのはどうかと思い、ベタな入門記録をwindowsベースで書いてみようとおもった次第。hello worldまで10分ちょっとでたどりつけたよ。
#インストーラには注意。
Nimのダウンロードページに行ってみるとトップにWindows向けバイナリの紹介がある。
http://nim-lang.org/download.html
おっ、と思い、ダウンロードして実行してみると、おなじみのセットアップ画面が立ち上がる。
が,このインストーラーにはいくつかはまりどころがあり、無駄な時間を過ごす事になってしまった。回避法を以下に記す。
##①インストールオプションはとりあえず、全部チェック。
Nimは、C言語(等)にコンパイルされる言語。Nimが吐き出すCコードを正しく解釈できるコンパイラを既にインストール済でない限り、Nimコードを実行するためには、Cコンパイラも同時にインストールする必要がある。とりあえずNimをお試ししたい場合には、インストールオプションはすべてチェックしておこう。
...Aporiaはnim向けエディタ。入門の際にはついでに入れておいてもいいだろう。
##②インストール先を自ら指定する。
おいおい、と突っ込みたくなったところ。
少なくとも日本語版windowsでは、元々の指定パスでは正しくインストールされない模様。
(日本語環境では)インストール先を末尾に"¥"をつけずにインストールしよう。
#コンパイルと実行。なかなか良い。
さて、実行してみよう。.nimの拡張子をつけたコードを書いてコンパイルする。
注意点としては、コンパイル先の言語を指定する必要がある事。すなわち、XXX.nimをC言語経由でコンパイルする場合には、"nim c XXX.nim"と書く。
コードはこんな感じ。
import strutils
type Person = object
name: string
age: int
proc greet(p: Person) =
echo "Hi, I'm ", p.name, "," , p.age, " years old."
echo "私の名前は$1、$2歳です。" % [p.name, (p.age).intToStr]
let p = Person(name:"太郎", age:18)
p.greet() # or greet(p)
ミニマムの型有り言語といった風の記述がC並みの実行速度を持つ.exeなバイナリに変換される。intToStrでなく、toStringだったらいいのにな、的な小市民的な感想はいったんさておいて、python風な簡潔シンタックス、やはりなかなか良いではないか。
#続く(不定期連載)。
Cも入ってなきゃいけない理由については、"Nim in Action"の第一章の以下の図がわかりやすいね。
Nimのエディタ対応の方も着々と進みつつあるらしく、visual studio codeがいちオシだったりする模様。本格的なマクロ対応など、ガチ勢も興味津々であろうnim言語、バージョン1.0に向け、だんだん怖くなくなっていくはずなので、お試し続けてみようと思う次第。
あとは、Pythonガチな兄貴のどなたかに、python -c-nim的なエコシステム構築に挑んでいただきたいと思う次第。