Wolfram Mathematica ( Mathematicaとも呼ばれる) は、機械学習、統計、記号計算、データ操作、ネットワーク分析、時系列分析、量子計算フレームワーク、NLP、最適化、関数とさまざまなタイプのデータのプロット、アルゴリズムの実装、ユーザーインターフェイスの作成、および他のプログラミング言語で書かれたプログラムとのインターフェースを可能にする、技術計算のさまざまな分野向けの組み込みライブラリを備えたソフトウェア システムです。これは、 Stephen Wolframによって考案され、イリノイ州シャンペーンのWolfram Researchによって開発されています。 [ 8 ] [ 9 ] Wolfram 言語は、Mathematicaで使用されるプログラミング言語です。[ 10 ] Mathematica 1.0 は、1988 年 6 月 23 日にイリノイ州シャンペーンとカリフォルニア州サンタクララでリリースされました。[ 11 ] [ 12 ] [ 13 ] Mathematica の Wolfram 言語は、基本的にLispに基づいています。
Mathematicaは、カーネルとフロントエンドの2つの部分に分かれています。カーネルは式(Wolfram言語コード)を解釈し、結果の式を返します。その結果は、フロントエンドによって表示されます。
1988年にセオドア・グレイ[ 14 ]によって設計されたオリジナルのフロントエンドは、ノートブックインターフェースで構成されており、コード、プレーンテキスト、画像、グラフィックを含むノートブック文書の作成と編集が可能です。[ 15 ]
コード開発は、Eclipse [ 16 ] IntelliJ IDEA [ 17 ] Atom、Vim、Visual Studio Code、Gitなど、さまざまな標準的な統合開発環境(IDE)のサポートによってもサポートされています。Mathematica カーネルには、コマンドライン フロントエンドも含まれています。[ 18 ]
その他のインターフェースとしては、GNU Readlineに基づくJMath [ 19 ]や、 UNIX コマンドラインから自己完結型の Mathematica プログラム (引数付き) を実行するWolframScript [ 20 ]などがあります。
高性能コンピューティングの機能は、バージョン4(1999年)[ 21 ]でパックド配列が導入され、バージョン5(2003年)[ 22 ]でスパース行列が導入されたこと、および高精度演算を評価するためにGNU多重精度演算ライブラリが採用されたことによって拡張されました。
バージョン 5.2 (2005) では、マルチコアコンピュータで計算を実行する際に自動的にマルチスレッド処理が追加されました。[ 23 ]このリリースには、CPU 固有の最適化ライブラリが含まれています。[ 24 ]さらに、Mathematica はClearSpeedなどのサードパーティ製の専門的なアクセラレーション ハードウェアによってサポートされています。[ 25 ]
2002年に、異種クラスタやマルチプロセッサシステム上でのユーザーレベルの並列プログラミングを可能にするためにgridMathematicaが導入され[ 26 ] 、2008年には、 Windows HPC Server 2008、Microsoft Compute Cluster Server、Sun Gridなどのグリッドテクノロジーのサポートを含む並列コンピューティングテクノロジーがすべてのMathematicaライセンスに含まれるようになりました。
バージョン 14 の時点で、Wolfram 言語には 6,602 個の組み込み関数とシンボルがあります。[ 28 ]スティーブン・ウルフラムは、Wolfram のパブリック コミュニティが Wolfram 言語に機能を提供する方法として、2019 年 6 月に Wolfram Function Repository の立ち上げを発表しました。[ 29 ]現在、3,000 を超える関数がリソース関数として提供されています。[ 30 ] Wolfram Function Repository に加えて、計算可能なデータを含む Wolfram Data Repository と機械学習用の Wolfram Neural Net Repository があります。[ 31 ]
Wolfram MathematicaはCombinatoricaパッケージの基盤であり、このパッケージはプログラムに組み合わせ論とグラフ理論における離散数学機能を追加する。[ 32 ]
他のアプリケーションとの通信は、Wolfram Symbolic Transfer Protocol (WSTP) と呼ばれるプロトコルを使用して行うことができます。これにより、Wolfram Mathematica カーネルとフロントエンド間の通信が可能になり、カーネルと他のアプリケーション間の一般的なインターフェースが提供されます。[ 33 ]
Wolfram Research は、J/Link を使用して WSTP を介してプログラミング言語Cで書かれたアプリケーションをMathematica カーネルにリンクするための開発者キットを無料で配布しています。 [ 34 ]これは、Mathematica に計算を実行するように要求できるJavaプログラムです。同様の機能は .NET/Link [ 35 ]でも実現できますが、Java プログラムではなく.NETプログラムを使用します。
Mathematica に接続できる他の言語には、 Haskell [ 36 ] AppleScript [ 37 ] Racket [ 38 ] Visual Basic [ 39 ] Python [ 40 ] [ 41 ]およびClojure [ 42 ]があります。
Mathematicaは、システムモデリングのためのModelicaモデルの生成と実行をサポートし、 Wolfram System Modelerと連携します。
また、多くのサードパーティ製ソフトウェアパッケージやAPIへのリンクも利用可能です。[ 43 ]
Mathematicaはさまざまなソースからリアルタイムデータを取得することもできます[ 44 ]。また、パブリックブロックチェーン( Bitcoin、Ethereum、ARK)への読み書きも可能です[ 45 ] 。
220種類以上のデータ、画像、ビデオ、音声、コンピュータ支援設計(CAD)、地理情報システム(GIS)[ 46 ]、文書、および生物医学フォーマットのインポートとエクスポートをサポートしています。
2019年には、Wolfram LanguageコードをLLVMにコンパイルするためのサポートが追加されました。[ 47 ]
Mathematicaは、インターネット接続でMathematicaを使用するユーザー向けに、リアルタイムで更新されるデータを含む追加データを提供するオンライン回答エンジンであるWolfram Alphaとも統合されています。データセットには、数学データ(結び目や多面体など)に加えて、天文学、化学、地政学、言語、生物医学、航空機、気象データなどが含まれます。[ 49 ]
1989年のBYTE誌は、MathematicaをBYTEアワードの「優秀賞」受賞作品の一つとして挙げ、「これはまた別の画期的なMacintoshアプリケーションであり、教科書では理解不可能と思われた代数や微積分を吸収することを可能にするだろう」と述べている。 [ 50 ]
Mathematicaはクローズドソースであることで批判されてきた。[ 51 ] Wolfram Researchは、Mathematicaをクローズドソースに保つことは、同社のビジネスモデルとソフトウェアの継続性にとって不可欠であると主張している。[ 52 ] [ 53 ]