Структура систем Mathematica и их идеология
Следует отметить, что скромные (в смысле аппаратных требований) версии системы Mathematica 2.2.2 по сей день производятся фирмой Wolfram и используются в основном в системе образования. Они продаются по ценам в несколько раз меньшим, чем последующие реализации 3 и 4. Сейчас версии системы для IBM-совместимых ПК Mathematica 2, 3 и 4 распространяются в России на оптических дисках. Это намного повышает их доступность, хотя нередки случаи поставки не вполне работоспособных систем на дисках сомнительного происхождения.
Общая структура систем Mathematica (всех версий) представлена на рис. 1.2.
Рис. 1.2. Структура системы Mathematica
Центральное место в системах класса Mathematica занимает машинно-независимое ядро математических операций — Kernel. Для ориентации системы на конкретную машинную платформу служит программный интерфейсный процессор Front End. Именно он определяет, какой вид имеет пользовательский интерфейс системы. В этой главе далее будет описан интерфейсный процессор для ПК с массовыми операционными системами Windows 95/98/NT. Разумеется, интерфейсные процессоры систем Mathematica для других платформ могут иметь свои нюансы, но особых различий с описанным интерфейсным процессором у них нет.
Любопытны данные об объеме ядра разных реализаций системы Mathematica, приведенные в книге Стивена Вольфрама:
Система | Mathematica 1 | Mathematica 2 | Mathematica 3 | Mathematica 4 |
Число строк на языке С | 150 000 | 350 000 | 600 000 | 800 000 |
Увеличение объема ядра в системе Mathematica 4 позволило перенести в ядро ряд функций из пакетов расширения. Ядро системы тщательно оптимизировано, что повысило скорость выполнения большинства команд.
Ядро сделано достаточно компактным с тем, чтобы любая функция из него вызывалась достаточно быстро. Для расширения набора функций служит библиотека (Library) и набор пакетов расширения (Add-on Packages). Пакеты расширений готовятся на собственном языке программирования систем Mathematica и являются главным средством расширения возможностей системы и их адаптации к решению конкретных классов задач пользователя. Кроме того, системы имеют встроенную электронную справочную систему — Help. Она содержит шесть электронных книг с «живыми» примерами, включая упомянутые во введении книги.
Ядро систем Mathematica 3/4 сделано независимым от компьютерной платформы, на которой может устанавливаться и работать система. Это гарантирует идентичность операторов и функций, используемых в системах Mathematica, устанавливаемых на разных ЭВМ — от ПК до суперкомпьютеров. Поэтому большая часть материалов данной книги, посвященных математическим возможностям и даже интерфейсу систем Mathematica 3/4, относится к компьютерам самого разного класса — от платформы Windows до Macintosh и UNIX.
Идеология систем Mathematica базируется на двух, казалось бы, взаимно исключающих друг друга положениях:
Противоречивость этих положений кажущаяся. На самом деле Mathematica — типичная система программирования с проблемно-ориентированным языком программирования сверхвысокого уровня . Его можно отнести к классу интерпретаторов. Как известно, языки такого типа последовательно анализируют (интерпретируют) каждое выражение и тут же исполняют его. Таким образом, работа с системой происходит явно в диалоговом режиме — пользователь задает системе задание, а она тут же выполняет его. Разумеется, Mathematica содержит достаточный набор управляющих структур для создания условных выражений, ветвления в программах, циклов и т. д.
На первый взгляд может показаться, что система ведет диалог на куда более примитивном уровне, чем хорошо известный язык программирования Бейсик (тоже относящийся к интерпретирующему типу). И в самом деле, работа с системой Mathematica напоминает работу с Бейсиком в режиме непосредственного исполнения команд — в ответ на каждый вопрос тут же следует результат вычислений. Более того, сохранился такой архаизм (впрочем, при необходимости отключаемый), как нумерация строк (ячеек).
Однако первое впечатление часто бывает обманчивым. Помимо того что Mathematica даже в ходе такого элементарного диалога предоставляет пользователю средства сверхвысокого уровня (например, аналитическое вычисление производных или интегралов, что Бейсику абсолютно недоступно), система имеет все возможности для создания практически любых управляющих структур , организации ввода/вывода, работы с системными функциями, обслуживания любых периферийных устройств и т. д. Другое дело, что рядовому пользователю эти средства программирования могут и не понадобиться — его вполне удовлетворят встроенные математические функции системы, поражающие своим обилием и многообразием даже опытных математиков.
Можно сказать, что для решения математических задач система содержит готовые рецепты почти на любой «вкус и цвет». Однако с помощью пакетов расширения (Add-ons) имеется возможность постоянно готовить новые «блюда», подстраивая «кухню» (то есть возможности) системы под запросы любого ее пользователя.
К идеологии систем Mathematica надо отнести и комплексную визуализацию всех этапов вычислений, начиная с легко понятного и естественного ввода текстов и формул и кончая наглядным выводом результатов в разнообразных формах представления. Особое место при этом играет полная визуализация результатов вычислений, включающая в себя построение огромного числа графиков самого различного вида, в том числе средства анимации изображений и синтеза звуков.