代码之家  ›  专栏  ›  技术社区  ›  gour

Haskell还是D用于GUI桌面应用程序?

  •  15
  • gour  · 技术社区  · 14 年前

    我喜欢haskell和许多与之相关的东西,比如它的类型引擎,Hackage的很多包,很好的社区,活跃的开发等等。

    我们希望开发需要数据库后端(可能是sqlite3)的通用桌面应用程序,将C-lib用于一些广泛的计算任务(星历计算),并使用Qt工具箱,因为我们希望将来为MeeGo提供“light”版本。

    能够很容易地记录源代码以及维护是重要的因素,因为我们的功能列表很长,考虑到我们将在空闲时间开发,可能需要很长的时间来编写我们想要的一切。

    Python和其他脚本语言对于项目来说太慢了,我不想在这么多年之后回到C++,IOW,更喜欢更高级的编程……在没有太多细节的情况下,我也排除了一些其他的语言(Go,Culjule,java…),这将列表降到了Haskell Vs. D。

    关于D的一个担忧是最近QtD项目被暂停了,所以我很好奇在短期内是否可以将D算作适当的选择。

    编辑: post

    7 回复  |  直到 14 年前
        1
  •  6
  •   luqui    14 年前

    我对你的评论很谨慎:

    Python和其他脚本语言对此项目来说太慢

    Haskell以直截了当的风格编写,可能比python快不到一个数量级。通过挑剔Haskell程序的细节,可以使其与低级C程序一样快,但这很棘手,很耗时,并且需要大量有关GHC的代码生成机制的知识。

    你说你已经在使用C绑定了,那么速度有什么关系呢?我只是担心你在假设你没有检查的基础上扔掉了很多很棒的工具。听起来你更想要一个有强大库支持的工具。

    Scala,Scheme,C呢#/VB.NET版(单声道)?我无法想象有什么奇怪的标准会让你把选择权限制在哈斯克尔和D。

    也就是说,Haskell是一门伟大的语言。如果它适合你的项目,那就去做吧。只要打开你的思路一点,这样你就不会选择Haskell的地狱,当有一些其他的工具,可以让你做同样的结果10%的工作。

        2
  •  11
  •   Don Stewart    14 年前

    让我们梳理一下这里的一些要求,我会尽量让哈斯克尔的情况。或许D迷或其他人也可以这样做。

    • 桌面应用程序

    the Haskell Platform .

    Haskell的著名数据库后端,有着重要的用途 HDBC-* sqlite ,尽管有 many others

    在Haskell中使用数据库驱动应用程序的其他商业团体包括:Galois(我们的sqlite库链接在上面);Deutsche Bank(参见 talk );Hustler草皮设备(HDBC之家)。

    • C库(因此FFI绑定)

    • Qt的使用

    qtHaskell 是为商业应用而开发的,由。 JoyRide Labs 为了他们的商业游戏。

    Haddock 广泛应用。其他分析工具,如: graphmod sourcegraph 也有助于需求文档。

    一些商业用户认为,纯类型和强类型可以减轻长项目周期中应用程序的维护负担,因为它们更容易对代码进行本地、安全的更改。纯度降低了组件之间的复杂性,类型确保重构是合理的。

    • 其他事实

    experience reports

        3
  •  3
  •   Corbin March    14 年前

    编程语言不是像女朋友、三明治和嘉年华游乐设施吗?一旦你消除了这些垃圾,你最喜欢的东西更多的是关于你而不是他们。

    因为Haskell和D都不是垃圾,它们都能够处理您提到的项目(除了现成的Qt支持—如果您确实需要它,D可能不起作用),所以请花点时间找出最适合您和您的特质的方法。用每种语言建立一个原型。从sqlite获取一些数据并在gui中显示。如果您还没有决定,请在不同的操作系统上构建每个原型,以确保跨平台开发是您所期望的。

    我们可以重复我们所听到的关于鱼子酱和分享我们的个人经验,但你必须尝试它,以知道你是否喜欢它。

        4
  •  1
  •   Roman A. Taycher    14 年前

    上一次我听说gtk+和wxWidget haskell绑定比qt绑定使用得更广泛(可能没有bug)。

    qt java bindings-qtjambi ,看看他们的网站,似乎它是相当好的社区支持(他们已经有了4.7测试版)。

        5
  •  1
  •   Nylus    14 年前

    我最近开始学习Haskell,并为一个简单的例子测量计时,这个例子在“学好Haskell”中找到。这个例子写出了所有整数边小于400的矩形(在教程中它小于10,现在我知道为什么了)。WinGHCi中的计时时间为>34s(在6核3.3 Ghz AMD、64位Windows7上),更不用说内存使用为~6GB。为了比较,我在艾达(三重嵌套循环)中编写了这个程序,时间是0.1s。我想你应该节省很多的麻烦,选择D是和艾达/C++一样的(实际上它从艾达那里借了很多),但是有很多现代的特性和非常好的免费编译器。最近有一本亚历山德雷斯库写的关于D的书,读了其中的一部分后,我可以证明你可以在几周内(而不是在Haskell的情况下几年)完全学会这门语言。

        6
  •  -1
  •   Porculus    14 年前

    Haskell和D都不受欢迎,因此你很可能会吸引其他开发者加入你的项目,除非你认为你正在开发一个杀手级的应用程序,它对你的语言来说就像Rails对Ruby一样。

        7
  •  -1
  •   Lothar    14 年前

    我想告诉你我为什么不在项目中使用D:

    llvm编译器有缺陷,只能在D2.0的子集下稳定运行。这个项目似乎有一个维护人员,但进展缓慢。

    对32位英特尔以外的任何东西的支持都很弱。我不确定amd64,我认为ARM永远也没有得到支持的希望。

    基于此,我完全不希望D有足够的开发人员来为一家开发更大的任务关键型应用程序的公司选择一种节省语言。你会与工具链战斗,甚至祈祷回到C++经常。

    我不能评论Haskell,否则你不应该期望程序员成为Haskell专家。这可能是他们辞职的原因——对我来说肯定是个原因。