一种具有快速能力的原型语言

时间:2011-09-09 18:44:27

标签: math prototype lisp artificial-intelligence go

作为一名具有强大数学背景的工科学生,我在大学处理这样的问题:

  • (数值)模拟
  • AI问题
  • 机器人
  • 控制系统
  • 还有一些

你可以看到一些只是数字的,其他人必须处理某些类型的符号。 目前我正在使用java,但我对它不是很满意(不能确切地说为什么,可能是个人品味)现在我正在寻找一种编程语言,我可以很容易地对新算法进行原型设计,例如在python中,并不关心低级别的东西,但是如果需要的话,它有能力加快速度,例如并发/并行编程等(用python编写并用C / C ++重写它不是我更喜欢的选项......)

总结一下:

  • 易于原型化,但
  • 提高算法速度的能力
  • 没有样板文件的语法,如java
  • 语法易于阅读(我知道这可能是最多的,但有些语言会鼓励你更多......)

我浏览了一些网站,比如http://rosettacode.org/,并选择了2或3个收藏夹:Go,Lisp(也许是Haskell),但欢迎其他推荐

5 个答案:

答案 0 :(得分:6)

使用SBCL的Common Lisp非常快,如果你花时间让它快速。

为什么这适合你想要的?

  • 符号计算
  • 良好的号码处理
  • 默认情况下编译为原生按需

答案 1 :(得分:4)

我会将python与cython一起使用:http://www.cython.org来加速你的代码。对于符号计算,您有http://code.google.com/p/sympy/

答案 2 :(得分:3)

尝试Clojure;它满足了你的大多数要求。

  • 使用Java库,编译为Java字节码,并具有Java IDE插件,因此您对Java及其生态系统的一些现有知识将派上用场。

  • 非常简洁,易读且易于原型制作非常高。

  • 对不同并发策略的大力支持。

  • 性能越来越快;典型的东西在Java的速度因子2之内,并且通常可以通过最小的混淆变化来快速地完成缓慢的事情(例如,这里和那里使用Java原语的几个类型提示。)

答案 3 :(得分:3)

Common Lisp的替代方案是方案的实现。我最喜欢的是Racket。

http://racket-lang.org/

当我第一次进入Lisp时,我开始使用计划,最终能够在几天内学会它。另外,Lisp-wise Racket是一种非常完整的语言,在DrRacket中有一个不错的IDE。

答案 4 :(得分:2)

F#怎么样?

F#是原型制作的一种非凡语言,原因如下:

F#具有交互模式,允许您直接评估代码块,而无需编译整个项目。 类型推断有助于保持代码较小,并使重构类型层次结构相对轻松。这在生产代码中可能并不那么重要,但我发现在原型设计过程中非常有价值。 与.NET集成F#可以轻松地对现有产品的扩展进行原型设计。在原型成为产品的常见情况下(由于时间限制),在.NET产品中集成F#代码也很容易。 如果原型设计成为整个开发过程的重要组成部分,那么F#可以真正帮助您加快编码速度。

我认为F#不会产生比其他.NET语言快得多的代码。编程的功能风格,特别是纯度(没有副作用),可以应用于其他编程语言,这意味着在其他语言中编写并发程序同样容易。然而,在F#中这样做“感觉更自然”。

F#具有Option类型,可用于代替空值。在编译时可以保证关于空指针异常的代码可靠性,这是一个巨大的好处。

最后,请注意F#仍在开发中,并且遇到问题,其中一些问题可能随着时间的推移而消失,但不是全部。例如,看看devhawk和Oliver Sturm对此有什么看法(特别是关于线性范围和相互依赖的类,其他问题,如重载,更好的Visual Studio集成已经得到解决)。

这在文章中说明:https://stackoverflow.com/questions/328329/why-should-i-use-f

由JOH