十个用于数学的编程语言
原文作者,MathBlog Team 。
翻译作者,Serena,独行者,哆嗒数学网翻译组成员。
校对,浪荡游侠。
关注 哆嗒数学网 每天获得更多数学趣文
作为一位在计算机编程和数学两大领域都十分感兴趣的研究员,我希望借这篇文章和大家一起分享在数学研究当中,十大我最喜欢的编程语言。
我这么做是为了给其他研究者提供更多的选择,并提供更多建立模型的方法。
这些语言的介绍直接来源于他们各自的官方网站简介或维基百科,在字里行间当中,我也把个人的看法穿插其中。
1. WOLFRAM LANGUAGE
Wolfram语言是Mathematica和Wolfram Programming Cloud中使用的编程语言。
它是由Wolfram Research公司开发的一种综合性多模态编程语言,主要用于符号计算、函数式编程和规则型编程。在上述领域中,它自身设计使得它可以得到最大程度的广泛使用。
这种语言有许多使用场景,并且时常是非常专业化的。
我的看法
这是一种下降泛函、规则型的编程语言,他在处理符号计算上非常有优势。尽管如此,我觉得和Go语言比较起来,Wolframe的使用并不简洁。
它真正的价值在于它庞大的多领域标准库(特别是数学应用),这几乎比世界上任何其他编程语言都领先很多年。看过他们的演示程序以后,这门语言的魅力会让你神魂颠倒。
2. MATLAB / GNU OCTAVE
MATLAB(矩阵实验室)是由MathWorks公司出品的一门多模态数值计算运行环境,被认为是第四代编程语言。它可以进行矩阵运算、画出函数和数据图像、实现算法、创建用户界面、提供接口以便和其他编程语言的程序(包括C, C++, Java, Fortran和Python)进行交互。
我的看法
它在数值计算方面处于霸主的地位。其开源版本——GNU Octave也是如此。
3. R
R编程语言为统计计算和图像处理提供了软件环境,这个软件由 the R Foundation for Statistical Computing提供技术支持。
R语言主要使用者是统计学家和数据开发者,广泛用于统计软件开发和数据挖掘分析。
对数据挖掘开发者的调查和学术文献数据库调查中发现,近几年来,R语言受到了越来越多的关注。
4. COQ / GALLINA
Coq是一款交互式定理证明软件。它允许使用数学符号和命题的形式进行逻辑演绎,对推演验证猜想的推理过程进行模式化处理,帮助人们找到比较合情合理的证明方法。然后,通过规范的格式说明中进行严格证明,最后建立起一个认证程序。
Coq在构建算子的衍生物——归纳构建算子理论的基础上运行程序。
如果我们要把它当做是一种编程语言的话,Coq实现了一种依赖类型的函数式编程语言;作为逻辑系统,它实现了高阶类型理论。
Coq提供了一种名为Gallina的范式语言。用Gallina编写的程序具有弱规范化性质——让程序最终运行结束,不会陷入死循环。
5. PROLOG
Prolog是一种与人工智能和计算语言学相结合的通用逻辑编程语言。
Prolog扎根于一阶逻辑(一种形式逻辑)。与其他编程语言的不同之处在于,Prolog是定义式语言。
Prolog的程序逻辑用关系描述,用事实和规则表示。它的运行方式是进行查询的这些关系的内在联系来决定的。
6. HASKELL
Haskell是一种标准化,通用纯函数式编程语言。它有非限定性语义和强静态类型。Haskell的特色是拥有一个类型推断和延后计算的类型系统。
我的看法
对于使用非函数式编程的程序员来说,它是最难懂的语言之一.为了能熟练使用这门语言,程序员的学习曲线会非常陡。但这同时也是非常值得的。因为它的无任何其他影响。正因为它有纯函数属性,所以它十分适合用来对数学问题进行分析并建立模型。而对于那些从事范畴理论和做编程语言研究的人来说,它有极强的吸引力。
7. IDRIS
Idris是一种拥有依赖类型的通用纯函数式编程语言。它的类型系统与Agda的类似。
它支持交互式定理和策略的证明,可以与Cop相媲美。定理证明开始之前,我们就可以将重点放在通用编程上。
Idris的其他目标是“充分”性能,它的副作用也容易得到控制,并且他还支持在特别针对于嵌入式领域中应用语言的实现。
我的看法
作为一种研究型语言,它结合了Haskell和Coq的特性。是很有意思的。
8. JULIA
Julia是一种用于技术计算的高水平、高性能的动态编程语言,对于其他技术计算环境的用户来说,它的语法让初学者很容易上手。
它提供了复杂的编译器、分布式并行处理、高数值精度和一个可扩展的数学函数库。Julia的基础函数库大多数由官方维护人员编写,同时,它也集成了一些C和FORTRAN中开源成熟、性能良好的库来处理线性代数、随机数产生和字符串处理等问题。
我的看法
它是一种非常有前景的科学计算和数据科学语言。由于Jupyter项目,Julia也可以用于分享代码,并和他人一起协作完成项目。
9. PYTHON
Python是一种被广泛使用的高级、通用、解释型动态编程语言。
它的设计理念是要强调代码的可读性,其变量系统是弱类型的,这样的特性让程序员用比C或Java等语言更少的代码行来实现自身需求。
该语言提供了一种旨在实现各种规模程序中都能清晰展示程序架构的方法。
Python支持多种编程范式,包括面向对象、命令式和函数式编程或过程式的风格。它具有动态类型系统和自动内存管理功能,并有一个庞大而详尽的标准库。
我的看法
从数学和科学的角度来看,Python之所以有趣,是因为它有大量的相关文库可供这种流行的编程语言使用(例如, numpy, scipy, scikit-learn, Sage等)。
得益于这个丰富的生态系统,你能轻松地学到一门对科学计算来说非常友好的语言。并且由于它很受欢迎,例子(和Jupyter notebooks中的示例代码)随处可见。
10. J
J是一种非常简洁的数组编程语言。它最适合数学和统计编程,尤其是对矩阵执行操作的时候。它还被用于极限编程和网络性能分析。
与最初的FP/FL语言一样,J通过其默认的编程特性支持过程式(与函数式编程不同)的编程方式。
我的看法
像APL和K一样,J是一种令人费解的语言。它的语言很简洁,很难读,但却强大得难以置信。如果您有兴趣采用新的方法来处理数据操作和分析的话,那么J值得一试。
这是一个快速排序的实现,来让您了解我们正在处理的问题。
quicksort=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#)
写得比较豪放。
上面的十种语言就是我眼中认为在数学领域中值得一试的语言。当然,如果您有更好的选择,欢迎留言表达你的个人见解。
关注 哆嗒数学网 每天获得更多数学趣文
评论已关闭