Введение

Компьютерная алгебраическая система Macsyma ("Project MAC's SYmbolic MAnipulator"). Уильям А. Мартин (ввод, отображение выражений, полиномиальная арифметика) и Джоэл Мозес (упрощение, неопределённое интегрирование: эвристический/Risch). Мартин руководил проектом до 1971 года, а Мозес – в течение следующего десятилетия. Энгельман и его сотрудники покинули проект в 1969 году, чтобы вернуться в корпорацию MITRE. Часть кода была взята из более ранних разработок, в частности, упростителя Кнута Корсвольда. Позже основными разработчиками ядра математического движка были:

Яннис Августис (специальные функции),
Дэвид Бартон (решение алгебраических систем уравнений),
Ричард Боген (специальные функции),
Билл Дубуке (неопределённое интегрирование, пределы, степенные ряды, теория чисел, специальные функции, функциональные уравнения, сопоставление с образцом, запросы знака, Грёбнер, TriangSys),
Ричард Фэйтман (рациональные функции, сопоставление с образцом, вычисления с произвольной точностью),
Майкл Генсерет (сравнение, база знаний),
Джефф Голден (упрощение, язык, система),
Р. В. Госпер (определённое суммирование, специальные функции, упрощение, теория чисел),
Карл Хоффман (универсальный упроститель, макросы, некоммутативный упроститель, портирование на Multics и LispM, система, визуальный редактор уравнений),
Чарльз Карни (построение графиков),
Джон Кульп,
Эд Лафферти (решение дифференциальных уравнений, специальные функции),
Ставрос Макракрис (действительная и мнимая части, компилятор, система),
Ричард Павелле (тензорный анализ, пакет для общей теории относительности, обыкновенные и частные дифференциальные уравнения),
Дэвид А. Спир (Грёбнер),
Барри Трейгер (алгебраическое интегрирование, факторизация, Грёбнер),
Пол С. Ванг (факторизация многочленов и НОД, комплексные числа, пределы, определённое интегрирование, генерация кода Fortran и LaTeX),
Дэвид Ю. Юн (НОД многочленов),
Гейл Захариас (Грёбнер)
и
Рич Зиппел (степенные ряды, факторизация многочленов, теория чисел, комбинаторика). Macsyma была написана на Maclisp и в ряде случаев служила стимулом для улучшения этого диалекта Lisp в областях численных вычислений, эффективной компиляции и разработки языка. Maclisp в основном использовалась на компьютерах PDP 6 и PDP 10, а также на операционной системе Multics и архитектуре Lisp Machine. Macsyma была одной из самых больших, если не самой большой, программ на Lisp того времени.

Коммерциализация

