对于简单但可定制的数学程序,开发的语言是什么?

时间:2011-04-18 23:25:43

标签: math programming-languages

我正在写信,要求就选择语言和学习编程的行动方案提供一些指导。如果这类问题不适合Cross Validated我很抱歉,如果是这种情况,请告诉我另一个论坛。

我已经看到线程问题来自新手的问题,问道,“开始时最好的语言是什么?”然后它总是开始一场火焰战争,或者有人只是回答,“没有最好的语言,最好选一个并开始学习它。”我的问题比那更集中。

首先,我一直在以非常有限的身份编程我的一生。我最深入的培训是在C ++中。在我的EECS学位课程中,我决定永远不会成为软件开发人员,因为我无法忍受在很长一段时间内与人们互动。相反,我意识到我想成为一名数学老师,所以这就是我所走的路。

但是现在我已经走上了这条道路,我开始意识到也许我可以开发自己的软件来帮助我在课堂上。如果我想演示欧几里得算法,还有什么比打破过程的软件更好的方法呢?学生可以将该软件作为学习的一部分,高级学生甚至可以为自己开发程序。或者,有了Ipad,为什么不让应用程序让学生自己参加?它肯定会简化课堂管理的一些需求。

显然有许多很棒的东西用于数学和教育,但我想要一种方法来更直接地创建特定于我的讲座的东西。如果我正在教授一种计算百分比的特定方法,我想创建一个与我的教学风格一致的应用程序,而不仅仅是另一个要求学生学习两次的计算器应用程序。

我现在在课堂上使用的最多是iWork Numbers / Microsoft Excel for stats class。学生可以学习基本的统计功能,并将他们的一些数据转化为图形。

我已经涉足R,并在大学时使用了Maple。我已经开始了OS X / iOS开发的基本教程,并且实际上在制作OS X应用程序方面取得了很好的进展,该应用程序采用文本字符串,将其转换为数字,并使用模块化加法和乘法执行加密。我有时会使用Wolfram | Alpha来节省一些时间来快速解决方程式或基本转换。我知道MatLab,Mathematica,最近有人告诉我要检查Python或Ruby。我也知道基本的HTML,虽然现在已经忘记了,但是在大学里学习了Javascript和PERL。

如果我继续走Obj-C / Cocoa的道路,我认为它会带来很大的好处。不幸的是,我为Mac制作的任何东西都只能在Mac上使用,因此对我的所有学生来说都不是普遍的。也许那时学习网络语言会更好。其次,我想知道主要用途是否是数学的,那么也许我可以更好地花时间学习Mathematica编程语言或R,或者更少基于GUI的东西,更多的是简单的算法编码,可能是Python或Ruby?

似乎Mathematica已经为不同的数学概念进行了大量的演示,所以为什么重新发明轮子也是我的问题。我认为总的来说,以我需要的方式拥有更多的控制和设计是件好事。然后,如果我想制作一个“出勤”应用程序或其他东西,我已经拥有编程经验,可以更轻松地为我的iPad或MacBook设计一些东西。

与此相关的问题是什么是向我的学生教授的好语言?在他的TED演讲中,Conrad Wolfram说,检查学生理解的最佳方法之一就是让他们编写一个程序。但是,如果Mathematica几乎自动为他们做数学计算,那么我不确定能否为你自己制定逻辑更深刻的经验,就像你在写C或传统的程序语言时那样。

我知道编程需要时间来学习,但我也知道,在这一点上,我的目标是不能制作像“Tiny Wings”这样的应用程序。随着应用程序商店的轻松,我的一些工作可能是一个额外的收入流,但我认为自己更像是一个业余爱好者,现在老师专注于软件开发,因为它能够帮助我展示数学概念。

我想我会为OSX / iOS推进Obj-C / Cocoa,但如果有人对所有其他可用的东西有更好的指导,我将不胜感激。我不认为我会想要完全上网(我喜欢应用程序),但也许有人可以建议一种很好的方式将我在XCode中生成的内容桥接到通用Web版本。例如,如果你在obj-c中提出一个算法,最简单的方法是将它转换为ruby并在线运行,还是有另一种方法更好?

2 个答案:

答案 0 :(得分:1)

对于问题的第一部分,Mathematica非常棒。我使用交互模式(Manipulate [])向我的大学(和我自己)解释事情。它制作了非常好的动态数字并且相当富有表现力(尽管你的代码最终看起来像线条噪音)。它非常强大,但对你来说远比你想象的要少得多。这非常直观,这对教学来说是件好事。

如果您希望以“简单”的方式为教学制作特定于域的语言,则可以使用Scala。 Python似乎将人们混淆为第一种编程语言。对我来说,目标C似乎是一个完全随机的选择。

Mathematica然后。这物有所值。但任何被解释并具有交互式shell的东西可能比编译语言更好。 BBC BASIC?

答案 1 :(得分:0)

通用数学规划没有比Haskell更好的结果。 wiki相当广泛,IRC频道(Freenode上的#haskell)非常适合提问。如果您在编译时静态链接二进制文件,则应该能够在几乎任何系统上运行程序(除了少数例外情况,例如libgmp)。

Haskell代码(粗略地)读取(大致)数学符号,因为它可以帮助您为有兴趣编写自己的程序的学生联系起来。纯粹的功能样式也是有益的,因为它更少关注I / O和数据的编组(在应用程序中非常有用,在纯数学中可能不那么重要),更多地关注函数和算法的实际创建和细化。你甚至可以像在纸上一样编写函数。

如果你想真的认真,你也可以看看Coq或Agda,但对于大多数课程来说,这些可能有点多。

对于教育工作者的Haskell计划想法,请查看this link

一个很好的参数列表也可以在以下位置找到: Eleven Reasons to use Haskell as a Mathematician和书籍The Haskell Road to Logic, Maths and Programming