为什么选择SageMath?

丹·德雷克

首先,我要谈谈我是如何使用SageMath的:首先,我将它用于自己的研究,也用于我的教学--我在微积分和微分方程中使用过课程,下学期将在离散数学课程中使用它。我通常在课堂上使用它做演示,但有一天我希望把SageMath融入家庭作业中。

免费是指:

我可以把它安装在我想要的任何地方--我的办公室电脑,我的笔记本电脑,演讲中的电脑大厅,任何地方。我花了几乎零的时间想知道我所做的是否被网站允许许可证,不知道什么时候能得到下一个版本,等等。
免费意味着我的学生可以使用它。在我读研究生的大学里,我们使用Matlab和Mathematica用于我们的工程微积分课程。在第一周,我会走路在计算机实验室周围假装没听见每个人说“如果你想在家里使用它,只需去[任何盗版软件流行的网站/服务]并下载即可SageMath,我说,“如果你想在家里使用它,请访问SageMath.org并下载它。”
因此,那些以其他方式盗版软件的学生可以通过不做违法行为而获益(并有安装恶意软件的风险)——但诚实的学生也受益匪浅。每个人都可以下载并使用SageMath,这样我就可以在课堂上做一个演示,发布它,每个人都可以观看下课后,自己与它互动,而不是看着我摆弄它。当然,Mathematica有他们的“Player”应用程序,但有了SageMath,我的学生可以轻松地自己修改演示,这在Mathematica Player中是不可能的。
免费还意味着毕业后进入行业的学生可以继续使用SageMath。Maplesoft可能没有兴趣起诉将Maple放在笔记本电脑上的学生大学有网站许可证,但如果您的公司正在开发产品并使用盗版复制枫叶做这件事,他们会不高兴的。

Python是指:

你对世界上最好、最流行的编程语言之一有一定的了解,它适用于每个平台,并且在整个行业中无处不在。我数学课的学生非数学专业、将在工业界工作的课程通过学习一些蟒蛇。

免费语音+Python意味着:

当学生遇到错误时,他们可能能够修复它安静地坐着,耐心等待,直到有人为他们解决问题一个好学生参与解决问题的合理机会。在当今的教育中,我们鼓励学生成为“积极学习者”等;有人说“基于发现的学习”。这在很大程度上符合这些教育精神学生发现一个错误,意识到这是一个错误并着手修复它的哲学。

对于高年级学生:

数学或类似领域的高年级学生可以参与修复更多错误有意义的水平,因为他们可能理解正在使用的算法或对其有足够的了解编程修复损坏的代码。SageMath旨在用于专业级的真实世界,因此这样的学生,致力于改进SageMath是真实的体验,对学生以后很有用毕业。(你更愿意雇佣谁?完成所有任务的人,或者说,“我修复了一个大型软件项目中的错误并添加了功能,该项目被成千上万的人”?)
此外,目前本科生的研究非常热门,SageMath让学生们可以开始学习速度很快。那些还不是非常熟练的程序员的学生必须花费大量的时间比如学习C,然后浪费大量时间在指针运算上。SageMath软件让那些对数学比malloc()更感兴趣的学生花更多的时间思考关于数学和更少的时间来找出代码分段错误的原因。

SageMath笔记本服务器意味着:

笔记本电脑允许网络透明,所以我只需要让SageMath正常工作*一次*,然后在教室里使用网络浏览器。在演讲厅共享计算机,获取信息安装是一件痛苦的事,但您绝对可以依赖于正在安装的web浏览器。(如果这台电脑只有IE6,就像这里的很多人一样,很容易就能买到Firefox。)这也意味着如果我让SageMath在一台速度很快的计算机上运行,我就可以在访问该计算机时从中受益从其他任何地方。

特德·科桑

