stringtranslate.com

Вольфрам Язык

Язык Wolfram ( / ˈ w ʊ l f r əm / WUUL -frəm ) — это собственный [7] общий многопарадигмальный язык программирования высокого уровня [8], разработанный Wolfram Research . Он делает упор на символьные вычисления , функциональное программирование и программирование на основе правил [9] и может использовать произвольные структуры и данные. [9] Это язык программирования математической программы символьных вычислений Mathematica . [10]

История

Язык Wolfram Language был частью первоначальной версии Mathematica в 1988 году. [11]

Символические аспекты движка делают его системой компьютерной алгебры. Язык может выполнять интегрирование, дифференцирование, манипуляции с матрицами и решать дифференциальные уравнения, используя набор правил. Кроме того, в первоначальной версии была представлена ​​модель ноутбука и возможность встраивания звука и изображения согласно патенту Теодора Грея . [12]

Wolfram также добавил функции для более сложных задач, таких как 3D-моделирование. [13]

Название для языка было окончательно принято в 2013 году, когда компания Wolfram Research решила сделать версию языкового движка бесплатной для пользователей Raspberry Pi , и им нужно было придумать для нее имя. [14] Он был включен в рекомендуемый пакет программного обеспечения, который Raspberry Pi Foundation предоставляет новичкам, что вызвало некоторые разногласия из-за проприетарного характера языка Wolfram . [15] Планы по портированию языка Wolfram на Intel Edison были объявлены после презентации платы на выставке CES 2014 , но так и не были выпущены. [16] В 2019 году была добавлена ​​ссылка на совместимость библиотек Wolfram с игровым движком Unity , предоставляющая разработчикам игр доступ к функциям языка высокого уровня. [17] [18]

Синтаксис

Синтаксис языка Wolfram Language в целом похож на M-выражение LISP 1960-х годов с поддержкой инфиксных операторов и вызовов функций с «нотацией функции».

Основы

Язык Wolfram записывает основные арифметические выражения с помощью инфиксных операторов .

(* Это комментарий. *)4 + 3 (* = 7 *)  1 + 2 * ( 3 + 4 ) (* = 15 *) (* Обратите внимание, что умножение можно опустить: 1 + 2 (3 + 4) *)      (* Деления возвращают рациональные числа: *) 6/4 ( * = 3/2 *)  

Вызовы функций обозначаются квадратными скобками:

Син [ Пи ] (* = 0 *)(* Это функция для преобразования рациональных чисел в числа с плавающей запятой: *) N [ 3 / 2 ] (* = 1,5 *)  

Списки заключаются в фигурные скобки:

Список шансов = { 1 , 3 , 5 } (* = {1,3,5} *)

Синтаксический сахар

Язык может отклоняться от парадигмы М-выражений, когда доступен альтернативный, более удобный для человека способ отображения выражения:

Средство FullFormформатирования очищает входные данные: [19]

Полная форма [ 1 + 2 ] (* = Плюс[1, 2] *)

Функциональное программирование

Поддерживается каррирование .

Сопоставление с образцом

Функции в языке Wolfram Language фактически представляют собой случай простых шаблонов замены:

F [ х_ ] := х ^ 0    

Это :=«оператор SetDelayed», поэтому поиск x не осуществляется сразу. x_является синтаксическим сахаром для Pattern[x, Blank[]], т.е. «пробелом» для любого значения, заменяющего x в остальной части оценки.

Итерация пузырьковой сортировки выражается как:

sortRule := { x___ , y_ , z_ , k___ } /; y > z -> { x , z , y , k } (* Правило[Условие[Список[ПоследовательностьШаблон[x, BlankNullSequence[]], Шаблон[y, Пустой[]], Шаблон[z, Пустой[]], PatternSequence [k, BlankNullSequence[]]], Greater[y, z]], List[x, z, y, k]] *)      

Оператором /;является «условие», поэтому правило применяется только тогда, когда y>z. Три подчеркивания — это синтаксис для 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: [20]

(* Правило взаимности *) 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 и связанных с ней онлайн-сервисах. Это закрытый исходный код. [21] Однако компания Wolfram Research выпустила анализатор языка C++ под лицензией MIT с открытым исходным кодом . [22] Справочник находится в открытом доступе . [23]

За более чем три десятилетия существования языка Wolfram также был разработан ряд сторонних реализаций с открытым исходным кодом . MockMMA Ричарда Фейтмана 1991 года имеет историческое значение как потому, что является самой ранней повторной реализацией, так и потому, что получил разрешение от Wolfram о прекращении противоправных действий. Современные версии, которые все еще поддерживаются по состоянию на апрель 2020 года, включают Symja на Java , expreduce на Golang и Mathics на основе SymPy . [24] Эти реализации сосредоточены на базовом языке и системе компьютерной алгебры , которую он подразумевает, а не на функциях онлайн-базы знаний Wolfram.

В 2019 году [25] Wolfram Research выпустила бесплатную программу Wolfram Engine, которая будет использоваться в качестве библиотеки программирования в некоммерческом программном обеспечении. [26]

