SqueakByExample:5.2

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

모든 요소는 객체입니다

"모든 요소는 객체입니다" 라는 문구는 상당한 중독성이 있습니다. 스몰토크로 잠깐 동안 일을 해본다면, 하고 있는 모든 일을 어떻게 단순화 하는지 놀라기 시작할 것입니다. 예를 들어, Integer는 실제로 객체이므로, 여러분은 다른 객체에 메시지를 보냈던 것처럼, 정수에도 역시 메시지를 보낼 수 있습니다.

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


20 factorial 이라는 표현은 7이라는 표현과는 분명히 다르지만, 둘 다 객체이므로, 어떤 코드도 -심지어 factorial 의 구현까지도- 알 필요가 없습니다. 아마도 이 규칙의 근본적인 결론은 다음과 같을지도 모릅니다.

클래스 또한 객체입니다.


더 나아가, 클래스는 2등급 객체가 아닙니다: 메시지를 보내고, 점검하는 등을 할 수 있는 진정한 1등급 객체입니다. 이는 스퀵이야말로 개발자에게 다양한 표현 가능성을 제공하는 진정한 반응 시스템임을 의미합니다.

스몰토크의 구현 내용을 깊이 들어가보면, 세 가지 종류의 오브젝트가 있습니다. (1) 참조로 전달하는 인스턴스 변수인 일반 객체, (2) 값을 전달하는 크기가 작은 정수, (3) 메모리의 연속된 공간을 유지하는 배열과 유사한 색인 가능 객체가 있습니다. 스몰토크의 아름다움은 이들 세가지 객체의 차이에 대해 일반적으로 신경 쓸 필요가 없다는 것입니다.

Notes