使用Haskell,wxWidgets(通过wxHaskell)或GTK(通过Gtk2HS)开发GUI应用程序哪个更好?
各自的优缺点是什么?它是否取决于您所针对的平台(我主要是在OS X上工作,但也希望我的程序也可以在Linux和Windows上工作)?
最佳答案
[免责声明:我是wxHaskell的维护者]
两者都是稳定且相当完整的GUI绑定(bind),您可以放心选择大多数项目。两者都有一定程度的“高级” Haskell绑定(bind),但是在两种情况下,您都需要使用相当必要的“C”样式编码才能完成任务。我的印象是wxHaskell允许您在更高级别的绑定(bind)上花费更多的时间,但是我并没有做太多的GTK2HS,无论如何,您肯定会发现自己在这两个库的包装器的薄端工作-而且我认为两种情况下整体编程的“复杂性”都是相似的。
因此,让我们将基本功能视为既定功能,并专注于差异。请注意,我真诚地相信GTK2HS是一项出色的工作,如果您选择它,您会感到很高兴。我在下面说的大部分都是对差异的个人看法,以及为什么我选择自己和wxHaskell一起工作。
GTK2HS拥有一个更大的团队,并且会定期发布。 wxHaskell的更新频率不高,但是核心团队很活跃,并且有定期的错误修复,但是主要的新功能添加得比我们想要的要慢得多(我们都有日常工作)。
wxHaskell可以在所有受支持的平台上提供真正的本机应用程序外观。 GTK2HS当然是Linux上的本机,在Windows上有一个很好的本机主题(即足以满足除脚踏车之外的所有人...),但在OSX上具有GTK外观,并且取决于是否安装了X11。我相信OSX“本机” GTK库正在开发中,但被认为相对不成熟。一旦稳定,GTK2HS应该能够轻松地从相同的“部分本地”外观(例如GTK OSX screenshot)中受益。
如果您不在Linux上,则wxHaskell可能会更容易构建(如果您在Linux上托管,则GTK2HS可能会更容易),但是老实说,两者的构建都相当复杂,因为在两种情况下都存在大量依赖项。
基于wxHaskell分发应用程序比较容易(IMHO),这仅仅是因为它具有较少的库依赖关系。我主要在Windows上使用InnoSetup分发应用程序,并在OSX上作为应用程序 bundle 包分发。我承认,仅需少量的额外工作,就可以对GTK2HS进行相同的操作,因此这可能是支持wxHaskell的最弱论点。
我个人认为wxHaskell对封闭源代码(例如商业)开发更友好。当然,这是无休止的火焰 war 的主题,所以我只想说wxHaskell在wxWidgets license下,它明确允许进行闭源开发。 GTK2HS是LGPL,因此您需要咨询您的律师-尽管我必须明确指出,许多人和公司都得出结论LGPL与商业开发兼容;我所工作的公司的律师得出的结论是,这不适合我们的项目。
我认为,如果Linux是我的主要开发和交付平台,那么我可能会使用GTK2HS。但是,事实并非如此:我主要通过偶尔的OSX向Windows提供产品,我认为wxHaskell更适合这些平台,尽管这两个选项都支持这三个平台。
希望这会对您的选择有所帮助。
关于user-interface - wxHaskell和Gtk2HS的相对优点是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/553317/