Language agnostic 下一步我应该学什么通用语言?

Language agnostic 下一步我应该学什么通用语言?,language-agnostic,programming-languages,Language Agnostic,Programming Languages,我目前正在参加一个编程竞赛(),目标是创建一个推荐引擎。我开始用ruby编写代码,但很快就意识到它的速度不够快,无法满足我的算法要求。所以我切换到C,这是我所知道的唯一一种非脚本语言。当然,速度很快,但每次我必须为循环编写一个,以遍历数组的元素(这是非常常见的)时,我都会畏缩 这时我才恍然大悟:我希望我知道一种快速的高级语言,可以轻松地编写所有这些密集的计算程序 所以我看了看我的选择,但是现在有很多选择!下面是几个月来我找到的最好的候选人,其中每一个都让我感到困扰(希望你能澄清): Cloju

我目前正在参加一个编程竞赛(),目标是创建一个推荐引擎。我开始用ruby编写代码,但很快就意识到它的速度不够快,无法满足我的算法要求。所以我切换到C,这是我所知道的唯一一种非脚本语言。当然,速度很快,但每次我必须为循环编写一个
,以遍历数组的元素(这是非常常见的)时,我都会畏缩

这时我才恍然大悟:我希望我知道一种快速的高级语言,可以轻松地编写所有这些密集的计算程序

所以我看了看我的选择,但是现在有很多选择!下面是几个月来我找到的最好的候选人,其中每一个都让我感到困扰(希望你能澄清):

  • Clojure:我不确定我是否想了解整个
    lisp
    的内容,我喜欢我的语法和简练。不过,我可以相信
  • 哈斯克尔:太学术了?我真的不喜欢纯功能性的,我只想要能工作的东西。但是它有很好的语法,我不介意静态输入
  • Scala:奇怪的语言。我试过了,但感觉很混乱/前后矛盾
  • OCaml:还想知道这是否太学术化了?糟糕的并发支持也让我感到困扰
  • Arc:保罗·格雷厄姆(Paul Graham)的口齿不清(lisp),太晦涩了,再说一次,我不确定我是否想学习口齿不清(lisp)。但我相信这个人
有什么建议吗?我非常喜欢函数式语言,因为它们能够轻松地操作列表,但我也愿意接受其他选项。我想要和Java一样快的东西

我希望能够使用列表做的事情如下(ruby):

我也更喜欢开源语言


谢谢

这是否合适?编译为机器代码,但允许使用更高级的概念进行编程。

是否符合要求?编译为机器代码,但允许使用更高级的概念进行编程。

为什么不使用简单的Java或C#?应该比Ruby更快,比C更高级,拥有庞大的用户群。

为什么不使用简单Java或C?应该比Ruby更快,比C更高级,并且拥有庞大的用户群。

Python可以快速运行,特别是使用NumPy包。相关链接如下:


可以让Python快速运行,尤其是使用NumPy包。相关链接如下:


作为一种高性能的高级语言,Haskell是我目前的首选。我也听说过关于OCaml的很多好东西,但我个人并没有太多地使用它

Scala和Clojure将具有与Java相似的性能——慢,慢,慢!当然,它们会比Ruby快,但有什么比不上呢


Arc是MzScheme的一组宏,速度不是特别快。如果你想要一个高性能的LISP,试试Common LISP——它可以被编译成机器代码。

Haskell是我目前首选的高性能高级语言。我也听说过关于OCaml的很多好东西,但我个人并没有太多地使用它

Scala和Clojure将具有与Java相似的性能——慢,慢,慢!当然,它们会比Ruby快,但有什么比不上呢


Arc是MzScheme的一组宏,速度不是特别快。如果你想要一个性能LISP,试试普通LISP——它可以编译成机器代码。

< P>你可以考虑Python;它支持C或C++中的模块,因此可以用高级语言来处理它,对它进行配置,修改算法,如果它不够快,将热点转换成C或C++的速度。

< P>你可以考虑Python;它支持C或C++中的模块,因此可以用高级语言来处理它,对它进行重新配置,修改算法,如果它不够快,将热点转换成C或C++的速度。

考虑TCL,结合C。C中真正计算密集的东西,因为这是你知道怎么做的,然后使用Tcl作为粘合剂,将高级代码与基于C的代码结合起来


我之所以提出这一建议,并不是因为Tcl必然是这项工作的最佳语言(对于类似的东西,确实没有“最佳”语言),而是因为您将学到很多关于结合两种不同语言优势的概念。无论是Tcl/C、Lua/C、Groovy/Java、Python/C等等,这都是一项重要的技术,可以很好地为您的职业生涯服务。

考虑Tcl与C的结合。用C做真正的计算密集型工作,因为这是您知道如何做的,然后用Tcl作为粘合剂,将高级代码与基于C的代码结合起来


我之所以提出这一建议,并不是因为Tcl必然是这项工作的最佳语言(对于类似的东西,确实没有“最佳”语言),而是因为您将学到很多关于结合两种不同语言优势的概念。无论是Tcl/C、Lua/C、Groovy/Java、Python/C等等,这都是一项重要的技术,可以很好地服务于你的职业生涯。

你对几乎所有事情的批评似乎都是“怪异”或“太学术化”。但这意味着什么?这是一种模糊的批评,你可以把它扔向任何不完全主流的语言(即C、C++、Objto-C、java、露比、Python或PHP)。所有这些语言本身对学术界没有什么好处,对其他任何东西也没有什么坏处。试着进一步细分你的分析:具体来说,是什么让你对这些语言感到困扰?你可能会发现你的大脑只是本能地推开一些不熟悉的东西。如果是这样的话,学习其中一种语言可能是拓展你思维的好方法

或者:听起来你在寻找一种函数式语言,所以你可以看看F#。它是微软创建的一种一流的CLR语言,因此它没有任何“学术”意义
([1, 2, 3, 4] - [2, 3]).map {|i| i * 2 } # which results in [2, 8]
for I in array_name'range loop
   --'// Code goes here
end loop;