В 1979 году в ответ на запрос Ричарда Фатемана, тогда профессора Калифорнийского университета в Беркли, MIT предоставил временную лицензию на код Macsyma. Это было почти сразу же запущено на новом компьютере VAX 11/780 с использованием диалекта Maclisp, Franz Lisp, разработанного группой Фатемана. MIT неохотно лицензировал версии VAX Macsyma из Беркли примерно 50 университетам, начиная с Калтеха, при условии отзыва лицензий после завершения переговоров о полноценной лицензии. Это и произошло после завершения переговоров с Symbolics (см. ниже). Symbolics не желала лицензировать продукт VAX, поскольку VAX представлял собой конкурентное аппаратное обеспечение для их собственных Lisp Machines и поэтому в течение пяти лет сдерживала распространение программного обеспечения VAX. Университет Беркли также запустил копии Macsyma на системах Motorola 68000, в частности на рабочих станциях Sun. Symbolics также препятствовала этому. В то же время Фатеман работал над преобразованием (отозванной) временной лицензии Macsyma в более постоянную. В конечном итоге, в 1982 году Министерство энергетики США обязало MIT разместить копию в библиотеке Национального центра энергетического программного обеспечения (NESC), разрешив MIT устанавливать ограничения в виде высокой цены и запрета на перераспространение. Это было сделано для защиты передачи технологий Symbolics. (Эти ограничения были сняты примерно в 2002 году.) Эта так называемая DOE Macsyma была переписана в MIT на диалекте, предшествующем Common Lisp, под названием NIL lisp, и не полностью реализована на VAX/VMS, непопулярной в академических кругах системе, где широко использовался Berkeley VAX Unix. DOE Macsyma стала основой для гораздо более поздней системы Maxima с открытым исходным кодом. В 1981 году Мозес и Ричард Павелл, сотрудник MIT и сторонник применения Macsyma в инженерии и науке, попытались создать компанию для коммерциализации Macsyma. Павелл написал множество научных статей с использованием Macsyma. С этими статьями на руках Павелл и Мозес обратились в несколько венчурных фирм, которые проявили интерес к финансированию стартапа Macsyma. Когда потенциальные сделки были близки к завершению, MIT внезапно решила, что сотрудники MIT не должны получать прямую прибыль от разработок MIT. В начале 1982 года MIT лицензировал Macsyma компании Arthur D. Little, Inc. (ADL), которая стала посредником для Macsyma и вскоре лицензировала Macsyma компании Symbolics в конце 1982 года. ADL отстранила Мозеса, а Павелл стал руководителем подразделения Macsyma в Symbolics. Стало очевидно, что Symbolics интересовалась не столько кодом, сколько тем, чтобы Macsyma не попала в каталог программного обеспечения ее конкурента в бизнесе Lisp Machines, LMI. Соглашение между Symbolics и Arthur D. Little предусматривало выплату ADL роялти в размере 15% от валовых продаж Macsyma. Это роялти породило предположения о желании MIT и ADL видеть процветание MACSYMA. Разработка Macsyma продолжалась в Symbolics, несмотря на то, что это рассматривалось как отвлечение от продаж Lisp-машин, которые Symbolics считала своим основным бизнесом, хотя продажи Macsyma и связанные с ними продажи Lisp-машин достигли 10% от общего объема продаж Symbolics в течение двух лет. Несмотря на сопротивление многих сотрудников Symbolics, Macsyma была выпущена для компьютеров DEC VAX и рабочих станций Sun с использованием Franz Lisp от Berkeley в начале-середине 80-х годов. Однако проблемы в Symbolics с продажами Macsyma на компьютерах, отличных от Symbolics, в конечном итоге привели к снижению продаж Macsyma. В первой половине 1986 года доходы Macsyma были ниже, чем в первой половине 1985 года, в растущей отрасли. В это время развивались программы SMP и Waterloo Maple, хотя MACSYMA значительно превосходила эти пакеты в символьных вычислениях. Павелл руководил подразделением Macsyma в Symbolics до начала 1986 года. Во второй половине 1986 года Ричард Петти стал менеджером бизнеса Macsyma, чтобы сократить продажи и избежать конфликтов с сотрудниками Symbolics. Macsyma сократила штат, но расширила отделы продаж и маркетинга и сосредоточила разработчиков на функциях, которые запрашивали клиенты. (Например, алгоритм базиса Спира-Захариаса (Gröbner), реализованный в MIT в 1970-х годах, не был установлен в распространяемой версии Macsyma до 1987 года.) В 1987 году годовой доход Macsyma примерно удвоился. MACSYMA стала более удобной для пользователя: документация и онлайн-справка были реорганизованы и расширены; некоторые имена команд были изменены для лучшей запоминаемости. Система была портирована на Common Lisp (Кентом М. Питманом). Петти убеждал руководство Symbolics в том, что Macsyma является «стратегическим бизнес-подразделением», которое следует финансировать на основе его показателей и потенциала, а не перспектив основного бизнеса рабочих станций. Однако Symbolics сократила штат Macsyma после этого периода быстрого роста, пытаясь использовать Macsyma как небольшую «дойную корову» для финансирования убытков бизнеса рабочих станций, который был в 30 раз больше. Главным недостатком Macsyma был ее численный анализ. Освоение символьных вычислений было титанической задачей, но численные возможности были критически важны для выхода на гораздо больший рынок инженерии и науки начального уровня. В MIT Macsyma имела связь с численными библиотеками IMSL (ныне продукт Perforce Software), но эта связь была разорвана, когда Macsyma перешла в Symbolics. Разработчики Lisp в Symbolics в целом считали, что численный анализ — это устаревшая технология, неважная для Lisp-приложений, поэтому они отказались инвестировать в нее. Выполнение операций с двойной точностью в Macsyma (на ПК-версии) было примерно в шесть раз медленнее, чем в Fortran. Кроме того, матрицы Macsyma были реализованы как списки списков, что приводило к дополнительному замедлению алгоритмов на 5–10%. В Macsyma отсутствовали многие базовые алгоритмы численной линейной алгебры, такие как LU-разложение. В 1987–88 годах группа Macsyma попыталась создать PC Macsyma с использованием Gold Hill Lisp. (Ранее Symbolics прекратила свой собственный проект по созданию компилятора Lisp для стандартных компьютеров, чтобы не конкурировать с продажами Lisp-машин. Это было спорное решение, которое, по некоторым данным, было принято без одобрения высшего руководства. Symbolics также отказалась сотрудничать с Sun для обеспечения доступности Lisp на рабочих станциях Sun по той же причине.) Gold Hill Lisp была слишком нестабильной, а ее слабая архитектура не позволяла устранить ошибки. Это был решающий провал для Macsyma. Это означало, что Macsyma не смогла ответить на появление Mathematica на компьютерах Apple в середине 1988 года. Macsyma появилась на ПК с Windows в августе 1989 года с использованием CLOE Lisp от Symbolics. Однако штат Macsyma был слишком мал и не обладал необходимым сочетанием навыков для добавления графики, интерфейса блокнота и улучшенного численного анализа, которые были в Mathematica. К 1989 году Петти стало ясно, что Symbolics рухнет из-за плохой продуктовой стратегии, и что это повлечет за собой крах Macsyma. (Некоторые проблемы с продуктом: (1) программное обеспечение Symbolics было разработано для разработчиков программного обеспечения уровня MIT без достаточных уступок другим. (2) программное обеспечение Symbolics мирового класса теряло долю рынка из-за зависимости от очень дорогостоящего оборудования. (3) при переходе на VLSI-оборудование в середине 1980-х годов Symbolics перешла с 36-битного размера слова на 40-битное без обоснования со стороны рынка огромных затрат на разработку этого изменения.) Macsyma не смогла собрать команду для выкупа из-за отсутствия сотрудничества со стороны MIT. После того, как с 1986 года Петти сохранял относительное молчание о проблемах с продуктом, в конце 1988 года он попытался убедить Symbolics принять стратегию, ориентированную только на программное обеспечение или на уровень платы, но четвертый президент за четыре года ничего не хотел слышать об этом. В 1990 году Петти покинул Symbolics ради стартапа.

