WOLFRAM

Заметки для специалистов по языкам программирования

Истоки

Wolfram Language - это, прежде всего, эволюция символьного языка, разработанного для Mathematica на протяжении более чем трех десятилетий. Но это гораздо больше, так как он добавляет знания, представляет знания и возможности естественного языка Wolfram|Alpha, а также новый механизм символьного развертывания, созданный с помощью Wolfram Cloud.

Теоретические основы

С самого начала своего развития язык Wolfram Language задумывался как общий язык для выполнения вычислений—построенный на фундаменте основополагающих идей о символьных системах.

Первое потрясающее приложение: математика

Принципы Wolfram Language были впервые применены к очень требовательной области математических вычислений в Mathematica. Результат - огромный успех, на протяжении трёх с лишним десятилетий.

Миллионы пользователей еще до его появления

В своих предшественниках в Mathematica, Wolfram Language на протяжении трех десятилетий имел миллионы пользователей, среди которых многие ведущие мировые исследователи, а также бесчисленное множество студентов и других пользователей.

Выходя за пределы аппаратных возможностей

С самых его истоков Wolfram Language строился на основании четких принципов, без компромиссов, обусловленных аппаратными возможностями того времени (все в символьном виде, бесконечная точность и т.п.).

Концепция программирования в блокнотах

Впервые появившись в Mathematica более трех десятилетий назад, Wolfram Language позволяет писать программы в интерактивных документах блокнота, сочетающих выполнение кода с выводом и версткой издательского качества.

Осмысление значимости символьного программирования

Структуры данных, фрагменты кода, графика, документы, пользовательские интерфейсы... На протяжении своего инкубационного периода, длившегося более тридцати лет, Wolfram Language находил все больше и больше способов применения символьного программирования.

Wolfram|Alpha: информация об окружающем мире

Wolfram|Alpha сделала огромный массив информации об окружающем мире пригодным для вычислений, что позволяет интегрировать эту информацию в Wolfram Language и позволяет ему оперировать не только формальными конструкциями, но также и фактами об окружающем мире.

Миллиарды строк кода

Миллиарды строчек кода, на языке который сегодня называется Wolfram Language, используются в программных системах по всему миру, а десятки миллионов — в Wolfram|Alpha и самом Wolfram Language.

Язык на все времена

Wolfram Language является достаточно свободным от дефектов, что позволяет ему поддерживать преемственную совместимость даже с самой ранней версией системы Mathematica 1.0, выпущенной в 1988 году.

Опережает свою эпоху на более чем три десятилетия

Wolfram Language дал начало многим новым идеям программирования—некоторые из этих идей повлияли на языки программирования, возникшие в течение прошлых трёх десятилетий, и многие из которых до сегодняшнего дня можно встретить только в Wolfram Language.

Соответствует модной терминологии

Wolfram Language является одновременно как старым, так и новым: у него долгая история, но он полон новых идей. Многие его характеристики хорошо соответствуют распространенным современным техническим терминам в языках программирования, при этом многие другие не имеют аналогов в других языках программирования.

Wolfram Language является...

(среди прочего)

Наукоемким

(Наше собственное ключевое слово) В соответствии с одним из его основополагающих принципов, Wolfram Language содержит в себе обширный информационный ресурс, как об алгоритмах, так и об окружающем мире.

Символьным

В Wolfram Language все - код, данные, изображения, документы, интерфейсы пользователя, программы и многое другое - является символьным выражением.

Интерактивным

Код Wolfram Language может быть запущен в интерактивном режиме как диалог между пользователем и системой на основе документа REPL (цикл считывание, вычисление, печать).

Функциональным

Благодаря своей символьной сущности Wolfram Language поддерживает расширенную форму функционального программирования, основанную на обобщенных преобразованиях.

Высокоуровневым

Wolfram Language, благодаря своим наукоемким качествам и принципу максимальной автоматизации, может в самом деле быть самым высокоуровневым языком программирования в мире.

Декларативным

Wolfram Language реализует в себе декларативные конструкции в экстремальной форме, предоставляя высоко автоматизированные супер функции для решения поставленных высокоуровневых задач.

Полнокомплектным

Это больше похоже на «электростанция включена»: Wolfram Language имеет огромный, согласованный массив встроенных алгоритмов и знаний, настроенных на немедленное взаимодействие.

Гомоиконным

Благодаря своему символьному характеру, равенство код=данные справедливо на фундаментальном уровне в Wolfram Language.

Ориентированным на шаблоны

Высокотехнологичный отождествитель символьных выражений по шаблону лежит в основе Wolfram Language.

Метапрограммируемым

Ввиду свой символьной сущности Wolfram Language может непосредственно преобразовывать код, используя не только макросы, но и сам язык в полную его силу.

Лаконичным

Благодаря всем своим встроенным возможностям и тщательно отобранным базовым компонентам программы в Wolfram Language являются, как правило, очень лаконичными по сравнению с тем, что они делают.

Основанным на выражениях

Каждый объект в Wolfram Language (данные, код и многое другое) представим в виде древоподобного символьного выражения, обладающего значением.

Рефлексивным

