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 и Солнечная сетка .
Поддержка аппаратного обеспечения CUDA и OpenCL GPU была добавлена в 2010 году. [27]
Начиная с версии 14, в языке Wolfram Language имеется 6602 встроенные функции и символы. [28] Стивен Вольфрам объявил о запуске репозитория функций Wolfram в июне 2019 года, чтобы общественное сообщество Wolfram могло внести свой вклад в функциональность языка Wolfram Language. [29] На момент объявления Стивеном Вольфрамом о выпуске Mathematica 13 в качестве ресурсных функций было предоставлено 2259 функций. [30] Помимо хранилища функций Wolfram, существует хранилище данных Wolfram с вычисляемыми данными и хранилище нейронных сетей Wolfram для машинного обучения. [31]
Wolfram Mathematica является основой пакета Combinatorica, который добавляет в программу функциональные возможности дискретной математики в области комбинаторики и теории графов. [32]
Связь с другими приложениями может осуществляться с использованием протокола, называемого протоколом символьной передачи Wolfram (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] и читать и записывать в публичные блокчейны ( Биткойн , 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]