SqueakByExample:5.2: Difference between revisions
Onionmixer (talk | contribs) (번역수정) |
Onionmixer (talk | contribs) (번역수정) |
||
Line 20: | Line 20: | ||
더 나아가, 클래스는 2등급 오브젝트가 아닙니다: 클래스는 여러분이 메시지를 보내고 점검하고 다른 작업들을 할 수 있는 1등급 오브젝트입니다. 이런 특성은 스퀵이 개발자들이 많은것을 할 수 있게 해주는 진정한 표현적 시스템이라는 것을 의미합니다. | |||
스퀵의 구현내용을 깊이 들어가보면, 세 가지 다른 종류의 오브젝트가 있다는것을 알 수 있습니다. (1) 참조로 전달하는 인스턴스 변수들을 가진 보통 오브젝트, (2) 값에 의해 전달하는 작은 정수인 보통 오브젝트, (3) 메모리의 인접한 부분을 차지하는 배열처럼, 색인화 가능한 오브젝트가 있습니다. 스몰토크의 아름다움은, 여러분이 이 세 종류의 오브젝트들 사이의 차이점에 관해 일반적으로 관심을 가질 필요가 없다는것에 있습니다. | 스퀵의 구현내용을 깊이 들어가보면, 세 가지 다른 종류의 오브젝트가 있다는것을 알 수 있습니다. (1) 참조로 전달하는 인스턴스 변수들을 가진 보통 오브젝트, (2) 값에 의해 전달하는 작은 정수인 보통 오브젝트, (3) 메모리의 인접한 부분을 차지하는 배열처럼, 색인화 가능한 오브젝트가 있습니다. 스몰토크의 아름다움은, 여러분이 이 세 종류의 오브젝트들 사이의 차이점에 관해 일반적으로 관심을 가질 필요가 없다는것에 있습니다. |
Revision as of 14:53, 4 March 2013
모든 것은 오브젝트다
"모든 것은 오브젝트다" 라는 문구는 상당한 중독성이 있습니다. 스몰토크로 조금이라도 작업을 해본다면, 이 규칙이 당신이 하려는 모든 작업을 얼마나 단순하게 만드는지에 대해 놀랄겁니다. 예를 들면, 정수는 실제로 오브젝트이므로, 여러분은 다른 객체에 메시지를 보냈던 것처럼, 정수에도 역시 메시지를 보낼 수 있습니다.
3+4 | ⇒ 7 ""7을 얻기 위해 '+ 4'를 3으로 보냅니다" |
20 factorial | ⇒ 2432902008176640000 "큰 수를 위해 팩토리얼을 보냅니다" |
20의 계승 표시는 분명히 7의 계승과는 다른 표시를 보여줍니다. 그 이유는 둘 다 오브젝트이지만, 어떤 코드도, 심지어 계승의 실행까지도, 이 표시에 관해 현재 값이 될 필요가 있습니다. 아마도 이 규칙의 가장 근본적인 결과는 다음 내용입니다.
20 factorial 이라는 표현과 7 은 분명 다르지만, 둘 다 일반 문법이 아닌 오브젝트이기 때문에 어떤 코드도 -하다못해 factorial 의 구현조차도- 알아야할 필요는 없습니다. 이러한 규칙으로 알 수 있는 결과는 다음과 같습니다.
더 나아가, 클래스는 2등급 오브젝트가 아닙니다: 클래스는 여러분이 메시지를 보내고 점검하고 다른 작업들을 할 수 있는 1등급 오브젝트입니다. 이런 특성은 스퀵이 개발자들이 많은것을 할 수 있게 해주는 진정한 표현적 시스템이라는 것을 의미합니다.
스퀵의 구현내용을 깊이 들어가보면, 세 가지 다른 종류의 오브젝트가 있다는것을 알 수 있습니다. (1) 참조로 전달하는 인스턴스 변수들을 가진 보통 오브젝트, (2) 값에 의해 전달하는 작은 정수인 보통 오브젝트, (3) 메모리의 인접한 부분을 차지하는 배열처럼, 색인화 가능한 오브젝트가 있습니다. 스몰토크의 아름다움은, 여러분이 이 세 종류의 오브젝트들 사이의 차이점에 관해 일반적으로 관심을 가질 필요가 없다는것에 있습니다.