Символьный характер Wolfram Language позволяет ему иметь полный самоанализ.

Полиморфным

Определение функций с помощью сопоставления с шаблоном позволяет Wolfram Language сразу же выражать глубоко полиморфное поведение.

Динамически типизированным

В Wolfram Language все является символьным выражением и каждое символьное выражение имеет головной элемент, который автоматически определяет его поведение.

Аппликативным

В Wolfram Language программы можно рассматривать как применение последовательностей символьных преобразований к неизменяемым символьным выражениям.

Конкатенативным

Поскольку Wolfram Language является символьным, программы можно непосредственно строить, соединяя индивидуально осмысленные части.

Дружественным к принципу "не повторяйся" (DRY)

Свобода, с которой можно факторизовать код в рамках функциональной символьной модели Wolfram Language, легко позволяет писать программы, следуя принципу "не повторяйся".

Позволяющим предметно-ориентированный язык

Символьный характер Wolfram Language позволяет с легкостью создавать в нем предметно-ориентированные языки, при этом многие такие предметно-ориентированные языки уже встроены в язык (регулярные выражения, графика, интерфейсы пользователя, развертывание и т.п.)

Представителем знаний

Благодаря обширным встроенным знаниям и символьной структуре Wolfram Language идеально подходит для представления знаний и их вычисления.

Семантическим

Wolfram Language имеет широкое встроенное представление сущностей и конструкций окружающего мира.

Математическим

Wolfram Language на сегодняшний день имеет самый широкий и глубокий встроенный охват математических вычислений.

Поддерживающим произвольную точность

Во всем Wolfram Language числа могут иметь любую точность и длину.

Символьно-численным

Wolfram Language имеет глубокую поддержку как символьных, так и численных вычислений, и многие из его алгоритмов сочетают эти подходы.

Способным принимать запросы

В Wolfram Language все данные представлены символьными выражениями, которые позволяют выполнять унифицированные запросы с использованием высокоуровневых функциональных конструкций.

Объектно-ориентированным

Wolfram Language поддерживает мощную символьную альтернативу традиционному объектно-ориентированному программированию.

Реактивным

Wolfram Language реализует функциональное реактивное программирование для поддержки создания сложных динамических пользовательских интерфейсов декларативным способом.

Мультиметодным

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

Выразительным

Продуманный дизайн и обширная встроенная функциональность Wolfram Language позволяют легко выражать вычислительные идеи на этом языке.

Читабельным

Сильный акцент на хорошо подобранных именах и структурах делает код Wolfram Language очень читабельным.

Ориентированным на документ

В Wolfram Language код не ограничивается текстом ASCII, а может быть представлен в виде насыщенных блокнотов.

Грамотным

На языке Wolfram Language исполняемые программы могут быть написаны в виде богато структурированных блокнотов.

Скриптовым

Wolfram Language можно использовать для написания скриптов внешних операций в различных средах и языках.

Естественным языком

Основанный на той же технологии, что и Wolfram|Alpha, Wolfram Language позволяет вводить данные на естественном языке как в рамках программ, так и в их функциональности.

JIT-компилируемым

Wolfram Language часто использует динамическую компиляцию "just-in-time" на своих собственных виртуальных машинах для оптимизации производительности и обеспечения наилучшего результата как при интерпретации, так и при компиляции.

Распараллеливаемым

Wolfram Language имеет встроенную функцию параллельных вычислений, как для отдельных машин, так и для потенциально гетерогенных сетей.

Облачным

Wolfram Language работает в облаке и поддерживает многие формы облачных вычислений, а также работает локально.

Клиент-серверным

Интерактивный интерфейс Wolfram Language настроен для взаимодействия по символьному протоколу WSTP (Wolfram Symbolic Transfer Protocol) с одним или несколькими вычислительными ядрами.

Платформенно-независимым

Wolfram Language одинаков на всех стандартных компьютерных платформах, локальных и облачных.

Заменяемым в "горячем" режиме

Поскольку Wolfram Language является интерпретируемым, а его развертывание - символическим, код можно исследовать, отлаживать и изменять на любом этапе его выполнения.

Поддерживающим интерфейс внешних функций (FFI)

Wolfram Language обладает широкой поддержкой интерфейсов внешних функций, работающих на различных уровнях.

Совместимым

В Wolfram Language встроена возможность взаимодействия с другими языками и данными в сотнях форматов.

Безопасным

Wolfram Language не использует низкоуровневые конструкции, такие как указатели и распределение памяти, что позволяет избежать большого класса возможных ошибок.

Персистентным

Поскольку все в Wolfram Language (код, данные, графика, интерфейсы и т.д.) представлено в виде символьного выражения, его можно сразу же сериализовать для постоянного хранения.

Допускающим возможность подмены (Monkey patchable)

В Wolfram Language существует единый механизм для переопределения работы практически чего угодно.

Неизменяемым

В Wolfram Language все является символьным выражением, которое представляет собой собственное значение, и только определенные функции имеют побочные эффекты, изменяя выражения "на месте".

Стабильным

Wolfram Language - это совместимое развитие языка в Mathematica, который сохраняет практически идеальную обратную совместимость на протяжении более трех десятилетий.