Common Lisp를 실제로 사용하는 방법을 배울 수있는 곳
저는 Common Lisp를 배우려는 C ++ 프로그래머입니다. 저는 Land of Lisp와 같은 책을보고 Lisp의 다양한 장점에 대한 수많은 온라인 기사를 읽었습니다. 하지만 조언이 필요합니다.
내가 Common Lisp에 대해 읽은 거의 모든 것은 그것이 얼마나 놀라운 지, 얼마나 빨리 작업을 수행 할 수 있는지, 그리고 30 년 전 현대 프로그래밍 언어의 많은 문제를 어떻게 해결했는지와 관련이 있습니다. 또한 매크로가 얼마나 놀라운 지, 모든 프로그래밍 패러다임 (OO, 기능, 행위자 기반 등)이 Lisp에서 어떻게 사용될 수 있는지, 그리고 목록이 궁극적 인 데이터 구조 인 방법도 있습니다. 기본적으로 Lisp를 연구 언어처럼 취급하고 그것이 얼마나 다르고 혁명적인지 말합니다.
그리고 그 모든 것들은 아마도 사실 일 것입니다. 그러나 문제는 파일을 읽고 그것을 단어로 나누고 그것에 대해 처리하는 것과 같은 실용적인 일을하는 방법을 많이 보지 못했다는 것입니다. 저는 Common Lisp를 배우기 위해 Common Lisp를 배우는 데 관심이 없지만 C ++에서하던 일을 더 빠르고 더 적은 오류로 처리하기 위해서입니다.
그래서 제 질문은 Common Lisp를 사용하여 다음 과 같은 일반적인 프로그래밍 작업을 수행하는 방법을 가르치는 데 초점 을 맞춘 최고의 리소스 (웹 사이트, 책 등) 가 무엇인지입니다.
- 파일 읽는 방법
- 파일을 읽고, 파일의 단어를 바꾸고, 결과를 파일에 다시 쓰는 방법
- 디렉토리 및 기타 파일 시스템 항목의 파일 반복
- SQL db와 상호 작용
- 소켓을 통한 통신 수행
- 웹 서버와 같은 것을위한 스레딩
- GUI 생성
- 바이너리 파일에 대한 작업 수행
- 파서를 작성하십시오 (Lisp의 Lisp에 대한 인터프리터가 아닙니다. 이는 Lisp의 5 줄과 같습니다)
- 운영 체제 (예 : C 또는 C ++로 작성된 항목)와 상호 작용하여 Lisp가 기본적으로 수행 할 수없는 작업을 수행합니다.
- Lisp 확장을 C로 작성하는 방법 (가능합니까?)
- 루아 인터프리터 삽입 (가능합니까?)
또한 그러나 그처럼 리스프의 목록 작업을 사용 할 수있다 등 힙, 스택, 이진 검색 트리로 혀짤배기에서 일반적으로 데이터 구조를 구현하는 방법을 덜 즉시 실제 노트에 car그리고 cdr올바른 방법으로. 모르겠어요.
나는 이것들 중 어느 것이 (목록의 마지막 두 개를 제외하고는) 불가능하거나 사람들이 너무 좋아하지 않을 것이라고 매우 의심합니다. 앞서 읽은 내용은 Lisp로 작성된 많은 실제 소프트웨어를 언급합니다 (Yahoo! 웹 스토어가 떠 오릅니다).
그러나 이전에 ( the? ) 명령형 언어로 프로그래밍을 했으므로 실제 응용 프로그램을 작성하기 위해 얻은 새로운 지식을 사용하고 싶습니다. 그렇다면 Lisp로 실용적인 소프트웨어 작성을 배우는 가장 빠른 방법은 무엇일까요?
그건 그렇고, 나는 Peter Seibel의 Practical Common Lisp를 보았지만 TOC로 판단 하면 Lisp를 사용하여 배우고 싶은 것들 중 일부 에 대해서만 다룹니다 .
내가 할 수 있다면 하나 더 질문 (두 질문을 하나로 결합하는 경우 죄송합니다), Lisp의 기능 및 물건에 대한 참조를 어디서 찾을 수 있습니까?
그리고 저는 Lisp를 정말 좋아하고 싶습니다.
나는 이미 몇 가지 질문에 답하기 때문에 ' Practical Common Lisp '를 읽을 것을 제안 합니다.
읽어야 할 책이 3 ~ 4 권 정도 있습니다 .
- Common Lisp 기본 소개 : Common Lisp : 기호 계산에 대한 간단한 소개
- Common Lisp에 대한 실용적인 입문 : Practical Common Lisp
- 고급 Common Lisp : 인공 지능 프로그래밍의 패러다임 : Common Lisp의 사례 연구 . 이 책은 AI가 아닌 프로그래머에게도 흥미 롭습니다.
- 많은 실용적인 조언 : Common Lisp Recipes .
공통 Lisp 참조
- 참조 : Common Lisp HyperSpec
- 인쇄 가능한 빠른 참조 : Common Lisp 빠른 참조
- 문서 검색 엔진
- L1sp.org- 문서 리디렉션 서비스
매뉴얼
이제 다음으로 확인해야 할 것은 Lisp 구현 매뉴얼입니다. 네트워킹, 스레드 등 많은 특정 확장을 설명합니다.
Common Lisp 구현에 대한 문서 :
SLIME (Emacs 기반 Lisp-IDE)에는 SLIME 사용 설명서가 있습니다.
Common Lisp 라이브러리에 대한 문서 :
도서관
도서관 사용
- Quicklisp : 지원되는 라이브러리 .
- CLIKI (일부 개요 제공)
이제 몇 가지 요점을 살펴 보겠습니다.
- 파일 읽는 방법
HyperSpec 에서 파일 및 스트림 사전을 참조하십시오 . WITH-OPEN-STREAM, READ, READ-LINE, READ-CHAR, READ-BYTE, READ-SEQUENCE, ...
- 파일을 읽고, 파일의 단어를 바꾸고, 결과를 파일에 다시 쓰는 방법
위에서 사용하십시오. 참조 : 쓰기 및 관련.
- 디렉토리 및 기타 파일 시스템 항목의 파일 반복
위 참조. 디렉토리, 경로 이름, ...
- SQL db와 상호 작용
예를 들어 CLSQL 라이브러리를 사용하십시오.
- 소켓을 통한 통신 수행
Lisp 설명서를 참조하거나 휴대용 라이브러리 중 하나를 사용하십시오. Quicklisp를 참조하십시오.
- 웹 서버와 같은 것을위한 스레딩
Lisp 설명서를 참조하거나 휴대용 라이브러리 중 하나를 사용하십시오. Quicklisp를 참조하십시오.
- GUI 생성
Depends. See Quicklisp or an implementation specific library.
- Perform operations on binary files
See Hyperspec for file and stream operations. WRITE-BYTE, READ-BYTE. Open a stream as a binary stream.
- Write a parser (not an interpreter for Lisp in Lisp, which as I understand is like 5 lines of Lisp)
Use one of the existing tools for that. Study existing parsers. There are many parsers written in Lisp, but not much in books about that (other than natural language parsers, which are described in the AI literature).
- Interact with the operating system (i.e. stuff written in C or C++) to do stuff Lisp can't do natively
Depends. See Quicklisp or an implementation specific library.
- How to write Lisp extensions in C (is that possible?)
Depends. See Quicklisp or an implementation specific library. -> FFI
Final advice: Read code from other authors.
Study other Lisp code. There is enough very diverse Lisp code out there. From web servers to music composition software.
Check out Cliki the Common Lisp wiki it provides a list of libraries available for Common Lisp which will help you accomplish all your items.
Also, you're going to want to check out the Common Lisp Cookbook (there's also a more updated version). It has a bunch of code for common tasks such as reading a file one line at a time, and Foreign Function Interfaces for interacting with libraries written in C.
You can write extensions for Lisp in C depending on which implementation you're using. Emacs-Lisp for example allows you to do that though it isn't Common Lisp. Usually what you want to do is write the code in Common Lisp and then optimize it as much as possible using different Lisp compiler declarations, or the other method where you use a foreign function interface.
Threading depends on which implementation you use, but I think most of them have threads now.
Hunchentoot is one of the best Lisp web servers and is pretty easy to get started with. You don't have to write any threading code yourself, you just have to write the HTTP request handler functions.
Someone compiled a list of GUI options for Lisp:
- cl-gtk2, an interface to the GTK gui library
- McClim
- Garnet
- Common Qt
- EQL
참고URL : https://stackoverflow.com/questions/7224823/where-to-learn-how-to-practically-use-common-lisp
'Program Club' 카테고리의 다른 글
| Apache로 속도 제한을 어떻게 구현할 수 있습니까? (0) | 2020.10.12 |
|---|---|
| C ++ 용 LINQ 라이브러리가 있습니까? (0) | 2020.10.12 |
| JDK 8의 기본값은 Java의 다중 상속 형태입니까? (0) | 2020.10.12 |
| Gradle 기반 구성을 사용할 때 Android Studio (IntelliJ)에서 간단한 JUnit 테스트 실행 (0) | 2020.10.12 |
| HTML5 기록 popstate에서 브라우저 스크롤 방지 (0) | 2020.10.12 |