Scheme이란 무엇인가
Scheme은 1975년 MIT의 가이 스틸과 제럴드 서스먼이 개발한 Lisp 방언입니다. 40년간 교육용 프로그래밍 언어를 연구해온 저로서는 Scheme이 프로그래밍의 핵심 개념을 가르치는 데 가장 적합한 언어라고 생각합니다. Scheme의 철학은 '적은 것이 많은 것'입니다. 최소한의 핵심 기능만 언어에 포함하고, 나머지는 그 위에 구축합니다. 이런 미니멀리즘 덕분에 언어의 본질을 깊이 이해할 수 있습니다.
Scheme의 핵심 특징
Scheme은 렉시컬 스코프(lexical scope)를 최초로 도입한 언어 중 하나입니다. 클로저가 이 개념에서 비롯되었습니다. 일급 함수(first-class functions)와 꼬리 재귀 최적화(tail-call optimization)가 언어 표준에 명시되어 있습니다. call/cc(call-with-current-continuation)는 Scheme의 독특한 기능으로, 제어 흐름을 프로그래머가 완전히 제어할 수 있게 해줍니다. 위생적 매크로(hygienic macros)는 이름 충돌 없이 안전한 매크로를 작성할 수 있게 합니다.
SICP와 Scheme
Scheme은 MIT의 전설적인 교재 'Structure and Interpretation of Computer Programs'(SICP)에서 사용되어 유명해졌습니다. SICP는 단순히 프로그래밍 문법을 가르치는 것이 아니라 계산이란 무엇인가, 추상화는 어떻게 하는가, 메타프로그래밍이란 무엇인가 같은 근본적인 질문을 다룹니다. 책의 마지막에는 Scheme 인터프리터를 Scheme으로 작성하는 경험을 합니다. 이 과정을 통해 언어와 계산에 대한 깊은 통찰을 얻게 됩니다.
현대의 Scheme 구현체
Racket은 가장 활발한 Scheme 계열 언어입니다. 교육용 IDE인 DrRacket을 포함하고, 방대한 라이브러리와 문서를 제공합니다. Racket은 순수 Scheme을 넘어서 자체적인 기능을 많이 추가했습니다. Guile은 GNU 프로젝트의 공식 확장 언어로, GNU 소프트웨어에서 스크립팅에 사용됩니다. Chez Scheme은 매우 빠른 상용 품질의 구현체입니다. Chicken Scheme은 C로 컴파일되어 임베디드 시스템에서도 사용됩니다.
Scheme 학습 추천
Scheme을 배우려면 먼저 Racket을 설치하세요. DrRacket IDE가 즉각적인 피드백을 제공하여 학습에 큰 도움이 됩니다. 'How to Design Programs'(HtDP)는 SICP보다 입문 친화적인 교재입니다. SICP는 도전적이지만, 완주하면 프로그래밍 실력이 한 단계 올라갑니다. 온라인에서 무료로 읽을 수 있으며, 비디오 강의도 있습니다. 작은 인터프리터를 직접 만들어보는 것이 최고의 학습법입니다.
댓글
0