# 부록 (Addendum)
Ok, now lets talk about some issues that were glossed over in this tutorial...
자, 이제 이 튜토리얼에서 얼버무린 몇 가지 문제에 대해 이야기하겠습니다...
First of all, Clojure Lisp has a very well thought out system for defining variables and changing their value. In this tutorial, we use the def command exclusively to set and change the values of global variables to keep track of the state of our game world. You would almost never do this in a "real" Clojure program. Instead, you would want to read up on Refs (opens new window), Atoms (opens new window), and Agents (opens new window), which offer a much cleaner and thread-safe way of managing data in a Clojure program.
우선, Clojure Lisp는 변수를 정의하고 값을 변경하기 위해 매우 잘 고안된 시스템을 가지고 있습니다. 이 튜토리얼에서는 def 명령을 독점적으로 사용하여 게임 세계의 상태를 추적하기 위해 전역 변수의 값을 설정 및 변경합니다. "진짜" Clojure 프로그램에서는 이 작업을 거의 수행하지 않습니다. 대신, Clojure 프로그램에서 데이터를 관리하는 훨씬 깨끗하고 스레드 안전한 방법을 제공하는 Refs (opens new window), Atoms (opens new window) 및 Agents (opens new window)를 읽어보고 싶을 것입니다.
Another major cheat that we made in this tutorial is that we wrote our game sentences using symbols
이 튜토리얼에서 만든 또 다른 주요 치트 는 기호를 사용하여 게임 문장을 작성했다는 것입니다.
'(this is not how Lispers usually write text)
"Lispers write text using double quotes"
Symbols have a special meaning in Clojure (and other Lisps) and are used to store unique names of functions, variables, and other things. Because of this, Lisp treats symbols in special ways that are awkward for text messages. Using strings instead of symbols allows text we work with to not be affected by any such quirks, but requires more esoteric commands for manipulating text. Also, working with strings is not so relevant to teaching the far more important symbol manipulation commands in Lisp.
기호는 Clojure(및 기타 Lisps)에서 특별한 의미를 가지며 함수, 변수 및 기타 항목의 고유한 이름을 저장하는 데 사용됩니다. 이 때문에 Lisp는 문자 메시지에 어색한 특수한 방식으로 기호를 처리합니다. 기호 대신 문자열을 사용하면 작업하는 텍스트가 이러한 단점의 영향을 받지 않지만 텍스트를 조작하려면 더 난해한 명령이 필요합니다. 또한 문자열로 작업하는 것은 Lisp에서 훨씬 더 중요한 기호 조작 명령을 가르치는 것과 그다지 관련이 없습니다.
Another glossed over issue is that SPELs are more commonly referred to as "Lisp true macros" and are created with the defmacro
command, which is very confusing for teaching purposes. Read the following short essay (opens new window) as to why I think this name distinction is beneficial. And finally, there are ugly name collisions that can happen when a SPEL is written in the style of the game-action
SPEL. If you read more advanced lisp materials this will be explained in greater detail.
또 다른 간과된 문제는 SPEL이 더 일반적으로 "Lisp 트루 매크로"라고 불리며 defmacro
명령으로 생성된다는 점인데, 이는 교육 목적으로 매우 혼란스러울 수 있습니다. 이 이름 구분이 왜 유익하다고 생각하는지 다음의 짧은 에세이를 읽어보세요. 마지막으로, 게임 액션
스펠 스타일로 스펠을 작성할 때 발생할 수 있는 추악한 이름 충돌이 있습니다. 이 문제는 고급 리스프 자료를 읽으면 더 자세히 설명되어 있습니다.
Q. What should I read next to expand my knowledge of Lisp?
Q. Lisp에 대한 지식을 넓히려면 다음에는 무엇을 읽어야 하나요?
A. There are many great (and some downloadable) Lisp books available at the cliki website (opens new window).
A. cliki (opens new window) 웹사이트에는 훌륭한(그리고 다운로드 가능한) Lisp 관련 서적이 많이 있습니다.
If you're interested in the most intense theoretical text, I would recommend the free ebook version of On Lisp (opens new window) by Paul Graham. The other books he has written and the essays on his website are also fantastic.
가장 강렬한 이론 텍스트에 관심이 있으시다면 폴 그레이엄의 On Lisp (opens new window) 무료 전자책 버전을 추천합니다. 그가 쓴 다른 책과 웹사이트에 있는 에세이도 훌륭합니다.
If you're interested in a more pragmatic tack, many Lispers are excited about the book "Practical Common Lisp" by Peter Seibel. His book is also available on-line (opens new window).
좀 더 실용적인 접근 방식에 관심이 있으시다면, 많은 Lisp 사용자가 Peter Seibel의 "Practical Common Lisp"라는 책에 흥미를 느끼고 있습니다. 그의 책은 온라인 (opens new window)에서도 구할 수 있습니다.