book - ubuntu common lisp




Common Lisp을 실제로 사용하는 방법을 배울 곳 (2)

나는 당신의 질문 중 일부에 이미 답했기 때문에 ' Practical Common Lisp '을 읽을 것을 제안 할 것이다.

아마 3 ~ 4 권의 책을 읽어야합니다 .

Common Lisp Reference

매뉴얼

이제 당신이 체크 아웃해야 할 것은 Lisp 구현 매뉴얼이다. 그것은 특정 확장 기능을 많이 설명 : 네트워킹, 스레드, ...

Common Lisp 구현을위한 문서화 :

SLIME (Emacs 기반 Lisp IDE)에는 SLIME 사용자 설명서가 있습니다.

Common Lisp 라이브러리에 대한 문서 :

도서관

도서관 이용시

이제 몇 가지 사항을 살펴보십시오.

  • 파일을 읽는 방법

HyperSpec 의 파일 및 스트림 사전을 참조하십시오. WITH-OPEN-STREAM, READ, READ-LINE, READ-CHAR, READ-BYTE, READ-SEQUENCE ...

  • 파일을 읽고, 단어를 바꾸고, 결과를 다시 파일에 쓰는 방법

위에 사용하십시오. 참고 : WRITE 및 관련.

  • 디렉토리 및 다른 파일 시스템에있는 파일을 반복합니다.

위 참조. 디렉토리, 경로 이름, ...

  • SQL DB와 상호 작용

예를 들어 CLSQL 라이브러리를 사용합니다.

  • 소켓을 통한 통신 수행

Lisp의 매뉴얼을 보거나 이식 가능한 라이브러리 중 하나를 사용하십시오. Quicklisp을 참조하십시오.

  • 웹 서버와 같은 것들을위한 스레딩

Lisp의 매뉴얼을 보거나 이식 가능한 라이브러리 중 하나를 사용하십시오. Quicklisp을 참조하십시오.

  • GUI 생성

달려있어. Quicklisp 또는 구현 관련 라이브러리를 참조하십시오.

  • 바이너리 파일에 대한 작업 수행

파일 및 스트림 조작에 대해서는 Hyperspec을 참조하십시오. WRITE-BYTE, READ-BYTE. 스트림을 바이너리 스트림으로 엽니 다.

  • 파서를 작성하십시오 (Lisp의 해석기가 아닙니다. Lisp의 5 행과 비슷합니다).

이를 위해 기존 도구 중 하나를 사용하십시오. 기존 파서를 연구합니다. Lisp로 작성된 파서가 많이 있지만, 그것에 관한 책에는 그다지 많은 파서가 존재하지 않습니다 (인공 지능 문학에 설명되어있는 자연어 파서는 제외).

  • Lisp이 기본적으로 할 수없는 것들을하기 위해 운영체제 (예 : C 또는 C ++로 작성된 것들)와 상호 작용하십시오.

달려있어. Quicklisp 또는 구현 관련 라이브러리를 참조하십시오.

  • C에서 Lisp 확장을 작성하는 방법 (가능한가?)

달려있어. Quicklisp 또는 구현 관련 라이브러리를 참조하십시오. -> FFI

최종 조언 : 다른 저자의 코드를 읽으십시오.

다른 Lisp 코드를 공부하십시오. 거기에는 매우 다양한 Lisp 코드가 있습니다. 웹 서버에서 음악 작곡 소프트웨어.

저는 Common Lisp을 배우려고하는 C ++ 프로그래머입니다. 나는 Lisp의 Land와 같은 책을보고 Lisp의 다양한 장점에 대한 수많은 온라인 기사를 읽었습니다. 그러나 몇 가지 조언이 필요합니다.

Common Lisp에 관해 읽은 거의 모든 내용은 놀랍도록 빠른 방법과 30 년 전에 현대 프로그래밍 언어로 많은 문제를 놀라 울 정도로 해결 한 방법에 대해 설명합니다. 또한 매크로가 얼마나 놀랍으며, 모든 프로그래밍 패러다임 (OO, 기능, 액터 기반 등)을 Lisp에서 사용할 수있는 방법과 목록이 궁극적 인 데이터 구조 인 방법에 대해서도 설명합니다. 기본적으로 리서치 언어와 같은 Lisp를 다루고 그것이 얼마나 다양하고 혁명적 인지를 말합니다.

