2009-04-05 2 views
14

이 언어에 대한 지식을 향상시키는 방법으로 Mac, Windows 및 Linux에 배포 할 수있는 Common Lisp 또는 다른 Lisp 언어로 그래픽 응용 프로그램을 개발하고 싶습니다. 이상적 :여러 플랫폼에 Common Lisp (또는 다른 dialect) 데스크탑 응용 프로그램을 배포 할 수 있습니까?

  1. 런타임 환경의 설치를 필요로하지 않을 일반적인 그래픽 라이브러리를 사용하는 것이 코드
  2. 를 컴파일 할 것이다.

작은 게임이나 그래픽 응용 프로그램을 만들고 싶습니다.이 운영 체제가 설치된 컴퓨터에 간단한 설치로 보여줄 수 있습니다.

사람이 비슷한 상황에 대한 경험이 있거나 ... 등 그래픽 라이브러리, 컴파일러, 런타임 환경의 최고의 선택에

감사를 날 지점 수 있습니다!

+0

"코드 컴파일"이란 기계 코드 생성을 의미합니까, 아니면 VM 바이트 코드입니까? –

+0

또한 바이트 코드가 VM에 의해 기계 코드로 JIT 컴파일되는 경우 어떻게해야합니까? –

+0

예, 괜찮습니다! 저는 언어 기능에 가장 관심이 있습니다. – alvatar

답변

19

저는 현재 Google 코드에서 호스팅되는 lispbuilder-sdl 개발자 중 한 명입니다.

이 당신에게 수정없이 리눅스, 윈도우 및 맥 컴퓨터에서 커먼 리스프 프로그램을 실행하는 방법을 제공 http://code.google.com/p/lispbuilder/

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

. 우리는 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)))) 

위키는 또한 커먼 리스프 구현의 다양한에 대한 exe 인의 포함 된 자아를 구축하는 방법에 대해 설명합니다.

+0

와우, 아주 좋습니다. 그것은 제가 LISP에 또 하나의 시도를하게하는 것입니다. – jfclavette

9

가장 일반적인 Lisp 구현은 실행 가능 이미지를 덤프 할 수 있습니다. 때로는이 두 파일 (커널 + 이미지)이지만 종종 이것은 하나의 실행 파일 일 수 있습니다. 그러나 실행 파일은 일반적으로 컴파일 된 플랫폼에서만 실행됩니다. LispWorks 나 Allegro CL과 같은 상용 구현체는 확장 된 기능을 가지고 있습니다. 예를 들어, Lisp 시스템의 사용하지 않는 부분을 제거 할 수 있습니다. 이를 '배송'이라고합니다.

LispWorks applications에 대한 정보가 있습니다. LispWorks는 상업용이며 커버링 플랫폼이 비쌀 수 있습니다. 인기있는 플랫폼에서는 무료로 제공되는 개발 환경을 구입해야합니다. LispWorks에는 Windows, Mac 및 Unix/Linux 용 그래픽 라이브러리가 있습니다. 후자는 오래된 모티브를 기반으로합니다. 장점은 코드가 플랫폼에 비해 매우 이식성이 있다는 것입니다. LispWorks 개발 환경 자체는 LispWorks 응용 프로그램입니다. Mac의 경우 32 비트 버전과 64 비트 버전은 단일 응용 프로그램에서 PowerPC와 x86 모두에서 실행됩니다.

Common Lisp 및 라이브러리의 '무료'버전에 대한 정보는 CLIKI에 수집됩니다. MS Windows 응용 프로그램을 작성하는 것은 '무료'Common Lisp의 가장 중요한 부분이 아닙니다.

6

PLT Scheme 당신이 할 수있는 모든 것을 할 수 있습니다. 기본적으로 사용하는 라이브러리는 WxWindows이지만 실제로 원하는 경우 다른 GUI 시스템에 대한 바인딩을 얻을 수 있습니다.

PLT Scheme은 아마도 "작은 게임이나 그래픽 응용 프로그램"을 작성하고 배포하는 데 가장 많은 노력을 기울이는 Lisp 일 것입니다. 그것들은 기본 배포판에 많은 examples of games을 포함하고 있으며 그 주력 IDE DrScheme은 그들 자신의 graphics framework으로 작성되었습니다. 모든 플랫폼에서 컴파일 된 PLT Scheme 코드를 생성하고 배포하는 것은 무료입니다.

편집 : 당신은 어떤 Lisp 방언을 요구했다. Clojure도 옵션일까요?

편집 2 :

당신은 Clojure가 옵션이라고 말했다. 이미 Java와 Swing에 대해 잘 알고 있다면 Clojure가 좋은 방법 일 것이라고 생각합니다. 다른 Lisps와 꽤 큰 구문상의 차이점이 있다는 경고가 있습니다. A book is forthcoming.

아직 Java 전문가가 아닌 경우 PLT Scheme이 최선의 선택이라고 생각합니다. 나는 이것을 "Lisp을 배우기 시작한 것"과 "작은 데모 응용 프로그램"각도에서 시작합니다.다른 사람들은 상업용 Common Lisp 구현이 원하는 것을 지원하지만 도입 시스템으로 사용하는 것이 더 어려울 (그리고 더 비싸다) 점에 유의했습니다.

