소프트웨어/Scheme

[Scheme] 1. Scheme, 스킴 이란 무엇인가.

리습 2013. 6. 1. 13:54




 안녕하십니까. 리습입니다.


 이번에 우리는 Scheme  이라는 것을 배워보게 될것입니다.  우선 Scheme 이라는 것을 알아야 할텐데요. Scheme은 LISP이라는 언어에서 파생되어진 일종의 방언입니다. 또 이제 LISP이라는걸 알아야 하겠군요 먼저 LISP을 정의해보자면 다음과 같습니다.

 

위키피디아에서 정의된 글을 가져오도록 하겠습니다 위는 LISP, 아래는 Scheme 에대한 정의입니다. 

 

 리스프(Lisp, LISP) 혹은 리습 프로그래밍 언어의 계열로서, 오랜 역사와 독특하게 괄호를 사용하는 문법으로 유명하다. 1958년에 초안이 작성된 이 언어는 현재 널리 사용되는 두 번째로 오래된 고급 프로그래밍 언어이다. 첫 번째는 포트란이다. 리스프는 포트란처럼 초반에 많은 변화를 겪어야 했으며 수많은 변종들이 존재한다. 오늘날 가장 널리 알려진 일반 리스프 변종은 커먼 리스프 스킴이다. 그리고 리스프의 본래 뜻은 혀가 꼬이기 쉬운 발음이라는 뜻이다.

리스프는 본래 실용적인 목적 아래 컴퓨터 프로그램을 활용하여 수학 표기법을 나타내기 위한 목적으로 만들어졌다. 이는 알론소 처치의 람다 대수의 표기법에 영향을 많이 받았다. 곧이어 이는 인공지능 연구소에서 가장 인기있는 언어가 되었다. 초기 프로그래밍 언어 중의 하나인 리스프는 컴퓨터 과학의 많은 개념들의 선구자로서 트리 자료구조,쓰레기 수집, 동적 자료형과 인터프리터와 같은 개념들을 개척했다.

LISP 라는 이름 자체는 "LISt Processing"(리스트 프로세싱)의 줄임말이다. 연결 리스트는 리스프의 주요 자료구조 중 하나로서, 리스프 코드는 그 자체로 하나의 리스트이다. 그 결과로, 리스프 프로그램은 소스 코드를 자료 구조를 다듬는 수준으로 재배치할 수 있게 된다. 리스프 매크로 시스템을 통해 프로그래머는 새로운 소스 코드를 만들 수 있으며, 심지어 기존 리스프에 내장되는 새로운 언어, 그것도 특정 목적을 위한 용도의 언어를 만들어낼 수 있다.

코드와 데이터이 교환이 가능하다는 것은 리스프 그 자체에 있어 코드를 즉각 해석할 수 있는 능력을 준다. 전체 프로그램 코드는 S-표현식 이나 괄호로 묶인 리스트로 작성되며, 함수 호출의 경우 함수 이름 혹은 연산자가 첫 번째로 위치하여 피연산자가 이어 위치하게 된다. 예를 들면, 함수 f 가 a, b, c 라는 세 개의 피연산자를 가진 경우는 (f a b c)와 같이 표기한다. - wikipedia

 

 스킴 프로그래밍 언어(Scheme) 는 함수형 프로그래밍과 절차적 프로그래밍을 지원하는 다중패러다임 프로그래밍 언어로, 리스프(LISP)의 방언(변종 언어)이다. 1970년대 Guy Lewis Steele Jr. 과 Gerald Jay Sussman 에 의해서 개발되었다. 다른 LISP 방언과 비교할 때 단순함이 특징이다. 전통적인 LISP과 가장 큰 차이점은 동적 영역 규칙(dynamic scope rule) 대신 정적 영역 규칙(static scope rule)을 사용하고 있다는 것이다. 반복문을 지원하기 않기 때문에 재귀호출(recursion)을 이용하여 반복 계산을 처리한다. 따라서 대부분의 스킴 구현은 꼬리호출 최적화(tail-call optimization)를 수행한다.

 


말이 매우 어렵지만 결론적으론 자료구조, 리스트를 편하게 쓰는 고급 프로그래밍 언어라는 것이니다.. 현재는 AI분야에 많이 쓰이고 있습니다. 

 

Scheme 이라는 것이 어떤것인지 기본적으로 아셨을 것이라 생각됩니다. 이와 관련해서 가장 추천하고 싶은 책은 SICP 라고도 불리는 '컴퓨터 프로그램의 구조와 해석' 이라는 책입니다. 마법사의 책으로도 불리며 MIT전산학부의 기본 교제입니다. 

 

그럼 다음으론 Scheme 를 공부하는데 필요한것을 준비해보도록 하겠습니다.