Lispの強力な能力、pythonの読みやすさ、Cのパフォーマンスを組み合わせたプログラミング言語:Nimrod


Lispの強力な能力、pythonの読みやすさ、Cのパフォーマンスを組み合わせたプログラミング言語:Nimrod
プロジェクトのホームページ:http://nimrod-code.org/
 
Nimrodは新しい静的タイプ、コマンドプログラミング言語であり、プロセス、関数、オブジェクト向け、汎用プログラミングスタイルをサポートし、シンプルで効率的です.NimrodがLispから継承した特殊な特性である抽象構文ツリー(AST)は,言語仕様の一部として,領域特定言語を作成する強力なマクロシステムとして利用できる.
Nimrodはコンパイル型のゴミ収集システムプログラミング言語であり、極めて優れた生産/性能比を持っている.Nimrodの設計は3つのEに集中している:すなわち効率(efficiency)、表現能力(expressiveness)、優雅(elegance).
 
Nimrodの例:
 
import strutils

echo "Type in a list of ints of ints (separate by whitespace):"
let tokens = stdin.readLine.split
echo tokens.each(parseInt).max,"is the maxmum."
 
 
Nimrodは効率的です.
 
  • オリジナルコード生成(現在はC言語にコンパイルされている)、仮想マシンに依存しない:Nimrodは依存しない小さな実行プログラムを生成し、再配布しやすい.
  • 高速非追跡ゴミ収集器で、ゲームなどのリアルタイムシステムをサポートします.
  • システムプログラミング機能:自分のメモリを管理し、ハードウェアに直接アクセスできます.ごみ収集器のメモリへのポインタと、手動でメモリを管理するポインタには違いがあります.
  • ゼロオーバーヘッド反復器(zero-overhead iterators).
  • は、モジュール間で接続されています.
  • には、ダミーメソッドテーブルなしでインラインされた動的メソッドバインドがあります.
  • ユーザ定義関数のコンパイル時計算.
  • プログラム全体のデッドコード消去:実行可能プログラムに含まれる関数にのみ使用されます.
  • 値に基づくデータ型:オブジェクトや配列などがスタックに割り当てられる.

  •  
    Nimrodは表現力が強い
     
  • Nimrodコンパイラとすべての標準ライブラリはNimrodで実装されています.
  • には、文字列、集合、シーケンスなどの高度なデータ型が組み込まれています.
  • 現代タイプシステム:ローカルタイプ推定(local type inference)、メタグループ、変形、汎用など.
  • ユーザはオペレータを定義することができる.新しいオペレータを使用するコードは、通常、組み込みオペレータを再ロードするコードよりも読みやすいです.=~オペレータはreモジュールに定義されます.
  • マクロは、コンパイル時に抽象構文ツリーを変更できます.

  •  
    Nimrodは優雅です
     
  • マクロは、コマンドパターンを使用して解析ツリーを構築することができる.Nimrodはメタプログラミングを行う際に異なるコードスタイルを使用する必要はありません.
  • マクロはNimrodの構文を変更することはできません.この必要はありません.Nimrodの文法は十分柔軟です.
  • 文は、縮小(注意:pythonのインデントレイアウト構文と同様)で文を組み合わせることができますが、複数行に分けることができます.縮小にはタブキー(tabulators)を含めることはできません.そのため、コンパイラが見たコードは人が見たのと同じです.

  •  
    外の世界と踊る
     
  • NimrodコンパイラはWindows、Linux、BSD、Mac OS Xで動作し、他のプラットフォームに移植するのは簡単です.
  • NimrodコンパイラはC++またはObjective Cコードを生成することもでき、インタフェースは簡単です.
  • には、GTK 2、Windows API、POSIX API、OpenGL、SDL、Cairo、Python、Lua、TCL、X 11、libzip、PCRE、libcurl、mySQL、SQLiteへのバインドが標準リリースに含まれているなど、多くのバインドがあります.
  • CからNimrodへの変換ユーティリティ:Cライブラリへの新しいバインドはc 2 nimで容易に生成できます.
  • PascalからNimrodへの変換ユーティリティ:大量のObject Pascalサブセットを自動的にNimrodに変換できます.

  •  
    1.0までの路線図
    Version 0.9.0
    クローズドclosures
    Version 0.9.X
     
  • recursive iterators/coroutines再帰反復器/コモン
  • 2-phase type system for better interaction between macros,templates and overloadingマクロ、テンプレート、リロード間のより良いインタラクション2相タイプシステム
  • term rewriting macrosエントリ書き換えマクロ
  • the syntactic distinction between statements and expressions will be removed文と式間の構文の違いは
  • 削除されます.
  • the need for forward declarations may be removed前方宣言の必要性は
  • を削除する可能性があります.