常见问题解答:一般信息

这个项目为什么会存在?

Sage宣称的使命是成为Magma、Maple、MATHEMICA和MatLab的可行的免费开源替代品。塞奇的前辈,也就是众所周知的赫克和马宁,之所以出现,是因为威廉·斯坦需要把它们写下来,作为他对数论研究的一部分。Sage由William于2005年在哈佛大学期间创立,它结合了同类最好的免费开源数学软件,通过一个通用界面将它们打包并统一。从那时起,Sage不仅被数论的研究人员使用,而且在整个数学科学中都被使用。

Sage构建并扩展了许多底层包的功能。甚至在早期,当Sage主要用于数论时,这包括 GivaroGMPNTLPari/GP ,以及其他许多太多的人无法在这里列出。全世界的学生、教师、教授和研究人员都在使用Sage,因为他们需要一个全面的免费开源数学包,提供符号和数值计算。大多数时候,人们对Sage所提供的东西感到满意。

正如在整个自由开放源码软件(FOSS)世界中常见的那样,许多人经常发现Sage缺少他们所需的某些数学功能。因此,他们深入研究组成Sage的底层源代码,以便为他们的目的扩展它,或者暴露Sage附带的底层包的功能,以便从Sage内部使用他们最喜欢的数学软件包。这个 Sage-Combinat 该团队由代数组合学的研究人员组成。该团队宣布的任务是将Sage改进为代数组合数学中计算机探索的可扩展工具箱,并促进该领域研究人员之间的代码共享。

有关Sage为什么存在的详细信息,请参阅威廉的个人 mathematics software biography

“Sage”是什么意思?你怎么读它?

在Sage存在的头几年,这个项目被称为“Sage”。这个首字母缩写代表“用于代数和几何实验的软件”。从2007年左右到2008年初,“Sage”这个名字被广泛采用。可以将“Sage”看作是免费开源数学软件项目的名称,就像“Python”是免费开源通用编程语言的名称一样。只要有可能,请使用名称“Sage”而不是“Sage”,以避免将Sage项目与名为 SAGE 。“sage”的发音类似于“sage”的发音,“sage”指的是聪明人,“sage”指的是植物。有些人把“Sage”读成“Sarge”,跟你发音相似。 Debian 中士。

无论您将“Sage”读作“Sage”,请不要将Sage项目与同名的会计软件混淆。

谁是这个项目的幕后黑手?

SAGE是一个以志愿者为基础的项目。它的成功归功于一个庞大的国际团队的自愿努力,这些团队包括学生、教师、教授、研究人员、软件工程师和在数学、科学、工程、软件开发和所有教育水平的不同领域工作的人。SAGE的发展得益于众多机构的财政支持,以及许多Included Components作者以前和正在进行的工作。

可以在上找到(一些)直接贡献者的列表 Sage Development Map 而变化的历史可以在 changelogs 。请参阅 acknowledgment page 有关财务和基础设施支持者、镜像网络托管提供商和间接贡献者的最新列表,请访问Sage网站。

为什么Sage是免费/开源的?

数学界的一条标准规则是,所有东西都要公开接受检查。Sage项目认为,对数学软件不这样做充其量是一种不礼貌和粗鲁的姿态,充其量是对标准科学实践的违反。Sage的一个基本哲学原则是将以科学交流为特征的开放交流和同行评审系统应用于数学软件的开发。Sage项目和Sage开发团队都没有声称自己是这一原则的原始支持者。

Sage的开发模式在很大程度上是受到由 Free Software Foundation ,以及开放源码运动。正如论文中所述,数学界的灵感来源之一是Joachim Neubüser

  • J.Neubüser.计算群论的邀请函。在C.M.Campbell,T.C.Hurley,E.F.Robertson,S.J.Tobin和J.J.Ward,编辑, Groups '93 Galway/St. Andrews, Volume 2 《伦敦数学学会讲稿系列》第212卷,第457-475页。剑桥大学出版社,1995。

并特别引用了他的论文中的以下内容:

