IT용어위키



콜백 함수

콜백 함수(Callback Function, 영어: callback function)는 다른 함수의 인자로 전달되어, 특정 이벤트나 작업이 완료되었을 때 호출되는 함수를 의미한다. 이 개념은 비동기 프로그래밍, 이벤트 기반 프로그래밍 및 함수형 프로그래밍에서 널리 활용되며, 프로그램의 흐름 제어와 코드의 재사용성을 높이는 데 기여한다.

개요

콜백 함수는 보통 익명 함수(anonymous function) 형태로 정의되거나, 이름이 있는 함수로 구현되며, 다른 함수의 인자로 전달되어 필요 시점에 실행된다. 이를 통해 프로그램은 작업을 요청한 후, 결과가 준비되었을 때 자동으로 후속 처리를 수행할 수 있다. 예를 들어, 네트워크 요청, 파일 I/O, 타이머 이벤트 등의 비동기 작업에서 결과 처리 로직을 콜백 함수로 구현할 수 있다.

정의 및 등록

콜백 함수를 사용하기 위해서는 먼저 함수를 정의한 후, 이를 다른 함수의 인자로 전달하여 등록해야 한다. 등록된 콜백 함수는 호출되는 시점에 특정 작업의 결과를 처리하거나, 추가 작업을 수행하도록 설계된다. 이 방식은 코드의 간결성을 높이고, 함수형 프로그래밍 패러다임에서 고차 함수와 결합되어 데이터를 변환하거나 처리하는 데 유용하다.

특징 및 활용

  • 간결성
    • 람다 함수와 같이 짧은 구문으로 간단한 작업을 처리할 수 있다.
  • 비동기 처리 지원
    • 네트워크 요청이나 파일 I/O 등 비동기 작업 완료 후 자동 호출되어, 이벤트 기반 프로그래밍을 가능하게 한다.
  • 고차 함수와의 결합
    • map, filter, reduce 등의 함수형 프로그래밍 함수와 함께 사용되어, 데이터 집합에 대한 반복적 처리를 간단하게 구현할 수 있다.
  • 재사용성 및 모듈화
    • 한 번 정의된 콜백 함수는 여러 함수의 인자로 전달되어 다양한 작업에서 재사용할 수 있다.

예제

아래는 파이썬과 자바스크립트에서 콜백 함수를 정의하고 등록하여 사용하는 예제이다.

파이썬 예제

def fetch_data(callback):
    # 데이터 처리나 비동기 작업 시뮬레이션
    data = "결과 데이터"
    # 작업 완료 후 콜백 함수 호출
    callback(data)

def process_data(result):
    print("받은 데이터:", result)

# fetch_data 함수에 process_data 함수를 콜백으로 등록하여 호출
fetch_data(process_data)

자바스크립트 예제

function fetchData(callback) {
    // 비동기 작업 시뮬레이션: 1초 후에 콜백 함수 호출
    setTimeout(function() {
        var data = "결과 데이터";
        callback(data);
    }, 1000);
}

function processData(result) {
    console.log("받은 데이터:", result);
}

// fetchData 함수에 processData 함수를 콜백으로 전달하여 호출
fetchData(processData);

역사 및 배경

콜백 함수의 개념은 수학의 람다 대수(lambda calculus)에서 기원을 찾으며, 함수형 프로그래밍 언어에서 핵심적인 역할을 담당해 왔다. 현대 프로그래밍 언어는 콜백 함수를 통해 비동기 및 이벤트 기반 프로그래밍을 효과적으로 지원하며, 코드의 재사용성과 모듈화를 향상시키고 있다.

같이 보기

참고 문헌

  • Abelson, H., and Sussman, G. J. (1996). Structure and Interpretation of Computer Programs. MIT Press.
  • Bird, R., and Wadler, P. (1988). Introduction to Functional Programming. Prentice Hall.
  • Odersky, M., Spoon, L., and Venners, B. (2010). Programming in Scala. Artima Inc.

  출처: IT위키(IT위키에서 최신 문서 보기)
  * 본 페이지는 공대위키에서 미러링된 페이지입니다. 일부 오류나 표현의 누락이 있을 수 있습니다. 원본 문서는 공대위키에서 확인하세요!