Обзоры Обзоры 12.12.2005 в 22:00 comment

Mathematica 5.2: к новым высотам

author avatar
https://secure.gravatar.com/avatar/2f8d57cddfeb455ba418faa11ee01bb0?s=96&r=g&d=https://itc.ua/wp-content/uploads/2023/06/no-avatar.png *** https://secure.gravatar.com/avatar/2f8d57cddfeb455ba418faa11ee01bb0?s=96&r=g&d=https://itc.ua/wp-content/uploads/2023/06/no-avatar.png *** https://itc.ua/wp-content/themes/ITC_6.0/images/no-avatar.svg

ITC.UA

автор

Научное ПО, быть может, лучше других подтверждает тезис о том, что аппаратная и программная части компьютеров должны совершенствоваться параллельно. Масштабные расчеты – именно та область, где современные процессоры способны показать себя во всей красе. Соответственно и системы компьютерной математики обязаны идти в ногу со временем, не только развивая свою алгоритмическую базу, но и утилизируя все возможности, предоставляемые оборудованием. Именно эту тенденцию, на наш взгляд, и отражает последнее обновление одного из известнейших пакетов данного класса – Mathematica.

Два года в жизненном цикле любого актуального программного продукта – срок немалый. Читатели, следящие за новинками в области научного ПО, хорошо знают, что за этот период большинство программ этого класса успело сменить две, а то и три версии. Однако компания Wolfram Research придерживается несколько иного подхода. Новые релизы Mathematica с целыми номерами появляются отнюдь не часто – примерно раз в 3–4 года, и поводом для этого выступают совсем не коммерческие интересы, а действительно глубокие, принципиальные усовершенствования. Поэтому нынешнюю Mathematica 5.2 отделяют от оригинальной версии 5.0 всего лишь два «десятичных» обновления.

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

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

Символьные вычисления традиционно являются самой сильной стороной Mathematica и находятся в центре внимания разработчиков. Среди важнейших новшеств версии 5.2 можно выделить введение специального оператора для конструирования разрывных функций и поддержки символьных операций над ними (анализ, упрощение выражений и др.), символьное интегрирование функций многих переменных по области, задаваемой системой неравенств, аналитическое решение некоторых новых видов дифференциальных уравнений, усовершенствованные алгоритмы для работы с линейными Диофантовыми системами.

Mathematica 5.2: к новым высотам
ArrayPlot – новый инструмент визуализации массивов данных

При этом следует отметить, что алгоритмическое улучшение сопровождается и архитектурными изменениями. Так, Mathematica 5.2 наконец обзавелась полноценной поддержкой 64-разрядных процессоров (оптимизация отдельных функций присутствовала и раньше) – инсталляционный модуль корректно определит платформу и самостоятельно выберет наиболее подходящий вариант приложения (хотя, по словам представителей Wolfram Research, в этом вопросе еще есть над чем работать). С переходом на повышенную разрядность стало возможным решать задачи качественно иного масштаба, поскольку 64-разрядные операционные системы способны управлять значительно бόльшим (в четыре с лишним миллиарда раз) объемом памяти по сравнению с 32-разрядными. К тому же, использование внутренних 64-разрядных регистров заметно повышает эффективность операций с большими числами, упакованными и разреженными массивами и другими специальными структурами, в результате чего ускорение вычислений на некоторых тестовых примерах достигает 1000 раз.

Кроме того, ядро Mathematica стало поддерживать многопроцессорные конфигурации и научилось распараллеливать вычислительные потоки, в связи с чем существенно возрастает скорость расчетов на некоторых алгоритмах (например, трудоемких задачах линейной алгебры). При этом каждый открытый документ (в терминах Mathematica – notebook) связывается со своим вычислительным процессом и может использоваться независимо от других.

Курс Fullstack Web Development від Mate academy.
Стань універсальним розробником, який може створювати веб-рішення з нуля.
Дізнатись про курс

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

