GnuSmalltalkUsersGuide:BasicIntroduction

From 흡혈양파의 번역工房
Jump to: navigation, search
서론

서론

GNU 스몰토크는 Smalltalk-80 서적에서 설명하듯 Smalltalk-80 언어를 충실히 따르는 구현이다: 본문에서는 Adele Goldberg와 David Robson의 저서 Language and its Implementation 를 Blue Book 이라고 칭할 것이다.


스몰토크 프로그래밍 언어는 객체 지향 프로그래밍 언어이다. 따라서 무엇보다 프로그래밍을 할 때 객체가 포함하는 데이터뿐만이 아니라 해당 객체에서 이용 가능한 연산(operation)도 고려해야 한다는 의미다. 객체의 데이터 표현 기능과 객체에서 이용 가능한 연산은 "따로 떼낼 수 없다"; 객체로 할 수 있는 일들은 스몰토크에서 메서드라고 불리는 연산 집합에 의해 정밀하게 정의되고, 이러한 연산들은 해당 객체에서 이용 가능해야 한다: 각 객체는 클래스에 부속되는데 (데이터타입과 그것에서 작동하는 함수 집합), 객체가 그 클래스의 인스턴스라는 표현이 더 올바르겠다. 객체의 외부에서는 그 내용을 확인할 수도 없다ㅡ외부에서 보면 객체는 일부 상태와 객체에서 이용할 수 있는 연산을 어느 정도 갖고 있는 블랙박스이며, 당신이 알 수 있는 사실은 다음에 불과하다: 객체에서 어떤 연산을 실행하길 원할 경우 객체에게 메시지를 전송하면 객체가 메시지에 상응하는 메서드를 고른다.


스몰토크 언어에서는 모든 것이 객체이다. 숫자나 모든 데이터 구조뿐만 아니라 심지어 클래스, 메서드, 메서드 내 코드 조각 (블록 또는 클로저), 스택 프레임 (컨텍스트) 등까지 포함한다. 하다못해 if 와 while 구조도 특정 객체로 전송된 메서드로서 구현된다.


(Smalltalk-80를 포함해) 다른 스몰토크들과 달리 GNU 스몰토크는 사용이 쉬운 그래픽의 프로그래밍 환경보다는 스몰토크의 신속한 프로토타이핑 기능을 강조한다 (스몰토크에서 처음으로 실행된 GUIs를 알고 있는가?). 시스템 클래스의 거대한 실체를 숙달하고 나면 가용성 덕분에 스크립팅 언어라는 작업에 해당하는 복합 프로그램을 쉽게 작성할 수 있을 것이다. 따라서 클래스 브라우저를 포함해 괜찮은 GUI 환경을 갖고 있음에도 불구하고 (34페이지, 3.1절 [Blox] 참조) GNU Smalltalk는 최근에 좀 더 분명하고, 미적으로 만족스러우며, 철학적으로 매력적인 프로그래밍 언어로 스크립트를 작성하는 데 사용되는 완전한 시스템을 생성하는 것을 목표로 한다.


이렇게 신기한 방식으로 얻을 수 있는 결과물의 예는 GNU Smalltalk Library Reference의 "클래스 참조(Class reference)" 절에서 찾을 수 있다. 해당 매뉴얼 부분은 시스템과 함께 배포되는 클래스 라이브러리의 소스 코드부터 시작해 전적으로 스몰토크 프로그램으로 생성되었다.


Notes