Mathematicaはバージョン6でDynamicというおもしろい機能が追加されました(動的言語とは関係ありません。もとから動的ですし)。いろんな解釈があると思いますが、Dynamicで何ができるかというと、Excelのようなプログラミングです。ここで考えているExcelの機能とは、複数のセルが関連しているところで、あるセルの値が変更されると、関連するセルの値が自動的に再計算される、というものです。
Dynamicによって、Mathematicaのプログラミングスタイルは大きく変わると思うのですが、残念ながら、今のところは「GUIを簡単に作れる」という応用が主になっています。
たとえばこんな感じです。
center[p_, q_, r_] :=
With[{np = Normalize@p, nq = Normalize@q},
r Normalize[np + nq]/Sin[ArcCos[np.nq]/2]]
Manipulate[
Graphics[{
Line@{o, p},
Line@{o, q},
Circle[o + center[p - o, q - o, r], r]
}, PlotRange -> 2],
{{o, {-1, 0}}, Locator},
{{p, {0, 1}}, Locator},
{{q, {0, -1}}, Locator},
{{r, 1}, 0, 2},
SaveDefinitions -> True]
Wolfram CDF Playerがインストールされていれば実際に動かすことができます(UMMでも動きます)。
「こういうことがCAD上でできたらおもしろい」と思ったのですが、AutoCADなんかですでに実現されていますね。
だから、Mathematicaを使う人たちは、もっと別の応用を考えなければいけないのです。
Related posts: