2008. 9. 19. 02:25ㆍStudy/Programming
Small Talk
SmallTalk는 객체지향 프로그래밍의 개념을 지원하기 위해 특별히 설계된 프로그래밍 언어로써 동적 형, 반영을 지원한다. 스몰토크는 제록스 파크(PARC)에서 앨런 케이, 댄 잉갤스, 테드 캘러, 에이들 골드버그 가 만들었다. 1970년대 초 제록스 연구소에서는 프로그래머들이 조작하기 원하는 데이터 객체들을 상상할 수 있도록 하기 위한 새로운 언어를 발명하기 위해 앨런케이가 한 연구팀을 이끌고 있었다. 리스코, 로고, 스케치패드와 시뮬라 등의 영향을 받았으며, 스몰토크-80부터 외부에 공개되어 퍼지기 시작했다. 스몰토크는 루비, 오브젝티브-C 등의 프로그래밍 언어에 영향을 주었으며, 그 외에 매킨토시의 그래픽 사용자 인터페이스에도 영향을 주었다. 그러나 스몰토크는 C++과는 달리, 절차적 언어의 구문 상에 구현되지 않고, C언어의 절차적 구조를 일부 허용하는 C++ 보다 더욱 엄격하게 강화된 규칙이 적용된 순수한 객체 지향적 언어이다. 비록 스몰토크가 충실한 팬들의 마음을 계속하여 끌더라도, C++로부터 파생되어 분산시스템을 위해 설계된 자바가 웹상에서는 보다 우세한 객체지향 언어가 될 것으로 기대되며 다음과 같은 장점을 들수 있다.
- 소프트웨어를 재이용하기가 쉽다.
- 품질이 양호한 클래스 라이브러리(객체의 표본)가 풍부하다.
- 클래스를 검색하는 브라우저나 기억장치의 비어 있는 영역을 자동적으로 확보하는 폐영역 회수(Garbage Collection) 등을 표준적으로 구비하고 있어서 개발 환경이 충실하게 됭어있다. 주요 스몰토크 처리 시스템으로는 IBM사의 VisualAge, 스몰토크와 같은 Parkplace Digitalk사의 VisualSmalltalk 등이 있다. 최근 수년 간 기업용 클라이언트/서버 시스템 개발에 스몰토크가 이용되고 있으나, 객체 지향 언어로서 스몰토크와 비슷한 장점을 갖추고 있는 자바 언어가 등장하면서 자바 언어가 더 주목을 받고 있다.
Smalltalk 소스코드의 예
| rectangles aPoint| rectangles := OrderedCollection with: (Rectangle left: 0 right: 10 top: 100 bottom: 200) with: (Rectangle left: 10 right: 10 top: 110 bottom: 210). aPoint := Point x: 20 y: 20. collisions := rectangles select: [:aRect | aRect containsPoint: aPoint]. |