Заметки для экспертов по компьютерным языкам
Корни
Язык Wolfram Language - это, прежде всего, эволюционное развитие символьного языка программирования, разработанного для системы Mathematica на протяжении более трёх десятилетий. Однако в то же время язык Wolfram Language это гораздо больше, так как он предоставляет доступ к знаниям, их представлению и способности работать с запросами на естественном языке, которыми обладает 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 является символьным, программы можно непосредственно строить, соединяя индивидуально осмысленные части.
Дружественный к принципу "не повторяйся" (D.R.Y.)
Свобода, с которой можно факторизовать код в рамках функциональной символьной модели языка 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 поддерживает ввод на естественном языке, как при написании программ, так и в своих функциях.
Динамически компилируемым
Язык Wolfram Language часто незаметно для пользователя использует динамическую компиляцию в свою собственную виртуальную машину для оптимизации быстродействия, что позволяет ему извлекать преимущества как интерпретатора, так и компилятора.
Параллелизуемым
Язык Wolfram Language имеет встроенную поддержку выполнения параллельных вычислений, используя от одного компьютера до множества компьютеров, соединенных, в возможно гетерогенную, сеть.
Использующим облачные вычисления
Язык Wolfram Language работает в облачной среде и поддерживает многие формы облачных вычислений так же хорошо, как и при локальном использовании.
Клиент-серверным
Интерактивный пользовательский интерфейс языка Wolfram Language настроен для обмена информацией, используя символьный протокол WolframLink, с одним или несколькими вычислительными ядрами языка.
Платформенно-независимым
Язык Wolfram Language является одинаковым на всех стандартных компьютерных платформах как локально, так и в облаке.
Допускающим "горячую замену кода"
Поскольку язык Wolfram Language является интерпретируемым, а его использование - символьным, программы можно детально исследовать, отлаживать и изменять на произвольном этапе их выполнения.
Поддерживающим интерфейс внешних функций (FFI)
Язык Wolfram Language обладает полнофункциональной поддержкой интерфейса внешних функций, работающих на различных уровнях.
Интероперабельным
Язык Wolfram Language обладает встроенной поддержкой работы с другими языками и данными, хранимыми в сотнях различных форматов.
Безопасным
Язык Wolfram Language не предоставляет возможности использования низкоуровневых конструкций, таких как адресные ссылки или выделение памяти, что позволяет избегать большого класса возможных неполадок.
Персистентным
Поскольку в языке Wolfram Language все - включая код, данные, графику, пользовательские элементы и многое другое - представлено символьным выражением, его можно непосредственно сериализовать для хранения в постоянной памяти.
Допускающим использование "обезьяньего патча"
В языке Wolfram Language существует стандартный механизм переопределения поведения почти любой функции.
Неизменяемым
В языке Wolfram Language все является символьным выражением, которое представляет свое собственное значение и только некоторые функции обладают побочными эффектами, изменяя выражение, данное в их аргументе.
Стабильным
Язык Wolfram Language - это совместимое развитие языка в системе Mathematica, который сохранял почти идеальную обратную совместимость на протяжении более трёх десятилетий.