Максима, Инк.

Macsyma, Inc. была основана в 1992 году Расселом Нофтскером (председателем, который был одним из основателей Symbolics) и Ричардом Петти (президентом, который в Symbolics на некоторое время сумел улучшить положение Macsyma) путем привлечения финансирования и приобретения прав на Macsyma у испытывающей финансовые трудности Symbolics. Несмотря на стремительный рост рынка, продажи Macsyma в 1991 и начале 1992 года продолжали быстро падать. Доля Macsyma на рынке программного обеспечения для символьных вычислений снизилась с 70% в 1987 году до 1% в 1992 году. К 1993 году темпы роста рынка замедлились, и он стандартизировался на Mathematica и Maple. На протяжении 1990-х годов численность штатов разработчиков у конкурентов была в 4-8 раз больше, чем у Macsyma Inc. В начале 1995 года компания выпустила Macsyma 2.0.5 с множеством улучшений: в крупном тесте символьных вычислений, разработанном Wester, Macsyma 2.0.5 показала результат на 10% выше, чем Maple, и на 15% выше, чем Mathematica. Хотя Macsyma 2.0.5 все еще была недостаточно быстрой при работе с числовыми данными, она значительно расширила свой набор инструментов для численного анализа и линейной алгебры. (В 1996 году в Macsyma был добавлен LAPACK, что существенно повысило скорость большинства операций линейной алгебры.) В состав команды разработчиков в то время входили Джефф Голден (язык, компилятор и т. д.), Билл Госпер (специальные функции, суммирование), Говард Кэннон (пользовательский интерфейс, оптимизация) и несколько консультантов. Билл Дубуке работал над интеграцией, решением уравнений, базами данных и оптимизацией. Кристофер Стейси и Дэвид Х. Вуд добавили язык и матричные функции MATLAB. Другие разработчики внесли значительный вклад в численный анализ, графику и справочные системы. Компания не могла бесконечно превосходить команды численностью в 4-8 раз и менять рыночную динамику. Доля рынка не превысила 2%, поскольку конкуренты прочно закрепились на всех ключевых рынках, переход на новый продукт требовал значительных затрат времени на обучение, а темпы роста рынка замедлились. Кроме того, начиная с 1992 или 1993 года, Mathsoft начала стратегию, направленную на трату 10 миллионов долларов на прямую почтовую рассылку по очень низким ценам, что позволило ей захватить значительную часть оставшегося роста на рынке символьных вычислений, как раз в тот момент, когда Macsyma Inc. пыталась восстановить свой продукт мирового класса. В 1999 году Macsyma была приобретена Tenedos LLC, холдинговой компанией, которая ранее приобрела Symbolics. Холдинговая компания не возобновила выпуск или перепродажу Macsyma, но Macsyma продолжает распространяться Symbolics для версий Microsoft Windows до Windows XP.

Доступные версии

Существует также версия, лицензированная по GPL, под названием Maxima, основанная на версии DOE Macsyma 1982 года, впоследствии адаптированная для Common Lisp и расширенная Уильямом Шелтером. Она активно разрабатывается и может быть скомпилирована в различных системах Common Lisp. Доступны загружаемые исполняемые файлы для Linux, Microsoft Windows, Mac OS X и других систем, включая графические пользовательские интерфейсы. Maxima не включает многие из многочисленных функций, добавленных в период коммерческой разработки с 1982 по 1999 год, но представляет собой современную, свободную и открытую кодовую базу, включающую множество дополнительных функций, несколько альтернативных интерфейсов и работающую с рядом сред Common Lisp. Хотя это привело к некоторой несовместимости между Macsyma и Maxima, программы, написанные на алгебраическом языке Macsyma, часто могут быть запущены с незначительными изменениями в любой из этих систем. Доступна ITS Macsyma примерно 1982 года, при этом большинство файлов находятся в каталоге с названием .