[英]What is a good language to develop in for simple, yet customizable math programs?
我正在写信,要求就选择语言和学习编程的行动方案提供一些指导。 如果这类问题不适合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并在线运行,还是有另一种方法更好?
对于你问题的第一部分,Mathematica非常棒。 我使用交互模式(Manipulate [])向我的大学(和我自己)解释事情。 它制作了非常好的动态数字并且相当富有表现力(尽管你的代码最终看起来像线条噪音)。 它非常强大,但对你来说远比你想象的要少得多。 这非常直观,这对教学来说是件好事。
如果您想要一种“简单”的方法来为教学制作特定领域的语言,您可以使用Scala。 Python似乎将人们混淆为第一种编程语言。 对我来说,Objective C似乎是一个完全随机的选择。
Mathematica然后。 这物有所值。 但任何被解释并具有交互式shell的东西可能比编译语言更好。 BBC BASIC?
没有什么比Haskell更适合通用数学规划了。 wiki相当广泛,IRC频道(Freenode上的#haskell
)非常适合提问。 如果您在编译时静态链接二进制文件,则应该能够在几乎任何系统上运行程序(除了少数例外,例如libgmp
)。
一旦你掌握了Haskell代码就会(粗略地)读取数学符号,因此它可以真正帮助你为那些有动力编写自己的程序的学生联系起来。 纯粹的功能样式也是有益的,因为它更少关注I / O和数据的编组(在应用程序中非常有用,在纯数学中可能不那么重要),更多地关注函数和算法的实际创建和细化。 您甚至可以像在纸上一样编写功能。
如果你想变得非常认真,你也可以考虑Coq或Agda,但对于大多数课程来说这些可能有点多。
有关教育工作者的Haskell计划想法,请查看此链接 。
一个很好的参数列表也可以在以下位置找到: 使用Haskell作为数学家的十一个理由和一本关于逻辑,数学和编程的Haskell之路
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.