SageMath (ранее Sage или SAGE , «Система для экспериментов с алгеброй и геометрией» [3] ) — это система компьютерной алгебры (CAS), функции которой охватывают многие аспекты математики , включая алгебру , комбинаторику , теорию графов , теорию групп , дифференцируемые многообразия , численный анализ , теорию чисел , исчисление и статистику .
Первая версия SageMath была выпущена 24 февраля 2005 года как бесплатное программное обеспечение с открытым исходным кодом на условиях GNU General Public License версии 2 с первоначальными целями создания «альтернативы Magma , Maple , Mathematica и MATLAB с открытым исходным кодом ». [4] Создатель и руководитель проекта SageMath Уильям Стайн был математиком из Вашингтонского университета .
SageMath использует синтаксис, напоминающий синтаксис Python [ 5], поддерживающий процедурные , функциональные и объектно-ориентированные конструкции.
При разработке Sage Стайн осознавал, что существует множество пакетов программного обеспечения для математики с открытым исходным кодом, уже написанных на разных языках , а именно: C , C++ , Common Lisp , Fortran и Python .
Вместо того, чтобы изобретать велосипед , Sage (который написан в основном на Python и Cython ) объединяет множество специализированных пакетов программного обеспечения CAS в общий интерфейс, для которого пользователю нужно знать только Python. Однако Sage содержит сотни тысяч уникальных строк кода, добавляющих новые функции и создающих интерфейсы между его компонентами. [6]
SageMath использует как студентов, так и профессионалов для разработки. Разработка SageMath поддерживается как волонтерской работой, так и грантами . [7] Однако только в 2016 году был нанят первый штатный разработчик Sage (финансируемый грантом ЕС ). [8] В том же году Стайн описал свое разочарование в связи с отсутствием академического финансирования и полномочий для разработки программного обеспечения, назвав это причиной своего решения оставить свою постоянную академическую должность, чтобы работать полный рабочий день над проектом в недавно созданной компании SageMath, Inc. [8]
И двоичные файлы , и исходный код доступны для SageMath на странице загрузки. Если SageMath собран из исходного кода, многие из включенных библиотек, таких как OpenBLAS , FLINT , GAP (система компьютерной алгебры) и NTL , будут настроены и оптимизированы для этого компьютера с учетом количества процессоров , размера их кэшей , наличия аппаратной поддержки инструкций SSE и т. д.
Cython может увеличить скорость программ SageMath, поскольку код Python преобразуется в C. [ 12]
SageMath — это свободное программное обеспечение , распространяемое на условиях GNU General Public License версии 3. [2]
SageMath 10.0 (май 2023 г.) требует наличия подсистемы Windows для Linux версии 2, [13] которая, в свою очередь, требует, чтобы Windows работала как клиент Hyper-V . SageMath 8.0 (июль 2017 г.), разработка которого финансируется проектом OpenDreamKit, [8] успешно собрана на Cygwin , и был доступен двоичный установщик для 64-разрядных версий Windows. [14] Хотя Microsoft спонсировала версию SageMath для Windows, до 2016 года пользователям Windows приходилось использовать технологию виртуализации , такую как VirtualBox, для запуска SageMath. [15]
Дистрибутивы Linux , в которых SageMath доступен как пакет, это Fedora , Arch Linux , Debian , Ubuntu и NixOS . В Gentoo он доступен через layman в оверлее "sage-on-gentoo" [16] . Пакет, используемый NixOS, доступен для использования в других дистрибутивах из-за независящей от дистрибутивов природы его менеджера пакетов Nix .
Префикс Gentoo также предоставляет Sage для других операционных систем.
Философия SageMath заключается в использовании существующих библиотек с открытым исходным кодом везде, где они есть. Поэтому он использует множество библиотек из других проектов.