SqueakByExample:3.7: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
(주석추가)
 
(용어수정)
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
==프리미티브와 프라그마==
==프리미티브와 프라그마==


스몰토크에서는 모든 것이 오브젝트이며, 모든 것은 메시지를 보내어 동작합니다. 그럼에도 불구하고, 우리는 특정 지점에서, 한계를 보게 됩니다. 특정 오브젝트는 오직 가상 머신 프리미티브를 불러온 후에 활용할 수 있습니다.
스몰토크에서는 모든 것이 객체이며, 모든 것은 메시지를 보내어 동작합니다. 그럼에도 불구하고, 우리는 특정 지점에서, 한계를 보게 됩니다. 특정 오브젝트는 오직 가상 머신에서 제공되는 프리미티브를 불러온 뒤 사용할 수 있습니다.


예를 들면, 다음 오브젝트들은 모두 프리미티브로서 실행됩니다: 메모리 할당(new,new:), 비트 조작 (bitAnd:,bitOr:.bitShift:) 포인터와 정수 연산  (+, --, <, >, *, / , =, ==...) 그리고 배열 접근 (at:, at:put:)
예를 들면, 다음 오브젝트들은 모두 프리미티브로서 실행됩니다: 메모리 할당(new,new:), 비트 조작 (bitAnd:,bitOr:.bitShift:) 포인터와 정수 연산  (+, --, <, >, *, / , =, ==...) 그리고 배열 접근 (at:, at:put:)


프리미티브는 구문 <primitive: aNumber>으로 불러옵니다. 이러한 프리미티브를 불러오는 메서드는 오직 그 프리미티브가 오류가 나는 경우에 처리할 스몰토크코드 또한 포함할 수 있습니다.
프리미티브는 프로그램식인 <primitive: aNumber><ref name="역자주1">VM image에 있는것을 사용하는게 아니라 VM Engine에서 뭔가를 불러올때 사용합니다. 조금 다른 사용예를 보고싶으면 [http://ta.onionmixer.net/wordpress/?p=132 여기]를 참고해주세요</ref> 형식으로 불러옵니다. 이러한 프리미티브를 불러오는 메서드는 오직 그 프리미티브가 오류가 나는 경우, 오류의 다음에 처리할 스몰토크코드 또한 포함할 수 있습니다.


여기에 우리는 SmallInteger>>+<ref name="역자주1">SmallInteger 클래스의 + 라는 셀렉터를 의미. Smalltalk에서는 연산자도 셀렉터입니다. 해당되는 클래스를 Class Browser에서 찾아보면 좀 더 명확하게 알 수 있습니다</ref>를 위한 코드를 볼 수 있습니다. 만약 프리미티브가 오류가 나면 표현식 super+aNumber를 계산하고 반환합니다.
여기에 우리는 SmallInteger>>+<ref name="역자주2">SmallInteger 클래스의 + 라는 셀렉터를 의미. Smalltalk에서는 연산자도 셀렉터입니다. 해당되는 클래스를 Class Browser에서 찾아보면 좀 더 명확하게 알 수 있습니다</ref>를 위한 코드를 볼 수 있습니다. 만약 프리미티브가 오류가 나면 표현식 super+aNumber를 계산하고 반환합니다.




메서드 3.2: 프리미티브 메서드
메서드 3.2: 프리미티브 메서드(SmallInteger 클래스의 + 셀렉터 선언부)
<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
+ aNumber
+ aNumber
Line 22: Line 22:




스퀵 3.9 이후로, 꺽쇠 괄호 구문<sup>the angle bracket syntax</sup>은 프라그마<sup>pragma</sup><ref name="역자주2">C언어등에서는 소스코드내에서 compiler에 지시를 내리는 지시자등으로 사용됩니다. 자세한 내용은 [http://blog.naver.com/jerokill?Redirect=Log&logNo=20144925890&from=postView 여기] 를 참고</ref>라고 불리는 메서드 어노테이션<sup>method annotation</sup>에 사용합니다.
스퀵 3.9 이후로, 꺽쇠 괄호 문법<sup>the angle bracket syntax</sup>은 프라그마<sup>pragma</sup><ref name="역자주3">C언어등에서는 소스코드내에서 compiler에 지시를 내리는 지시자등으로 사용됩니다. 자세한 내용은 [http://blog.naver.com/jerokill?Redirect=Log&logNo=20144925890&from=postView 여기] 를 참고</ref>라고 불리는 메서드 어노테이션<sup>method annotation</sup>에 사용합니다.
 





Latest revision as of 02:32, 17 September 2013

프리미티브와 프라그마

스몰토크에서는 모든 것이 객체이며, 모든 것은 메시지를 보내어 동작합니다. 그럼에도 불구하고, 우리는 특정 지점에서, 한계를 보게 됩니다. 특정 오브젝트는 오직 가상 머신에서 제공되는 프리미티브를 불러온 뒤 사용할 수 있습니다.

예를 들면, 다음 오브젝트들은 모두 프리미티브로서 실행됩니다: 메모리 할당(new,new:), 비트 조작 (bitAnd:,bitOr:.bitShift:) 포인터와 정수 연산 (+, --, <, >, *, / , =, ==...) 그리고 배열 접근 (at:, at:put:)

프리미티브는 프로그램식인 <primitive: aNumber>[1] 형식으로 불러옵니다. 이러한 프리미티브를 불러오는 메서드는 오직 그 프리미티브가 오류가 나는 경우, 오류의 다음에 처리할 스몰토크코드 또한 포함할 수 있습니다.

여기에 우리는 SmallInteger>>+[2]를 위한 코드를 볼 수 있습니다. 만약 프리미티브가 오류가 나면 표현식 super+aNumber를 계산하고 반환합니다.


메서드 3.2: 프리미티브 메서드(SmallInteger 클래스의 + 셀렉터 선언부)

+ aNumber
"Primitive. Add the receiver to the argument and answer with the result
if it is a SmallInteger. Fail if the argument or the result is not a
SmallInteger Essential No Lookup. See Object documentation whatIsAPrimitive."

<primitive: 1>
 super + aNumber


스퀵 3.9 이후로, 꺽쇠 괄호 문법the angle bracket syntax은 프라그마pragma[3]라고 불리는 메서드 어노테이션method annotation에 사용합니다.


Notes

  1. VM image에 있는것을 사용하는게 아니라 VM Engine에서 뭔가를 불러올때 사용합니다. 조금 다른 사용예를 보고싶으면 여기를 참고해주세요
  2. SmallInteger 클래스의 + 라는 셀렉터를 의미. Smalltalk에서는 연산자도 셀렉터입니다. 해당되는 클래스를 Class Browser에서 찾아보면 좀 더 명확하게 알 수 있습니다
  3. C언어등에서는 소스코드내에서 compiler에 지시를 내리는 지시자등으로 사용됩니다. 자세한 내용은 여기 를 참고