Введение.Возникновение и развитие систем компьютерной математики
1.3 Коммерческие и свободно распространяемые системы компьютерной математики
CAS были созданы в 70-ые годы и развивались в рамках проектов, связанных с искусственным интеллектом. Поэтому сфера применения их достаточно большая и разнообразная. Первыми популярными системами были Reduce, Derive, Macsyma. Некоторые из них до сих пор находятся в продаже. Свободно распространяемая версия Macsyma — Maxima. На данный момент лидерами продаж являются Maple и Mathematica. Оба этих пакета активно используются в математических, инженерных и других научных исследованиях. Существует множество коммерческих систем компьютерной алгебры: Maple, Mathematica, MathCad и другие. Свободно распространяемые программы: Axiom, Eigenmath, Maxima, Yacas и др.
Успех в современном использовании САВ лежит в интеграции всех машинных возможностей (символьный и численный интерфейс, встроенная графика, мультипликация, базы и банки данных и т. д.). Все современные коммерческие системы компьютерной математики (Mathematica, Maple, MatLab и Reduce) обладают стандартным набором возможностей:
- имеется входной макроязык для общения пользователя с системой, включающий специализированный набор функций для решения математических задач;
- имеются основные символьные (математические) объекты: полиномы, ряды, рациональные функции, выражения общего вида, векторы, матрицы;
- системы используют целые, рациональные, вещественные, комплексные числа;
- имеется несколько дополняющих друг друга режимов работы: редактирование, диагностика, диалог, протокол работы;
- присутствует связь со средствами разработки программ: возможны подстановки, вычисления значений, генерация программ, использование стандартного математического обеспечения (библиотек);
- используются интерфейсы для связи с офисными средствами, базами данных, графическими программными средствами и т.п.;
Хотя между системами имеются различия, синтаксис ассоциированных языков не является проблемой, затрудняющей использование систем компьютерной математики. Синтаксис языков систем в значительной степени аналогичен синтаксису Паскаля. Обязательно имеются операторы присваивания, понятие вызывающей функции (команды), более или менее богатый выбор управляющих структур ( и т. д.), возможности для определения процедур,. . . — в общем, весь арсенал классических языков программирования, необходимый для записи алгоритмов.
Системы компьютерной алгебры можно условно разделить на системы общего назначения и специализированные. К системам общего назначения относятся Macsyma, Reduce, Mathematica, Maple, Axiom и другие системы.
В 80-е годы прошлого века широкое распространение в бывшем СССР получила система Reduce. Она первоначально предназначалась для решения физических задач, разрабатывалась на наиболее широко распространённых компьютерах, разработка до определённого времени не носила коммерческого характера (система до конца 80- х годов распространялась бесплатно). Открытый характер системы позволил привлечь к её разработке огромную армию пользователей, обогативших систему многочисленными пакетами для решения отдельных задач.
Macsyma, так же, как и Reduce, является "старой" системой. В отличие от системы Reduce, Macsyma разрабатывалась с самого начала как коммерческий продукт. В ней более тщательно проработаны алгоритмические вопросы, её эффективность существенно выше, но меньшее её распространение можно объяснить двумя обстоятельствами: длительное время она была реализована только на малом числе "экзотических" компьютеров и распространялась только на коммерческой основе.
Система Maple, созданная в 80-х годах прошлого века в Канаде, с самого начала была задумана как система для персональных компьютеров, учитывающая их особенности. Она развивается "вширь и вглубь", даже её ядро переписывалось с одного алгоритмического языка на другой. В настоящее время Maple широко применяется во многих странах (в частности, в США и Канаде) в учебном процессе, а также в различных областях научных и технических исследований.
В конце прошлого века получила широкое распространение и сейчас быстро развивается система Mathematica. Её успех в значительной степени объясняется её широкими графическими возможностями а также электронной документацией, которую можно рассматривать как электронную библиотеку, посвящённую различным разделам математики и информатики.
Особое место среди систем компьютерной алгебры занимает система Axiom. В отличие от остальных систем, представляющих собой пакеты программ, общение с которыми осуществляется на некотором алголо-подобном языке, система Axiom, развившаяся из системы Scratchpad-II, имеет дело с более привычными для математиков объектами. В частности, в ней ключевым понятием является понятие категории: здесь можно рассматривать, например, категории множеств, полугрупп, дифференциальных колец, левых модулей и т. д. Система имеет высокую степень универсальности, требует для своей реализации мощных компьютеров, распространяется за достаточно высокую плату, поэтому используется только в ограниченном числе мощных университетских и научных центров.
Специализированные системы отличаются более высокой эффективностью, но область их применения ограничена. К специализированным системам относятся такие системы, как Caley и GAP — специализированные системы для вычислений в теории групп, Macauley, CoCoA, Singular — системы разной степени универсальности для вычислений в кольце многочленов, Schoonship — специализированная система для вычислений в физике высоких энергий, muMath и её правонаследница Derive — системы, широко используемые в учебном процессе (в частности, в Австрии лицензия на установку системы Derive приобретена для всех средних школ), и многие другие.
Maple — это система для аналитического и численного решения математических задач, возникающих как в математике, так и в прикладных науках. Развитая система команд, удобный интерфейс и широкие возможности позволяют эффективно применять Maple для решения проблем математического моделирования.
Maple состоит из ядра, процедур, написанных на языке С и в высшей степени оптимизированных, библиотеки, написанной на Maple- языке, и интерфейса. Ядро выполняет большинство базисных операций. Библиотека содержит множество команд и процедур, выполняемых в режиме интерпретации. Программируя собственные процедуры, пользователь может пополнять ими стандартный набор и, таким образом, расширять возможности Maple. Работа в Maple проходит в режиме сессии (session). Пользователь вводит предложения (команды, выражения, процедуры и др.), которые воспринимаются Maple. По умолчанию результаты сеанса сохраняются в файле с расширением 'ms'. Если задан режим сохранения состояния сеанса (session), то в файле с расширением 'm' будут записаны текущие назначения.
Mathematica — это широко используемая CAS изначально разработана Стивеном Вольфрандом, которая продаётся компанией Wolfram Research. Он начал работу над Mathematica в 1986 году, а выпустил в 1988 году. Mathematica не только CAS, но и мощный язык программирования. Этот язык программирования реализован на основе объектно ориентированного варианта языка С, расширяемого при помощи так называемых библиотек кода. Эти библиотеки представляют собой текстовые файлы, написанные на языке Mathematica.
Архитектура Mathematica представлена ядром и пользовательским интерфейсом. Ядро программы отвечает за интерпретацию программ, написанных на языке Mathematica, и непосредственно занимается вычислениями. Пользовательские интерфейсы предназначены для выводов результатов в форме, понятной пользователю. По мнению компании-разработчика, большая часть пользователей Mathematica — это технические профессионалы. Также Mathematica широко используется в образовании. Сейчас несколько тысяч курсов на основе этого продукта читаются во многих учебных заведениях, начиная от средней школы и заканчивая аспирантурой. Mathematica используется в самых крупных университетах по всему миру и в группе компаний Fortune 500, а также во всех 15 основных министерствах правительства США.
MathCad — это CAS очень похожая на Mathematica. Распространяется компанией Mathsoft. MathCad ориентирован на поддержку концепций рабочего листа. Уравнения и выражения отображаются на рабочем листе так, как они выглядели бы на какой-нибудь презентации, а не так, как выглядят на языке программирования. Некоторые задачи, которые выполняет программа: решение дифференциальных уравнений, графики на плоскости и в пространстве, символьное исчисление, операции с векторами и матрицами, символьное решение систем уравнений, подбор графиков, набор статистических функций и вероятностных распределений. По мнению разработчиков MathCad, главный конкурент этого пакета — электронные таблицы.
Многие пользователи используют электронные таблицы или языки программирования для выполнения вычислений. Но ни те, ни другие не справляются с задачей, когда дело доходит до обработки полученных данных. Электронные таблицы разработаны для бухгалтерских, а не для инженерных расчётов! Для последних они не слишком удобны: уравнения спрятаны в ячейках, сложно вставить комментарии. Это делает работу довольно затруднительной, а устранять ошибки и разбираться в чьих-то вычислениях вообще сложно. Электронные таблицы трудны для понимания и повторного использования другими пользователями.
Yacas — это Open Source CAS общего назначения. Базируется на собственном языке программирования, главной целью при разработке этого языка была простота реализации новых алгоритмов. Этот язык очень похож на LISP, поддерживает ввод и вывод в обычном текстовом режиме как интерактивно, так и в режиме пакетного выражения.
Maxima является потомком DOE Macsyma, которая начала своё существование в конце 1960 года в MIT. Macsyma первая создала систему компьютерной алгебры, она проложила путь для таких программ как Maple и Mathematica. Главный вариант Maxima разрабатывался Вильямом Шелтером с 1982 по 2001 год. В 1998 году он получил разрешение на реализацию открытого кода на GPL. Благодаря его умению Maxima сумела выжить и сохранить свой оригинальный код в рабочем состоянии. Вскоре Вильям передал Maxima группе пользователей и разработчиков, которые сохранили её в рабочем состоянии. На сегодняшний день пакет достаточно активно развивается, и во многих отношениях не уступает таким развитым системам компьютерной математики, как Maple или Mathematica.