You can read Sylow's Theorem and its proof in Huppert's book in
the library without even buying the book and then you can use
Sylow's Theorem for the rest of your life free of charge,
but...for many computer algebra systems license fees have to be
paid regularly for the total time of their use. In order to
protect what you pay for, you do not get the source, but only an
executable, i.e. a black box. You can press buttons and you get
answers in the same way as you get the bright pictures from your
television set but you cannot control how they were made in either
case.

With this situation two of the most basic rules of conduct in
mathematics are violated: In mathematics information is passed on
free of charge and everything is laid open for checking. Not
applying these rules to computer algebra systems that are made for
mathematical research...means moving in a most undesirable
direction. Most important: Can we expect somebody to believe a
result of a program that he is not allowed to see? Moreover: Do we
really want to charge colleagues in Moldava several years of their
salary for a computer algebra system?

安德烈·奥库科夫也表达了类似的观点,可以在

  • V.穆尼奥斯和U·佩尔松。采访了三位菲尔兹奖牌获得者。 Notices of the American Mathematical Society ,54(3):405--410,2007。

特别是以下引语:

Computers are no more a threat to mathematicians than food
processors are a threat to cooks. As mathematics gets more and
more complex while the pace of our lives accelerates, we must
delegate as much as we can to machines. And I mean both numeric
and symbolic work. Some people can manage without dishwashers, but
I think proofs come out a lot cleaner when routine work is
automated.

This brings up many issues. I am not an expert, but I think we
need a symbolic standard to make computer manipulations easier to
document and verify. And with all due respect to the free market,
perhaps we should not be dependent on commercial software here. An
open-source project could, perhaps, find better answers to the
obvious problems such as availability, bugs, backward
compatibility, platform independence, standard libraries, etc. One
can learn from the success of TeX and more specialized software
like Macaulay2. I do hope that funding agencies are looking into
this.

为什么您要从头开始编写Sage,而不是使用其他现有的软件和/或库?

Sage并不是从头开始写的。它的大部分底层数学功能都是通过自由/开源软件项目实现的,例如

  • BLAS -基本线性代数子程序。

  • ECL --可嵌入的Common-Lisp系统

  • FLINT -做数论的C库。

  • GAP -计算离散代数系统,特别强调计算群论。

  • GMP -GNU多精度算术库。

  • Maxima -符号和数值计算系统。

  • mpmath -一个用于多精度浮点运算的纯Python库。

  • NumPy and SciPy -数值线性代数和其他数值计算能力的Python.

  • OpenBLAS -优化的BLAS库。

  • Pari/GP -用于数论快速计算的计算机代数系统。

  • Pynac -修改后的GiNaC版本,将对CLN的依赖替换为Python。

  • R -统计计算和图形的语言和环境。

  • 还有更多的数量太多,无法在这里列出。

可在部分中找到最新列表 External Packages 在《Sage参考手册》中。

Sage的主要编程语言是 PythonCython 。Python是主要的编程和接口语言,而Cython是用于优化关键功能以及与C库和C扩展进行接口的主要语言。Sage将90多个FOSS包集成到一个公共界面中。在这些包的顶部是Sage库,它由超过700,000行新的Python和Cython代码组成。看见 openhub.net 以获取最新稳定的Sage版本的源代码分析。

我怎样才能得到帮助?

有关使用Sage的支持,有两个选项:

关于Sage开发的支持,有一个电子邮件列表 sage-devel

有关其他资源的列表,请参阅http://www.sagemath.org/help.html。

如果Sage不是作为一个巨大的捆绑包发货,那不是更好吗?

SageMath发行版继续提供能够很好地协同工作的所需软件包(“SPKG”)的供应商版本。

然而,为了减少编译时间和Sage安装的大小,自8.x版本系列以来一直在进行的开发工作使得使用OS发行版(或者由Homebrew或Conda-Forge发行版)提供的许多系统包成为可能,而不是构建SageMath自己的副本。

这种所谓的“spkg-configuration”机制在从源代码开始构建时运行,在 ./configure 相位。

