lisp - 활용 - 클로저 언어




Lisp에서(심각한) 웹 개발을하는 것이 타당한가? (8)

거의 모든 프로그래밍 언어에서 거의 모든 종류의 응용 프로그램을 작성할 수 있습니다. 특히 Lisp (Scheme 또는 Common Lisp이 될 수 있습니다.)과 같은 강력한 응용 프로그램에서 특히 그렇습니다. 그러나 웹 개발에 사용하는 것이 실용적인가요? 그렇다면 좋은 시작점은 무엇입니까? 이러한 성격의 프로젝트를위한 적절한 자원 (도구, 도서관, 문서, 모범 사례, 사례 등)은 어디에서 찾을 수 있습니까?


Allegro Common Lisp을 살펴보십시오. 웹 서버를 포함하여 웹 개발을위한 라이브러리가 있습니다.


Common Lisp의 웹 개발은 효과적이고 재미 있습니다.

몇 가지 예 :

CL-WHO 사용하면 닫는 태그를 다시 잊지 않고 HTML을 작성할 수 있습니다.

Weblocks 사용하면 내장 된 유효성 검사를 통해 선언적으로 양식을 정의 할 수 있습니다.

(defview signup (:type form :caption "Sign up")
  (username :satisfies #'valid-username)
  (password :present-as dual-password :parse-as dual-password)
  (receive-newsletter-p :present-as checkbox :parse-as predicate))

또한 AJAX를 완전 자동으로 지원합니다. 브라우저가 지원하지 않으면 일반 링크로 되돌아갑니다.

cl-prevalence 는 SQL에 대한 믿을 수 없을만큼 간단한 대안입니다.

최근 많은 사람들이 이러한 기술을 업무 핵심 응용 프로그램에 사용하고 있으며 성공을 거두고 있습니다.

실제로 CL 오픈 소스 프로젝트에서 가장 중요한 것은 지역 사회에서 우수한 지원을받는 프로젝트입니다.


나는 다른 프레임 워크와 이야기 할 수는 없지만 Hunchentoot 을 웹 서버에 사용하여 매우 좋았습니다 (자체적으로 잘 작동하거나 Apache에 넣을 수 있습니다). 정말로 그것을 빛나게하는 것은 (아마도 이것은 어떤 사람들에게는 충격이 될 것입니다) 도서관입니다!

  • CL-WHO 를 사용하여 Lisp 스타일의 구문으로 손쉽게 HTML을 작성하십시오.
  • Parenscript 는 자바 스크립트로 컴파일하는 코드를 작성할 수있게합니다.
  • 데이터베이스 연결을 위해서는 Postmodern 을 사용하여 PostgreSQL

웹에서 CL을 사용하는 것이 정말 마음에 드는 이유는 그것이 실행되는 동안 모두 CL을 조정할 수 있다는 것입니다. REPL을 항상 사용하고 서버 코드를 실행하면 REPL에 연결하여 코드를 작동 시키거나 변경하거나 검사 할 수 있습니다. 사이트가 실행되는 동안 함수를 재정의했습니다. 다음 번에 함수를 호출하면 새 코드가 선택되어 작동합니다.


나는 많은 사람들이 없이는 예스라고 말할 수 있다고 생각합니다.

  1. 첫 번째 HTTP 서버 중 하나가 cl-http

  2. DrScheme 을 둘러싼 사람들의 계획은 상당한 시간을 보냈습니다.

  3. www.franz.com은 자체 웹 서버 (AllegroServer) 및 웹 프레임 워크 (웹 액션)에서 실행됩니다.

  4. 의심스러운 경우 Edi Weitz의 공용 lisp 패키지를 확인하십시오. 그들은 보통 일한다.

그렇습니다. Common Lisp으로 "심각한"웹 프로그래밍을 할 수 있습니다. 나는 현재 일부 Common Lisp 경로 나 Ruby on Rails를 따르기 위해 미정이다. 나는 무엇보다도 .NET을 선호한다 .....


예, 웹 개발은 오늘날 Common Lisp의 강점 중 하나입니다.

  • 웹 서버로서 Ednund Weitz 박사가 이전에 tbnl이라고했던 Hunchentoot 사용하십시오.

    mod_proxy를 역방향 프록시로 사용하거나 독립 실행 형 서버로 사용하여 Apache의 백엔드로 실행할 수 있습니다.

  • PHP 스타일의 템플릿에서부터 Lisp 매크로 해킹, XSLT에 이르기까지 다양한 HTML 생성 솔루션을 사용할 수 있습니다. 그냥 골라주세요.

    HTML-TEMPLATE 가 하나의 예입니다.

  • Closure XML 은 XML 파싱, 직렬화, XPath 1.0, XSLT 1.0에 사용할 수 있습니다. 또한 HTML 태그 스프 핑 구문 분석을위한 Closure HTML도 있습니다.

    (완전 공개 : 저는 Closure XML과 Closure HTML의 관리자입니다.)

  • 원한다면, Parenscript 는 자바 스크립트 경험을 더욱 섬세하게 만들 수 있지만 물론 평범한 자바 스크립트를 직접 작성할 수도 있습니다.

    jwacs 또 다른 멋진 JavaScript 향상 솔루션. Common Lisp로 작성되었으며 JavaScript를 변환하여 연속 지원을 추가합니다.

  • 웹 서비스 프로젝트에는 서버 외에도 HTTP 클라이언트가 필요할 수 있습니다.

    Drakma 는 오늘날 그것을 위해 사용할 라이브러리입니다.

    PURI 는 URI 조작에 유용합니다.

    그리고 더 있습니다! 한 가지 출발점은 cliki입니다 (예 : cliki.net/web .

웹에서는 아무도 여러분의 서버가 Common Lisp로 작성되었다는 것을 알지 못합니다 :-)


웹 개발을위한 몇 가지 웹 프레임 워크가 있습니다. 다음을보십시오 :

잘 지원되는 lisp 도구를 원한다면 그 값을 지불해야합니다. 오픈 소스 도구에는 매우 큰 커뮤니티가 없으므로 Django on Python과 같은 수준의 문서화 / 채택이 없습니다.

다음은 상업용 리스프 제품입니다 :

또한 Reddit은 처음에 Lisp에 내장되었지만 저자는 나중에 잘 사용되고 문서화 된 라이브러리가 없다는 이유로 Python으로 마이그레이션했습니다. ( link )


이 질문 에서 Lisp 웹 애플리케이션을위한 툴링에 관한 몇 가지 정보를 찾을 수 있습니다.

또한 Reddit 사람들이 Lisp에서 웹 사이트를 실행하고 Python으로 전환 한 경험에 대해 조금 이야기하는 곳인 Podcast 27을 들어 볼 가치가 있습니다.


Paul Graham의 Viaweb Common Lisp에 제품썼고 그 후 Yahoo Shops가되었습니다. 분명히 Yahoo는 C ++로 다시 작성했습니다. Lisp 프로그래밍에는 꽤 많은 웹 리소스가 있습니다.