Mathematica
2013年11月21日、ウルフラム・リサーチとラズベリーパイ財団は、すべてのRaspberry PiにWolfram言語とMathematica 10のパイロット版を無料でバンドルすることを発表した。これにより、Raspberry Piの計算速度の問題は残るものの、Mathematicaの全機能を実質25ドル(Raspberry Pi Model A のボード1枚の価格)で利用できることになった。Mathematicaがコンピュータに無料でバンドルされるのは、1988年のNeXT以来、25年ぶり2度目の出来事である。
2014年1月6日、ウルフラム・リサーチとインテルは、2014年夏頃に発売予定のSD カードサイズコンピュータ Intel EdisonにWolfram言語とMathematicaを標準搭載すると発表した。
Outer も Array と同様、引数として任意の関数を許容する。
3. Table を使うアプローチ:
Table は任意の次元の表を作るのに使われる標準的な関数である。このアプローチは、GCD の取る引数が明示的で、直感的に理解しやすい。反面、上記1・2に比べると計算速度で若干劣る。
4. 手続き型のアプローチ:
これは C 言語や FORTRAN などで馴染み深いアプローチである。しかし、組み込み関数を使った場合(上記1~3)に比べるとコードが冗長である。また、手続き型のアプローチは計算速度が遅くボトルネックになりやすいので、注意が必要である。
以上の例で見たように、Mathematicaプログラミングにおいては、組み込み関数を最大限に利用することが非常に重要である。Mathematicaの組み込み関数を有効に使うことで、問題を簡潔に表現することができる。また、Mathematicaの組み込み関数は、適切なアルゴリズムを用い、高度に最適化され、かつC言語で実装されているため、同じ機能を持つユーザー定義関数に比べて計算速度が圧倒的に速い。
Mathematicaは「すべては式である (Everything is an expression.)」という思想のもとに設計されている。ここで言う「式 (Expression)」とは、アトムと関数である。
Mathematicaにおいて、数式・リスト・グラフィックスを含むすべてのオブジェクトは head[e1, e2, ...] という共通の基本構造を持つ。そして、この構造は入れ子にできる(つまり、e1 や e2 もまたこの構造を持てる)。したがって、どんなに複雑なオブジェクトでも、この基本構造とその再帰的な繰り返しで表現できる。
例えば、x^4+1 という式を入力すると、出力は以下のように表示される。
FullForm を使うと、この式の完全形(Mathematica における内部表現)を見られる。
上記の例では、Plus が head であり、Power[x, 4] が入れ子になっている。x のような記号も実は Symbol["x"] という構造を持っている。