假设我在Haskell或Erlang中编写了一个应用程序(或者其他任何内容,无所谓),我希望它能用更友好的语言(我的观点)与我的gui一起工作。让我们说Python。如何粘这两个?您将如何在这两个应用程序之间进行通信?制作某种服务器或什么?这种解决方案很受欢迎吗?我见过像SMplayer这样的东西,它是mplayer的gui,它的效果非常好。您对这种设计有何看法?
答案 0 :(得分:19)
我使用两种方法(客户端/服务器,本机)在Haskell中编写应用程序,并且它们都具有{dis}优势。我意识到这更多是你所要求的,但我已经记录了这两种方法的优点和缺点,希望它能帮助你做出更明智的决定。
更具体地说,我使用的方法是:
第一种方法的优点是:
第一种方法的缺点是:
第二种方法的优点是:
第二种方法的缺点是:
希望这不是TMI。
-deech
[1] http://www.google.co.uk/search?hl=en&as_sitesearch=hackage.haskell.org%2Fpackage&as_q=json
[3] http://www.haskell.org/haskellwiki/Software_transactional_memory
答案 1 :(得分:2)
你可以这样做:
此方法由gdb(core)/ ddd(GUI)使用。 这使您可以轻松调试commande线上的核心。 使用这种方法,您还可以使用核心,单元测试等轻松完成批处理脚本。
答案 2 :(得分:1)
如果用gui友好语言表示使用Visual GUI Designer,那么你仍然可以在haskell中使用它。 2个主要的linux GUI框架,GTK和QT都有视觉设计师,你可以使用他们从haskell生成的GUI文件。
查看gtk2hs或qthaskell库。
答案 3 :(得分:1)
Thrift支持Haskell,Erlang和Python:
Thrift是一个软件框架 可扩展的跨语言服务 发展。它结合了一个软件 堆栈与代码生成引擎 构建有效工作的服务 并且在C ++,Java之间无缝地, Python,PHP,Ruby,Erlang,Perl, Haskell,C#,Cocoa,JavaScript, Node.js,Smalltalk和OCaml。
答案 4 :(得分:0)
您有两个明显的选择:
如果所涉及的语言适合,通常选项1是优选的。
答案 5 :(得分:0)
它将取决于您想要用于GUI和逻辑的确切语言。正如大卫回答的那样,你基本上只有这两种选择,而且它们都有优点和缺点:
将所有内容放在一个应用程序中是性能最佳的,因为当您调用另一种语言时,它将不会等到另一个进程获得控制权,然后不会等待您的进程获得再次控制以获得答案。如果您可以将语言嵌入另一种语言中,这也是最简单的解决方案,那么根据定义它们将在同一个过程中运行。
如果你一直在“逻辑”过程中做很多事情,那么使用不同的过程可能会很好,但是希望gui仍能保持响应。 (虽然这也可以通过线程实现,在一个过程中)。此外,如果您无法嵌入语言,这将是最简单的解决方案。 (例如,使用IPC的简单套接字,它几乎存在于所有语言中,并且是真正可移植的。(对于像管道或共享内存这样的东西不是这样)
所以这取决于您选择的语言。