stringtranslate.com

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

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

История

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

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

Вольфрам также добавил функции для более сложных задач, таких как 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 фактически представляют собой случай простых шаблонов для замены:

Ф [ х_ ] := х ^ 0    

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

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

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

Оператор /;— «условие», поэтому правило применяется только при y>z. Три подчеркивания — это синтаксис для BlankNullSequence[], для последовательности, которая может быть нулевой.

Оператор 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 выпустила парсер языка под лицензией MIT с открытым исходным кодом . [22] Парсер изначально был разработан на C++ , но в 2023 году был переписан на Rust . Справочник находится в открытом доступе . [23]

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

В 2019 году [25] Wolfram Research выпустила бесплатное программное обеспечение Wolfram Engine, которое будет использоваться в качестве библиотеки программирования в некоммерческом программном обеспечении. Этот движок, предназначенный только для разработчиков, предоставляет оболочку командной строки оценщика Mathematica (с ограниченным количеством ядер) и требует регистрации и активации лицензии через Интернет. Свободно доступный проект Jupyter Notebook/Lab предоставляет протокол (ZMQ) для подключения своих блокнотов к различным языкам, он доступен как альтернатива текстовому интерфейсу CLI через Wolfram Kernel для Jupyter. [26]

Нейминг

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

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

Ссылки

  1. ^ "История продолжается: анонсируем версию 14 Wolfram Language и Mathematica". Stephen Wolfram Writings . 2024-07-31 . Получено 2024-07-31 .
  2. ^ Вольфрам, Стивен. «Тини Вельтман (1931–2021): от языка ассемблера до Нобелевской премии — сочинения Стивена Вольфрама». stephenwolfram.comwritings . Получено 22 января 2021 г. .
  3. ^ Мейдер, Роман Э. (1994). Программист Mathematica® . Academic Press, Inc. стр. 6. ISBN 978-1-48321-415-3.
  4. ^ "Wolfram Language Q&A". Wolfram Research . Получено 2016-12-05 .
  5. ^ Сомерс, Джеймс. «Научная статья устарела». The Atlantic . Получено 10 апреля 2018 г.
  6. ^ Хики, Рич. "Clojure Bookshelf". Amazon.com . Архивировано из оригинала 2017-10-03 . Получено 2020-05-06 .
  7. ^ "Wolfram Open Code, Open Source, Open Data, Open Resources". www.wolfram.com . Получено 2023-02-03 .
  8. ^ "Заметки для экспертов по языкам программирования о Wolfram Language". Wolfram.com . Получено 2015-11-05 .
  9. ^ ab «Как нам назвать язык Mathematica? — Блог Стивена Вольфрама». Blog.stephenwolfram.com. 2013-02-12 . Получено 2015-11-05 .
  10. ^ «Празднование первой четверти века Mathematica — блог Wolfram». Blog.wolfram.com. 23 июня 2013 г. Получено 05.11.2015 г.
  11. ^ Вольфрам (1988). Mathematica, система для выполнения математических вычислений с помощью компьютера.
  12. ^ Хейс, Брайан (1990-01-01). "Мысли о Mathematica" (PDF) . Pixel .
  13. ^ "Wolfram Language & System Documentation Center". Reference.wolfram.com . Получено 2015-11-05 .
  14. ^ «Внедрение языка Wolfram Language (и Mathematica) на каждую Raspberry Pi — блог Wolfram». Blog.wolfram.com. 21 ноября 2013 г. Получено 05.11.2015 г.
  15. ^ Шерр, Ян (22.11.2013). "Премиальное программное обеспечение Mathematica бесплатно на бюджетном Raspberry Pi - CNET". News.cnet.com . Получено 05.11.2015 .
  16. ^ Дэниел А.Дж. Соколов (22 ноября 2014 г.). «Intels Edison: система Pentium в формате SD-карты | работа онлайн». Heise.de . Проверено 5 ноября 2015 г.
  17. ^ "Язык Wolfram Language скоро будет интегрирован в Unity". Gamasutra. 2014-03-10 . Получено 2015-11-05 .
  18. ^ «Есть ли способ использовать Wolfram Language в Unity3D?». Wolfram. 2017. Архивировано из оригинала 19 июля 2017 года . Получено 11 апреля 2017 года .
  19. ^ "FullForm". Документация по языку Wolfram Language .
  20. ^ «Добро пожаловать в Rubi, интегратор на основе правил». Интеграция на основе правил .
  21. ^ МакЛун, Дж. (2 апреля 2019 г.). «Почему Wolfram Tech не является ПО с открытым исходным кодом — дюжина причин — блог Wolfram».
  22. ^ "codeparser: Анализ исходного кода Wolfram Language как абстрактных синтаксических деревьев (AST) или конкретных синтаксических деревьев (CST)". GitHub . Wolfram Research, Inc.
  23. ^ «Открытые материалы от Wolfram: открытый код, открытый исходный код, открытые данные, открытые ресурсы». www.wolfram.com .
  24. ^ Саймон. «Существует ли реализация Mathematica-the-language с открытым исходным кодом?». Mathematica Stack Exchange .
  25. ^ Вольфрам, Стивен (21 мая 2019 г.). «Запуск сегодня: бесплатный движок Wolfram для разработчиков — сочинения Стивена Вольфрама».
  26. ^ "Бесплатный движок Wolfram для разработчиков". www.wolfram.com . Получено 19 января 2021 г. .
  27. ^ Кастренакес, Якоб (14.11.2013). «Wolfram объявляет о „самом важном“ проекте: языке программирования, который моделирует мир». The Verge . Получено 21.09.2023 .
  28. ^ «Грядет что-то очень большое: наш самый важный технологический проект на данный момент — сочинения Стивена Вольфрама». writings.stephenwolfram.com . 2013-11-13 . Получено 2023-09-21 .

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