Введение
Компьютерная алгебраическая система Macsyma ("Project MAC's SYmbolic MAnipulator"). Уильям А. Мартин (ввод, отображение выражений, полиномиальная арифметика) и Джоэл Мозес (упрощение, неопределённое интегрирование: эвристический/Risch). Мартин руководил проектом до 1971 года, а Мозес – в течение следующего десятилетия. Энгельман и его сотрудники покинули проект в 1969 году, чтобы вернуться в корпорацию MITRE. Часть кода была взята из более ранних разработок, в частности, упростителя Кнута Корсвольда. Позже основными разработчиками ядра математического движка были:
Macsyma ('/m//æ//k//s//ɪ//m//ə/; "Project MAC's SYmbolic MAnipulator")
William A. Martin (front end, expression display, polynomial arithmetic) and Joel Moses (simplifier, indefinite integration: heuristic/Risch). Martin was in charge of the project until 1971, and Moses ran it for the next decade. Engelman and his staff left in 1969 to return to The MITRE Corporation. Some code came from earlier work, notably Knut Korsvold's simplifier. Later major contributors to the core mathematics engine were:
Yannis Avgoustis (special functions),
David Barton (solving algebraic systems of equations),
Richard Bogen (special functions),
Bill Dubuque (indefinite integration, limits, power series, number theory, special functions, functional equations, pattern matching, sign queries, Gröbner, TriangSys),
Richard Fateman (rational functions, pattern matching, arbitrary precision floating point),
Michael Genesereth (comparison, knowledge database),
Jeff Golden (simplifier, language, system),
R. W. Gosper (definite summation, special functions, simplification, number theory),
Carl Hoffman (general simplifier, macros, non commutative simplifier, ports to Multics and LispM, system, visual equation editor),
Charles Karney (plotting),
John Kulp,
Ed Lafferty (ODE solution, special functions),
Stavros Macrakis (real/imaginary parts, compiler, system),
Richard Pavelle (indicial tensor calculus, general relativity package, ordinary and partial differential equations),
David A. Spear (Gröbner),
Barry Trager (algebraic integration, factoring, Gröbner),
Paul S. Wang (polynomial factorization and GCD, complex numbers, limits, definite integration, Fortran and LaTeX code generation),
David Y. Y. Yun (polynomial GCDs),
Gail Zacharias (Gröbner)
and
Rich Zippel (power series, polynomial factorization, number theory, combinatorics). Macsyma was written in Maclisp, and was, in some cases, a key motivator for improving that dialect of Lisp in the areas of numerical computing, efficient compilation and language design. Maclisp itself ran primarily on PDP 6 and PDP 10 computers, but also on the Multics OS and on the Lisp Machine architectures. Macsyma was one of the largest, if not the largest, Lisp programs of the time.
Яннис Августис (специальные функции),
Дэвид Бартон (решение алгебраических систем уравнений),
Ричард Боген (специальные функции),
Билл Дубуке (неопределённое интегрирование, пределы, степенные ряды, теория чисел, специальные функции, функциональные уравнения, сопоставление с образцом, запросы знака, Грёбнер, TriangSys),
Ричард Фэйтман (рациональные функции, сопоставление с образцом, вычисления с произвольной точностью),
Майкл Генсерет (сравнение, база знаний),
Джефф Голден (упрощение, язык, система),
Р. В. Госпер (определённое суммирование, специальные функции, упрощение, теория чисел),
Карл Хоффман (универсальный упроститель, макросы, некоммутативный упроститель, портирование на Multics и LispM, система, визуальный редактор уравнений),
Чарльз Карни (построение графиков),
Джон Кульп,
Эд Лафферти (решение дифференциальных уравнений, специальные функции),
Ставрос Макракрис (действительная и мнимая части, компилятор, система),
Ричард Павелле (тензорный анализ, пакет для общей теории относительности, обыкновенные и частные дифференциальные уравнения),
Дэвид А. Спир (Грёбнер),
Барри Трейгер (алгебраическое интегрирование, факторизация, Грёбнер),
Пол С. Ванг (факторизация многочленов и НОД, комплексные числа, пределы, определённое интегрирование, генерация кода Fortran и LaTeX),
Дэвид Ю. Юн (НОД многочленов),
Гейл Захариас (Грёбнер)
и
Рич Зиппел (степенные ряды, факторизация многочленов, теория чисел, комбинаторика). Macsyma была написана на Maclisp и в ряде случаев служила стимулом для улучшения этого диалекта Lisp в областях численных вычислений, эффективной компиляции и разработки языка. Maclisp в основном использовалась на компьютерах PDP 6 и PDP 10, а также на операционной системе Multics и архитектуре Lisp Machine. Macsyma была одной из самых больших, если не самой большой, программ на Lisp того времени.
Macsyma ('/m//æ//k//s//ɪ//m//ə/; "Project MAC's SYmbolic MAnipulator")
William A. Martin (front end, expression display, polynomial arithmetic) and Joel Moses (simplifier, indefinite integration: heuristic/Risch). Martin was in charge of the project until 1971, and Moses ran it for the next decade. Engelman and his staff left in 1969 to return to The MITRE Corporation. Some code came from earlier work, notably Knut Korsvold's simplifier. Later major contributors to the core mathematics engine were:
Yannis Avgoustis (special functions),
David Barton (solving algebraic systems of equations),
Richard Bogen (special functions),
Bill Dubuque (indefinite integration, limits, power series, number theory, special functions, functional equations, pattern matching, sign queries, Gröbner, TriangSys),
Richard Fateman (rational functions, pattern matching, arbitrary precision floating point),
Michael Genesereth (comparison, knowledge database),
Jeff Golden (simplifier, language, system),
R. W. Gosper (definite summation, special functions, simplification, number theory),
Carl Hoffman (general simplifier, macros, non commutative simplifier, ports to Multics and LispM, system, visual equation editor),
Charles Karney (plotting),
John Kulp,
Ed Lafferty (ODE solution, special functions),
Stavros Macrakis (real/imaginary parts, compiler, system),
Richard Pavelle (indicial tensor calculus, general relativity package, ordinary and partial differential equations),
David A. Spear (Gröbner),
Barry Trager (algebraic integration, factoring, Gröbner),
Paul S. Wang (polynomial factorization and GCD, complex numbers, limits, definite integration, Fortran and LaTeX code generation),
David Y. Y. Yun (polynomial GCDs),
Gail Zacharias (Gröbner)
and
Rich Zippel (power series, polynomial factorization, number theory, combinatorics). Macsyma was written in Maclisp, and was, in some cases, a key motivator for improving that dialect of Lisp in the areas of numerical computing, efficient compilation and language design. Maclisp itself ran primarily on PDP 6 and PDP 10 computers, but also on the Multics OS and on the Lisp Machine architectures. Macsyma was one of the largest, if not the largest, Lisp programs of the time.
Коммерциализация
В 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 года, при этом большинство файлов находятся в каталоге с названием .