Введение

Компьютерная алгебраическая система SageMath (ранее Sage или SAGE, "Система для экспериментов в алгебре и геометрии") — это компьютерная алгебраическая система (CAS) с функциями, охватывающими многие разделы математики, включая алгебру, комбинаторику, теорию графов, теорию групп, дифференцируемые многообразия, численный анализ, теорию чисел, математический анализ и статистику. Первая версия SageMath была выпущена 24 февраля 2005 года как свободное программное обеспечение с открытым исходным кодом на условиях GNU General Public License версии 2, с первоначальной целью создания "альтернативы с открытым исходным кодом системам Magma, Maple, Mathematica и MATLAB". Основателем и руководителем проекта SageMath является Уильям Стейн, математик из Университета Вашингтона. SageMath использует синтаксис, схожий с синтаксисом Python, поддерживая процедурное, функциональное и объектно-ориентированное программирование.

Разработка

Стайн осознал при разработке Sage, что уже существует множество программных пакетов с открытым исходным кодом для математических вычислений, написанных на различных языках программирования, таких как C, C++, Common Lisp, Fortran и Python. Вместо того чтобы начинать с нуля, Sage (написанный преимущественно на Python и Cython) интегрирует множество специализированных CAS-пакетов в единый интерфейс, для работы с которым пользователю достаточно знать только Python. Однако Sage содержит сотни тысяч уникальных строк кода, добавляющих новые функции и обеспечивающих взаимодействие между его компонентами. Для разработки SageMath привлекаются как студенты, так и профессионалы. Развитие SageMath поддерживается как добровольным вкладом, так и грантами. Тем не менее, первый разработчик Sage, работающий на полную ставку, был принят на работу только в 2016 году (благодаря финансированию от гранта ЕС). В том же году Стейн выразил своё разочарование недостатком академического финансирования и признания в области разработки программного обеспечения, назвав это причиной своего решения покинуть занимаемую должность в университете и полностью посвятить себя проекту в недавно созданной компании SageMath, Inc. 2012: один из проектов, выбранных для участия в Google Summer of Code. 2013: Премия Дженкса ACM/SIGSAM.

Выступление

И двоичные файлы, и исходный код доступны для SageMath на странице загрузки. Если SageMath собирается из исходного кода, многие включенные библиотеки, такие как OpenBLAS, FLINT, GAP (система компьютерной алгебры) и NTL, будут настроены и оптимизированы под конкретный компьютер, с учетом количества процессоров, размера кэша, наличия аппаратной поддержки инструкций SSE и других факторов. Cython может повысить скорость программ SageMath, так как код Python преобразуется в C.

Лицензирование и доступность

SageMath – это свободное программное обеспечение, распространяемое по лицензии GNU General Public License версии 3. SageMath 8.0 (июль 2017), разработка которого финансировалась проектом OpenDreamKit. Начиная с SageMath 10.0 (май 2023), для его работы требуется подсистема Windows для Linux версии 2, которая, в свою очередь, требует, чтобы Windows функционировала как клиент Hyper-V. SageMath доступен в виде пакета в дистрибутивах Linux Fedora, Arch Linux, Debian, Ubuntu и NixOS. В Gentoo он доступен через layman в оверлее "sage on gentoo". Пакет, используемый NixOS, можно использовать и в других дистрибутивах благодаря независимости его менеджера пакетов Nix от конкретного дистрибутива. Префикс Gentoo также предоставляет SageMath для других операционных систем.