什么是构建Web服务的良好功能语言?
是否有一种功能强大的语言可以为构建Web服务提供良好的支持和工具?我一直在研究Scala(可编译为JVM并可以使用Java库)和F(即.NET),但是它们还很年轻,效率低下。除自递归功能外,Scala特别不支持尾部调用消除,这限制了我们可以执行的组合类型(这是JVM的基本限制)。 Fis太新了,似乎还没有得到完全的支持,这使其比传统的语言更具风险。
是否可以使用Haskell,ML或者任何其他更传统的功能语言来构建Web服务,还是最好使用Scala或者F#?还有其他建议吗?
解决方案
虽然我不推荐它,因为我还在玩它,但是Erlang非常强大。
Haskell:
看一下这个问题:
在Haskell中编写Web应用程序最简单的方法是什么?
基本上,WASH,HAppS和Janus是目前Haskell中的三大厂商。我的投票是HAppS,它目前具有最佳的教程。
也有HSP,但最近我没有看过也没有考虑过。
如果我们这样做是出于娱乐目的,而不是出于任何健壮性或者工作场所的考虑,则可以调查ARC。这是一门未完成的,正在进行的语言,具有其优点和缺点。
免责声明:不隶属于ARC或者Paul Graham
Ocaml拥有Ocsigen / Eliom ...不过,我不能说我已经使用过它。它也处于早期阶段。
如果.NET是该平台的选项,请不要因为它的年轻而打折。随着它越来越接近成为正式产品,它与Visual Studio的集成度越来越高,并且继承了.NET提供的所有优点。
Microsoft和热情的社区也都提供了积极且可访问的支持。
Erlang,和Yaws。这是一种有趣,功能强大的语言,扩展性非常好,并且可以安全,轻松地使用100或者1000个流程。和乐趣。
(我也认为它很漂亮。)
请阅读Fand ASP.NET上的此介绍,这将为我们提供一个良好的开端。
Web上有几个在Web应用程序中使用Fis的示例。例如,Tomas Petricek的自动完成程序就是其中之一,他在他的文章" FWeb工具:简化Ajax应用程序"中构建了该应用程序。我自己也使用过Web服务的Fas部分,并且向我们保证它运行良好:)。
Reddit是基于Lisp构建的,不是吗? Paul Graham高度评价了它的敏捷性,尤其是对于webapps。
上一代功能语言具有Ocsigen(用于OCaml)和HApps(用于Haskell)之类的工具,但实际上它们没有用户:它们是完全未经测试的软件。
相比之下,Scala和FBuild基于Java和.NET的经过良好测试的代码。特别是,Fha在过去的一年中由Microsoft进行了大量开发,因为它已经投入生产。没有其他功能语言获得过这样的支持,因此,Fis已经非常有用(就开发工具而言,它远比Haskell这样的语言)。
我们可能会认为Clojure是一门非常新的语言,但是对于可伸缩的并发应用程序来说看起来很有希望,并且具有非常好的JVM集成和对所有Java库的访问(就像Scala一样)的优点。
Clojure还具有很多设计特性,可以绕开尾递归问题(特殊的递归构造,许多核心功能可以迭代实现等)。