为了确保SageMath在各种系统上正确构建和运行,我们使用自动化测试。请参阅本章 Portability testing 有关详细信息,请参阅《开发者指南》。

在Sage中有如此多的错误和数百个公开的问题,为什么你不制作一个稳定版本呢?

任何软件包都包含错误。对于像Sage这样复杂的东西,Sage社区和Sage开发团队都不会声称Sage没有错误,也许永远也不会。这样做将是一种不诚实的行为。

一个Sage发布周期持续几个月,每隔1-2周出现几个测试版,然后是几个候选版本(截至2022年)。在这个时间表下,由于Sage Developer社区的能力有限,该项目不能发布稳定版本。然而,重要的错误修复PR被合并为高优先级,并将在开发版本中提供。由于我们专门的发布经理进行了严格的集成测试,开发版本(测试版和候选发布版)通常可以安全可靠地使用。

如果您想在发布管理方面提供帮助,请从订阅 sage-release 邮件列表。

如何下载Sage文档以脱机阅读?

要下载Html或PDF格式的Sage标准文档,请访问 Help and Support Sage网站上的页面。每个版本的Sage都附带组成Sage标准文档的完整文档。如果您下载了二进制Sage发行版,则相应文档的HTML版本是预先构建的,并且可以在以下目录下找到 SAGE_ROOT/local/share/doc/sage/html/ 。在从源代码编译Sage的过程中,文档的HTML版本也会在该过程中构建。要构建文档的HTML版本,请从发出以下命令 SAGE_ROOT

$ ./sage --docbuild --no-pdf-links all html

构建PDF版本要求您的系统安装了可正常运行的LaTeX。要构建PDF版本的文档,请从发出以下命令 SAGE_ROOT

$ ./sage --docbuild all pdf

有关更多命令行选项,请参阅以下任一命令的输出:

$ ./sage --help
$ ./sage --advanced

我想在一份出版物中引用Sage,我该怎么做?

以下是Sage的BibTeX条目:

@manual{sagemath,
    label        = {Sag95},
    author       = {{The Sage Developers}},
    title        = {{S}age{M}ath, the {S}age {M}athematics {S}oftware {S}ystem},
    url          = {https://www.sagemath.org},
    version      = {9.5},
    year         = {2022},
    note         = {DOI 10.5281/zenodo.6259615},
}

根据需要调整版本/年份。您可能还希望将DOI用于Sage,作为上述记录中的备注条目,或直接用作DOI记录。

如果您碰巧使用Sage接口来表示Pari、Gap或Single,那么您肯定也应该参考它们。同样,如果您使用使用pari、Gap或Single实现的代码,请参考相应的系统(您通常可以从文档中看出在函数的实现中使用的是Pari、Gap还是Single)。

看见 citing PARI

@preamble("\usepackage{url}")
@manual{PARI2,
  organization = "{The PARI~Group}",
  title        = "{PARI/GP version \texttt{2.11.2}}",
  year         = 2019,
  address      = "Univ. Bordeaux",
  note         = "available from \url{http://pari.math.u-bordeaux.fr/}"
}

看见 citing GAP

@preamble("\usepackage{url}")
@manual{GAP4,
    key          = "GAP",
    organization = "The GAP~Group",
    title        = "{GAP -- Groups, Algorithms, and Programming,
                    Version 4.11.1}",
    year         = 2021,
    note         = "\url{https://www.gap-system.org}",
}

看见 citing Singular

@misc {DGPS,
   title = {{\sc Singular} {4-3-0} --- {A} computer algebra system for polynomial computations},
   author = {Decker, Wolfram and Greuel, Gert-Martin and Pfister, Gerhard and Sch\"onemann, Hans},
   year = {2022},
   howpublished = {\url{http://www.singular.uni-kl.de}},
}

Sage的DOI记录是什么?

DOI Sage的记录通过以下方式维护 Zenodo 例如,请参阅 record for Sage 9.5 。相应的 :doi:`10.5281/zenodo.6259615`

还有最新版本的DOI, :doi:`10.5281/zenodo.593563`