이러한 구현에는 모두 매크로 시스템이 있습니다. 이는 "코드가 일류"라는 것을 의미합니다.

+2

Common Lisp이 아니기 때문에 downvoted라고 생각합니다. 질문은 방언을 묻습니다. –

+0

whups, 내 오해 독서. PLT는 좋은 시스템입니다. 상업용 소프트웨어 등을 제공하는 측면에서 일반적인 리스프는 훨씬 뛰어납니다. 결국 CL은 잘 계획된 산업 프로그래밍 환경입니다. 그래서 나는 그것이 OP가 필요로하는 것에 달려 있다고 생각합니다. – simon

+0

예, Clojure 및 PLT Scheme도 옵션입니다. 차이점에 대해서는 많이 알지 못하지만, Lisp과 마찬가지로 코드가 퍼스트 클래스라는 점도 중요합니다. – alvatar

4

Rainer는 근본적인 문제에 대해 좋은 의견을 갖고 있습니다. 플랫폼 간 호환이 잘되어있는 라이브러리를 사용하여 물어 보는 것과 똑같은 좋은 상용 솔루션이 있지만 (무료 개발 환경이 아니며 반복적 인 요금이 포함될 수 있습니다.) 또한 자유 소프트웨어 접근법이 있지만, 필요에 따라 3 가지 플랫폼 모두를 제공하는 것이 더 어렵습니다 (불가능하지는 않지만 더 많은 것을 배우는 것).

"런타임 환경을 설치하지 않음"은 다소 문제가 있지만 추가하겠습니다. 최종 사용자에게 Lisp를 별도로 설치할 필요는 없지만, 프로그램에 따라 작업 수행에 따라 전체 런타임을 필수적으로 설치해야 할 수도 있습니다. 이 수준의 유연성은 어떤 비트가 필요하고 필요하지 않은지를 프로그램 적으로 결정하는 것이 어려울 수 있다는 것을 의미합니다. 따라서 자유 소프트웨어 솔루션은 일반적으로 이렇게하기 위해 나무 쉐이커를 작성하는 다소 번거롭고 까다로운 작업을 신경 쓰지 않습니다.

+0

내 응용 프로그램으로 환경을 제공하는 것은 괜찮습니다. 사용자가 직접 완전히 설치하도록 강요하고 싶지는 않습니다. – alvatar

1

당신이 원하는대로 할 것 같은 Common Lisp 구현 인 ECL이 있습니다 (아직 사용하지는 않았지만).

3

OpenGL 및 GLFW를 사용하는 그래픽 응용 프로그램의 경우 현재 SBCL로 개발 중이며 cl-launch을 통해 테스터 공급을 제공하고 있습니다. 그러나 내 계획은 CCL을 사용하여 OS X에서 응용 프로그램 번들을 만들고, ECL을 사용하여 Linux 및 Windows에서 독립 실행 형 실행 파일을 빌드하는 것입니다. cl-launch로 현재 구축하고있는 번들은 상당히 크고 (일반적으로 30M 이상), ECL로 수행 한 테스트는 훨씬 더 작습니다 (libecl은 시스템에서 약 1.3M의 무게가 나옵니다). 그러나 SBCL의 성능이 향상 될 것으로 기대합니다 (우선 프로필을 작성 했음). 따라서 선택 사항은 응용 프로그램에 따라 다릅니다.

그러나 상업적으로 이것을 수행한다면 상용 구현에 투자 할 것입니다. Rainer Joswig는 위의 LispWorks와 Allegro에 대해 언급합니다. Windows 앱 전송의 경우 Corman Lisp도 고려해 볼 수 있습니다. 제 3의 OS를 통해 가장 빠르고 가장 비용이 많이 드는 경로는 Allegro를 구입하는 것이지만, OS X, Corman on Win32 및 ECL 또는 SBCL에서 CCL을 사용하는 것이 좋습니다. Linux에서. 많은 사람들이 맹세했지만 LispWorks는 선택의 여지가있는 것처럼 보입니다. 따라서 알레그로보다 열등한 가격으로 할인하지는 않습니다.

그래픽 라이브러리 문제는 별도입니다. 내 인상은 상황이 끊임없이 개선되고 있다는 것입니다 (CFFI의 콜백은 현재 대부분의 C 툴킷과 인터페이싱하는 데 큰 도움이되는 대부분의 플랫폼에서 작동하는 것 같습니다). 그러나 GL, GLFW, GLUT 및 SDL로 더 많은 작업을 해왔습니다. (비록 위의 justinhj에 의해 언급 된, lispbuilder로 아직은 멋지지 않지만). 나는 1 년 또는 2 년 전에 wxCL으로 조금 실험을 해봤고 유망 해 보였다.

CL에 대한 좋은 점은 많은 구현이 가능하므로 선택 구현에서 개발할 수 있으며 대부분의 코드는 특정 플랫폼에서 애플리케이션을 구현하기 위해 선택한 구현으로 쉽게 이식해야한다는 것입니다.

1

Ecl lisp는 매우 작은 실행 파일 (수 킬로바이트)을 컴파일 할 수 있지만 우분투에서는이 실행 파일을 실행하기 위해/usr/local/lib 디렉토리에 libecl.so.11.1 파일이 있어야합니다. 이 파일은 5.7MB입니다.

관련 문제