为什么是SageMath?

丹德雷克

首先,我会说一下我如何使用SaGeMaS:首先,我用它来做我自己的研究,并且也用它来教我——我把它用到微积分和微分方程课程中,下学期在一个离散的数学课程中使用它。大部分我在演讲中使用它来做演示,但总有一天我希望把SaGeMaSe融入到家庭作业中。

与啤酒一样免费:

我可以随心所欲地安装它——我的办公室电脑、笔记本电脑、演讲厅里的电脑、任何地方。我花了整整零时间怀疑我所做的是被许可证允许的,不知道什么时候我们会得到下一个版本,等等。
自由意味着我的学生可以使用它。在我上大学的研究生院,我们使用Matlab和Mathematica为我们的工程微积分课程。在第一周,我会在计算机实验室周围走动,假装没有听到每个人都说“如果你想在家里使用它,就去[无论哪个网站/服务都是盗版软件”,下载它。”我说,“如果你想在家里使用它,去SaGeMasth.Org,下载它。”
因此,那些盗版软件的学生受益于不做违法的事情(并且冒着安装恶意软件的风险)——但诚实的学生也受益匪浅。每个人都可以下载和使用SaGemaTM,所以我可以从课堂上演示,发布它,并且*每个人。他们可以在课后查看它并与其交互,而不是只是看着我玩弄它。当然,Mathematica有他们的“播放器”应用程序,但是SageMath,我的学生可以很容易地改变他们自己的演示,这对于Mathematica播放器来说是不可能的。
免费也意味着毕业和进入工业界的学生可以继续使用SaGeMaTM。MaPiSoFT可能不想起诉一个把枫叶放在笔记本电脑上的学生,而他们的大学有一个网站许可证,但是如果你的公司正在开发一种产品,并使用盗版的枫树来做,他们就不会高兴。

蟒蛇的意思是:

你有一个熟悉的最好的和最流行的编程语言,在那里,这是可用的每一个平台,是无处不在的整个行业。我在数学课上的学生不是数学专业的学生,他们会在工业领域工作,通过学习一点Python来获得一些东西。

在语音+ Python中的意思是:

当学生碰到一个bug时,他们可能能够修复它。不要仅仅告诉他们安静地坐着,耐心等待,直到别人帮他们解决了问题,一个好的学生才有可能参与解决这个问题。在当今的教育中,我们鼓励学生成为“积极的学习者”等等,有“探索性学习”的说法。一个学生发现一个bug,意识到它是一个bug,并试图修复它,这是非常有教育哲学的精神。

为高层次学生:

在数学或类似领域的上层学生可以参与修复更多意义上的错误,因为他们可能理解所使用的算法或知道足够的编程来修复破译代码。SaGeMaTM的目的是专业水平的现实世界的使用,所以对于这样的学生,致力于改善SaGeMaSe是真实的经验,对学生毕业后有用。(你宁愿雇用谁?)那个做了所有任务的人,或者说:“我把bug和附加功能添加到一个成千上万人使用的大型软件项目中去了?”
而且,现在的研究是非常热门的,而SaGeMaTM可以让学生们快速地跑起来。那些不是非常熟练的程序员的学生必须花费大量的时间学习,比如说C,然后浪费很多时间用指针运算。SaGeMaSy允许那些对数学感兴趣的学生比MalCube()更花时间思考数学,少花时间找出他们的代码为什么会出错。

SaGeMaTM笔记本服务器意味着:

笔记本允许网络透明,所以我只需要让SageMath工作得很好*一次,然后在教室里使用一个网络浏览器。在讲堂里共享计算机,安装东西是一件痛苦的事,但你绝对可以依靠安装一个网络浏览器。(如果计算机只有IE6,这附近有很多人,很容易得到Firefox)。这也意味着,如果我在快速计算机上运行SaGeMaTM,那么当从其他地方访问它时,我就得到了该计算机的好处。

泰德·库桑

威廉:“如果不是太麻烦的话,如果你有时间,你能考虑把你的决定中的一些因素列出一个粗略的清单吗?为什么你选择圣人,其他竞争者是如何表现出来的,以及对于你所期望的目标,圣人还不够完美呢?”
我之所以选择圣人的原因,很大程度上是因为我所教的学位课程的特殊性质。我们的计算机工程技术学位是一门混合课程,它是半计算机科学和半计算机工程,它强调应用。该项目的师资由2名计算机科学家、2名工程师和1名技术专家组成,所设计的学生类型是一个深刻的通才。我是技术专家,这使我处于一个很好的位置,既能观察到面向算法的计算机科学方法,又能观察到以数学为导向的解决问题的工程方法。
我观察到,工程类使用MathCad和Matlab等软件具有极大的优势,但是,在看到CS类如何使用编程语言解决问题之后,像MathCad和Matlab这样的工具对我来说似乎没有足够的设计。最后,我决定尝试Mathematica,因为它的更一般的设计,尽管工程师们不太明白为什么我会选择一个传统的面向工程的软件应用程序:-我和Mathematica一起工作了2多年,我喜欢它的数学能力和笔记本用户界面,但是我发现它的编程能力有些难堪,特别是和我们开始使用的Python相比,在一些我们的CS类中。除此之外,我是Linux用户,我们的很多学生也是。我发现Mathematica对Linux的支持相当差,我经常遇到需要解决的问题。
当我们开始远程学习的主动权时,我们选择尽可能多地将它建立在开源软件上,这是在我决定找到一个开源的Mathematica替代方案的时候。我认为大多数正在寻找数学软件的人很快就找到了计算机代数系统页面的比较,我也是这样:HTTP://E.WiKiTo.Org/WiKi/SimuliSoi的计算机代数系统
在排除所有专有应用之后,我选择的应用程序的简短列表包括公理、Mathomatic、MaMax、SAGE和Yacas。当时我深受MathaMaMa的GUI笔记本前端的影响,以及像MathCad这样的应用程序的GUI前端。因此,当我对这个列表中的每个应用程序进行评估时,我都认为在我的要求列表中有一个很好的GUI前端。我最终决定使用Max和Python在TexMac内部运行,我想我已经找到了我想要的东西。Maxima好像能处理我大部分的数学需要,Python能够处理我大部分的计算需求,尽管那时我只是一个新手。TexMac也是我在一个用户界面中包装各种软件工具的概念的经验,我喜欢这个提供的灵活性。然而,我在TeXmacs工作的越多,我就越觉得奇怪。除此之外,我开始希望Max和Python能够在TexMac上比他们能够做的更紧密地合作。我不情愿地决定我需要继续我的搜索。
幸运的是,就在这一点上,我经历了一种关于Python的启示。我在Python之前学过的语言是Java,我是从C来到Java的。对于我来说,Java打开了一个全新的编程世界,我以前不知道它,尤其是当我观察到计算机科学家使用它的方式时。然而,当我决定学习Python时,我对Java的体验限制了我所期望的Python所能达到的极限。当我深入研究Python时,我开始发现Python比Java更先进,而不是Java与C语言的结合。当我从C移动到Java时,感觉就像我已经从手动锤击钉子到使用气动钉枪。当我开始掌握一种像Python这样的动态语言所包含的惊人的力量时,它开始感觉像是从钉板上用钉子枪移动到指着一根魔杖,让它们出现在一块木板上,而不是手腕的轻拂。当我开始深入研究Python并对其进行更多的编程时,感觉就像我的大脑开始亮起,我开始思考一个全新的编程解决问题的方法。这是当我开始看如何正确使用它时,Python给我的感觉。我发现自己想更频繁地进入这个框架,并保持它更长的一段时间。我也开始相信这是我们应该鼓励我们的学生拥抱的一种想法。
正是在这个新的视角下,我重新评估了我先前编写的数学应用的列表,当我再次观察圣人时,它是新的眼睛。代替Python只是一种工具,就像在TexMac中一样,它被提升到了管理这些工具固有的巨大复杂性的位置,并使它们的能量以比我所看到的其他方法更自然、更有效的方式被利用。我也在用丰富的图形前端对输入数学的价值进行思考。当我使用Mathematica时,我会通过图形笔记本前端来输入几乎所有的输入,因为我认为它在某种程度上优于输入ASCII文本。在我使用TexMac的时候,我继续思考这个问题,但随着我进一步研究了SAGE的文档,并且开始更深入地研究它,我开始形成一种观点,即在Python源代码级别上工作效率更高,因为在Python源代码级别停留在前面提到的“点亮”状态。因此,我认为,新手教学数学软件的最佳方法是在GUI前端隐藏尽可能多的源代码,从而想出一种教新手如何尽可能容易地编程以便能有效地使用源代码接口的方法。
不管怎样,我知道这个答案有点抽象,但这就是我的决定:
至于对于我所期望的目标来说,圣哲本身还不是完美的,我仍然在学习如何正确使用圣人(而且我也在学习如何正确地使用Python),所以我还没有准备好提供建议,但是我将来可能会想出一些建议。我现在需要的是一个以程序员/数学新手为目标的SAGE教程。我将尝试开发一个这样的教程,但是如果我能定期在这个电子邮件列表中问一些关于SAGE和数学的哑巴问题,这将是有益的。
谢谢,
特德