Macsyma

Macsyma — система компьютерной алгебры, разработка которой велась с 1968 года в MIT в лаборатории Project MAC. Это была первая всеобъемлющая система символьной математики и одна из ранних систем, основанных на знаниях. Целиком написана на языке программирования Лисп (диалект MacLisp), для своего времени была одной из самых больших написанных на Лиспе программ. Перенос этой системы на новые компьютерные платформы послужил стимулом для создания нескольких Лисп-систем в 1970-е — 1980-е годы.

С 1982 года система распространялась на коммерческой основе, в 1999 году её развитие было прекращено.

Многие из идей, появившихся в Macsyma, впоследствии были заимствованы такими системами как Mathematica, Maple, и другими. Является предком свободной системы компьютерной алгебры Maxima.

Разработка 

Проект был инициирован в июле 1968 года Карлом Энгельманом (), Вильямом Мартином ()
(интерфейс пользователя, отображение выражений, арифметика полиномов) и Джоэлем
Мозесом () (механизм упрощения выражений, неопределённые интегралы: эвристики/Алгоритм Риша). Бил Мартин был руководителем проекта до 1971 года, а Мозес следующие десять лет. Энгельман и его команда покинули проект в 1969 и вернулись в MITRE Corporation.
Впоследствии, основными участниками разработки математического ядра программы были:

 Яннис Августис () (специальные функции);
 Дэвид Бартон () (algsys);
 Ричард Боген () (специальные функции);
 Билл Дубик () (пределы, базис Грёбнера, TriangSys, неопределённые интегралы: Бронштейн, степенные ряды, теория чисел, специальные функции, функциональные уравнения, сопоставление с образцом, sign queries);
 Ричард Фейтман () (дроби, сопоставление с образцом, длинная арифметика);
 Майкл Генезерет ( (сравнение, база знаний);
 Джеф Голден () (упрощение выражений, язык, системное программирование);
 Билл Госпер () (конечные суммы, специальные функции);
 Чарльз Карни ( (графики);
 Джон Кульп (), Эд Лафферти () (обыкновенные дифференциальные уравнения, специальные функции);
 Ставрос Макракис () (комплексные числа, системное программирование);
 Барри Трагер () (алгебраическое интегрирование, факторизация, базис Грёбнера);
 Пол Ван () (факторизация многочленов, пределы, определённые интегралы);
 Дэвид Юнь (), Гейл Захариас () (базис Грёбнера);
 Рич Зиппель () (степенные ряды, факторизация многочленов, теория чисел, комбинаторика).

Macsyma была написана на языке программирования Maclisp, разработанном в проекте MAC диалекте Лиспа. Потребности Macsyma повлияли на особенности данного диалекта, развивавшегося одновременно, в частности, на добавление более развитых средств числовых расчётов и реализацию высокоэффективного компилятора. Исходно Maclisp и Macsyma работали на компьютерах PDP-6 и PDP-10 под управлением операционных систем ITS и TOPS 10/20, позже - на компьютере GE-600 под управлением ОС Multics, а также и на Лисп-машинах. В то время Macsyma была одной из самых больших, если не самой большой программой на Лиспе. Потребности переноса Macsyma на другие аппаратные платформы привели к появлению нескольких новых диалектов Лиспа, в частности, Franz Lisp.

Коммерциализация 
В 1981, Мозес и Ричард Павелль (также сотрудник MIT и сторонник применения Macsyma в науке и технике) предложили создать компанию для коммерциализации Macsyma. Однако им не разрешили это сделать, сославшись на правила, запрещающие работникам получать доход от разработок, выполненных в MIT. В начале 1982 MIT лицензировал Macsyma компании ADL («Arthur D. Little, Inc.»), которая стала посредником в продажах Macsyma и вскоре (в конце 1982 года), в свою очередь, лицензировала её компании Symbolics.

В том же 1982 году под давлением участника проекта Ричарда Фейтмана, в то время работавшего в Калифорнийском университете в Беркли, MIT лицензировал Macsyma Департаменту энергетики США, одному из главных спонсоров разработки системы. Эта версия называлась DOE Macsyma. В результате Symbolics Macsyma столкнулась с потерей правительственного рынка, который приносил значительную долю доходов от системы. Эта ситуация привела к разногласиям в правительстве США относительно того, имеет ли право университет лицензировать третьим лицам технологию, разработанную в университете и финансируемую федеральным правительством. Этот вопрос был решён положительно в 1986 году исполнительным приказом президента Рейгана.

Symbolics 
Разработка Macsyma продолжалась в Symbolics. Первоначально система продавалась успешно, но уже в 1985-86 годах выручка от неё упала, хотя рынок рос и продажи конкурентов за тот же период выросли. Главной слабостью Macsyma стал численный анализ, который был критичен для инженерных и простейших научных расчётов: арифметика с плавающей запятой в Macsyma для PC была примерно в шесть раз медленнее, чем на Фортране, а неэффективная реализация матриц снижала скорость ключевых алгоритмов ещё в 5-10 раз. Macsyma не реализовывала многих базовых алгоритмов численной линейной алгебры, таких как LU-разложение, а алгоритм Грёбнера, разработанный в 1970-х в MIT, не был встроен в продававшуюся версию вплоть до 1987.

Несмотря на сопротивление многих в Symbolics, Macsyma была выпущена для компьютеров DEC VAX-11 и рабочих станций Sun Microsystems в 1986 и 1987 годах, для чего на этих платформах был реализован Franz Lisp.

Во второй половине 1986 Павелля на посту руководителя направления сменил Ричард Петти. Был сокращён персонал, расширен отдел продаж и маркетинга, разработчики были ориентированы на добавление в систему тех возможностей, которые требовались покупателям, в итоге в 1987 году доходы от Macsyma удвоились. Был улучшен интерфейс пользователя, документация и система помощи были реорганизованы и расширены, имена некоторых команд были изменены на более легко запоминающиеся. Петти пытался убедить руководство, что Macsyma должна быть стратегическим направлением компании и финансироваться, исходя из собственных достижений и потенциала, но после начала резкого роста продаж Symbolics урезала персонал Macsyma. Фактически, компания попыталась использовать Macsyma, чтобы компенсировать потери от бизнеса рабочих станций, который был в 30 раз больше.

В 1987-88 годах группа Macsyma пыталась перенести систему на PC, но потерпела неудачу. Ранее Symbolics закрыла собственный проект создания компилятора Lisp для стандартных компьютеров, чтобы не конкурировать с продажами Лисп-машин, и отказалась сотрудничать в реализации Лиспа с Sun по той же причине. Gold Hill Lisp, который был выбран для переноса системы на PC, оказался слишком нестабильным, а его слабая архитектура сделала невозможным устранение ошибок. Эта неудача лишила Macsyma рынка персональных компьютеров, в то время как Mathematica тогда же появилась на компьютерах Apple. Версия Macsyma для Windows, использующая CLOE Lisp от Symbolics, всё же вышла в августе 1989 года, но штат разработчиков был слишком мал, чтобы реализовать графику, интерфейс и численные возможности, подобные Mathematica.

К 1989 году стало очевидно, что Symbolics находится в кризисе. Несмотря на высокий уровень производимого ПО, оно оказалось неконкурентоспособно из-за зависимости от дорогого оборудования, развитие которого не было согласовано с потребностями рынка (в середине 1980‑х Symbolics перешла на аппаратную платформу с 40-битным словом вместо 36‐битного, не проведя экономического обоснования этого очень дорогого изменения). Петти пытался убедить руководство изменить стратегию, но четвёртый по счёту президент компании за четыре года не хотел ничего слышать об этом. Из-за отсутствия взаимодействия с MIT не удалось собрать группу для выкупа прав на разработку Macsyma. Судьба Macsyma оставалась неопределённой, в 1990 Петти покинул Symbolics, чтобы создать свою собственную компанию.

Macsyma Inc. 
Macsyma Inc. была основана в 1992 году Расселом Нофтскером () (председателем совета директоров, сооснователем Symbolics) и Ричардом Петти. Она выкупила права на Macsyma у Symbolics. К этому моменту Macsyma уже потеряла рынок: за 5 лет с 1987 до 1992 её рыночная доля упала с 70 % до 1 %, и к началу 1993, когда рост рынка замедлился, фактическим стандартом стали Mathematica и Maple. К тому же с 1992 года Mathsoft начала по низким ценам распространять свой Mathcad, занявший большую часть оставшейся рыночной ниши.

На Macsyma Inc. работали разработчики мирового класса, включая Джефа Голдена () (который сделал большую часть символьной математики), Била Госпера () (специальные функции, суммирование и другие элементы), Говарда Кэннона (вице-президент по разработке всего ПО), и Билла Дубьюка (интегрирование и решение уравнений). Другие разработчики сделали важный вклад в численный анализ, графику, и систему помощи. В начале 1995 вышла Macsyma 2.0.5, со следующими улучшениями:

 Значительно увеличена скорость. Если ранее Macsyma была самой медленной, то теперь стала быстрее, чем Mathematica и почти такой же быстрой, как и Maple.
 Интерфейс поддерживал отображение математических формул, форматированного текста, гиперссылки. Он был лучше, чем у любого из конкурентов и вообще лучшим научным графическим интерфейсом в индустрии математического программного обеспечения.
 Обзоры утверждали, что Macsyma получила лучшую систему помощи в промышленности (включая гипертекст, демонстрации, примеры, шаблоны функций, позже — поддержку запросов на естественном языке). Также была значительно улучшена бумажная документация.
 Хотя Macsyma 2.0.5 всё ещё была очень медленной в численных методах, она имела значительно усиленный портфель подпрограмм численного анализа и линейной алгебры. В 1996 в неё был добавлен LAPACK, который значительно увеличил скорость работы большинства числовых вычислений линейной алгебры. Обзор PC Magazine утверждал: «Macsyma является лидером на рынке математических программ.»

Несмотря на успешное развитие системы, доля рынка её так и не выросла выше 2 %: к моменту выхода Macsyma 2.0.5 новых пользователей почти не появлялось, а имеющийся рынок был уже поделен между конкурентами. К тому же группы разработчиков у конкурентов были в 4-8 раз больше, чем в Macsyma Inc., и долго конкурировать с ними было невозможно.

В 1999, Macsyma была куплена Tenedos LLC, холдинговой компанией, которая ранее купила Symbolics. Tenedos не стала снова выпускать или перепродавать Macsyma. На этом история оригинальной системы завершилась.

Maxima 

Профессор Уильям Шелтер (Bill Schelter) из Техасского университета в Остине продолжал поддержку и улучшение версии DOE Macsyma с 1982 года, в частности, он выполнил перенос системы на Common Lisp. В 1998 году Шелтер с разрешения Министерства энергетики США опубликовал исходный код DOE Macsyma под лицензией GNU General Public License, а в 2000 году создал проект Maxima на SourceForge.net для поддержания и дальнейшего развития этой системы как свободного ПО. После смерти Шелтера в 2001 году проект продолжает развиваться силами сложившегося сообщества разработчиков.

Maxima находится в активной разработке, может быть скомпилирована под несколько различных реализаций Common Lisp, доступны готовые сборки для GNU/Linux, Microsoft Windows, Mac OS X и других систем. Доступен в нескольких вариантах графический интерфейс пользователя. Maxima содержит много внесённых после отделения от оригинала изменений и не включает ничего из многочисленных улучшений, сделанных в коммерческой версии Macsyma между 1982—1999 годами. Из‑за этого могут потребоваться значительные усилия, чтобы перенести код с Macsyma в Maxima. Благодаря открытости системы она является основой для ряда производных разработок, например, системы Stack, предназначенной для автоматизированной проверки правильности математических выражений.

Примечания

Ссылки 
 Symbolics, нынешние распространители Macsyma
 обзор Ричарда Петти истории коммерческих версий Macsyma (заметки по истории Macsyma основателя компании Macsyma, Inc.)
 …ещё от Ричарда Петти.

Системы компьютерной алгебры
Математическое программное обеспечение