什么是构建Web服务的良好功能语言?

时间:2008-09-19 21:18:29

标签: web-services scala f# functional-programming

是否有一种功能语言可以提供良好的支持和工具来构建Web服务?我一直在研究Scala(它编译为JVM并可以使用Java库)和F#(这是.NET),但这些都是年轻的并且效率低下。特别是Scala不支持尾调用消除,除了自递归函数,这限制了你可以做的组合种类(这是JVM的一个基本限制)。 F#非常新,似乎还没有完全支持,这使得它比传统语言更具风险。

是否可以使用Haskell,ML或任何其他更传统的函数语言构建Web服务,或者最好是使用Scala还是F#?还有其他建议吗?

11 个答案:

答案 0 :(得分:10)

如果.NET是该平台的一个选项,请不要因为它年轻而折扣F#。随着它越来越接近成为官方产品,它正在与Visual Studio进行越来越好的集成,并继承了.NET提供的所有优点。

微软和热心社区也提供积极和可访问的支持。

答案 1 :(得分:8)

Ocaml有Ocsigen/Eliom ......但我不能说我已经用过了它。它也处于早期阶段。

答案 2 :(得分:5)

Haskell中:

看看这个问题: What is the simplest way to write web apps in Haskell?

基本上,WASHHAppSJanus是Haskell目前的三大问题。我的投票是针对目前最好tutorial的HAppS。

还有HSP但我最近没有看过它或想过它。

答案 3 :(得分:5)

Erlang,Yaws。它是一种有趣,强大的语言,可以非常好地扩展,并且可以安全,轻松地使用100或1000个进程。而且很有趣。

(我也认为这很漂亮。)

答案 4 :(得分:4)

请阅读F# and ASP.NET上的这篇介绍,这将为您提供一个良好的开端。

Web上有几个例子,其中F#用于Web应用程序。其中一个例如是Tomas Petricek的autocompleter,他在他的文章"F# Web Tools: Ajax applications made simple"中作为说明性应用而建立。我自己也使用F#作为网络服务的一部分,我向你保证它运作良好:)。

答案 5 :(得分:2)

如果你这样做是为了好玩,而不是为了任何健壮性或工作场所,你可以调查ARC。这是一种未完成的,正在进行的语言,具有所暗示的优点和缺点。

免责声明:不隶属于ARC或Paul Graham

答案 6 :(得分:1)

Reddit是建立在lisp上的,不是吗? Paul Graham speaks very highly敏捷,尤其是webapps。

答案 7 :(得分:1)

您可能会考虑使用Clojure - 它是一种非常新的语言,但对于可伸缩的并发应用程序看起来非常有前景,并且具有非常好的JVM集成和对所有Java库的访问(就像Scala一样)。

Clojure还有很多设计特性可以解决尾递归问题(特殊的重复构造,许多核心函数都是迭代实现的等等。)

答案 8 :(得分:0)

虽然我不能推荐它,因为我还在玩它,Erlang非常强大。

答案 9 :(得分:0)

我必须同意Clojure的建议。我刚刚完成了news feed service written in Clojure的负载测试,该测试在m1.medium EC2实例上运行的每个Clojure Web服务器上每秒支持80个出站活动帖子。

答案 10 :(得分:-1)

上一代功能语言拥有Ocsigen(用于OCaml)和HApps(用于Haskell)等工具,但它们几乎没有用户:它们是完全未经测试的软件。

相比之下,Scala和F#建立在经过严格测试的Java和.NET代码之上。特别是,微软在过去一年中对F#进行了大量开发,因为它正在产品化。没有其他功能语言能够获得这种级别的支持,因此,F#已经非常有用(并且在开发工具方面远远领先于Haskell等语言)。