검색
색인
동적 언어, 動的言語, dynamic language
동의어 : 동적 타입 언어, 동적 프로그래밍 언어
프로그래밍 언어에서 변수의 자료 유형(data type)을 프로그램 실행 중(실행시간)에 정하거나 정해진 자료 유형을 변경할 수 있는 언어. 동적 타입 언어라고도 한다.
사용자에게 프로그래밍 유연성을 제공하여 초보자도 쉽게 프로그래밍할 수 있지만 오류 탐지가 늦고 실행시간 비용이 많이 드는 단점이 있다.
* 실행시간(execution time): 프로그램이 실행되는 시간

프로그래밍 언어에서 동적(dynamic)이란 객체의 속성을 프로그램 실행시간에 설정한다는 의미다. 즉, 동적 언어란 변수의 자료 유형프로그램 실행 중에 정하거나 변경하는 언어를 말한다.
* ISO/IEC 2382(Information Technology–vocabulary)에서 정의한 dynamic dynamic(.adj): Pertaining to a data attribute, whose values can only be established during the execution of all or part of a program.

동적 언어는 정적 언어에 비하여 프로그래밍을 유연하게 할 수 있다. 프로그래머가 변수의 자료유형을 고려하지 않아도 쉽고 간결하게 프로그램을 작성할 수 있다. 또한 데이터 리스트 등을 처리할 때, 자료 유형이 달라져도 같은 프로그램으로 실행할 수 있는 일반화(generic) 프로그램을 자연스럽게 작성할 수 있다. 예를 들어 데이터 리스트를 읽어서 정렬하는 프로그램을 하나만 작성하면 읽어 들이는 자료 유형에 관계없이 모든 자료 유형의 리스트를 정렬할 수 있다. 정적 언어에서는 정렬 프로그램이 자료 유형마다 별도로 필요하다.

자바스크립트(JavaScript), 펄(Perl), 하이퍼텍스트 프리프로세서(PHP), 루비(Ruby), 파이선(Python)과 같은 스크립트(script)언어가 동적 언어다. 아래와 같이 프로그램 실행 시간에 변수 값을 할당함으로써 변수의 자료 유형이 정해진다. 또한 다른 유형의 자료를 할당하여 변수의 자료 유형을 변경할 수도 있다.
list= 10;
name = "kildong";
list = [5.7, 2.8, 3.1] ;

동적 언어에서는 프로그램을 실행하는 동안 변수 타입을 결정하기 때문에 변수 선언에서 자료 유형을 명시하지 않는다. 따라서 코드 작성이 쉽지만, 프로그램 실행자료 유형 설정 실수로 인한 오류가 발생하기 쉽다. 또한 실행하는 동안 변수의 자료 유형에 따라 다양한 크기의 기억장소가 필요하고 변수의 자료 유형을 사용할 때마다 추적해야 하기 때문에 동적 타입 바인딩(binding) 비용이 많이 든다. 따라서 동적 언어는 컴파일러로 구현하지 않고 인터프리터로 구현한다.