経済性、表現力、優美

Nim は静的型付けを採用したコンパイラ方式のシステムプログラミング言語です。 Python, Ada や Modula など洗練された言語で定評のある思想を取り入れています。

経済性

  • Nim は依存性のないネイティブ動作の実行可能ファイルを生成します。 生成ファイルは仮想マシンへの依存性がなく、小型軽量であるため簡単に配布できます
  • Nim コンパイラと生成された実行可能ファイルは Windows, Linux, BSD および macOS など主要なプラットホームにすべて対応しています。
  • オーバーヘッドのないイテレーターとユーザ定義関数のコンパイル時の評価、 値ベースのデータ型の優先的スタック割り当てなどモダンな概念を併用することで、 究極の高性能コードを実現します。
  • 各種バックエンドへの対応: C, C++ または JavaScript へコンパイルします。 Nim は必要に応じて、さまざまなバックエンドとフロントエンドを使用できます。

表現力

  • Nim は自己完結型です: コンパイラと標準ライブラリは Nim で実装してあります。
  • Nim には抽象構文木 (AST) を直接操作できる無限の可能性を秘めた強力なマクロシステムがあります。

優美

  • 必要性がないため Nim のシンタックスはマクロによる変更はできません — シンタックスは十分柔軟です。
  • 局所型推論、タプル、ジェネリックと総和型によるモダンな型システム。
  • ステートメントはインデントでまとめますが、複数行をまたがることもできます。
import strformat

type
  Person = object
    name: string
    age: Natural # 正数として age を確保します。

let people = [
  Person(name: "John", age: 45),
  Person(name: "Kate", age: 30)
]

for person in people:
  # コンパイル時に評価される、
  # 型安全の文字列補完
  echo(fmt"{person.name} is {person.age} years old")
# Nim の 'iterator' と 'yield' コンストラクトにより、
# イテレータは普通の関数と同じように簡単に記述できます。
# コンパイル時はインラインループとして展開します。
iterator oddNumbers[Idx, T](a: array[Idx, T]): T =
  for x in a:
    if x mod 2 == 1:
      yield x

for odd in oddNumbers([3, 6, 9, 12, 15, 18]):
  echo odd
# データ処理を中心とする難解な
# x86 インストラクションの記述において、
# アセンブラと JIT で使う参照テーブルの変換で
# Nim のマクロシステムを使用します。
import macros, strutils

macro toLookupTable(data: static[string]): untyped =
  result = newTree(nnkBracket)
  for w in data.split(';'):
    result.add newLit(w)

const
  data = "mov;btc;cli;xor"
  opcodes = toLookupTable(data)

for o in opcodes:
  echo o

新着情報

Version 1.2.0 released

We are very proud to announce Nim version 1.2 after six months of continuous development!

Nim Community Survey 2019 Results

Nim community survey 2019 has been open for 50 days, and we have received 908 responses, which is our record-high number (771 in 2018, 603 in 2017). Before we go into details, we would like to thank all the people who took the time to respond. We really appreciate the feedback!

Nim in Action

Nim 史上初となる公式解説書「Nim(ニム) in(イン) Action(アクション)」は好評発売中です (英語版のみ)。 電子書籍版、または製本版 (ソフトカバー) を購入できます。 Nim のシンタックスなどの基礎とマクロなどの高度な機能を学び、 豊富なアプリケーション開発の例題で言語の実務経験を会得しましょう。

  • Nim のシンタックスなどの基礎を解説してあります。
  • Nimble パッケージマネージャーの使用方法を解説してあります。
  • チャットプログラム、 Twitter クローンなど多岐にわたるアプリケーション開発方法について手順を追って詳しく解説してあります。

Nim のサポート

Nim のサポートには 100 以上の企業と個人が参加しています。

Nim プロジェクトは世界中の(とく)()()らにより開発が続けられています。 もっと精力的に Nim の活動に(はげ)めるよう、 寄付の定期継続を歓迎します。

コミュニティ

GitHub リポジトリをお探しですか?

Nim のコンパイラとツールはすべて Nim で記述されており、利用条件は MIT ライセンスです。 なお、 開発作業は GitHub で行っています。 Nim の開発に関する更新情報を受け取るには、リポジトリの参照、 またはスターによる評価をお願いします。