# "매크로"라는 단어에 대한 사례 (The Case Against the Word "Macro")
Part of the purpose of writing this tutorial is to experiment with ways that can tackle the difficult subject of true macros in Lisp. Often, when I try to explain the concept of macros to somebody who has only used other languages, I'll get a response like "Oh yeah! There's macros like that in C++, too!". The moment this happens, it becomes very difficult to explain "true macros", because of the semantic load on the word "macro". After all, "true macros" really are a lot like C++ macros, in that they are a way to talk to the compiler with modified code...
이 튜토리얼을 작성하는 목적 중 하나는 Lisp에서 진정한 매크로라는 어려운 주제를 다룰 수 있는 방법을 실험하는 것입니다. 종종 다른 언어만 사용해 본 사람에게 매크로의 개념을 설명하려고 하면 "오, 그래! C++에도 그런 매크로가 있어요!"와 같은 반응이 돌아옵니다. 이런 일이 발생하는 순간, "매크로"라는 단어의 의미적 부하 때문에 "진정한 매크로"를 설명하기가 매우 어려워집니다. 결국, "진정한 매크로"는 수정된 코드로 컴파일러와 대화하는 방법이라는 점에서 C++ 매크로와 매우 유사합니다.
...so imagine if John McCarthy had used the word "add" instead of "cons" to connect items to lists: It would make it really difficult to explain how consing works.
...그러므로 존 매카시가 목록에 항목을 연결할 때 'cons' 대신 'add'라는 단어를 사용했다고 상상해 보세요: consing이 어떻게 작동하는지 설명하기가 정말 어려워졌을 것입니다.
Therefore, I decided to experiment with a new term for a macro in this essay: SPEL, which stands for "Semantic Program Enhancement Logic", which is admittedly a bit of a stretch, but the term has many benefits:
따라서 나는 이 에세이에서 매크로에 대한 새로운 용어인 SPEL을 실험하기로 결정했다. SPEL은 "시맨틱 프로그램 강화 논리"를 의미하며, 이 용어는 약간 과장된 것은 인정하지만 많은 이점을 가지고 있다:
It captures the almost magical power that Lisp macros can have to change the behavior of a Lisp environment. Lisp 매크로가 Lisp 환경의 동작을 변경할 수 있는 거의 마법과 같은 힘을 포착합니다.
The term SPEL can be used in a million different ways to explain programming concepts in elegant ways, using the metaphor of the spell and casting spells.
스펠이라는 용어는 주문과 주문 시전이라는 은유를 사용하여 프로그래밍 개념을 우아하게 설명하는 데 수백만 가지 방법으로 사용될 수 있습니다. The term causes no confusion between true macros and other types of macros.
이 용어는 진정한 매크로와 다른 유형의 매크로를 혼동하지 않습니다.
The semantic load of the term "spel" is very low. A Google search for "(macro OR macros) programming -lisp -scheme" returned 1150000 hits. A Google search for "(spel OR spels) programming -lisp -scheme" returned only 28400. Even worse when you consider that the search "(macro OR macros) programming (lisp OR scheme)" only returned a measly 395000!
"스펠"이라는 용어의 의미적 부하가 매우 낮습니다. "(macro OR macros) programming -lisp -scheme"에 대한 Google 검색은 1150000건의 조회수를 반환했습니다. "(spel OR spels) programming -lisp -scheme"에 대한 Google 검색은 28400건만 반환했습니다. "(macro OR macros) programming (lisp OR scheme)"를 검색하면 395000건에 불과하다는 점을 고려하면 더욱 심각합니다!
So I hope, as a Lisper, you'll consider supporting this new term - Naturally, any new memes like this have a very low likelihood of success.
당연히 이런 새로운 밈은 성공 가능성이 매우 낮습니다. 따라서 Lisper로서 이 새로운 용어를 지지해 주셨으면 합니다.
If you have a library or are a Lisp implementation author, please drop everything you are doing right now and add the following line to your library:
라이브러리가 있거나 Lisp 구현 작성자인 경우 지금 하고 있는 모든 작업을 중단하고 라이브러리에 다음 줄을 추가하세요:
(defmacro defspel [& rest] `(defmacro ~@rest))
There, problem solved! 😃
이제 문제가 해결되었습니다! 😃
-- Conrad Barski, M.D.
- 원문 (opens new window) (www.lisperati.com)
← 부록 데이터 지향 프로그래밍의 장점 →