Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
13
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

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的なエコシステム構築に挑んでいただきたいと思う次第。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
13
Help us understand the problem. What are the problem?