Lisp 편집하기


편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
62번째 줄: 62번째 줄:
=== Macro ===
=== Macro ===


문법의 추상화, [[메타 프로그래밍]]을 가능하게 해 주는 매크로(Macro)를 지원한다. 바로 이것에 의해 Lisp 은 다른 프로그래밍 언어 대비 새로운 패러다임을 쉽게 수용할 수 있다.
문법의 추상화, [[메타 프로그래밍]]을 가능하게 해 주는 매크로(Macro)를 지원한다. 바로 이것에 의해 Lisp 은 다른 프로그래밍 언어 대비 새로운 패러다임을 쉽게 수용할 수 있다.  


이 기능은 매우 쉽게 말해서 C언어의 #define과 유사하지만 훨씬 강력한 기능을 제공한다. C의 #define은 소스 코드의 전처리기에 의해 미리 정의된 내용을 소스 코드 수준에서 치환하는 데 그치지만, Lisp의 매크로는 모든 것을 리스트에 들어 있는 내용으로 치환하는 덕에, 실행 도중에 미리 정의된 프로그램으로 직접 치환된다. 즉, 매크로 자체가 입력되는 리스트의 내용을 미리 정의된 리스트의 내용으로 대체하는 매우 강력한 함수이다.
이 기능은 매우 쉽게 말해서 C언어의 #define과 유사하지만 훨씬 강력한 기능을 제공한다. C의 #define은 소스 코드의 전처리기에 의해 미리 정의된 내용을 소스 코드 수준에서 치환하는 데 그치지만, Lisp의 매크로는 모든 것을 리스트에 들어 있는 내용으로 치환하는 덕에, 실행 도중에 미리 정의된 프로그램으로 직접 치환된다. 즉, 매크로 자체가 입력되는 리스트의 내용을 미리 정의된 리스트의 내용으로 대체하는 매우 강력한 함수이다.
113번째 줄: 113번째 줄:
== Lisp교 ==
== Lisp교 ==
항목 전체 분위기가 너무 딱딱하여 웃자고 쓴 내용이다. 이 단락은 [[Standard ML]]을 참고하여 작성되었다. 이를 심각하게 받아들이면 곤란하다.
항목 전체 분위기가 너무 딱딱하여 웃자고 쓴 내용이다. 이 단락은 [[Standard ML]]을 참고하여 작성되었다. 이를 심각하게 받아들이면 곤란하다.
{{해석필요}}


"Code is data, Data is Code"라는 McCarthy 교주님의 말씀 아래, 모든 코드와 데이터는 평등하며, 괄호와 매크로는 신이 내린 축복임을 믿는 종교다. 사제 그린스펀의 말씀<ref>Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp. , [https://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule , Greenspun's tenth rule, 2015-04-26 확인됨.</ref>에 따라 [[C (프로그래밍 언어)|C]], [[FORTRAN]] 같은 언어를 사용하는 자들은 결국 Lisp 로 귀결될 수밖에 없는 것을 거칠고 야만스러운 언어로 만드는 어리석은 것들이라고 믿는다. 그 밖에 [[C++]], [[C#]], [[Java]], [[Python]] 같은 언어는 그저 최신 유행에 지나지 않고 돈벌이와 영합한 또 다른 어리석은 언어일 뿐이며, [[Haskell]], [[Scala]] 같은 언어는 교주님이 전한 신으로부터의 신성한 말씀을 흉내낸 아류작에 지나지 않는다. 정적 타이핑은 애초에 교주님께서 신의 말씀을 그렇게 전하지 않으셨기 때문에 이단이라며 혐오한다. 피터 노비그와 같은 사제들이 교주님께 Python과 같은 다른 종교의 말씀도 우리 신의 말씀과  다르지 않다는 이의를 제기했으나 곧 "코드와 데이터가 동등한가?" 라는 질문으로 바로 이단으로 심판했다는 일화 등이 유명하다.
"Code is data, Data is Code"라는 McCarthy 교주님의 말씀 아래, 모든 코드와 데이터는 평등하며, 괄호와 매크로는 신이 내린 축복임을 믿는 종교다. 사제 그린스펀의 말씀<ref>Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp. , [https://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule , Greenspun's tenth rule, 2015-04-26 확인됨.</ref>에 따라 [[C(프로그래밍_언어)|C]], [[FORTRAN]] 같은 언어를 사용하는 자들은 결국 Lisp 로 귀결될 수밖에 없는 것을 거칠고 야만스러운 언어로 만드는 어리석은 것들이라고 믿는다. 그 밖에 [[C++]], [[C#]], [[Java]], [[Python]] 같은 언어는 그저 최신 유행에 지나지 않고 돈벌이와 영합한 또 다른 어리석은 언어일 뿐이며, [[Haskell]], [[Scala]] 같은 언어는 교주님이 전한 신으로부터의 신성한 말씀을 흉내낸 아류작에 지나지 않는다. 정적 타이핑은 애초에 교주님께서 신의 말씀을 그렇게 전하지 않으셨기 때문에 이단이라며 혐오한다. 피터 노비그(Peter Norvig)와 같은 사제들이 교주님께 Python과 같은 다른 종교의 말씀도 우리 신의 말씀과  다르지 않다는 이의를 제기했으나 곧 "코드와 데이터가 동등한가?" 라는 질문으로 바로 이단으로 심판했다는 일화 등이 유명하다.


한 때 신의 말씀을 하나로 통일하려는 움직임이 있었으나, 교주님께서 싫어하셔서 그러한 일은 일어나지 않았다. 대신 Common Lisp, EuLisp 등 다양한 말씀 판본이 존재한다.
한 때 신의 말씀을 하나로 통일하려는 움직임이 있었으나, 교주님께서 싫어하셔서 그러한 일은 일어나지 않았다. 대신 Common Lisp, EuLisp 등 다양한 말씀 판본이 존재한다.
126번째 줄: 127번째 줄:
이 종교를 믿는 사람들은 실용적인 것은 별로 관심이 없으며, 아름답고 보기에는 간결하지만 실제로 이해하고 사용하려면 더럽게 어렵고 복잡한 코드를 좋아한다. 자신들이 [[전산학]], [[컴퓨터공학]]의 전문가라고 믿으며, 특히 엔지니어링적인 것들을 혐오하며 자부심이 넘치는 경향이 있다. 하지만 신의 말씀으로 제대로 된 대형 프로젝트를 진행해 본 사람은 극히 드물다.
이 종교를 믿는 사람들은 실용적인 것은 별로 관심이 없으며, 아름답고 보기에는 간결하지만 실제로 이해하고 사용하려면 더럽게 어렵고 복잡한 코드를 좋아한다. 자신들이 [[전산학]], [[컴퓨터공학]]의 전문가라고 믿으며, 특히 엔지니어링적인 것들을 혐오하며 자부심이 넘치는 경향이 있다. 하지만 신의 말씀으로 제대로 된 대형 프로젝트를 진행해 본 사람은 극히 드물다.


{{각주}}
== 각주와 출처 ==
<references/>


[[분류:프로그래밍 언어]]
[[분류:프로그래밍 언어]]
리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다.
취소 편집 도움말 (새 창에서 열림)

| () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |}

이 문서에서 사용한 틀: