解释器接口

Sage提供了一个统一的计算接口。这是通过使用两个C库来实现的(请参见 C/C++ Library Interfaces )以及解释器接口,这些接口是使用伪tty、系统文件等实现的。

注解

每个接口都要求在计算机上安装相应的软件。Sage包括GAP、PARI、Singular和Maxima,但不包括Octave(非常容易安装)、MAGMA(非免费)、Maple(非免费)或Mathematica(非免费)。

每次调用这些系统中的一个都会产生开销。例如,计算 2+2 数千次使用GAP界面比直接在Sage中使用要慢。相反,C-library接口 C/C++ Library Interfaces 减少管理费用。

除了下面为每个接口描述的命令外,您还可以键入例如。, %gap%magma ,以直接与处于其状态的给定接口交互。或者,如果 X 是一个接口对象,正在键入 X.interact() 允许您与它交互。这完全不同于 X.console() 它会启动任何程序的全新拷贝 X 与互动。注意,输入 X.interact() 是由Sage处理的,因此历史缓冲区与Sage相同,选项卡完成与Sage相同(不幸的是!),并且跨多行的输入必须在每行末尾使用反斜杠表示。您可以使用将数据拉入交互式会话 X 使用 sage(expression) .

一个接口的控制台和交互方法做着截然不同的事情。例如,以间隙为例:

  1. gap.console() :您完全在使用另一个程序,例如gap/magma/gp,Sage只不过是一个方便的程序启动程序,类似于bash。

  2. gap.interact() :这是一种与可能“充满”Sage对象的正在运行的gap实例交互的便捷方式。您可以将Sage对象导入此间隙(甚至从交互界面)等。

console函数在某些情况下非常有用,因为您可以获得准确的实际程序(尤其是对于制表符完成和测试以确保没有任何有趣的事情发生)非常有用。