동적 스코프

동적 스코프 언어

언어비고
Bash / Shell셸 스크립트
Emacs Lisp기본 동작 (렉시컬 옵션 가능)
Perllocal 키워드 사용 시
TeX문서 조판 언어
초기 Lisp구형 Lisp 방언들

Bash 예시

x=10

foo() {
    echo $x
}

bar() {
    local x=20
    foo  # 호출 시점의 x를 참조 → 20 출력
}

bar   # 20
foo   # 10

foo는 호출된 위치의 x 값을 참조합니다.

왜 렉시컬 스코프가 주류인가?

렉시컬 스코프동적 스코프
코드만 보고 예측 가능실행 흐름을 따라가야 예측 가능
디버깅 용이디버깅 어려움
컴파일러 최적화 쉬움최적화 어려움
클로저 구현 자연스러움클로저 구현 복잡

요약

동적 스코프는 셸 스크립트, Emacs Lisp 정도에서 사용되고, JavaScript, Python, Java, C 등 대부분의 언어는 렉시컬 스코프를 채택했습니다.

CSLOG에서 보기