Excelのようなプログラミング

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がインストールされていれば実際に動かすことができます。


「こういうことがCAD上でできたらおもしろい」と思ったのですが、AutoCADなんかですでに実現されていますね。

だから、Mathematicaを使う人たちは、もっと別の応用を考えなければいけないのです。