스크립트 언어
1. 설명
프로그래밍 언어의 한 종류로, 기존에 이미 존재하는 소프트웨어(애플리케이션)를 제어하기 위한 용도로 쓰이는 언어이다.
일반적인 응용 소프트웨어는 컴파일러를 사용하는 언어에 의해 기계어로 번역된 채로 실행되기 때문에, 수정이 빈번하게 발생하면 수정 후 일일이 컴파일을 다시 해야 한다. 덩치가 큰 프로그램은 컴파일 시간도 몇 시간 단위로 잡아먹는 일이 많은데다, 일일이 컴파일을 다시 하는 것도 상당히 귀찮은 작업이다.
이 때문에 수정이 빈번하게 발생하는 부분은 소스코드를 한줄 한줄 읽어 바로바로 실행하는 인터프리터 방식이 상당히 유리하다. 스크립트 언어는 이런 부분에 사용하기 위해 나온 것으로, 응용 소프트웨어에서 스크립트 언어에 맞는 API를 제공, 응용 소프트웨어와 상호작용하면서 돌아가게 된다.
인터프리터 언어와 햇갈리는 사람이 있는데 인터프리터 언어는 인터프리터 방식을 사용하는 언어를 뜻하고 스크립트 언어는 앞서 말했듯이 이미 존재하는 소프트웨어를 제어하기 위한 용도로 쓰이는 언어이다. 단지 스크립트 언어 용도상 인터프리터 방식이 유용하기 때문에 스크립트 언어 대부분이 인터프리터 방식을 쓰는 인터프리터 언어 일 뿐
사실 엄밀하게 잘 정의된 용어는 아니고 편의를 위해 사용하는 명칭이기도 하다. 프로그래밍 언어인데 그 용도가 주로 운영체제 위에서 움직이는 새로운 프로그램을 만드는 것보다는, 기존에 존재하는 어떤 다른 프로그램들을 제어하기 위해 쓰이며 그 기존의 프로그램들 위에서 구동이 지원되는 언어들을 스크립트 언어라고 부르기로 한 것이다. 웹 브라우저에서 구동이 지원되는 자바스크립트나, 플래시를 제어하기 위해 플래시에서 구동이 지원되는 액션 스크립트 등이 대표적인 스크립트 언어다. 정의가 애매한 단어이기에 독립적인 프로그램의 개발에 사용되더라도 PC에 미리 설치해둔 자바 가상 머신에서 돌아가는 자바, 마찬가지로 PC에 미리 설치해둔 해석기 위에서만 돌아가는 파이썬이나 Ruby 같은 인터프리터 언어들은 그 자체만으로 스크립트 언어라고 부를지 말지 논란이 일기도 한다. [1]
위에서 스크립트 언어로써 언급된 JavaScript를 봐도 웹 환경이 고도화, 표준화되고 Node.js 런타임이나 Electron 등이 등장함에 따라 그 자체만으로도 독립적인 프로그램 개발에 사용될 수 있도록 발전한지라 이를 단순히 웹 브라우저용 제어 언어라고만 정의할 수가 없게 되었다. 더 나아가 TypeScript나 CoffeeScript처럼 '''컴파일''' 결과물로 기계어가 아닌 JavaScript를 출력해서 동작하는 언어까지 등장한 상황.
결론적으로 초창기 시절과는 달리 프로그래밍 언어들이 고도로 발달하고 높은 수준의 추상화가 진행됨에 따라 단순하게 어떤 언어와 그 언어가 동작하는 런타임을 뭉뚱그려서 '이 언어는 XX형 언어이다'라는 식으로 정의하는 것 자체가 무의미해져가는 추세에 있다.
2. 컴파일 언어와 다른 점
- 컴파일 과정을 거치지 않고 실시간으로 텍스트를 분석하며 실행된다. (일부 간단한 컴파일을 지원하는 스크립트 언어도 있다)
- 코드에 문법 오류가 있으면 실행 시점에서 발견된다. (근래에는 실행 전 파싱 단계에서 발견되는 경우가 많다.)
- 컴파일 언어보다 단순하고 쉬운 문법을 사용하는 경우가 많다.
- 바이너리 컴파일된 언어는 목표로 한 운영체제에서만 실행할 수 있나, 스크립트 언어로 된 코드는 스크립트 엔진이 포팅되어 있는 모든 운영체제에서 실행할 수 있다.
- 컴파일 언어보다 실행 속도가 느리다. (JIT 컴파일 기술의 도입으로 실행속도가 크게 개선된 언어도 있다. JavaScript, ActionScript가 대표적.)
- 단일 응용프로그램으로 사용되기보다는 응용프로그램 내에서 특정 역할을 수행하는 경우가 많다.
3. 대표적인 언어
[1] 다만 앞서 서술했다시피 저러한 인터프리터 언어들은 구조상 다른 프로그램들에서 스크립트 언어로 사용되기 편리하므로 많은 애플리케이션들에서 스크립트 언어로 사용된다.[2] 프로그래밍 언어로 안 보는 사람들이 있지만, 스크립트 언어이다. 하지만 오토핫키를 한다고 프로그래머 취급을 받지는 않는다.[3] 비주얼 베이직을 기반으로 마이크로소프트에서 만들어진 스크립트 언어이다. VBA 등에 사용되며 확장자는 vbs.