2011年12月19日月曜日

Nimrod is elegant


全国の Nimrod ファンのみなさんこんにちは。
Nimrod Advent Calendar の 15日目を担当している、@takano32 a.k.a. TAKANO Mitsuhiro です。


Nimrodは美しい言語です

  • マクロは構文解析木の構築に欠かせないパラダイムです。Nimrodはメタプログラミングにマクロの他のスタイルを併用する必要がありません。
  • マクロはNimrod自身の文法を変えることはできないようにしてあります。Nimrodの文法は充分に柔軟だからです。
  • 複文はインデントによってそれぞれの組みにわけますが、複文自体は複数行にまたがっても大丈夫です。インデントは必ずしもハードタブで行う必要はなく、コンパイラはいつもあなたに合わせたインデントを考慮してくれます。

Nimrod plays nice with others


全国の Nimrod ファンのみなさんこんにちは。
Nimrod Advent Calendar の 12日目を担当している、@takano32 a.k.a. TAKANO Mitsuhiro です。


今回はNimrodの `Nimrod plays nice with others'(他との協調性) についての文章を翻訳してみます。

Nimrodはさまざまなプロダクトと親和性があります

  • NimrodのコンパイラはWindows、Linux、BSD、そしてMac OS Xで動作します。他のプラットフォームに移植することも簡単です。
  • GTK2やWindows APIやPOSIX API、それからOpenGLやSDLにCairoなどのマルチメディア分野やPython、Lua、TCLなどの言語にもバインディングが用意されています。X11やlibzipやPRCEも扱えますし、ODBCやlibcurlやMySQLやSQLiteのバインディングも用意されています。
  • C言語によって書かれたプログラムをNimrodのコードに変換するユーティリティも用意されています。c2nimを用いれば新しいC言語向けのライブラリのバインディングを簡単に生成することができます。
  • Pascal言語によって書かれたプログラムをNimrodのコードに変換するユーティリティもあります。これは Object Pascal の大半の仕様に対応しており、かなりのコードをNimrodのコードに変換することができます!

2011年12月14日水曜日

Nimrod is expressive


全国の Nimrod ファンのみなさんこんにちは。
Nimrod Advent Calendar の 14日目を担当している、@takano32 a.k.a. TAKANO Mitsuhiro です。


今回はNimrodは効率的 - Prologueの続きとして、Nimrodの二番目の特徴としてあげられている `Expressive' についての文章を翻訳してみます。

Nimrodはとても自由に表現できます

  • Nimrodのコンパイラ、および標準ライブラリはすべてNimrod自身で記述されています。
  • 組み込みでさまざまなデータ型をもっています。たとえば、文字列やセット、シーケンスなどのデータ型があります。
  • 近代的な型システムも搭載しています。ローカル副作用型、タプル型、多相型、ジェネリックス型などがあります。
  • ユーザは演算子を定義することもできます。ユーザが定義した新しい演算子によって組み込みの演算子を再定義したコードよりも読みやすくなる場合も多々あります。たとえば、 =~ の演算子は re モジュール(正規表現モジュール)のなかで定義されています。
  • 強力なマクロ機能も搭載しており、これを使えばコンパイルするときに抽象構文木を書き換えることも可能です。

2011年12月13日火曜日

Nimrod is efficient


全国の Nimrod ファンのみなさんこんにちは。
Nimrod Advent Calendar の 13日目を担当している、@takano32 a.k.a. TAKANO Mitsuhiro です。


今回はNimrodへようこそ - Prologueの続きとして、Nimrodの十八番の特徴である `Efficient' についての文章を翻訳してみます。

Nimrodは効率的な処理ができます

  • Nimrodでは仮想マシンに依存しないネイティブコードの生成(現在はC言語を用いて生成しています)を行います。
  • 再帰的ではなく、漸進的で世代型のガベージコレクタを搭載しており、ゲーム作成のようなちょっとしたリアルタイム性が要求されるシステムにも向いています。
  • システムをプログラミングする上での特徴もあります。メモリアクセスを自分で制御し、直接ハードウェアを扱う能力もあるのです。また、ガベージコレクタが管理しているメモリ領域と自分で制御するメモリ空間はきちんと区別されています。
  • オーバーヘッドがないイテレータも搭載しています。
  • マルチターゲットの仕組みも搭載しています。
  • 仮想メソッドのテーブルを使わないインラインのダイナミックなメソッドの定義にも対応しています。
  • ユーザが定義した関数についてコンパイル時間を計測することもできます。
  • 生成された実行可能なファイルには使われる機能のみが組み込まれ、すべてのプログラムからデットコードを消す仕組みをもっています。
  • 値を基本にしたデータ型、たとえばオブジェクト型や配列型などをヒープではなくスタックに配置することができます。

うえのような特徴をもっているそうです。うひー、はじめて知った特徴多いな・・・
14日目の記事はsyanbi a.k.a. @xga さんの記事になります。お楽しみに!