Wolfram (プログラミング言語)

Wolfram言語はウルフラム・リサーチが開発した汎用性の高いマルチパラダイムプログラミング言語であり、MathematicaとWolfram Programming Cloudのプログラミング言語である。 記号プログラミング、関数型プログラミング、ルールベースプログラミングに重点を置いており、任意の構造やデータが扱える。

チューリングマシンの生成および実行、グラフィックスと音声の作成、三次元モデルの解析、行列の操作、微分方程式の解法のための組み込み関数などが含まれている。ドキュメントも豊富である。

Wolfram言語はRaspberry Piのすべてのシステムソフトウェアにバンドルされている。CES 2014で発表されたIntel EdisonもWolfram言語を統合している。 Unityゲームエンジンにも統合される予定である。

 名称 
Wolfram言語という呼び方が正式とされたのは2013年6月からである。しかしそれ以前から30年以上Mathematicaのプログラミング言語を指し示す名称として使われていた。他にも関係者間では「M」などいくつかの呼び名が使われた。公式名として検討に上がったものに「Lingua」や「Express」がある。

 大衆文化 
スティーブン・ウルフラムとクリストファー・ウルフラムは、映画『メッセージ』の制作において、Wolfram言語を使って異星人の言語の作成に携わったSF映画「メッセージ」の異星人の恒星間航行は非常に高いレベルで考証済み、監修したのは理論物理学者であのMathematicaの生みの親スティーブン・ウルフラム, Gigazine, 2016年11月16日How Arrival's Designers Crafted a Mesmerizing Language, Margaret Rhodes,  Wired, November 16, 2016.。

 文法 
Wolfram言語は基本的にLispのM式と似た形式である。多くのシンタックスシュガーが用意されているため、構文を親しみやすい形式で表現することができる。

+ Wolfram 言語の例 シンタックスシュガー
による表現 (InputForm) 基本形式 (FullForm)    

 関数の定義 
以下は引数 x をとる関数 f の定義の例である。f[x_] := x ^ 2　(*SetDelayed[f[Pattern[x,Blank[]],Power[x,2]*):=は遅延代入演算子と呼ばれ、これにより割り当てられた値は、値が必要になるたびに再評価される。x_ はあらゆる式にマッチするパターンで x という名前で参照される。Wolfram言語では関数はパターンに関する変換規則として与えられる。

 純関数 
Wolfram言語では無名関数が用意されており、純関数と呼ばれる。

1を足す純関数は以下のように表される。(#+1)& (* Plus[Slot[1], 1] *)以下の式(#+1)&[50] (*=51*)は51に評価される。

 パターン・置換 
Wolfram言語では部分式に対してパターンマッチングを行い、置換を行う構文が用意されている。f[a] /. a->b  (* ReplaceAll[f[a], Rule[a, b] *)を評価するとf[b]が得られる。

 手続き型プログラム 
Wolfram言語では手続き型のプログラムもサポートしている。ただし、多くの場合は必要でない。

以下のc言語のプログラムint func(int n){
 int i,r=0;
 for(i=1;i<n;i++){
   r+=i*i;
 }
 return r;
}はMathematicaではfunc[n_]:=Module[{i,r=0},
 For[i=0,i<n,i++,
  r+=i*i;
 ];
 r
]と表現される。

 脚注 

 関連項目 
 スティーブン・ウルフラム
 Mathematica

 外部リンク 
 Wolfram言語のドキュメント
 An Elementary Introduction to the Wolfram Language
 The Wolfram Programming Cloud
 WolframLanguage.org：Wolfram言語についてのコミュニティーリソースガイド
 Wolfram言語のオープンソースの実装のリスト

Category:プログラミング言語
Category:数式エディタ
Category:定理証明ソフトウェア
Category:テクニカル分析ソフトウェア