需要针对数学和逻辑密集型研究编程的良好语言。

5

有没有一种编程语言同时具备以下所有特点:

  1. 支持代数数据类型
  2. 拥有良好的线性代数支持
  3. 速度快(至少比Python快)
  4. 拥有部分函数式编程能力(不需要单子)
  5. 已经被人们所知,不是已经死亡的语言,并且可以在C调用级别上进行接口交互
3个回答

1

Scala

根据维基百科的介绍,它具有代数数据类型。而且它是快速的。Scala既是函数式的又是面向对象的。它是一种年轻的语言,拥有不断增长的用户群,但在某种程度上仍然与Java兼容。

有一个Scala库Scalala用于线性代数:

这是一个高性能的Scala数值线性代数库,具有丰富的类似Matlab的向量和矩阵运算符;还有一些数值例程的库。


感谢您。Scala似乎对线性代数方面的支持不太充分,但我发现了“shipvl”,虽然它也很年轻,但似乎很有前途……一旦它完成alpha阶段,我会看一下它的。 - Sneftel

1

我有自己喜欢的编程语言,但这并不是其中之一。不过,R 似乎是你正在寻找的语言。它似乎是最近用于进行重型数学计算的热门语言。

至于“比 Python 更快”的部分,那很难说。一般来说,编程语言本身并没有速度;实现语言的程序才有。因此,唯一的方法就是在你可以获得的每个实现上比较你的时间限制算法。


“速度”确实是实现(和应用程序)的因素,而不是编程语言的因素,但由于大多数语言 - 特别是“有趣的”“现代的”“实验性”的语言 - 具有由大多数用户使用的唯一实现,因此按照这个标准进行过滤是有一定道理的。如果您喜欢,“最佳可用性能”。 - Sneftel
谢谢指引。我一直计划学习R语言一段时间了。我之前看到的代码片段有点简洁,但我想那更多是风格问题而非该语言被强制要求的。 - Sneftel

0

我会说C和C++。它们与以下工具很好地配合使用:


C语言对函数式编程的支持存在,但是...勉强算得上。对于C++来说,你必须深入了解模板魔法才能够胜任。这对于一个初学者来说并不是一个好的选择。 - T.E.D.
谁说我是C++初学者了? :) - Kon
这基本上就是我现在正在使用的。我觉得它适用于3和5...虽然如此,但来回切换到Matlab正是我试图摆脱的,我在寻找一种能满足我的需求的“单一”语言。 - Sneftel
抱歉,祝你好运。顺便问一下,你认为Matlab对于线性代数的支持不够好吗? - Kon
当然,Matlab在线性代数方面很好。但是,来回传输数据的麻烦超过了这种便利。Matlab/C接口设计用于“厚重”的互操作,从一侧发送一堆数据到另一侧,让该侧自己处理一段时间。作为C ++的线性代数数据类型库,它表现非常糟糕。 - Sneftel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接