Естественно, в Mathematica развивается не только базовая (математическая) функциональность, но и вспомогательная, во многих случаях также играющая весьма важную роль. Так, реализована поддержка новых внешних форматов (Excel, Matlab, DIF и др.) в функциях импорта/экспорта – к сожалению, в этот список по-прежнему не попадает RTF, что несколько затрудняет взаимодействие Mathematica с популярными средствами подготовки документации. Появились дополнительные операторы построения диаграмм новых типов (скажем, ArrayPlot предоставляет довольно гибкие средства для визуализации массивов и некоторых типов специальных статистических графиков), расширена интеграция с базами данных (в состав пакета вошли как драйверы для доступа к БД основных форматов, так и программные средства управления ими).

Mathematica 5.2: к новым высотам
GUIKit позволяет создавать достаточно сложные формы ввода и диалоговые окна

На одном новшестве следует остановиться подробнее. Начиная с версии 5.1, Mathematica поддерживает новую среду разработки пользовательских интерфейсов – GUIKit, актуальность которой обусловлена таким обстоятельством. До сих пор Mathematica развивалась в первую очередь как мощный высокоуровневый язык программирования, в котором вопросам пользовательского интерфейса традиционно отводилась второстепенная роль. Главным средством взаимодействия с системой была и остается основная оболочка пакета, ориентированная на специфические рабочие документы, а для построения более дружественных интерфейсов (необходимых, к примеру, в тиражируемых решениях) предлагался довольно мощный инструмент J/Link, предполагающий профессиональное применение языка Java.

Однако далеко не все пользователи Mathematica имеют достаточные навыки программирования, равно как и располагают соответствующим инструментарием. Поэтому данная среда позволяет решать такие задачи средствами самой системы, абстрагируясь, насколько возможно, от собственно программирования. GUIKit располагает сотней встроенных элементов управления (традиционно называемых widget), с помощью которых можно построить интерфейс практически любой сложности. Среди них – кнопки, поля ввода, выпадающие списки, переключатели, меню и многое другое. Нужно, однако, отметить, что работа с GUIKit требует достаточно глубокого знания синтаксиса этого инструмента, что несколько ограничивает его применение. Тем не менее освоить его гораздо проще, чем научиться программировать на Java.

Имеется еще ряд небольших усовершенствований, касающихся самых разных сторон функционирования Mathematica, и особенно ее интеграции с внешними системами – к ним можно отнести средства взаимодействия с интернет-поисковиками, возможность использования ядра в удаленном режиме и пр. Это одна из наиболее заметных тенденций развития пакета.

Курс Fullstack Web Development від Mate academy.
Стань універсальним розробником, який може створювати веб-рішення з нуля.
Дізнатись про курс

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

Развитие Mathematica никогда не прекратится

По мере становления отечественного рынка ПО к нему начинают испытывать интерес западные компании. Не осталась в стороне и Wolfram Research – нынешней осенью в Киеве побывал один из разработчиков Mathematica, кстати, наш бывший соотечественник, Александр Павлык, прочитавший ряд лекций в ведущих вузах. Нам удалось встретиться с Александром и задать ему несколько вопросов.

Александр, каково положение вашей компании и пакета Mathematica на современном рынке математических пакетов?

Mathematica 5.2: к новым высотам
Александр Павлык – наш соотечественник в команде Wolfram Research

Wolfram Research существует с 1989 г. и сегодня занимает лидирующее положение на рынке. Мы представляем продукт, которому нет равных по мощи и возможностям, есть лишь конкуренты в определенных узких сегментах. Достаточно сказать, что Mathematica насчитывает около двух миллионов пользователей во всем мире – инженеров, исследователей, академических работников и т. п. – из них около 700 в Украине и 2000 в России. Еще больше нашего ПО, конечно, распространяется по пиратским каналам, поэтому мы стремимся поощрять на здешнем рынке легализацию пользователей.

Несомненно, Mathematica уже завоевала немалую популярность, однако известно, что наибольшим спросом пользуется именно локализованное ПО. Есть ли какие-то планы по переводу интерфейса пакета, документации и пр.?

