Wolfram Mathematica — это программная система со встроенными библиотеками для нескольких областей технических вычислений, которая позволяет выполнять машинное обучение , статистику , символьные вычисления , обработку данных, сетевой анализ, анализ временных рядов, обработку естественного языка , оптимизацию , построение графиков функций и различных типов данных, реализацию алгоритмов , создание пользовательских интерфейсов и взаимодействие с программами, написанными на других языках программирования . Она была задумана Стивеном Вольфрамом и разработана Wolfram Research из Шампейна, Иллинойс. [8] [9] Язык программирования Wolfram Language используется в Mathematica . [ 10 ] Mathematica 1.0 была выпущена 23 июня 1988 года в Шампейне, Иллинойс и Санта-Кларе, Калифорния . [11] [12] [13]
Mathematica разделена на две части: ядро и фронтенд . Ядро интерпретирует выражения (код Wolfram Language) и возвращает результирующие выражения, которые затем могут быть отображены фронтендом.
Первоначальный интерфейс, разработанный Теодором Греем [14] в 1988 году, представляет собой интерфейс блокнота и позволяет создавать и редактировать документы блокнота , которые могут содержать код, простой текст, изображения и графику. [15]
Альтернативы интерфейсу Mathematica включают Wolfram Workbench — интегрированную среду разработки (IDE) на базе Eclipse , представленную в 2006 году. Она предоставляет инструменты разработки кода на основе проектов для Mathematica, включая управление ревизиями, отладку, профилирование и тестирование. [16]
Также существует плагин для IDE на базе IntelliJ IDEA для работы с кодом Wolfram Language, который в дополнение к подсветке синтаксиса может анализировать и автоматически дополнять локальные переменные и определенные функции. [17] Ядро Mathematica также включает интерфейс командной строки. [18]
Другие интерфейсы включают JMath [19] , основанный на GNU Readline и WolframScript [20] , который запускает автономные программы Mathematica (с аргументами) из командной строки UNIX.
Расширение файлов Mathematica — .nb, а для файлов конфигурации — .m.
Система Mathematica разработана с расчетом на полную стабильность и обратную совместимость с предыдущими версиями.
Возможности высокопроизводительных вычислений были расширены с введением упакованных массивов в версии 4 (1999) [21] и разреженных матриц (версия 5, 2003) [22] , а также принятием библиотеки GNU Multiple Precision Arithmetic Library для оценки высокоточной арифметики.
В версии 5.2 (2005) добавлена автоматическая многопоточность , когда вычисления выполняются на многоядерных компьютерах. [23] В этот выпуск включены оптимизированные библиотеки для конкретных ЦП. [24] Кроме того, Mathematica поддерживается сторонним специализированным аппаратным обеспечением для ускорения, таким как ClearSpeed . [25]
В 2002 году была представлена gridMathematica , позволяющая выполнять параллельное программирование на уровне пользователя на гетерогенных кластерах и многопроцессорных системах [26] , а в 2008 году технология параллельных вычислений была включена во все лицензии Mathematica, включая поддержку технологий grid, таких как Windows HPC Server 2008 , Microsoft Compute Cluster Server и Sun Grid .
Поддержка аппаратного обеспечения CUDA и OpenCL GPU была добавлена в 2010 году. [27]
Начиная с версии 14, в языке Wolfram Language имеется 6602 встроенных функций и символов. [28] Стивен Вольфрам объявил о запуске репозитория функций Wolfram в июне 2019 года, чтобы общественное сообщество Wolfram могло вносить свой вклад в функциональность языка Wolfram. [29] На момент объявления Стивена Вольфрама о выпуске Mathematica 13 было добавлено 2259 функций в качестве функций ресурсов. [30] В дополнение к репозиторию функций Wolfram существует репозиторий данных Wolfram с вычислимыми данными и репозиторий нейронных сетей Wolfram для машинного обучения. [31]
Wolfram Mathematica является основой пакета Combinatorica, который добавляет в программу функциональность дискретной математики в комбинаторике и теории графов. [32]
Связь с другими приложениями может осуществляться с помощью протокола Wolfram Symbolic Transfer Protocol (WSTP). Он обеспечивает связь между ядром Wolfram Mathematica и интерфейсом и предоставляет общий интерфейс между ядром и другими приложениями. [33]
Wolfram Research свободно распространяет комплект разработчика для связывания приложений, написанных на языке программирования C, с ядром Mathematica через WSTP с использованием J/Link. [34] — программы Java , которая может запрашивать у Mathematica выполнение вычислений. Подобная функциональность достигается с помощью .NET /Link, [35], но с программами .NET вместо программ Java.
Другие языки, которые подключаются к 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 форматов данных, изображений, видео, звука, систем автоматизированного проектирования (САПР), географических информационных систем (ГИС), [46] документов и биомедицинских данных.
В 2019 году была добавлена поддержка компиляции кода Wolfram Language в LLVM . [47]
В версии 12.3 языка Wolfram Language добавлена поддержка Arduino . [48]
Mathematica также интегрирована с Wolfram Alpha , онлайн- системой ответов , которая предоставляет дополнительные данные, некоторые из которых обновляются в режиме реального времени, для пользователей, которые используют Mathematica с подключением к Интернету. Некоторые из наборов данных включают астрономические, химические, геополитические, языковые, биомедицинские, самолетные и погодные данные, в дополнение к математическим данным (таким как узлы и многогранники). [49]
В 1989 году BYTE включила Mathematica в список победителей премии BYTE Awards в категории «Отличие», заявив, что это «еще одно прорывное приложение для Macintosh... оно может позволить вам усвоить алгебру и исчисление, которые, казалось, невозможно понять из учебника». [50] Mathematica критиковали за то, что она имеет закрытый исходный код. [51] Wolfram Research утверждает, что сохранение закрытого исходного кода Mathematica является центральным элементом ее бизнес-модели и непрерывности программного обеспечения. [52] [53]