Именование

Язык был официально назван в июне 2013 года и использовался в качестве серверной части Mathematica и других технологий Wolfram более 30 лет. [27] [28]

Смотрите также

Рекомендации

  1. ^ «История продолжается: анонс версии 14 языков Wolfram Language и Mathematica» . Сочинения Стивена Вольфрама . 09.01.2024 . Проверено 10 января 2024 г.
  2. ^ Вольфрам, Стивен. «Тини Вельтман (1931–2021): от языка ассемблера к Нобелевской премии - сочинения Стивена Вольфрама». Stephenwolfram.comwritings . Проверено 22 января 2021 г.
  3. ^ Мэдер, Роман Э. (1994). Программист Mathematica® . Academic Press, Inc. с. 6. ISBN 978-1-48321-415-3.
  4. ^ "Вопросы и ответы по языку Wolfram" . Вольфрам Исследования . Проверено 5 декабря 2016 г.
  5. ^ Сомерс, Джеймс. «Научная статья устарела». Атлантический океан . Проверено 10 апреля 2018 г.
  6. ^ Хикки, Рич. «Книжная полка Clojure». Amazon.com . Архивировано из оригинала 3 октября 2017 г. Проверено 6 мая 2020 г.
  7. ^ «Открытый код Wolfram, открытый исходный код, открытые данные, открытые ресурсы» . www.wolfram.com . Проверено 3 февраля 2023 г.
  8. ^ «Заметки для экспертов по языкам программирования о языке Wolfram Language». Вольфрам.com . Проверено 5 ноября 2015 г.
  9. ^ ab «Как нам следует называть язык Mathematica? - Блог Стивена Вольфрама». Блог.stephenwolfram.com. 12 февраля 2013 г. Проверено 5 ноября 2015 г.
  10. ^ «Празднование первой четверти века Mathematica - блог Wolfram» . Блог.wolfram.com . Проверено 5 ноября 2015 г.
  11. ^ Вольфрам (1988). Mathematica, система для выполнения математических вычислений на компьютере.
  12. ^ Хейс, Брайан (1 января 1990 г.). «Мысли о математике» (PDF) . Пиксель .
  13. ^ "Центр языковой и системной документации Wolfram" . Ссылка.wolfram.com . Проверено 5 ноября 2015 г.
  14. ^ «Размещение языка Wolfram (и Mathematica) на каждом Raspberry Pi — блог Wolfram». Блог.wolfram.com . Проверено 5 ноября 2015 г.
  15. ^ Шерр, Ян (22 ноября 2013 г.). «Премиум-программное обеспечение Mathematica, бесплатное и бюджетное для Raspberry Pi — CNET». News.cnet.com . Проверено 5 ноября 2015 г.
  16. ^ Дэниел А.Дж. Соколов (22 ноября 2014 г.). «Intels Edison: система Pentium в формате SD-карты | работа онлайн». Heise.de . Проверено 5 ноября 2015 г.
  17. ^ «Язык Wolfram скоро будет интегрирован в Unity» . Гамасутра. 10 марта 2014 г. Проверено 5 ноября 2015 г.
  18. ^ «Есть ли способ использовать язык Wolfram Language в Unity3D?». Вольфрам. 2017. Архивировано из оригинала 19 июля 2017 года . Проверено 11 апреля 2017 г.
  19. ^ "Полная форма". Документация по языку Wolfram .
  20. ^ «Добро пожаловать в Rubi, интегратора, основанного на правилах» . Интеграция на основе правил .
  21. ^ МакЛун, Дж. «Почему технология Wolfram Tech не имеет открытого исходного кода - дюжина причин - Блог Wolfram».
  22. ^ «codeparser: анализировать исходный код языка Wolfram Language как абстрактные синтаксические деревья (AST) или конкретные синтаксические деревья (CST)» . Гитхаб . Wolfram Research, Inc., 13 апреля 2020 г.
  23. ^ «Открытые материалы из Wolfram: открытый код, открытый исходный код, открытые данные, открытые ресурсы» . www.wolfram.com .
  24. ^ Саймон. «Существует ли реализация языка Mathematica с открытым исходным кодом?». Обмен стеками Mathematica .
  25. ^ Вольфрам, Стивен. «Запуск сегодня: бесплатный движок Wolfram Engine для разработчиков — сочинения Стивена Вольфрама».
  26. ^ «Бесплатный движок Wolfram Engine для разработчиков». www.wolfram.com . Проверено 19 января 2021 г.
  27. ^ Кастренакес, Джейкоб (14 ноября 2013 г.). «Wolfram объявляет о «самом важном» проекте: языке программирования, моделирующем мир». Грань . Проверено 21 сентября 2023 г.
  28. ^ «Грядет что-то очень большое: наш самый важный технологический проект - сочинения Стивена Вольфрама» . сочинения.stephenwolfram.com . 13 ноября 2013 г. Проверено 21 сентября 2023 г.

Внешние ссылки