LoginSignup
17
13

More than 5 years have passed since last update.

Windowsではじめる、あんま怖くないNim① それっぽいhello world。

Last updated at Posted at 2016-10-13

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

おっ、と思い、ダウンロードして実行してみると、おなじみのセットアップ画面が立ち上がる。
nimuinst.PNG

が,このインストーラーにはいくつかはまりどころがあり、無駄な時間を過ごす事になってしまった。回避法を以下に記す。

①インストールオプションはとりあえず、全部チェック。

Nimは、C言語(等)にコンパイルされる言語。Nimが吐き出すCコードを正しく解釈できるコンパイラを既にインストール済でない限り、Nimコードを実行するためには、Cコンパイラも同時にインストールする必要がある。とりあえずNimをお試ししたい場合には、インストールオプションはすべてチェックしておこう。

nimcheck.PNG
...Aporiaはnim向けエディタ。入門の際にはついでに入れておいてもいいだろう。

②インストール先を自ら指定する。

おいおい、と突っ込みたくなったところ。
少なくとも日本語版windowsでは、元々の指定パスでは正しくインストールされない模様。
(日本語環境では)インストール先を末尾に"¥"をつけずにインストールしよう。

設定例。
nim222.PNG

コンパイルと実行。なかなか良い。

さて、実行してみよう。.nimの拡張子をつけたコードを書いてコンパイルする。
注意点としては、コンパイル先の言語を指定する必要がある事。すなわち、XXX.nimをC言語経由でコンパイルする場合には、"nim c XXX.nim"と書く。

こんな感じ。
hellonim.PNG

コードはこんな感じ。


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-py.PNG

Nimのエディタ対応の方も着々と進みつつあるらしく、visual studio codeがいちオシだったりする模様。本格的なマクロ対応など、ガチ勢も興味津々であろうnim言語、バージョン1.0に向け、だんだん怖くなくなっていくはずなので、お試し続けてみようと思う次第。

あとは、Pythonガチな兄貴のどなたかに、python -c-nim的なエコシステム構築に挑んでいただきたいと思う次第。

17
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
13