【问题标题】:Lisp or Haskell for web application development用于 Web 应用程序开发的 Lisp 或 Haskell
【发布时间】:2010-02-20 00:03:17
【问题描述】:

我正在考虑学习一门函数式编程语言。我决定构建一个中型 Web 应用程序。

我将选择范围缩小到 Haskell 和 Common Lisp。

Web 应用程序需要连接到一些关系数据库(MySQL、Firebird 或 Postgres)并且必须在 Linux 上运行。显然,它必须与 Web 服务器软件很好地交互。我没有函数式语言的经验,我的专长是 C、C++、PHP 和 JavaScript。

哪个更适合这种用途,为什么?

我不确定这个问题是否应该被标记为主观的?这真的不是“哪种语言更好”,而是“哪种语言更适合这个特定任务”

【问题讨论】:

  • 别忘了查看 F# 作为一个选项。
  • Javascript 非常适合像函数式语言一样使用。
  • 如果您查看 Milan Babuškov 的个人资料,很明显他更喜欢 Linux 作为平台,这使得 F# 成为一个完全无用的建议。
  • @camccann:F# 在 Mono (weblogs.asp.net/esanchez/archive/2008/07/14/…) 上运行良好,甚至在 XSP.NET (mono-project.com/FAQ:_ASP.NET) 上运行。
  • @Lucas Jones:它运行,是的,但我不确定“完全好”。我反复听到了解 F# 和/或 OCaml 的人对 Mono 表示严重保留,我的印象是,与 .NET 相比,Mono 一开始就表现不佳。当然,总比没有好,但如果您希望主要使用 Linux,F# 在我看来是一个糟糕的选择。

标签: web-applications haskell common-lisp


【解决方案1】:

每一种称职的语言都为网络应用提供了大量的库。 Haskell 也不例外,该语言有 100 多个网络库。

库的可用性应该是您的主要考虑因素(除了高并发的需求)。

你可以在这里找到这些东西的 Haskell 库:

所有都可以安装:

$ cabal 安装 $foo

【讨论】:

    【解决方案2】:

    'Common Lisp' 并不是真正的函数式语言。它具有函数式语言的元素,但同样包括对命令式和面向对象编程的支持。程序通常是由这些混合编写的。

    通常 Common Lisp 和 Haskell 是非常不同的语言。

    如果你想学习高级函数式编程,那么 Haskell 会更合适。

    使用数据库在 Common Lisp 中编写 Web 应用程序并在 Linux 上运行是可能的并且已经完成。

    【讨论】:

      【解决方案3】:

      Lisp 在 Web 上有着悠久的历史。 Yahoo Stores 最初是用 Lisp 编写的。

      【讨论】:

        【解决方案4】:

        在你的位置上,我会选择 Haskell 有三个原因:

        • 相当容易学习
        • Hackage,它提供了很多库,可以做很多你想做的事情,包括HAppS,它为服务器应用程序提供了很多功能
        • 很棒的社区。他们的 IRC 频道很棒。

        【讨论】:

        • 关于“相当容易学习”:Haskell 确实是一种非常小而且非常常规的语言(与 Java 或 C++ 相比),但我不会说它很容易。惰性评估和概念纯度可能不是 Haskell 特有的,但您仍然需要学习如何使用它们,然后才能在 Haskell 中执行任何操作
        • 我会比 SealedSun 更进一步地说:对于大多数人来说,haskell 通常太难完成工作
        • 别开玩笑了。来自主流命令式语言的人可能对 Haskell 非常陌生,但学习到足以掌握它并做某事并不是什么大不了的事。真正开始可能需要更长的时间,但如果有人真的想学习,那一点也不难。
        • 在 Haskell 中以惯用方式工作涉及到如此多的语法糖,以至于我真的很惊讶没有患糖尿病。做任何 IO 至少需要对 monads、惰性和柯里化有一个粗略的了解。有可能了解到这一点,即使来自“主流命令式语言”(这里是 Lisper,顺便说一句,这似乎离主流很远,因为你现在可以专业地获得),但这里唯一完全荒谬的事情是你声称“重新思考许多人对编程的许多基本假设并不难。
        【解决方案5】:

        如果您的首要考虑是在函数式技术和 Web 功能之间找到最佳平衡点,我会发现很难击败 F#,因为它包含了所有 .NET Web 内容。那是大量的预烘焙,生产强化代码供您使用。你可以用它来做 MVC——如果你不想在 Windows 上运行并且有一种开拓精神(我想你确实考虑过这个问题),那么在 Mono 上尝试使用 F# 的 MVC 真的很可行!我会喜欢看到那个组合!

        我不知道 Lisp——但与 Haskell 相比,F# 会更高效地使用函数式语言编写 Web 应用程序......我喜欢 Haskell,但对于你想做的事你必须将 F# 视为第一个选项,IMO。

        【讨论】:

        • Mono 上的 F# 可以正常工作,但效果并不理想。 mono-project.com/Runtime_Projects 表示“修复 F# 的尾调用支持”正在进行中。
        • 你不说为什么 F# 更好,你断言它。
        • 很多 F# 的东西在我研究时看起来有点粗糙——.NET 集成在纸面上听起来不错,但是尝试在函数式中使用非常非函数式的库语言通常是一种自虐练习。如果我需要在 F# 中编写一个重要的应用程序,我可能会考虑移植现有的 OCaml 库而不是使用 .NET 的东西......此时我想知道为什么不直接使用 OCaml 并完成它?
        • 我认为 .NET 框架中已经存在的大量预烘焙的面向 Web 的代码是查看 F# 的一个重要因素。我应该更清楚一点,我没有 LISP 经验(但如果 LISP 用网络功能杀死它,我会感到非常惊讶)。回应 don:这就是为什么 F# 值得一看(我没说它更好)。
        猜你喜欢
        • 2011-02-24
        • 2014-09-17
        • 2011-07-24
        • 1970-01-01
        • 1970-01-01
        • 2012-09-10
        • 1970-01-01
        • 1970-01-01
        • 2010-12-02
        相关资源
        最近更新 更多