LC·Dict

lexically scoped은(는) statically scopedtense_variation이기도 합니다.

Lexically scoped

숙어C2formal
US/ˈlek.sɪ.kəl.i skoʊpt/UK/ˈlek.sɪ.kəl.i skəʊpt/

프로그래밍에서 변수의 유효 범위가 코드의 문법적 위치에 의해 정해지는

phrase

  1. 1

    변수나 식별자의 유효 범위가 실행 중 호출 경로가 아니라 소스 코드에서 그것이 정의된 위치와 중첩 구조에 의해 결정되는C2

    Having the scope of a variable or identifier determined by where it is defined in the source code and by the code’s nested structure, rather than by the runtime call path.

    • In a lexically scoped language, an inner function can often access variables from the outer function in which it was defined.

      어휘적 스코프를 사용하는 언어에서는 내부 함수가 자신이 정의된 외부 함수의 변수에 접근할 수 있는 경우가 많다.

    • JavaScript variables declared with let and const are block-scoped and lexically scoped.

      JavaScript에서 let과 const로 선언한 변수는 블록 스코프를 가지며 어휘적으로 범위가 정해진다.

뉘앙스 · 쓰임

“Lexically scoped”는 보통 “statically scoped”와 거의 같은 뜻으로 쓰이지만, 특히 소스 코드의 문법적·텍스트적 구조를 강조한다. 반대로 “dynamically scoped”는 호출 시점의 실행 문맥에 따라 이름을 찾는다는 점에서 다르다. 일반 영어 관용구가 아니라 컴퓨터 과학의 전문 고정 표현이다.

일상 대화보다는 프로그래밍, 컴파일러, 함수형 언어, 클로저를 설명할 때 쓰인다. 사람이나 일반 상황에 비유적으로 쓰면 대부분 어색하다. 형용사처럼 “a lexically scoped variable”, “the language is lexically scoped”처럼 사용한다.

유의어 뉘앙스 비교

statically scoped
거의 같은 뜻이지만, “statically scoped”는 실행 전에 스코프가 결정된다는 점을 더 강조한다.
lexical scoping
명사형으로, ‘어휘적 스코프 방식’ 또는 그 규칙 자체를 가리킨다.

반의어

dynamically scoped
변수의 의미가 소스 코드상의 정의 위치가 아니라 실행 중 호출 체인에 의해 결정된다.

어원 · 암기 팁

[English]“Lexical”은 원래 ‘단어·어휘와 관련된’이라는 뜻에서 왔으며, 프로그래밍에서는 소스 코드의 문자적·문법적 구조를 가리키게 되었다. “Scoped”는 어떤 이름이나 변수가 유효한 범위가 정해졌다는 뜻이다. 따라서 “lexically scoped”는 코드에 적힌 구조를 기준으로 범위가 정해진다는 의미로 굳어진 컴퓨터 과학 용어이다.

💡 lexical을 ‘코드에 적힌 글자 그대로의 위치’라고 기억하면 쉽다. 즉, 함수가 어디서 실행되느냐가 아니라 어디에 쓰여 있느냐로 스코프가 정해진다고 떠올리면 된다.