常见问题解答:一般情况

这个项目为什么存在?

Sage的既定使命是成为Magma、Maple、Mathematica和Matlab的可行的免费开源替代品。塞奇的前辈赫克和马宁的出现,是因为威廉·斯坦需要把他们写下来作为他数论研究的一部分。Sage由William于2005年在哈佛大学(Harvard University)期间创建,它结合了同类最佳的免费开源数学软件,通过一个公共接口将它们打包并统一。从那时起,Sage不仅被数论研究者所使用,而且在整个数学科学中也得到了广泛的应用。

Sage构建并扩展了许多底层包的功能。即使在早期,当Sage主要用于数论时,这包括 GivaroMPIRNTLPari/GP ,还有很多其他人太多,无法在此列出。世界各地的学生、教师、教授、研究人员都使用Sage,因为他们需要一个全面的免费开放源码数学包,提供符号和数值计算。大多数时候,人们对Sage的贡献感到高兴。

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

有关Sage存在的详细信息,请参阅William's personal 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 Development Map 而变化的历史可以在高层中找到 changelogs . 参考 acknowledgment page 提供最新的金融和基础设施支持者、镜像网络托管提供商和间接贡献者的最新列表。

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

数学界的一个标准规则是一切都要公开接受检查。Sage项目认为,对数学软件不做同样的处理充其量是一种不礼貌和粗鲁的姿态,最坏的情况是违反了标准的科学实践。Sage的一个基本的哲学原则是将科学交流的特点——开放交流和同行评议系统应用于数学软件的开发。Sage项目和Sage开发团队都没有声称自己是这个原则的最初支持者。

Sage的开发模式在很大程度上受到自由软件运动的启发 Free Software Foundation ,以及开源运动。正如论文中所表达的,来自数学界的一个灵感来源是joachimneubüser

  • J、 纽布塞尔。对计算群论的邀请。编辑:C.M.坎贝尔、T.C.赫尔利、E.F.罗伯逊、S.J.托宾和J.J.沃德, 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?

安德烈·奥孔科夫也表达了类似的观点,见

  • 五、 穆尼奥斯和U.Persson。采访三个领域的获奖者。 美国数学学会通知 ,54(3):405--4102007年。

特别是以下报价:

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不是白手起家写的。它的大部分基本数学功能都是通过自由/开源软件项目实现的,比如

  • ATLAS ---自动调谐线性代数软件。

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

  • FLINT ---做数论的C库。

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

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

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

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

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

  • Pynac ---GiNaC的一个修改版本,它用Python替换了对CLN的依赖。

  • R ---一种用于统计计算和图形的语言和环境。

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

最新列表可以在页面上找到 standard packages repository . Sage的主要编程语言是 PythonCython . Python是主要的编程和接口语言,而Cython是优化关键功能、与Python的C库和C扩展接口的主要语言。Sage将超过90个自由/开源软件包集成到一个通用接口中。在这些包之上是Sage库,它由700000行新的Python和Cython代码组成。看到了吗 openhub.net 对于最新稳定的Sage版本的源代码分析。

我怎样才能得到帮助?

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

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

看到了吗http://www.sagemath.org/help.html其他资源的列表。

如果Sage不作为一个巨大的包裹运出,不是更好吗?

这个话题已经被反复讨论过了。所以在你继续讨论之前,确保你已经阅读并理解了下面的论点。Sage是一个分布超过90个自由/开源软件包,用于符号、数字和科学计算。一般来说,要调试的配置的组合爆炸太大了。几乎不可能找到任何一个Linux发行版(例如Arch、CentOS、Debian、Fedora、Gentoo、Mandriva、Ubuntu),Sage依赖的软件包版本号甚至可以远程匹配。

大多数为Sage捐款的人都是在空闲时间这样做的。这些人从事与计算机编程或软件开发没有直接关系的日常工作。对于任何人来说,几乎不可能找到包的正确版本,在Linux、macosx、Solaris或Windows上配置和编译它们,这样他们就可以开始使用Sage或者开始为Sage做第一份贡献。虽然Sage项目的目标是对尽可能广泛的用户有用,但我们认为Sage首先需要尽可能容易地由任何具有计算机经验的人安装。如果您想帮助Sage实现这一目标,请发送电子邮件至 sage-devel 邮件列表。

既然Sage中有这么多的bug和成百上千的未结罚单,为什么不生成一个稳定版本呢?

任何软件包都包含bug。对于像Sage这样复杂的东西,Sage社区和Sage开发团队都没有宣称Sage没有bug。这样做是不诚实的行为。

一个Sage发布周期通常持续几个月,每隔2-3周出现几个beta。每个发布周期通常由一个发布经理主持,他在发布周期内负责管理Sage合并树。在这段时间里,发布经理通常需要将相当于全职工作的精力投入到质量管理上,并与Sage用户、开发人员和潜在贡献者组成的国际社区积极互动。

在很多情况下,两个Sage贡献者配对成为Sage发布周期的发布经理。然而,通常很少有人有相当于3周的空闲时间来投入到发布管理中。如果您想帮助解决发布管理问题,请订阅 sage-release 邮件列表。

自Sage项目开始以来,Sage贡献者一直在努力倾听和思考什么会增加真正的潜在贡献者做出贡献的机会。鼓励一个贡献者的东西可能会使另一个参与者灰心丧气,因此需要做出权衡。如果决定一个稳定版本会将补丁与bug修复合并,并且只修复bug,那么在事先被告知他们的积极评审的补丁不会被合并的情况下,很可能会阻碍他们的贡献。

Sage群体信奉“早放、常放”的原则。Sage项目的组织和运行方式与商业软件公司有很大不同。贡献者都是志愿者,如果Sage是一个商业开发项目,所有开发人员都是全职员工,这将极大地改变项目的动态。

如何下载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