Реклама

Для решения аналитических и численных математических задач создано немало программных продуктов, в том числе Mathcad, Matlab, Maple, Mathematica. Все это не обычные библиотеки прикладных программ для математических расчетов, которые можно просто вызывать, а высокоуровневые системы с мощными возможностями интеграции, визуализации и т. д., как правило имеющие собственные языки программирования.

В целом Wоlfram сегодня ориентируется на создание комплексных решений на стыке различных областей (скажем, ИТ, математика и медицина). Программные продукты компании предполагают простоту применения и высокую единообразность, включая общий язык Wolfram Language, обработку информации непосредственно на веб-сайтах, высокоразвитые средства визуализации. Примерами могут служить Wolfram Data Drop (сервис для обработки и перемещения данных) или System Modeler (моделирование биохимических и физико-технических объектов собственным объектно-ориентированным языком).

В Mathematica, в марте получившей обновление в виде версии 10.1, очень быстро продолжает расти число самых разнообразных функций. Теперь функции появляются не столько для базового, сколько для среднего уровня — не для решения дифференциальных уравнений, а, скажем, для работы с Википедией или с Twitter. Работа со слабоструктурированными данными — тоже конек Wolfram. В работе с базами данных, помимо традиционных применений, усиливается функциональность, рассчитанная на специализированные базы данных.

Все это дает лишь общее представление о том, на что ориентируется Wolfram в первую очередь. Один из докладов на семинаре четко проиллюстрировал довольно широкую область, где продукция Wolfram весьма привлекательна. Речь в нем шла о работах Института проблем управления РАН, использующих платформу Wolfram Data Science. По сути, это добыча данных (data mining) для слабоструктурированных данных. Можно говорить о целом конвейере Wolfram Data Science, куда входят, например, такие этапы, как постановка задачи, ее формализация, сбор данных, трансформация (включая «очистку» и преобразование данных), тонкая настройка модели и т. д.

В Wolfram Data Science общую сложность задачи определяют три основные компонента — размер, гетерогенность, сложность алгоритма решения; они диктуют целесообразность использования того или иного программного инструментария. Mathematica ориентирована на символьную парадигму, на применение списков. Если все три компонента сложны и трудоемки, эта ориентация может привести к неудовлетворительной производительности и излишней сложности. Если статистическая обработка в своей основе медианная (считаются средние значения), что типично для обработки медицинских данных и для экономических задач, например финансовых данных, то можно использовать Excel или написать простенькую дисперсионную программку на языке Wolfram. А если обработка нужна «экстремальная», могут понадобиться более сложные программы на Питоне, Си и других языках. Символьно-строчечная парадигма Mathematica при работе с большими побайтовыми массивами еще более увеличивает его реально используемый размер, замедляя вычисления. Написать в Mathematica можно быстро, а считать — значительно медленнее, чем на Си. Но современные специализированные языки программирования (например, R) развиваются в направлении общего пользования; вероятно, такое будет происходить и с языком Wolfram (в частности, шаги по поддержке традиционных массивов уже делаются). Если задачи незначительны по сложности, гетерогенности и размеру, можно вообще обойтись Excel. Если велики гетерогенность и сложность, а размер маленький или средний, хорошо применять Mathematica. Если еще и размер данных велик — лучше применять Си и профессиональный инструментарий (SAS, Statistica).

Язык Wolfram — интегратор, великолепный для иллюстраций, презентаций. Огромное количество форматов данных, которые можно читать и обрабатывать, делает его удобным инструментом для сбора и трансформации данных; очень просто связываться с различными базами данных, в том числе специализированными; легко и эффективно загружаются всевозможные данные из Интернета.

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

Язык Wolfram — интерпретируемый, а не компилируемый. Не следует ждать от него высокой производительности: если она очень важна, следует обратиться к обычным языкам программирования. Та же проблема и с функциями Mathematica. Имеющиеся возможности распараллеливания и работы c GPU/CUDA довольно ограниченны, быстрых функций в Mathematica не добавилось — они по-прежнему последовательные, но можно на языке Wolfram организовать параллельное выполнение их нескольких экземпляров с применением Open MPI и (в кластере) технологии Pooch. Распараллеливание возможно в Mac OS X и Linux-64; вообще же Mathematica работает и в Windows, и во всех основных дистрибутивах Linux.