그리고 그 모든 것들은 아마도 사실 일 것입니다.하지만 문제는 파일을 읽고 단어로 나눠서 처리하는 것과 같은 실제적인 일을하는 방법을 많이 보지 못했다는 것입니다. 나는 Common Lisp을 배우기 위해 Common Lisp을 배우는 것에는 관심이 없지만, C ++에서 사용했던 것을 얻기 위해 더 빠르고 오류가 적다.

그래서 내 질문은 Common Lisp을 사용하여 일반적인 프로그래밍 작업을 수행하는 방법을 가르치는 데 중점 최고의 리소스 (웹 사이트, 책, 기타)가 무엇인가 하는 것입니다.

  • 파일을 읽는 방법
  • 파일을 읽고, 단어를 바꾸고, 결과를 다시 파일에 쓰는 방법
  • 디렉토리 및 다른 파일 시스템에있는 파일을 반복합니다.
  • SQL DB와 상호 작용
  • 소켓을 통한 통신 수행
  • 웹 서버와 같은 것들을위한 스레딩
  • GUI 생성
  • 바이너리 파일에 대한 작업 수행
  • 파서를 작성하십시오 (Lisp의 해석기가 아닙니다. Lisp의 5 행과 비슷합니다).
  • Lisp이 기본적으로 할 수없는 것들을하기 위해 운영체제 (예 : C 또는 C ++로 작성된 것들)와 상호 작용하십시오.
  • C에서 Lisp 확장을 작성하는 방법 (가능한가?)
  • lua 인터프리터 내장 (가능합니까?)

그리고 덜 즉각적으로 실용적인 노트에서, 힙, 스택, 바이너리 검색 트리 등과 같은 일반적인 데이터 구조를 리스프에 구현하는 방법도 있습니다. 그러나 Lisp의 list 연산 인 carcdr 을 올바른 방법으로 사용할 수 있습니다. 나는 모른다.

필자는 Lisp에서는이 중 (목록의 마지막 두 개를 제외하고는) 거의 불가능하다고 생각하거나 사람들이 그다지 좋아하지 않을 것이라고 매우 의심한다. 그리고 내가 읽은 전술 한 것들은 Lisp (야후 웹 스토어를 염두에두고)로 작성된 많은 실제 소프트웨어를 언급합니다.

그러나 (이전의) 명령형 언어로 프로그래밍하는 데있어, 실제 응용 프로그램을 작성하기 위해 내가 얻은 새로운 지식을 사용하는 데 관심이 있습니다. Lisp을 사용하여 실용적인 소프트웨어를 작성하는 법을 배울 수있는 가장 빠른 방법은 무엇입니까?

그런데 필자는 Peter Seibel의 Practical Common Lisp 을 보았습니다 만, TOC로 판단 할 때, Lisp을 사용하는 법을 배워야 할 부분에 대해서만 다루었습니다.

내가 두 가지 질문을 하나로 합치면 유감스럽게 생각합니다. Lisp의 기능과 재료에 대한 참고 자료는 어디에서 찾을 수 있습니까?

그리고 저는 Lisp을 정말 좋아하고 싶습니다.


CLIKI 확인 CLIKI 사용할 수있는 라이브러리 목록을 제공하므로 모든 항목을 수행하는 데 도움이됩니다.

또한 Common Lisp Cookbook (더 많이 업데이트 된 버전이 있음 )을 확인하고 싶을 것입니다. 한 번에 한 줄씩 파일읽는 것과 같은 일반적인 작업을위한 코드 모음과 C로 작성된 라이브러리와 상호 작용하는 Foreign Function Interfaces가 있습니다.

사용중인 구현에 따라 Lisp 확장을 C로 작성할 수 있습니다. 예를 들어 Emacs-Lisp은 Common Lisp가 아니지만 그렇게 할 수 있습니다. 일반적으로 Common Lisp에 코드를 작성한 다음 다른 Lisp 컴파일러 선언을 사용하거나 가능하면 외국 함수 인터페이스를 사용하는 다른 방법을 사용하여 코드를 최적화하십시오.

스레딩은 사용하는 구현에 따라 다르지만 대부분 스레드에 스레드가 있다고 생각합니다.

Hunchentoot 는 최고의 Lisp 웹 서버 중 하나이며 매우 쉽게 시작할 수 있습니다. 스레딩 코드를 직접 작성할 필요는 없으며 HTTP 요청 처리기 기능 만 작성하면됩니다.

누군가 Lisp 용 GUI 옵션 목록을 컴파일 했습니다 .

  • cl-gtk2, GTK GUI 라이브러리에 대한 인터페이스
  • 맥 클림
  • 석류석
  • 일반적인 Qt
  • EQL