何か新しい言語を始めようと思い、色々検討した結果Nimを始める事にしました。
Nim(旧称Nimrod)とは命令型、マルチパラダイム、コンパイル言語という特徴を持つプログラミング言語であり、アンドレアス・ランプフにより設計・開発された。
Nimは「効率的で表現豊かで優雅」であるように設計されている。メタプログラミング、関数型プログラミング、メッセージパッシング、手続き型プログラミング、オブジェクト指向プログラミングをサポートしており、 コンパイル時のコード生成、代数的データ型、C言語のForeign function interface(FFI)、JavaScriptへのコンパイルなどの機能を提供している。Pythonのようなシンプルな構文で書かれるが、C言語並みの高いパフォーマンスを有している。Rust、D言語、Goなどの言語としばしば比較される。
つまりは
という事なのでしょう(多分...)。
自分の場合、仕事でもプログラミングをすることはありますが、ここでやっているのはあくまでも趣味の範疇なので、Windowsや他OSのGUI開発だったり、Web開発、モバイル開発など、色々な事をやってみたいというのがあります。
しかし、その度に色々な言語を使い分けるのは大変ですが、その点Nimの場合、
などほぼ全ての環境に対応できるというところが大きいです。
競合になる言語は他にもいくつかあり、RustとGoも検討したのですが、
という事で、結局Nimをやってみる事にしました。
ただ、Nimにも色々と問題はあります。
一番大きいのは、いまいち人気がない事でしょうか。
それにより、ネット上での情報量も上の2言語に比べると大分少ない気もしています。
Windows10 64bit環境での導入になります。
インストーラを使ってセットアップしても良いのだが、PATH周りに色々と書かれるのが嫌なので、出来る限り、zip形式のファイルを使って手動で設定していく。
※気にしない人は普通にインストーラーなどで入れたほうが良いと思います。
NimとMinGWにパスを通すためのスクリプトを作成する。
スクリプト起動用のショートカットを作成する。
これで最低限のものはOKかな?
以降、各種作業は全て上記ショートカットから起動したコンソールのコマンドで行う
開発にはVisual Studio code(以下VSCode)を使用するので、Nim用の設定を行う
コンソールで code と入力して、VSCode を起動します。
(コンソール上から起動しないとさっき設定されたパスが有効になりません)
Nimのインデントは見た目だけではなく、言語的に意味のあるもので、インデントにはタブを使用できない(半角スペースを用いる)との事。
なので、Nimソースコードの編集時はタブキーを押した際にスペースでインデントされるように設定してやる。
また、Nimでの標準のインデント幅は2Spaceらしいので、そちらも設定する。
VSCodeの settings.json を開き以下の内容を追加する。
お決まりの "Hello World!!" を表示してみる。
最初に作業用のフォルダを作成しておく。 今回は D:\projects\nim\test001 フォルダ上で作業を行う
VSCodeからフォルダを開き、メニューより ターミナル → タスクの構成... を選択する。 tasks.json ファイルが開くので、以下を入力
メニューより 実行 → 構成の編集 を選択する。
launch.json ファイルが開くので、以下を入力
"test01.nim" を作成する。
Ctrl+Shift+B でコンパイル。
F5で実行
デバッグコンソールではなく、普通の黒いコンソール画面に表示したい場合、"lunch.json" の "externalConsole": true, を有効にしてやればOK
とりあえず、コンパイルと実行までは出来た。
まだ、全然わかっていない事の方が多いので、多くは語れないが、.NetやJavaの様にVMだの、ランタイムだの余計なものが必要ないのでとても楽に感じた。
ツールやフレームワークなどは全く触っていないので、その辺りの使い勝手次第で今後の評価は変わるし、最悪他の言語に乗り換えるかもしれないが、
今のところはとても良い印象である。
今回はここまで。