Парадигма | Мультипарадигма : перезапись терминов, функциональный, процедурный, массив |
---|---|
Разработано | Стивеном Вольфрамом |
разработчиком | Wolfram Research |
Впервые появилось | 1988 |
Стабильная версия | 12.1 / 18 марта 2020 г.; 7 месяцев назад (2020-03-18) |
Дисциплина набора текста | Динамический, сильный |
OS | Кросс-платформенный |
Лицензия | Собственный (предоставляется бесплатно для некоторых платформ) |
Расширения имен файлов | .nb,.m,.wl |
Веб-сайт | www.wolfram.com / language / |
Major реализации | |
Mathematica, Wolfram | One, Mathics, Expreduce, MockMMA | |
Под влиянием | |
Influenced | |
The Wolfram Язык - это общий многопарадигмальный вычислительный язык, разработанный Wolfram Research. Он подчеркивает символьные вычисления, функциональное программирование и программирование на основе правил и может использовать произвольные структуры и данные. Это язык программирования программы математических символьных вычислений Mathematica.
Язык Wolfram Language был частью начальной версии Mathematica в 1988 году. Судя по примерам MockMMA 1991 года, с тех пор существует синтаксис M-выражения, а также возможности символьного, функционального и сопоставления шаблонов с помощью перезаписи. В целом, это делает Wolfram полным по Тьюрингу языком с поддержкой мета-алгоритмов и суперфункций.
. Символьные аспекты движка делают его системой компьютерной алгебры. Язык может выполнять интегрирование, дифференцирование, матрицу манипуляции и решать дифференциальные уравнения с использованием набора правил. Также в 1988 году появилась модель ноутбука и возможность встраивать звук и изображения, согласно патенту Теодора Грея.
Онлайн-интерфейс для языка WolframAlpha, был выпущен в 2009 году. Вольфрам реализовал этот веб-сайт, переведя операторы естественного языка в запросы на языке Wolfram, которые ссылаются на его базу данных. Этот интерфейс значительно расширил аудиторию языка, и работа, ведущая к Wolfram Alpha, также означает, что реализация языка Wolfram теперь имеет встроенный доступ к базе знаний, а также к функциям обработки естественного языка. Wolfram также добавил функции для более сложных задач, таких как 3D-моделирование.
Имя было окончательно принято для языка в 2013 году, когда Wolfram Research решила сделать версию языкового движка бесплатной для Raspberry Pi пользователей, и им нужно было придумать для этого название. Он был включен в рекомендуемый пакет программного обеспечения, который Raspberry Pi Foundation предоставляет для начинающих, что вызвало некоторые разногласия из-за того, что проприетарный язык Wolfram. О планах по переносу языка Wolfram на Intel Edison было объявлено после презентации платы на CES 2014. В 2019 году была добавлена ссылка для обеспечения совместимости библиотек Wolfram с игровым движком Unity, что дало разработчикам игр доступ к функциям высокого уровня языка.
The Wolfram Синтаксис языка в целом аналогичен M-выражению 1960-х годов LISP с поддержкой инфиксных операторов и вызовов функций «нотация функций».
Язык Wolfram записывает базовые арифметические выражения с использованием инфиксных операторов.
(* Это комментарий. *) 4 + 3 (* = 7 *) 1 + 2 * (3 + 4) (* = 15 *) (* Обратите внимание, что умножение можно опустить: 1 + 2 (3 + 4) *) (* Деления возвращают рациональные числа: *) 3/2 (* = 3/2 *)
Вызов функций обозначается квадратными скобками:
Sin [Pi] (* = 0 *) (* Это функция для преобразования рациональных чисел в числа с плавающей запятой: *) N [3/2] (* = 1.5 *)
Списки заключаются в фигурные скобки:
Язык может отклоняться от парадигмы M-выражения, когда альтернативный, более удобный для человека способ показать выражение доступно:
TeXForm
для выражений набора и InputForm
для языкового ввода.@
и постфиксного выражения //
.'
.A FullForm
форматтер обессахаривает входные данные:
FullForm [1 + 2] (* = Plus [1, 2] *)
Функции на языке Wolfram Language в основном представляют собой случай простых шаблонов для замены:
F [x_]: = x ^ 0
: =
- это "оператор SetDelayed", поэтому x не ищется сразу. x_
- синтаксический сахар для Pattern [x, Blank]
, т.е. «пробел» для любого значения, заменяющего x в остальной части оценки.
Итерация пузырьковой сортировки выражается как:
sortRule: = {x ___, y_, z_, k ___} /; y>z ->{x, z, y, k} (* Правило [Condition [List [PatternSequence [x, BlankNullSequence], Pattern [y, Blank], Pattern [z, Blank], PatternSequence [k, BlankNullSequence]]), Greater [y, z]], List [x, z, y, k]] *)
Оператор /;
является «условием», поэтому правило применяется только тогда, когда у>г
. Три символа подчеркивания представляют собой синтаксис для BlankNullSequence
для последовательности, которая может иметь значение NULL.
Оператор ReplaceRepeated //.
может использоваться для многократного применения этого правила, пока больше не произойдет никаких изменений:
{9, 5, 3, 1, 2, 4} / /. sortRule (* = ReplaceRepeated [{9, 5, 3, 1, 2, 4}, sortRule] *) (* = {1, 2, 3, 4, 5, 9} *)
Шаблон Система сопоставления также легко дает основание для интеграции и вывода на основе правил. Ниже приведены выдержки из пакета правил Rubi:
(* Reciprocal rule *) Int [1 / x_, x_Symbol]: = Log [x]; (* Правило мощности *) Int [x_ ^ m _., X_Symbol]: = x ^ (m + 1) / (m + 1) /; FreeQ [m, x] NeQ [m, -1]
Официальная и справочная реализация языка Wolfram Language находится в системе Mathematica и связанных онлайн-сервисах. Это закрытый исходный код. Однако компания Wolfram Research выпустила синтаксический анализатор языка C ++ под лицензией с открытым исходным кодом MIT. Ряд библиотек и функций, написанных на этом языке, имеют открытый исходный код, а сам справочник имеет открытый доступ.
За три десятилетия существования языка Wolfram, многие открытые исходные коды Также были разработаны сторонние реализации. MockMMA от Ричарда Фейтмана 1991 года имеет историческое значение. Современные из них, которые все еще поддерживаются по состоянию на апрель 2020 года, включают Symja в Java, expreduce в Golang и SymPy на основе Mathics. Эти реализации ориентированы на основной язык и систему компьютерной алгебры, которую он подразумевает, а не на возможности онлайн-базы знаний Wolfram.
Язык был официально назван в июне 2013 года, хотя в качестве серверной части вычислительной системы Mathematica он использовался в различных формах более 30 лет. с момента первого выпуска Mathematica. До 2013 года внутренне он назывался несколькими именами, такими как «M» и «Wolfram Language». Другие возможные названия, рассматриваемые Wolfram Research, включают «Lingua» и «Express».