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

是否可以为多个平台部署通用的Lisp(或其他方言)桌面应用程序?

  •  14
  • alvatar  · 技术社区  · 16 年前

    我想开发一个通用Lisp或其他Lisp语言的图形应用程序,可以部署在Mac、Windows和Linux中,以提高我对该语言的了解。理想的:

    1. 会编译代码
    2. 将使用通用图形库
    3. 不需要安装运行时环境。

    我想做一个小游戏或图形应用程序,并能够显示它与这些操作系统中的任何一台计算机简单安装。

    有人在类似情况下有经验,或者可以给我指出图形库和编译器、运行时环境等的最佳选择。

    谢谢!

    7 回复  |  直到 16 年前
        1
  •  19
  •   justinhj    16 年前

    我是目前托管在谷歌代码上的LispBuilderSDL的开发人员之一。

    alt text http://img10.imageshack.us/img10/7664/mandelbrot.jpg

    http://code.google.com/p/lispbuilder/

    这为您提供了一种在Linux、Windows和Mac计算机上运行通用Lisp程序而不进行修改的方法。我们使用SDL库及其各种扩展。

    最小程序如下所示:

    (sdl:with-init ()
      (sdl:window 320 240)
      (sdl:draw-surface (load-image "lisp.bmp"))
        (sdl:with-events ()
          (:quit-event () t)
          (:video-expose-event (sdl:update-display))))
    

    wiki还解释了如何为各种常见的Lisp实现构建自包含的exe。

        2
  •  9
  •   Rainer Joswig mmmmmm    16 年前

    最常见的Lisp实现可以转储可执行映像。有时这是两个文件(内核+映像),但通常这只是一个可执行文件。但可执行文件通常只在编译它的平台上运行。像lispworks或allegro cl这样的商业实现具有扩展功能——例如,可以删除lisp系统中未使用的部分。这叫做“交货”。

    有一些关于 LispWorks applications . LispWorks是商业的,覆盖平台可能很昂贵。您必须购买开发环境—在流行的平台上,交付是免费的。LispWorks有一个图形库,用于Windows、Mac和Unix/Linux。后者基于古老的主题。其优点是代码可以在平台上非常移植。LispWorks开发环境本身就是一个LispWorks应用程序。例如,在Mac上,32位版本和64位版本从单个应用程序同时在PowerPC和x86上运行。

    有关通用Lisp和库的“免费”版本的信息收集在 CLIKI . 不过,编写MS Windows应用程序并不是“免费”通用Lisp中最强大的部分。

        3
  •  6
  •   Steven Huwig    16 年前

    PLT Scheme 能做你要求的一切。它开箱即用的库是wxwindows,但是如果您真的想,您可以为其他GUI系统获取绑定。

    PLT方案可能是Lisp中最容易编写和分发“一个小游戏或图形应用程序”的工作,其中包括许多 examples of games 在基础发行版及其旗舰版的IDE中,DRScheme是自己编写的。 graphics framework . 它可以自由地在任何平台上创建和分发编译的PLT方案代码。

    编辑:你要的是口齿不清的方言。clojure也是一种选择吗?

    编辑2:

    你说过clojure是一种选择。如果你已经很熟悉Java和Swing,我认为Culjule是一个很好的去处——告诫它与其他Lisp有很大的句法差异。 A book is forthcoming .

    如果你还不是一个Java专家,我认为PLT计划仍然是最好的选择。我是从“刚刚开始学习Lisp”和“小型演示应用程序”的角度来讨论这个问题的。其他人已经注意到,商业通用的Lisp实现支持您想要的,但是这些实现将更难(也更昂贵)用作介绍性系统。

    所有这些实现都有宏系统,我认为这就是您所说的“代码是一流的”。

        4
  •  4
  •   simon    16 年前

    雷纳对基本问题有一个很好的评价:有很好的商业解决方案可以满足你的要求(但它们不是免费的开发环境,可能涉及经常性的费用),有很好的跨平台库支持。还有一些免费的软件方法,但是根据您的需要,在所有三个平台上交付更为困难(不是不可能的,而是更为费心的)。

    不过,我还要补充一点,“不安装运行时环境”有点问题。您当然不需要让最终用户单独安装一个lisp,但是您的程序可能需要安装整个运行时才能工作,这取决于您所做的工作。这一级别的灵活性意味着很难通过编程确定哪些位是需要的,哪些位是不需要的,这就是为什么自由软件解决方案通常不需要编写一个摇树器来完成这项有点繁琐和棘手的工作。

        5
  •  3
  •   Julian Squires    16 年前

    我目前正在做的是,对于一个使用OpenGL和GLFW的图形应用程序,主要是使用SBCL开发,并通过 cl-launch . 但是,我的计划是使用 CCL 在OS X上构建应用程序包,以及 ECL 在Linux和Windows上构建独立的可执行文件。我目前正在构建的cl启动捆绑包相当大(通常为30米及以上),而我用ecl进行的测试则要小得多(libecl在我的系统中的权重约为1.3米)。不过,我希望SBCL的表现会更好(尽管我会先介绍一下以确保这一点!),因此您的选择将取决于您的应用程序。

    但是,如果我在商业上这样做,我将投资于其中一个商业实现。雷纳·乔斯威格在上面提到了里斯沃克斯和阿莱格罗。对于Windows应用程序交付,您还可以考虑 Corman Lisp . 我的印象是,在这三个操作系统之间进行应用程序交付的最快但最昂贵的途径是购买Allegro,但另一种选择(更多的工作,但更便宜)是在OS X上使用CCL,在Win32上使用Corman,在Linux上使用ECL或SBCL。LispWorks似乎是两者之间的一个选择,尽管很多人都对它发誓,所以我不会因为它更便宜而认为它不如Allegro。

    图形库的问题是不同的;我的印象是情况在不断改善(CFFI中的回调现在似乎可以在大多数平台上工作,这对大多数C工具包的接口都有很大帮助),但我一直在与GL、GLFW、GLUT和SDL(尽管还没有与LispBuilder合作,Justinhj提到过,后者是LooKS酷)。我做了一点实验 wxCL 一两年前,这似乎很有希望。

    关于cl的好处在于,有了这么多好的实现,您可以在自己选择的实现中进行开发,并且您的大多数代码应该很容易移植到您选择在给定平台上进行应用程序交付的任何实现中。

        6
  •  1
  •   Svante    16 年前

    ECL ,一个常见的Lisp实现,它似乎可以满足您的需要(不过,我还没有使用它)。

        7
  •  1
  •   lev    14 年前

    ecl lisp可以编译非常小的可执行文件(几Kbs),但是在Ubuntu上,为了执行这个可执行文件,必须在/usr/local/lib目录中有lib ecl.so.11.1文件。此文件为5.7 MB。