Локализация в данный момент нам действительно интересна и, скорее всего, будет рассматриваться именно на уровне документации и интерфейса. О переводе же команд (были и такие предложения, например с целью популяризации Mathematica в школах) речь не идет – выяснилось, что в своей массе пользователи, в частности российские, относятся к этому негативно.

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

Безусловно, хотя я и не готов сейчас дать исчерпывающий ответ. Пока мы не можем предложить такого же разнообразия прикладных пакетов для конкретных решений в инженерной области, однако Mathematica вполне способна конкурировать с Matlab – в первую очередь, за счет гораздо более сильного блока символьных вычислений. Нужно, однако, понимать, что, даже предоставив аналогичные возможности, мы вряд ли склоним на свою сторону нынешних пользователей MATLAB, поскольку в их среде уже сложилась своя культура и имеются определенные предпочтения.

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

Применение мастеров и других GUI-решений несомненно упрощает работу со сложными программами, но отнюдь не всегда экономит время. Для Mathematica традиционно характерен другой подход – значительную часть параметров можно просто опускать, система применяет типичные значения по умолчанию. В большинстве случаев даже такой упрощенный и краткий синтаксис позволяет получать необходимые результаты. Если же мы видим, что Mathematica не справляется с задачей и нужно действительно менять какие-то параметры, то, к сожалению, никакой мастер не поможет. Здесь требуется понимание того, что происходит внутри системы. Необходимо знать, какой алгоритм использует Mathematica, почему он иногда дает сбои и чем его можно заменить. Неслучайно по этим вопросам существует огромная документация. Наличие же броских интерфейсов в таких случаях проблемы не решит, но, по моему личному опыту, они, скорее замедляют работу. Конечно, это вопрос вкуса, но пока что мы убеждены в правильности нашего подхода.

Есть ли примеры применения Mathematica в известных проектах?

Примеров много, но все они довольно специфичны. Скажем, Mathematica применяется в проекте LIGO (Laser Interferometer Gravitational Wave Observatory) – масштабном академическом эксперименте по обнаружению гравитационных волн. Также сразу несколько научных институтов используют сегодня наше ПО для моделирования и предсказания цунами – как вы знаете, эта тема сейчас особенно актуальна.

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

Мы хотели бы видеть здесь своих представителей, в том числе и сертифицированных преподавателей Mathematica. Судя по вопросам, которые мне задавались на лекциях, многие заинтересованы в технической поддержке и качественном обучении, поскольку нередко время тратится на выяснение вопросов, ответы на которые достаточно легко получить у квалифицированного специалиста. Насколько я знаю, Mathematica уже используется в образовательном процессе, к примеру в Национальном авиационном университете, а также в Казанском университете и Санкт-Петербургском политехническом институте. В общем, прогресс есть, и я думаю, что со временем специальные учебные курсы станут обычным делом, поскольку Mathematica широко применяется в научной и инженерной практике. Мы со своей стороны будем стараться оказывать всемерную поддержку таким начинаниям.

Каковы, по вашему мнению, основные тенденции развития всех математических пакетов, в частности Mathematica?

В первую очередь на повестке дня стоит освоение современных аппаратных платформ: 64-разрядных, мультипроцессорных, снабженных большим количеством оперативной памяти. Mathematica уже обеспечивает некоторую поддержку 64-разрядных вычислений, но она должна быть существенно расширена. Очень перспективно направление параллельного программирования, которому мы уделяем особое внимание. Главная задача состоит в максимальной автоматизации процесса распараллеливания, чтобы пользователь пакета мог сосредоточиться на решении прикладных задач. Что касается конкретных функций Mathematica, то мы собираемся сделать наши рабочие документы более интерактивными, чтобы при проведении различных исследований можно было оперативно менять параметры задачи и сразу же видеть изменения – первый шаг к этому сделан в GUIKit. Кроме того, наука не стоит на месте, появляются новые, более эффективные алгоритмы, и мы постоянно работаем над тем, чтобы наши программы шли в ногу со временем. Ведь в этой сфере развитие никогда не прекратится.


Loading comments...

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: