SqueakByExample:5.2

From 흡혈양파의 번역工房
Revision as of 14:10, 4 March 2013 by Onionmixer (talk | contribs) (번역수정)
Jump to navigation Jump to search

모든 것은 오브젝트다

"모든 것은 오브젝트다" 라는 문구는 상당한 중독성이 있습니다. 스몰토크로 조금이라도 작업을 해본다면, 이 규칙이 당신이 하려는 모든 작업을 얼마나 단순하게 만드는지에 대해 놀랄겁니다. 예를 들면, 정수는 실제로 오브젝트이므로, 여러분은 다른 객체에 메시지를 보냈던 것처럼, 정수에도 역시 메시지를 보낼 수 있습니다.

3+4 ⇒ 7 ""7을 얻기 위해 '+ 4'를 3으로 보냅니다"
20 factorial ⇒ 2432902008176640000 "큰 수를 위해 팩토리얼을 보냅니다"


20의 계승 표시는 분명히 7의 계승과는 다른 표시를 보여줍니다. 그 이유는 둘 다 오브젝트이지만, 어떤 코드도, 심지어 계승의 실행까지도, 이 표시에 관해 현재 값이 될 필요가 있습니다. 아마도 이 규칙의 가장 근본적인 결과는 다음 내용입니다.


20 factorial 이라는 표현과 7 은 분명 다르지만, 둘 다 일반 문법이 아닌 오브젝트이기 때문에 어떤 코드도 -하다못해 factorial 의 구현조차도- 알아야할 필요는 없습니다. 이러한 규칙으로 알 수 있는 결과는 다음과 같습니다.

클래스 또한 오브젝트 입니다.


여기서 끝나는게 아닙니다, 스몰토크의 클래스는 2등급 오브젝트가 아닙니다: 클래스는 여러분이 메시지를 보내고 점검하고 다른 작업들을 할 수 있는 1등급 오브젝트입니다. 이런 특성은 스퀵이 개발자들이 많은것을 할 수 있게 해주는 진정한 표현적 시스템이라는 것을 의미합니다.

스퀵의 구현내용을 깊이 들어가보면, 세 가지 다른 종류의 오브젝트가 있다는것을 알 수 있습니다. (1) 참조로 전달하는 인스턴스 변수들을 가진 보통 오브젝트, (2) 값에 의해 전달하는 작은 정수인 보통 오브젝트, (3) 메모리의 인접한 부분을 차지하는 배열처럼, 색인화 가능한 오브젝트가 있습니다. 스몰토크의 아름다움은, 여러분이 이 세 종류의 오브젝트들 사이의 차이점에 관해 일반적으로 관심을 가질 필요가 없다는것에 있습니다.


Notes