검색
색인
정적 언어, 靜的言語, static language
동의어 : 정적 타입 언어, 정적 프로그래밍 언어
프로그래밍 언어에서 변수의 자료 유형(data type)을 프로그램 번역시간(compilation)에 확정하여 실행시간(execution time) 동안 유지하는 언어. 정적 타입 언어라고도 한다.
정적 언어로 작성한 프로그램은 기계어로 번역하여 실행시킬 수 있어서 실행시간 효율이 매우 높고, 컴파일러가 번역시간자료 유형과 관련한 오류를 발견할 수 있어 동적 언어보다 우수한 안정성을 제공한다.
* 실행시간(execution time): 프로그램이 실행되는 시간
* 번역시간(compilation time): 원시 프로그램목적 프로그램으로 번역하는 시간

프로그래밍 언어에서 정적(static)이란 전체 프로그램이 실행되는 동안 객체에 설정한 속성이 그대로 존재하고 유지된다는 의미다. 즉, 정적 언어는 변수의 속성 중 하나인 자료 유형프로그램 실행번역시간에 결정하여 프로그램 실행 중에 변하지 않고 유지하는 언어를 말한다.
* ISO/IEC 2382(Information Technology–vocabulary)에서 정의한 static
static(.adj): Pertaining to objects that exist and retain the values throughout the execution of the entire program.

동적 언어에 비하여 정적 언어는 컴파일러가 프로그램을 번역할 때, 변수의 자료 유형을 한 번 점검하여 필요한 실행코드를 작성하기 때문에 실행 때는 자료 유형을 점검하지 않고 그대로 실행할 수 있다. 동적 언어는 인터프리터(interpreter)가 프로그램을 번역하지 않고 그대로 실행하는데, 프로그램에서 변수가 사용될 때마다 자료 유형을 점검하여 필요한 작업을 수행하면서 실행한다. 따라서 정적 언어는 프로그램이 반복해서 실행될 때 동적 언어에 비하여 프로그램을 실행하는 효율이 매우 좋다. 또한 정적 언어는 자료 유형과 관련한 오류검증을 번역시간에 할 수 있어서 신뢰도가 높다.
예를 들어 ‘k := xi ;’를 타이핑 오류로 ‘k := xl ;’로 작성하면 (k와 xi가 정수형 변수이고, xl이 실수형 배열일 때)
동적 언어에서는 변수 k에 실수 배열 xl이 배정되어 k변수의 자료 유형실수형 배열로 변하고 정상처럼 실행되지만 정적 언어에서는 컴파일러가 번역시간에 오류를 탐지하여 프로그램이 실행되지 않는다.
정적 언어는 동적 언어에 비해 프로그래밍을 유연하게하기 어렵다. 쉽고 간결한 프로그램 작성이 어렵고 자료 유형이 달라져도 같은 프로그램으로 실행할 수 있는 일반화(generic) 프로그램을 자연스럽게 작성할 수 없다.
최초의 고급 언어인 포트란(FORTRAN)부터 시작하여, C 언어, 자바(Java), C++ 언어, 씨샵(C#), 에이다(Ada) 등 소위 컴파일러 언어라고 부르는 프로그래밍 언어들이 모두 정적 언어다.