Введение
Компьютерная алгебраическая система SageMath (ранее Sage или SAGE, "Система для экспериментов в алгебре и геометрии") — это компьютерная алгебраическая система (CAS) с функциями, охватывающими многие разделы математики, включая алгебру, комбинаторику, теорию графов, теорию групп, дифференцируемые многообразия, численный анализ, теорию чисел, математический анализ и статистику. Первая версия SageMath была выпущена 24 февраля 2005 года как свободное программное обеспечение с открытым исходным кодом на условиях GNU General Public License версии 2, с первоначальной целью создания "альтернативы с открытым исходным кодом системам Magma, Maple, Mathematica и MATLAB". Основателем и руководителем проекта SageMath является Уильям Стейн, математик из Университета Вашингтона. SageMath использует синтаксис, схожий с синтаксисом Python, поддерживая процедурное, функциональное и объектно-ориентированное программирование.
SageMath (previously Sage or SAGE, "System for Algebra and Geometry Experimentation") is a computer algebra system (CAS) with features covering many aspects of mathematics, including algebra, combinatorics, graph theory, group theory, differentiable manifolds, numerical analysis, number theory, calculus and statistics. The first version of SageMath was released on 24 February 2005 as free and open source software under the terms of the GNU General Public License version 2, with the initial goals of creating an "open source alternative to Magma, Maple, Mathematica, and MATLAB". The originator and leader of the SageMath project, William Stein, was a mathematician at the University of Washington. SageMath uses a syntax resembling Python's, supporting procedural, functional and object oriented constructs.
Разработка
Стайн осознал при разработке 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.
2012: one of the projects selected for the Google Summer of Code. 2013: ACM/SIGSAM Jenks Prize.
Выступление
И двоичные файлы, и исходный код доступны для 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 для других операционных систем.