Nim Advent Calendar 1日目の記事です。
Nimは日本ではマイナーな言語だと思うので、まずは簡単な言語の紹介から書きます。
Nimとは
Nimは、Pythonのような生産性と、Cのような実行速度を併せ持つことを目標とした言語です。
既にベンチマークでも高速でコードの短さでも優秀という結果も出ています。 参考(https://github.com/kostya/benchmarks)
他にも、RubyのようなDSL、Lispのような拡張性といった要素も重視しており、非常に自由度の高い言語になっています。
構文としてはPythonのようなインデントでブロックを作るタイプで、少々Rubyっぽいところもあったりします。
Nimの基本的な機能として以下があります。
- 静的型付
- 型推論
- GC
- template/macro
- Generics
Nimの他の言語にあまり見られない特徴的な機能としては以下があります。
- 項書き換えマクロ
- AST based overloading
- not nil
- ユーザー定義演算子
- firstclass iterator
他にも、C#やGo、C++から取り入れた機能などもあります。
- async/await
- defer
- template
利便性を追求するため、標準ライブラリが充実していたり、標準のパッケージマネージャ兼ビルドシステムとしてnimbleというものがあります。
Nimはシステムプログラミングとしての用途を重視しており、明確にC++を意識しています。
システムプログラミング言語ではありますが、ソフトリアルタイム向けGCが標準搭載されており、GCの制御も可能となっています。
2016年のNim
2016年のNim関連の出来事を公式のニュースを参考に列挙します。
- Version 0.13.0 ~ 0.15.2 のリリース
- Bountysourceでの募金開始
- Nimコミュニティアンケートの実施
- 書籍 Nim in Action の発売決定
まとめ
Nimは2016年でようやくバージョン1.0に向けた道が見えてきたように見えます。
解説書籍であるNim in Actionの発売決定など、めでたいニュースも多く、今後も期待していきたいです。