참고: http://en.wikipedia.org/wiki/Callback_(computer_programming),
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=392
콜백이란 일종의 실행가능한 코드를 가리키는 레퍼런스인데, 특히 레퍼런스가 다른 코드의 인자(argument)로 삽입되는 형태로 사용되는 경우를 가리킨다.
하위 계층의 프로그램이 상위 계층의 프로시져를 인자로 받는 경우를 생각하면 여기서 콜백은 인자로 전달된 상위계층의 프로시져의 레퍼런스이다. 상위계층에서 하위 계층의 프로시져를 호출하지만 특정 부분의 처리에 있어서는 상위계층에서 인자로 전달해준 프로시져를 실행시켜 처리함으로써 상위계층에서 제어할 수 있는 여지를 남기게 된다.
인자로 삽입되는 레퍼런스의 대표적인 예는 C언어의 함수포인터이다. 함수포인터가 인자로 삽입 되면 내부 코드에서는 함수포인터가 가리키는 함수를 호출하게 된다. 함수포인터가 가지고 있는 함수에 대한 Signature만 지킨다면, 내부적인 구현은 자유이다.
필요에 따라 자신이 실행시키고 싶은 함수의 레퍼런스를 전달하여, 구체적으로 실행될 것들을 제어할 수 있기 때문에 Polymorphism, Generic Programming을 실현시키는 하나의 방법이 될 수 있다.
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=392
콜백이란 일종의 실행가능한 코드를 가리키는 레퍼런스인데, 특히 레퍼런스가 다른 코드의 인자(argument)로 삽입되는 형태로 사용되는 경우를 가리킨다.
하위 계층의 프로그램이 상위 계층의 프로시져를 인자로 받는 경우를 생각하면 여기서 콜백은 인자로 전달된 상위계층의 프로시져의 레퍼런스이다. 상위계층에서 하위 계층의 프로시져를 호출하지만 특정 부분의 처리에 있어서는 상위계층에서 인자로 전달해준 프로시져를 실행시켜 처리함으로써 상위계층에서 제어할 수 있는 여지를 남기게 된다.
인자로 삽입되는 레퍼런스의 대표적인 예는 C언어의 함수포인터이다. 함수포인터가 인자로 삽입 되면 내부 코드에서는 함수포인터가 가리키는 함수를 호출하게 된다. 함수포인터가 가지고 있는 함수에 대한 Signature만 지킨다면, 내부적인 구현은 자유이다.
필요에 따라 자신이 실행시키고 싶은 함수의 레퍼런스를 전달하여, 구체적으로 실행될 것들을 제어할 수 있기 때문에 Polymorphism, Generic Programming을 실현시키는 하나의 방법이 될 수 있다.
'Application-level프로그래밍' 카테고리의 다른 글
[Python] How to use *args and **kwargs in Python (0) | 2012.06.12 |
---|---|
(JAVA) Copmparable Comparator (0) | 2012.03.19 |
[Python] 모듈, 패키지(Package) 사용하기 (0) | 2011.12.27 |
[Python] 자주쓰는 list 등의 객체의 얕은 복사에 주의할 것 (0) | 2011.11.23 |
[Python] 정적변수 사용하기 (0) | 2011.11.22 |