威廉:“如果不是太麻烦,如果你有时间,你能考虑一下吗发布一份粗略的清单,其中列出了影响你做出决定的一些因素,你为什么选择SAGE,如何其他竞争对手表现不错,SAGE还有什么不尽如人意的地方目标?"
我选择SAGE的原因受到了学位不寻常性质的严重影响我们的计算机工程技术学位是一个混合学位,占一半计算机科学和半计算机工程,全面强调应用。这个该项目的教员由2名计算机科学家、2名工程师和1名技术人员组成该学位旨在培养的学生类型是一个多面手。我是技术专家,这让我处于一个很好的位置,可以观察面向算法的解决问题的计算机科学方法和面向数学的工程方法。
我注意到工程类使用MathCad和MatLab等软件的效果很好但是,在看到CS类如何使用编程语言解决问题之后,像MathCad和MatLab这样的工具对我来说似乎没有足够的通用设计决定尝试Mathematica,因为它的设计更通用,尽管事实上工程师们不太明白为什么我会选择它而不是传统的面向工程的软件应用程序:-)我在Mathematica工作了两年多,我喜欢它的数学功能和笔记本用户界面,但我发现它的编程功能功能使用起来有些笨拙,尤其是与我们开始使用的Python相比在我们的一些CS类中使用。除此之外,我是Linux用户,我们的许多学生也是。我发现Mathematica对Linux的支持相当差,我经常遇到需要解决或修复的问题。
当我们开始远程学习计划时,我们选择以开源软件为基础这是我决定寻找Mathematica的开源替代品的时候。认为大多数搜索数学软件的人很快就会发现计算机代数系统页面,我也是:https://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems网站
删除所有专有应用程序后,我选择的应用程序的短列表评估由公理、数学、Maxima、SAGE和Yacas组成。当时我很紧张受Mathematica的GUI笔记本前端以及应用程序,如MathCad。因此,我认为拥有一个漂亮的GUI前端在我的列表中占有很高的位置当我评估这个列表上的每个应用程序时。我最终决定搬家使用运行在TeXmacs中的Maxima和Python转发,有一段时间我认为我已经找到了我在找什么。Maxima似乎能够满足我的大部分数学需求Python能够处理我的大部分计算需求,尽管我只是个新手当时的Python开发人员。TeXmacs也是我体验在一个用户界面中封装了广泛的软件工具,我喜欢它的灵活性这提供了。然而,我与TeXmacs合作得越多,它就开始变得越“古怪”除此之外,我开始希望maxima和Python能够更好地合作比他们在TeXmacs中所能做的更亲密。我不情愿地决定我需要继续我的搜索。
幸运的是,正是在这个时候,我经历了一种关于蟒蛇。我在Python之前学过的语言是Java,我是从C语言来到Java的,Java开启了一个我以前不知道的全新编程世界,尤其是当我观察了计算机科学家使用它的方式。然而,当我决定学习Python时,我的Java的经验限制了我对Python的期望。随着我深入挖掘Python,我开始看到Python比Java更先进,比C语言的Java更先进。当我从C语言转到Java语言时,感觉我已经不再用锤子手动敲击钉子了使用气动钉枪。当我开始领会动态语言的神奇力量时然而,就像Python一样,它开始感觉像是用钉子枪从钉板上移开指向一根魔杖,让它们出现在黑板上,只需轻轻一挥手腕。当我开始更深入地研究Python并在其中编程时,我觉得自己开始亮起灯来,我开始在一个全新的环境中思考基于编程的问题解决方式。当我开始了解如何正确使用它时,Python给了我这样的感觉我发现自己想更频繁地进入这种心态并保持更长时间时间段。我也开始相信,这就是我们应该鼓励我们的学生拥抱。
正是基于这种新的视角,我重新评估了我的数学应用列表早些时候编译的,当我再次看SAGE时,它是用新的眼光看的。而不是Python就像在TeXmacs中一样,它只是一个平等的工具,在SAGE中,它被提升到了管理这些其他工具固有的巨大复杂性并使以一种比另一种更自然、更有效的方式提供他们的力量我所看到的方法。我也在改变我对进入的价值的思考数学使用丰富的图形前端,而不是使用键入的源代码。当我是使用Mathematica,我通过图形笔记本前端输入几乎所有的输入因为我认为它比输入ASCII文本要好。我继续说在我使用TeXmacs时思考,但随着我进一步研究SAGE的文档,以及开始更多地使用它,我开始形成这样的观点:它效率更高在Python源代码级别工作,因为停留在Pytython源码级别往往会保持头脑处于我前面提到的“点亮”状态。因此,我不再认为教授新手数学软件的最佳方法是隐藏尽可能多地在GUI前端后面编写源代码,以提供一种教学方法新手如何尽可能轻松地编程,以便能够有效地使用源代码接口。
无论如何,我知道这个答案有点抽象,但我就是这样做的:-)
至于SAGE在实现我期望的目标方面还有哪些不足之处,我仍在学习如何正确使用SAGE(我还在学习如何正确使用Python),所以我没有我已经准备好提供建议了,但我可能会在未来提出一些建议。我目前认为需要的是针对程序员/数学的SAGE教程新手。我打算开发一个这样的教程,但如果可以的话,它会很有帮助定期在这封电子邮件列表上问一些关于SAGE和一般数学的愚蠢问题。
谢谢,
特德