Свободные программы символьной математики Maxima и Axiom Автор: Вадим Житников Организация: ООО "Компания Скид" Город: Москва Проект: Maxima (http://maxima.sourceforge.net) Abstract: Программы символьной математики ориентированы на точное, аналитическое решение математических задач в максимально удобной для человека форме и находят широкое применение в научных, инженерных расчетах и в образовании. Рассматривается история, состояние, проблемы и перспективы двух свободных систем символьных вычислений Maxima (GPL) и Axiom (Modified BSD license). Системы символьных (аналитических) вычислений (иначе ещё называемые системами компьютерной алгебры) предназначены для автоматизации самого широкого спектра математических расчетов. Причем вычисления производятся точно, аналитически - в форме, близкой к обычной математической нотации. Они прекрасно справляются с такими рутинными задачами, как раскрытие скобок, приведение подобных, дифференцирование. Более того, используя различные эвристические или специализированные алгоритмы, системы аналитических вычислений могут решать и более сложные задачи, такие как интегрирование, решение символьных и дифференциальных уравнений. Разумеется, не всякая задача имеет точное решение, и поэтому системы компьютерной алгебры могут решать задачи численно, строить графики. Системы компьютерной алгебры имеют долгую историю, основы их развития заложены в академической среде Северной Америки. Сегодня наряду с такими известными коммерческими системами как Maple и Mathematica, существует две свободные программы: Maxima (GPL, http://maxima.sourceforge.net/) и Axiom (Modified BSD license, http://www.nongnu.org/axiom/index.html). В 1968 году в Массачусетском Технологическом институте (MIT) в рамках создания искусственного интеллекта началась разработка системы аналитических вычислений Macsyma. В ранний период проект, требовавший чрезвычайно больших для того времени вычислительных ресурсов, базировался на единственном компьютере марки DEC PDP-6 (позднее DEC PDP-10). С подключением этой машины к сети ARPANET возросло число пользователей и программистов Maсsyma. Появилось большое число портов Macsyma на другие вычислительные машины и операционные системы. Но со временем все эти проекты, включая оригинальный в MIT, прекратили свое существование. В 1982 году права на коммерческую разработку и использование Macsyma были переданы Symbolics Inc. В то же время Министерство Энергетики США сохранило за собой права на оригинальный код Macsyma. Основываясь на нем, проф. Вильям Шелтер (William Schelter) из Техасского университета в Августине развивал свою версию программы, переименованную в Maxima. В 1998 году он получил официальное разрешение от Министерства Энергетики США выпустить Maxima под лицензией GPL 2. Тем временем в 1999 году коммерческий проект Macsyma был полностью закрыт и программа перестала быть доступной. После внезапной смерти Вильяма Шелтера в 2001 году развитие Maxima продолжается в рамках проекта базирующегося на SourceForge. Лидер проекта Джеймс Амундсон (James Amundson). В феврале 2003 г. выпущен первый официальный релиз Maxima 5.9.0, в данный момент Maxima 5.9.1 находится на стадии бета-тестирования. История развития второй системы аналитических вычислений во многом сходна. С 1971 до начала 90х годов прошлого века система Scratchpad развивалась как научно-исследовательский проект IBM. Была проделана огромная работа, достаточно сказать, что затраты труда на разработку Scratchpad оцениваются не менее, чем 300 человеко-лет. Затем система была переименована в Axiom и передана Numerical Algorithms Group (NAG) для коммерческого использования. В 2001 году NAG сочла дальнейшее развитие Axiom нецелесообразным и выпустила систему в свободное использование. Современный лидер проекта (http://savannah.nongnu.org/projects/axiom) Тим Дэйли (Tim Daly) является разработчиком Axiom ещё со времён IBM. Уникальным свойством Axiom является строгая типизация математических выражений, что делает систему особенно полезной для развития математических алгоритмов. Программа хорошо документирована как на уровне исходного кода (literate programming), так и для конечного пользователя (имеется книга). Остановимся на проблемах и задачах проекта Maxima. Исходный код, доставшийся проекту в наследство от Macsyma, был в довольно разрозненном состоянии - содержал куски неполного кода и рабочие файлы. С тех пор, сначала силами Вильяма Шелтера, а потом командой разработчиков Maxima была проделана большая работа. Полностью реорганизована структура исходного кода и система построения переведена на autotools. Улучшено построение графиков, численное вычисление специальных функций и исправлено много ошибок. Усовершенствовано взаимодействие с программами оболочками. На данный момент существует несколько оболочек к Maxima -- несколько режимов для GNU/Emacs и графические оболочки xmaxima, TeXmacs, symaxx/2. К сожалению, ни один из этих интерфейсов не вполне удовлетворяет современным требованиям и разработка новой полноценной кросплатформенной графической оболочки является важнейшей задачей. Работа над исправление внутренних ошибок Maxima идёт недостаточно быстрыми темпами, что связано со следующими трудностями. Довольно высок порог вхождения для понимания внутренней работы программы. Исходный код слабо комментирован и сложен по своей структуре. Работа по усовершенствованию ядра системы требует специфической квалификации -- навыков программировании на Lisp вместе с хорошей математической подготовкой. Maxima неплохо документировна: имеется полное справочное руководство в формате texinfo, на котором основана on-line справочная система. Однако нет книги -- работа начата, но пока далека до завершения. Одна из актуальных задач -- перевод документации на русский язык. Сейчас Maxima работает на 6 различных реализациях Common Lisp (GCL, Clisp, CMUCL, SBCL, OpenMCL, Allegro Common Lisp), и перенос на любую другую реализацию Common Lisp не составит труда. Система обладает высокой переносимостью и работает практически на всех современных вариантах Linux (12 процессорных архитектур Debian/GNU Linux) и UNIX, Mac OSX, Windows 9x, 2000, XP, наладонных компьютерах.