内部実装について

はじめに
Wolfram言語の内部実装に関する一般的問題は「Wolframシステムの内部構造」で扱われている.ここでは特定の機能についてのみ簡単な注釈を与える.
これらの注釈は実際に使用されている基本解法およびアルゴリズムを大まかに記述しているのに過ぎないということを強調する.実際の実装においては,通常は非常に多くの要素を付加する必要がある.
したがって例えば注釈では,DSolveは線形二階微分方程式をコバシック(Kovacic)法で解くという記述しかないが,実際にはこれを実現する内部コードは60ページ以上で,他のアルゴリズムや数多くの微妙な技法が含まれている.
データ構造およびメモリ管理
Wolfram言語の式は内部では,先頭が頭部への,残りが以下に続く要素への連続したポインタの配列から構成されている.
各々の式はパターンマッチングと評価に使用されるハッシュ記号の特殊な形式を含んでいる.
各々の記号に対し,記号に関するすべての情報を保存している記号一覧表がある.
記号列や数値等のほとんどのオブジェクトは別々に割り当てられている.ただし,小さな整数や計算途中で生成された近似数値はユニークに複製保存されている.
Wolfram言語で使用されたすべてのメモリは何回参照されたかの情報が保持されている.この回数が0になったとき,メモリは自動的に解放される.
式の要素を連続して保存することによりメモリの断片化とスワッピングを防ぐことができる.ただし,長い式の場合に単一の要素だけが変更されたときもポインタの配列全体をコピーしてしまう.これを防ぐために参照回数および予備割当てに基づく多くの最適化がなされている.
大きな,またはネストされた数値のリストは,マシンサイズの整数または実数のパックアレーとして,必要に応じて自動的に保存される.Wolfram言語のコンパイラは,そのようなパックアレーに反復されて適用される複雑な関数を自動的にコンパイルする.Wolfram Symbolic Transfer Protocol (WSTP),DumpSaveおよびさまざまなImportExport形式は,パックアレーを外部的に使用する.
基本システム機能
Wolframシステムは基本的には式を走査し,遭遇した頭部の記号テーブル要素によりポイントされる内部コードを呼ぶインタープリタである.
x->y または定義で与えられるようなすべての変換規則は,自動的に高速パターンマッチングが可能となる形式にコンパイルされる.多くの異なるタイプのパターンが区別され,特殊コードで処理される.
空白および他のパターンの特徴を考慮できるハッシュ形式がパターンマッチングで使用されている.
パターンマッチングに関連する内部コードは約250ページの長さである.
文字パターンは,PCREの正規表現ライブラリを記号的に拡張したものに基づいて実装されている.
特定の記号に対して非常に多くの定義が与えられると,Dispatchを使用したハッシュ表が自動的に作成され,適用される規則が迅速に見付けられる.
数値および関連関数

数表現と数値評価

基本算法

擬似乱数

数論関数

組合せ関数

初等超越関数

数学定数

特殊関数

数値積分

数値総和および乗積

微分方程式数値解法

近似方程式の解法および最適化

データ処理

近似数値線形代数

線形代数の厳密数値解

代数と解析

多項式処理

記号線形代数

方程式の厳密解法と簡約

厳密な最適化

簡約化

微積分

微分方程式

総和と乗積

級数および極限

再帰方程式

出力およびインターフェース

グラフィックス

可視化

フロントエンド

ノートブック

動的評価

WSTP

式のフォーマット