맨위로가기

스크립트 언어

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

스크립트 언어는 일반적으로 소스 코드를 빠르게 실행하기 위해 설계된 프로그래밍 언어를 의미하며, 1950년대 일괄 처리를 제어하기 위한 언어에서 시작되어 셸 스크립트, CGI, 웹 브라우저 내장 언어 등으로 발전했다. 스크립트 언어는 짧은 소스 코드 파일이나 REPL 환경에서 상호작용하기에 적합하며, 텍스트 처리, 시스템 관리, 웹 개발, 게임 개발 등 다양한 분야에서 활용된다. 스크립트 언어는 속도, 보안, 대규모 프로젝트의 복잡성 등에서 컴파일 언어에 비해 단점을 가질 수 있으며, 사용 목적과 환경에 따라 글루 언어, 작업 제어 언어, GUI 스크립팅 언어, 응용 프로그램별 언어, 확장/내장형 언어, 웹 브라우저 및 웹 서버, 텍스트 처리 언어, 범용 동적 언어 등 다양한 종류로 분류된다.

더 읽어볼만한 페이지

  • 프로그래밍 패러다임 - 지식 표현
    지식 표현은 컴퓨터가 인간의 지식을 이해하고 활용하도록 정보를 구조화하는 기술이며, 표현력과 추론 효율성의 균형, 불확실성 처리 등을 핵심 과제로 다양한 기법과 의미 웹 기술을 활용한다.
  • 프로그래밍 패러다임 - 의도적 프로그래밍
    의도적 프로그래밍은 프로그래머의 의도를 명확히 포착하고 활용하여 소프트웨어 개발 생산성을 향상시키기 위한 프로그래밍 패러다임으로, 트리 기반 저장소를 사용해 코드 의미 구조를 보존하고, WYSIWYG 환경에서 도메인 전문가와 협업하며, 코드 상세 수준 조절 및 자동 문서화를 통해 가독성과 유지보수성을 높이는 데 중점을 둔다.
  • 스크립트 언어 - Tcl
    Tcl은 존 오스터하우트가 개발한 명령어 기반의 프로그래밍 언어로, Tk 툴킷과 결합하여 GUI 스크립팅 환경으로 발전했으며, 다양한 운영체제에서 사용 가능하고 C, C++, Java 등 다른 언어와의 인터페이스를 지원한다.
  • 스크립트 언어 - PHP
    PHP는 라스무스 러도프가 개발한 범용 스크립팅 언어로, 웹 개발에 널리 사용되며 LAMP 아키텍처의 핵심 요소이다.
스크립트 언어
개요
종류프로그래밍 언어
특징상대적으로 배우기 쉬운 구문
빠른 개발 속도
동적 타이핑
인터프리터 방식 실행
주요 용도웹 개발 (프론트엔드, 백엔드)
시스템 관리
데이터 분석
자동화
게임 개발
임베디드 시스템
역사
탄생 배경기존 언어의 복잡성을 줄이고, 개발 생산성을 높이기 위해 등장
주요 발전웹 기술 발전과 함께 성장, 다양한 분야에서 활용
특징
스크립트 언어 종류JavaScript
Python
PHP
Ruby
Lua
Perl
Shell Script
Batch File
장점빠른 개발 속도
쉬운 문법
다양한 라이브러리 및 프레임워크 지원
플랫폼 독립성
단점실행 속도 (컴파일 언어에 비해 느림)
보안 문제 (소스 코드 노출 가능성)
디버깅 어려움
활용
웹 개발프론트엔드: JavaScript (사용자 인터페이스 구현)
백엔드: Python, PHP, Ruby (서버 측 로직 처리)
시스템 관리Python, Shell Script (서버 자동화, 시스템 모니터링)
데이터 분석Python, R (데이터 처리, 통계 분석, 시각화)
자동화Python, Shell Script (반복적인 작업 자동화)
게임 개발Lua, Python (게임 로직, 스크립팅)
임베디드 시스템Lua, MicroPython (제한된 환경에서 동작하는 프로그램 개발)
관련 용어
인터프리터스크립트 언어를 한 줄씩 읽어 실행하는 프로그램
가상 머신스크립트 언어를 실행하기 위한 환경 (예: Java Virtual Machine)
라이브러리미리 작성된 코드 모음 (재사용 가능)
프레임워크특정 문제를 해결하기 위한 뼈대 구조
기타
참고 사항스크립트 언어는 계속 발전하고 있으며, 새로운 언어와 기술이 등장하고 있다.

2. 역사

1950년대 초기의 메인프레임 컴퓨터는 상호작용적이지 않았으며 일괄 처리를 대신 사용하였다. IBM의 작업 제어 언어(JCL)은 일괄 처리를 제어하기 위해 사용된 언어의 원형이다.[21]

최초의 인터랙티브 셸(interacive shell영어)은 시분할 시스템의 동작을 원격 제어하기 위해 1960년에 개발되었다. 캘빈 무어스는 그의 TRAC 언어에서 스크립트에 명령을 삽입하여 해석될 때 문자열을 삽입하는 기능인 '명령 대체'를 발명한 것으로 알려져 있다.[7] Multics는 이를 '활성 함수'라고 불렀다.[8] 루이 푸쟁은 1964년경 CTSS용 RUNCOM이라는 초기 명령 스크립트 프로세서를 작성했다. 스튜어트 매드닉은 1966년 IBM의 CP/CMS용 스크립트 언어를 작성했다. 그는 처음에 이 프로세서를 COMMAND라고 불렀지만 나중에 EXEC로 이름을 변경했다.[9] Multics는 CTSS RUNCOM의 분파를 포함했는데, 이 또한 RUNCOM이라고 불렸다.[10] EXEC는 결국 EXEC 2와 REXX로 대체되었다.

Tcl 및 Lua와 같은 언어는 모든 애플리케이션에 내장될 수 있는 범용 스크립트 언어로 특별히 설계되었다. Visual Basic for Applications(VBA)와 같은 다른 언어는 기본 시스템의 자동화 기능과 강력한 통합을 제공했다.

현대 웹 브라우저는 일반적으로 브라우저 자체의 확장을 작성하기 위한 언어와 JavaScript (ECMAScript의 방언) 또는 XUL을 포함하여 브라우저를 제어하기 위한 여러 표준 내장 언어를 제공한다.

Common Gateway Interface(CGI)는, 웹 서버를 스크립트 언어로 제어하는 것을 가능하게 한다. 일찍부터 CGI용으로 사용된 스크립트 언어로는 Perl, ASP, PHP 등이 있다.

일부 소프트웨어는 여러 개의 다른 스크립트 언어를 통합하기도 한다. 다음은 스크립트 언어와 제어 대상의 예시이다.

스크립트 언어와 제어 대상
언어제어 대상
셸 스크립트셸(bash 등)
AppleScriptOSAX
ActionScriptFlash
JavaScript웹 브라우저
JScriptWSH
VBScriptWSH
PostScript인쇄기
Vim scriptVim
DrawscriptIllustrator
AutoCAD ScriptAutoCAD
MaxScriptFinalRender


3. 특징

일반적으로 스크립트 언어는 빠르게 코드를 작성하고 실행할 수 있도록 설계되었으며, 짧은 소스 코드 파일이나 REPL 환경에 적합하다.[20] 구문의미가 상대적으로 단순하고, 명확한 엔트리 포인트 없이 처음부터 끝까지 실행되는 경향이 있다.

자바는 긴 문법, 파일과 클래스 관계 규칙, 외부 호출 방식 때문에 스크립트 언어로 보기 어렵다. 반면 파이썬은 별도 함수나 구문 없이 "Hello World"를 출력하는 코드를 바로 실행할 수 있어 스크립트 언어의 특징을 보인다.

스크립트 언어는 특정 환경을 위한 특수 목적 언어이거나 범용 프로그래밍 언어일 수 있으며, 응용 프로그램에 내장된 경우 '''확장 언어'''라고 불린다. 추상화 수준이 높으면 매우 고급 프로그래밍 언어로, 메인프레임 작업 제어 언어는 '''제어 언어'''라고 불린다.

"스크립트 언어"라는 용어는 동적 프로그래밍 언어인 고급 언어를 포괄하는 넓은 의미로 사용되기도 한다. 인터프리터 언어인 경우도 있고 컴파일 형태를 사용하는 경우도 있으며, "스크립트"는 수천 줄을 넘지 않는 작은 프로그램을 지칭하는 경우가 많다.

스크립트 언어는 작고 특수한 목적에서 크고 범용적인 언어까지 다양하다. 작고 특수한 언어에서 시작해 범용 언어로 발전하거나, 반대로 범용 언어가 특수 도메인별 방언을 개발하기도 한다.

일반적으로 스크립트는 다음과 같은 특징을 갖는다.


  • 컴파일되지 않고, 인터프리터에 의해 소스 코드 또는 바이트코드로부터 해석되거나 JIT 컴파일 후 실행된다.[4]
  • 비교적 짧고 간단하며, 사람이 수행할 작업을 자동화한다.
  • 범용 프로그래밍 언어에 비해 기능이 제한적일 수 있다.
  • 코드의 첫 줄에서 실행을 시작하는 경향이 있다.


스크립트는 실행하는 사람이 생성, 수정하는 경우가 많지만,[5] 게임처럼 배포되는 경우도 있다.

변수에 형식을 지정하지 않는 동적 타이핑 언어를 스크립트 언어라고 정의하기도 하지만, 엄밀한 정의나 구별은 없다. 인터프리터 방식이 많지만 런타임 컴파일러를 이용하기도 한다. Go 언어처럼 컴파일러 방식이지만 소스 파일을 한 명령어로 실행 가능한 경우도 "스크립트 언어적인 사용"은 가능해도 "스크립트 언어"라고는 하지 않는다.

UNIX 셸 스크립트, Emacs의 LISP, Web 브라우저의 JavaScript 등은 애플리케이션 소프트웨어 동작을 기술, 제어하는 스크립트 언어의 예시이다. SSI와 PHP처럼 기능을 추가하는 형태로 제어하기도 한다.

Perl과 PHP는 비교적 단순한 프로그램을 기술하기 위한 프로그래밍 언어의 예시이다. Perl은 초기 텍스트 처리 도구 동작 기술의 의미가 강했지만, 최근에는 CGI를 이용한 동적 웹사이트 구축에 주로 사용된다.

특정 소프트웨어 구현에 사용된 프로그래밍 언어를 "스크립트 언어"라고 부르는 경우가 있는데, 이는 "기술 언어"라고 하는 것이 바람직하다. (예: UNIX 기술 언어는 C 언어)

다음은 제어 대상 프로그램을 갖는 스크립트 언어의 예시이다.

언어제어 대상
셸 스크립트셸(bash 등)
AppleScriptOSAX
ActionScriptFlash
JavaScript웹 브라우저
JScriptWSH
VBScriptWSH
PostScript인쇄기
Vim scriptVim
DrawscriptIllustrator
AutoCAD ScriptAutoCAD
MaxScriptFinalRender



최초의 대화형 은 1960년대 시분할 시스템의 원격 조작을 위해 개발되었다. 반복적인 명령어 입력의 수고를 덜기 위해 스크립팅 수요가 생겨났고, 단순 매크로나 명령어 저장 파일을 사용하는 방식이 개발되어 셸 스크립트 개발로 이어졌다. 대규모 애플리케이션 개발에서 배치 모드 조작을 쉽게 하기 위해 기본적인 내장형 스크립트 기능이 개발되기도 했다.

C 언어 등 고속 프로그래밍 언어와 Bourne 셸, AWK로 작성된 저속 스크립트는 성능 차이가 컸으나, 기술 발전으로 Perl, Ruby, Python 등 인터프리터형 언어가 범용 프로그래밍 언어로 널리 사용되면서 차이가 좁혀졌다.

Tcl, Lua 등은 범용 스크립트 언어로 설계되어 애플리케이션 내장 또는 단독 사용이 가능하며, VBA는 기반 시스템 자동화 기구와 강하게 연결된다. 범용 스크립트 언어 내장은 개발자의 언어 해석 기능 개발 수고를 덜고, 사용자의 학습 부담을 줄이는 장점이 있다.

CGI는 웹 서버를 스크립트 언어로 제어 가능하게 하며, Perl, ASP, PHP 등이 초기 CGI용으로 사용되었다.

최근 웹 브라우저는 자체 확장 언어를 가지며, ECMAScript(JavaScript), CSS, HTML이 브라우저 제어용 표준 내장 언어이다.

3. 1. 장점

스크립트 언어는 소스 코드가 짧고 REPL 환경에서 상호작용적으로 사용하기 적합하게 설계되어 개발 속도가 빠르고 생산성이 높다.[20] 구문의미가 상대적으로 단순하여 배우고 사용하기 쉽다. 스크립트는 시작부터 끝까지 순차적으로 실행되며, 명확한 엔트리 포인트가 없는 경우가 많다.

예를 들어 자바는 스크립트 언어로 보기 어렵다. 자바는 어느 클래스가 어느 파일에 있는지에 대한 규칙이 복잡하고, 소스 파일이 호스트 애플리케이션이나 애플리케이션 런처를 통해서만 호출될 수 있어 상호작용적으로 실행하기 어렵기 때문이다. 반면 파이썬은 별도의 함수나 구문 없이 "Hello World"를 출력하는 코드를 바로 실행할 수 있다.

3. 2. 단점

스크립트 언어는 다음과 같은 상황에서 사용하기 적합하지 않다.

  • 리소스에 민감한 작업, 특히 속도가 중요한 정렬, 해시 등에 사용하기 어렵다.[20]
  • 강력한 산술 연산 작업, 특히 임의의 정밀도 연산이 필요한 경우에 적합하지 않다.
  • 플랫폼 간 이식성이 필요할 때도 스크립트 언어는 좋은 선택이 아니다.
  • 구조적 프로그래밍이 필요한 복잡한 애플리케이션(변수의 타입 체크나 함수 프로토 타입 등이 필요할 때) 개발에는 적합하지 않다.
  • 업무에 아주 중요하거나 회사의 미래가 걸린 애플리케이션 개발에도 사용을 지양해야 한다.
  • 보안 상 중요해서 시스템 무결성을 보장하기 위해 외부의 침입, 크래킹, 파괴 등을 막아야 할 필요가 있을 때도 마찬가지이다.
  • 서로 의존적인 관계에 있는 여러 컴포넌트로 이루어진 프로젝트에도 적합하지 않다.
  • 과도한 파일 연산이 필요하거나, 다차원 배열, 링크드 리스트나 트리 같은 데이터 구조가 필요한 경우에도 사용하기 어렵다.
  • 그래픽이나 GUI를 만들고 변경하는 작업, 시스템 하드웨어에 직접 접근해야 할 때, 포트나 소켓 I/O가 필요할 때도 스크립트 언어는 좋은 선택이 아니다.
  • 예전에 쓰던 코드를 사용하는 라이브러리나 인터페이스를 써야 할 필요가 있을 때, 독점적이고 소스 공개를 안 하는 애플리케이션을 만들어야 할 때(오픈 소스 스크립트 언어의 경우)도 마찬가지이다.[4]


일반적으로 스크립트는 컴파일되지 않고, 인터프리터에 의해 소스 코드 또는 바이트코드로부터 직접 해석되거나, JIT 컴파일 이후 네이티브 코드로 실행된다.[4]

스크립트 언어는 일반적으로 범용 프로그래밍 언어에 비해 기능이 제한적이며, 복잡한 응용 프로그램을 작성하는 기능이 부족할 수 있다. 스크립트는 실행하는 사람에 의해 생성되거나 수정되는 경우가 많지만,[5] 구글 크롬의 T-rex 게임과 같이 배포되는 경우도 있다.

4. 종류

스크립트 언어는 사용 목적과 환경에 따라 다양하게 분류할 수 있다. 스크립트 언어는 특정 환경을 위한 특수 목적 언어 또는 범용 프로그래밍 언어일 수 있으며, 응용 프로그램에 내장된 경우 '''확장 언어'''라고 부른다.

"스크립트 언어"라는 용어는 때때로 동적 프로그래밍 언어인 고급 언어를 지칭하는 더 넓은 의미로 사용된다. 일부는 엄격하게 인터프리터 언어이며, 다른 일부는 컴파일 형태를 사용한다. 이러한 맥락에서 "스크립트"라는 용어는 이러한 언어로 작성된 작은 프로그램, 즉 일반적으로 단일 파일에 포함되고 코드 라인이 수천 줄을 넘지 않는 프로그램을 지칭한다.[20]

스크립트 언어의 범위는 작게는 특수 목적 언어에서 크게는 범용 프로그래밍 언어까지 다양하다. 언어는 작고 매우 특수 목적 언어로 시작하여 나중에 이식 가능하고 범용적인 언어로 발전할 수 있으며, 반대로 범용 언어가 나중에 특수 도메인별 방언을 개발할 수도 있다.

1950년대 초기의 메인프레임 컴퓨터는 상호작용적이지 않았으며 일괄 처리를 대신 사용하였다. IBM의 작업 제어 언어(JCL)은 일괄 처리를 제어하기 위해 사용된 언어의 원형이다.[21] 최초의 인터랙티브 셸(interactive shell영어)은 시분할 시스템의 동작을 원격 제어하기 위해 1960년에 개발되었다.

스크립트 언어
언어
애플스크립트
콜드퓨전
DCL
Embeddable Common Lisp
ecl
얼랑
JCL
커피스크립트
JScript, 자바스크립트
루아
m4
PHP
퓨어
파이썬
Rebol
레드
Rexx
루비
스킴
Tcl
유닉스 셸 스크립트 (ksh, csh, bash, sh 등)
VBScript
워크 플로 언어
윈도우 파워셸
XSLT


4. 1. 글루 언어

글루 언어는 서로 다른 소프트웨어 컴포넌트를 연결하고 통합하는 데 사용되는 언어이다.[11][12][13][14] 셸 스크립트, 펄[2], 파이썬[3] 등이 대표적이다. 파이프라인과 셸 스크립팅은 글루 언어의 전형적인 예시이며, Perl은 처음에 이러한 역할을 수행하기 위해 개발되었다. 웹 개발데이터베이스웹 서버 간의 인터페이스를 제공하는 글루 언어의 사용으로 간주될 수 있다.

글루 언어는 특히 다음을 작성하고 유지 관리하는 데 유용하다.

  • 명령 셸을 위한 사용자 정의 명령
  • 컴파일된 언어로 구현하는 것이 더 나은 프로그램보다 작은 프로그램
  • 워드 프로세서, 스프레드시트, 데이터베이스, 어셈블러, 컴파일러 등과 같은 응용 프로그램을 실행하기 전후에 파일을 이동하거나 조작하고 운영 체제를 사용하여 다른 작업을 수행하는 배치 파일과 같은 실행 파일에 대한 "래퍼" 프로그램
  • 변경될 수 있는 스크립트
  • 다른, 일반적으로 컴파일된 언어로 최종 구현될 솔루션의 빠른 애플리케이션 개발


글루 언어의 예시는 다음과 같다.

언어
AppleScript
ColdFusion
DCL
Embeddable Common Lisp
ECL
Erlang
EXEC, EXEC2
JCL
CoffeeScript
Julia
JavaScript, JScript
Lua
m4
Perl (5 및 Raku)
PHP
PowerShell
Pure
Python
Rebol
Red
Rexx
NetRexx
Ruby
Scheme
Tcl
Unix 셸 스크립트 (ksh, csh, bash, sh 등)
VBScript
Work Flow Language
XSLT



운영 체제 또는 응용 프로그램 컴포넌트에 노출된 매크로 언어는 글루 언어 역할을 할 수 있다. 여기에는 Visual Basic for Applications, WordBasic, LotusScript, CorelScript, Hummingbird Basic, QuickScript, Rexx, SaxBasic, 및 WinWrap Basic이 포함된다. AWK와 같은 다른 도구도 글루 언어로 간주될 수 있으며, Windows Script Host 엔진으로 구현된 모든 언어도 마찬가지다.

4. 2. 작업 제어 언어 및 셸

스크립트 언어는 작업 제어 자동화에서 시작되었으며, 시스템 프로그램의 시작과 제어를 수행한다.[15] 그런 의미에서 셸의 조상으로 IBM의 Job Control Language영어 (JCL)가 있다고도 할 수 있다. 이 종류의 언어 처리계(인터프리터)의 대부분은 UNIX의 이나 MS-DOS의 `COMMAND.COM`과 같은 명령 줄 인터프리터이다. 그 외에도 영어와 같은 명령으로 스크립트를 쓸 수 있는 AppleScript 등도 있다. macOS에서는 Cocoa와 AppleScript 또는 JavaScript[19]를 사용하여 애플리케이션 전체를 구축할 수도 있다.

최초의 대화형 셸은 1960년대에 최초의 시분할 시스템의 원격 운영을 가능하게 하기 위해 개발되었으며, 이는 셸 스크립트를 사용했는데, 이는 컴퓨터 프로그램 내에서 컴퓨터 프로그램을 제어하는 셸이었다.

운영 체제 작업을 자동화하고 제어하는 데 사용되는 언어
언어제어 대상
셸 스크립트셸 (bash 등)
AppleScriptOSAX
JCL(IBM 메인프레임) 일괄 처리
유닉스 셸 스크립트 (ksh, csh, bash, sh 등)유닉스유닉스 계열 운영 체제
윈도우 파워셸마이크로소프트 윈도우, macOS 및 리눅스


4. 3. GUI 스크립팅

그래픽 사용자 인터페이스(GUI)의 등장과 함께 컴퓨터를 제어하기 위한 특수한 스크립트 언어도 생겨났다. 이러한 언어는 윈도우, 메뉴, 버튼 등 시스템이 생성한 것과 상호작용하는 언어이며, 사람이 수동으로 하는 작업을 시뮬레이션한다. 이러한 언어는 사용자가 하는 작업을 자동화하고 표준화하는 것으로, 일반적으로 매크로 언어 등으로 불린다.[2]

원리적으로는 GUI 기반 컴퓨터에서 동작하는 임의의 애플리케이션을 제어할 수 있지만, 일반적으로 특정 애플리케이션이나 운영 체제에 대응하는 매크로 언어가 존재한다. 그러나, 화면 상의 픽셀 배치를 통해 그래픽 객체를 인식하고 조작하는 언어도 있으며, 이 경우에는 OS나 애플리케이션에 의존하지 않고 조작이 가능하다.

IBM 워크플레이스 쉘과 같이 GUI가 적절한 인터페이스를 제공하는 경우, OREXX와 같은 일반 스크립트 언어를 사용하여 GUI 스크립트를 작성할 수 있다.

4. 4. 응용 프로그램별 언어

응용 프로그램별 언어는 특정 응용 프로그램의 기능을 확장하고 제어하는 데 사용된다. 예를 들어, 마이크로소프트 오피스 응용 프로그램에서는 VBA를 사용하여 기능을 확장할 수 있다.[2] Emacs Lisp는 Emacs의 편집 기능을 확장하는 데 유용한 특수 기능을 포함하고 있는 Lisp 방언이다.

많은 컴퓨터 게임 시스템은 논플레이어 캐릭터 및 게임 환경의 프로그래밍된 작업을 표현하기 위해 사용자 지정 스크립트 언어를 사용한다. 예를 들어 Trainz 철도 시뮬레이터는 TrainzScript를 사용한다.

응용 프로그램별 스크립트 언어는 여러 범주로 나눌 수 있다. 독립 실행형 앱 언어(실행 파일) 또는 내부 응용 프로그램별 언어(각각 Adobe, MS, Google에서 구현한 Postscript, XML, gscript 등) 등이 있으며, 응용 프로그램 사용자의 요구에 맞춰진 관용적 스크립트 언어가 포함된다.

Tcl[3]이나 Lua와 같은 언어는 범용 스크립트 언어로 설계되어, 애플리케이션에 내장하거나 단독으로 사용할 수 있다. VBA 등의 시스템은 기반이 되는 시스템의 자동화 기구와 강하게 연결되어 있다.

다음은 몇 가지 응용 프로그램별 언어의 예시이다.

언어제어 대상
셸 스크립트셸(bash 등)
AppleScriptOSAX
ActionScriptFlash
자바스크립트웹 브라우저
JScriptWSH
VBScriptWSH
PostScript인쇄기
Vim scriptVim
DrawscriptIllustrator
AutoCAD ScriptAutoCAD
MaxScriptFinalRender


4. 5. 확장/내장형 언어

일반적으로 스크립트 언어는 응용 프로그램에 내장되어 기능을 확장하는 데 사용된다. 이러한 언어를 '''확장 언어'''라고도 부른다.[20]

대표적인 확장/내장형 언어는 다음과 같다:

언어제어 대상 또는 용도
자바스크립트 (ECMAScript)웹 브라우저 (원래 용도), 범용
루아게임 엔진 등 다양한 응용 프로그램
Tcl범용 (1990년대에 널리 사용), Tk와 함께 GUI 응용 프로그램 개발
VBScript마이크로소프트 윈도우 스크립트 작성
VBA마이크로소프트 오피스 응용 프로그램
Perl텍스트 처리, 범용, 다양한 응용 프로그램의 확장 언어
파이썬범용 및 확장 언어
루비다중 패러다임, 범용 언어
AWK텍스트 처리 (주로 유닉스 계열 운영 체제)
Bash유닉스유닉스 계열 운영 체제 스크립트 작성
Groovy자바와 유사한 객체 지향 스크립트 언어
린덴 스크립팅 언어세컨드 라이프 가상 세계 스크립트 작성
LispEmacs Lisp for Emacs를 포함한 응용 프로그램을 위한 범용 및 확장 언어 제품군
PowerShell마이크로소프트 윈도우, macOS 및 리눅스 스크립트 작성
Rexx여러 플랫폼에서 실행되는 범용 언어, 확장 언어로도 사용
sed텍스트 처리, 대부분의 유닉스 계열 운영 체제 및 다른 운영 체제
TrainzScriptTrainz 철도 시뮬레이터



Tcl 및 Lua와 같이 모든 애플리케이션에 내장될 수 있도록 설계된 범용 스크립트 언어도 있다.[3] VBA와 같이 기본 시스템의 자동화 기능과 강력하게 통합된 언어도 있다. 이러한 범용 스크립트 언어를 내장하면 각 애플리케이션에 대해 새로운 언어를 개발할 필요가 없고, 사용자가 다른 곳에서 배운 기술을 적용할 수 있다는 장점이 있다.

일부 소프트웨어는 여러 개의 다른 스크립트 언어를 통합하기도 한다. 예를 들어, 현대 웹 브라우저는 일반적으로 브라우저 자체의 확장을 작성하기 위한 언어와 JavaScript (ECMAScript의 방언) 또는 XUL을 포함하여 브라우저를 제어하기 위한 여러 표준 내장 언어를 제공한다.

4. 6. 웹 브라우저

웹 브라우저는 웹 페이지를 표시하기 위한 응용 프로그램이다. 웹 브라우저의 동작을 제어하고 동적인 웹 페이지를 만들기 위해 여러 언어가 사용된다. 예를 들어, 자바스크립트, 마이크로소프트의 VBScript (인터넷 익스플로러에서만 동작), 모질라 프로젝트의 XUL (파이어폭스에서만 동작) 등이 있다.[2] XML과 자바스크립트의 조합을 이용한 기술은 사용자의 인상을 좋게 하고 반응을 이끌어내기 위해 널리 채택되면서, Ajax라는 이름까지 붙여지게 되었다.

4. 7. 웹 서버

웹 서버는 동적인 콘텐츠를 생성하고 처리하기 위해 스크립트 언어를 사용한다. CGI를 통해 웹 서버를 제어할 수 있는데, 초기에는 Perl, ASP, PHP 등이 사용되었다.[2]

HTTP 링크에서 서버 측은 애플리케이션 서버나 CMS 등 동적 콘텐츠 서버에서 다양한 스크립팅 기법을 활용한다. 이 분야에서 자주 사용되는 것은 PHP, JSP, ASP 등이며, 이 외에도 Ruby on Rails 등이 일부에서 인기를 얻고 있다.

4. 8. 텍스트 처리 언어

AWK, sed, 은 텍스트 파일의 내용을 검색, 추출, 변환하는 데 사용되는 언어이다.[2] 이러한 언어들은 유닉스 계열 운영 체제에서 널리 사용되며, 텍스트 형식의 설정 파일이나 로그 파일 처리를 자동화하는 데 유용하다. 특히, 정규 표현식을 사용하여 처리 대상의 구조를 형식적으로 표현할 수 있다.

4. 9. 범용 동적 언어

스크립트 언어는 특정 환경을 위한 특수 목적 언어 또는 범용 프로그래밍 언어일 수 있으며, 응용 프로그램에 내장된 경우 '''확장 언어'''라고 부른다.

"스크립트 언어"라는 용어는 때때로 동적 프로그래밍 언어인 고급 언어를 지칭하는 더 넓은 의미로 사용된다. 일부는 엄격하게 인터프리터 언어이며, 다른 일부는 컴파일 형태를 사용한다. 이러한 맥락에서 "스크립트"라는 용어는 일반적으로 단일 파일에 포함되고 코드 라인이 수천 줄을 넘지 않는, 이러한 언어로 작성된 작은 프로그램을 지칭한다.[20]

스크립트 언어의 범위는 작고 특수 목적 언어에서 크고 범용 프로그래밍 언어까지 다양하다. 언어는 작고 매우 특수 목적 언어로 시작하여 나중에 이식 가능하고 범용적인 언어로 발전할 수 있으며, 반대로 범용 언어가 나중에 특수 도메인별 방언을 개발할 수도 있다.

Perl과 같은 언어는 스크립트 언어로 시작했지만, 더 광범위한 용도로 사용할 수 있는 프로그래밍 언어로 성장했다. Perl과 유사하며 실행 중에 해석되고 메모리 관리 기능이 있으며 동적인 언어는 서로 유사하기 때문에 "스크립트 언어"라고 불리기도 한다. 그러나 실제로는 애플리케이션 본체를 작성하는 데 사용되는 경우가 많은 언어도 있다. 일반적으로 이러한 언어의 제작자가 스스로 "스크립트 언어"라고 부르는 경우는 없다.

다음은 스크립트 언어의 특징을 가지면서 범용 프로그래밍 언어의 역할도 수행하는 언어들이다.

범용 동적 언어
언어설명
AWK텍스트 처리를 위한 언어로, 일반적으로 유닉스 계열 운영 체제에서 사용된다.
Bash유닉스유닉스 계열 운영 체제의 스크립트 작성을 위한 인터프리터 언어이다.
Groovy자바와 유사한 객체 지향 스크립트 언어이다.
자바스크립트원래 웹 페이지를 동적으로 수정하기 위해 웹 브라우저에서 실행하도록 제한되었으나, 이후 널리 사용되는 범용 프로그래밍 언어로 발전했다.
LispEmacs Lisp for Emacs를 포함한 응용 프로그램을 위한 범용 및 확장 언어 제품군이다.
Lua많은 응용 프로그램에서 사용되는 확장 언어이다.
Perl텍스트 처리 언어로, 이후 범용 언어로 발전했다.[2] 다양한 응용 프로그램의 확장 언어로도 사용된다.
PowerShell마이크로소프트 윈도우, macOS 및 리눅스 스크립트 작성을 위한 언어이다.
파이썬범용 및 확장 언어이다.
Rexx여러 플랫폼에서 실행되는 범용 언어이다. 확장 언어로도 사용된다.
루비다중 패러다임, 범용 언어이다.
sed텍스트 처리를 위한 언어이며, 대부분의 유닉스 계열 운영 체제에서 사용할 수 있으며 다른 운영 체제로 이식되었다.
Tcl유닉스 계열 환경을 위한 언어로, 1990년대에 널리 사용되었다.[3] Tk와 함께 사용하여 GUI 응용 프로그램을 개발할 수 있다.


5. 한국에서의 활용

한국에서는 스크립트 언어가 다양한 분야에서 활용되고 있다.


  • 웹 개발: 자바스크립트는 웹 페이지를 동적으로 만들기 위해 사용되며, ECMAScript 표준으로 널리 사용되고 있다.[2] Adobe 제품 등에서 활용된다.
  • 시스템 관리: 파이썬, 셸 스크립트 등은 서버 및 네트워크 관리, 자동화에 사용된다.[11][12][13][14]
  • 게임 개발: Lua, 파이썬 등은 게임 엔진에 내장되어 게임 개발에 활용된다.[16][17]
  • 데이터 분석: 파이썬은 데이터 분석, 머신 러닝, 인공 지능 분야에서 널리 사용된다.

5. 1. 웹 개발

자바스크립트는 원래 웹 페이지를 동적으로 만들기 위해 웹 브라우저에서 실행하도록 제한되었으나, 이후 널리 사용되는 범용 프로그래밍 언어로 발전했다.[2] ECMAScript로 표준화되면서 일반적인 목적으로 내장 가능한 언어로 인기를 얻었다. 특히, 모질라의 구현인 SpiderMonkey는 야후! 위젯 엔진과 같은 여러 환경에 내장되어 있다. ECMAScript 구현을 내장하는 다른 응용 프로그램으로는 Adobe 제품인 Adobe Flash(ActionScript) 및 Adobe Acrobat(PDF 파일 스크립팅용) 등이 있다.

Tcl은 확장 언어로 만들어졌지만 Python, Perl, Ruby와 유사하게 일반적인 언어로 더 자주 사용되게 되었다.

5. 2. 시스템 관리

스크립트는 일반적으로 사람이 더 수동적인 방식으로 수행할 작업을 자동화한다.[11][12][13][14] 파이썬, 셸 스크립트 등은 서버 관리, 네트워크 관리, 자동화 등에 활용된다.

글루 언어는 특히 다음을 작성하고 유지 관리하는 데 유용하다.

  • 명령 셸을 위한 사용자 정의 명령
  • 컴파일된 언어로 구현하는 것이 더 나은 프로그램보다 작은 프로그램
  • 워드 프로세서, 스프레드시트, 데이터베이스, 어셈블러, 컴파일러 등과 같은 응용 프로그램을 실행하기 전후에 파일을 이동하거나 조작하고 운영 체제를 사용하여 다른 작업을 수행하는 배치 파일과 같은 실행 파일에 대한 "래퍼" 프로그램
  • 변경될 수 있는 스크립트
  • 다른, 일반적으로 컴파일된 언어로 최종 구현될 솔루션의 빠른 애플리케이션 개발.


글루 언어 예시는 다음과 같다.

글루 언어
AppleScript
ColdFusion
DCL
Embeddable Common Lisp
ECL
Erlang
EXEC, EXEC2
JCL
CoffeeScript
Julia
JavaScript, JScript
Lua
m4
Perl (5 및 Raku)
PHP
PowerShell
Pure
Python
Rebol
Red
Rexx
NetRexx
Ruby
Scheme
Tcl
Unix 셸 스크립트 (ksh, csh, bash, sh 등)
VBScript
Work Flow Language
XSLT


5. 3. 게임 개발

Lua와 파이썬을 비롯한 여러 스크립트 언어가 게임 엔진에 내장되어 사용된다. 이를 통해 개발자는 게임 엔진의 내부 작동에 대한 깊은 지식 없이, 또는 각 수정 후 게임 엔진을 다시 빌드할 필요 없이 기능을 더 빠르게 프로토타입화하고 더 자유롭게 수정할 수 있다. 이 외에도 AngelScript 및 Squirrel과 같은 덜 알려진 언어들도 사용된다.[16][17]

5. 4. 데이터 분석

스크립트는 일반적으로 사람이 더 수동적인 방식으로 수행할 작업을 자동화한다. 파이썬(NumPy, Pandas, SciPy) 등은 데이터 분석, 머신 러닝, 인공 지능 분야에서 널리 사용된다.

6. 비판적 관점

스크립트 언어는 특정한 상황에서 사용하지 않는 것이 좋을 수 있으며, 이런 경우에는 컴파일 언어 등으로 대체하는 것이 바람직하다.[4]

스크립트 언어를 사용하기 적합하지 않은 경우는 다음과 같다.

경우
정렬, 해시 등 속도가 중요하거나 리소스에 민감한 작업을 할 때
강력한 산술 연산 작업, 특히 임의의 정밀도 연산이 필요할 때
플랫폼 간 이식성이 필요할 때
변수의 타입 체크나 함수 프로토타입 등 구조적 프로그래밍이 필요한 복잡한 애플리케이션을 개발할 때
업무에 매우 중요하거나 회사의 미래가 걸린 애플리케이션을 개발할 때
보안이 중요해서 시스템 무결성을 보장하기 위해 외부 침입, 크래킹, 파괴 등을 막아야 할 때
서로 의존적인 관계에 있는 여러 컴포넌트로 이루어진 프로젝트를 진행할 때
과도한 파일 연산이 필요할 때
다차원 배열이 필요할 때
링크드 리스트나 트리 같은 데이터 구조가 필요할 때
그래픽이나 GUI를 만들고 변경하는 작업이 필요할 때
시스템 하드웨어에 직접 접근해야 할 때
포트나 소켓 I/O가 필요할 때
예전에 쓰던 코드를 사용하는 라이브러리나 인터페이스를 써야 할 때
(오픈 소스 스크립트 언어의 경우) 독점적이고 소스 공개를 안 하는 애플리케이션을 만들어야 할 때


6. 1. 성능 문제

스크립트 언어는 특정한 상황에서는 사용하지 않는 것이 좋을 수 있으며, 이런 경우에는 컴파일 언어 등으로 대체하는 것이 바람직하다.[4]

스크립트 언어를 사용하기 적합하지 않은 경우는 다음과 같다.

  • 정렬, 해시 등 속도가 중요하거나 리소스에 민감한 작업을 할 때
  • 강력한 산술 연산 작업, 특히 임의의 정밀도 연산이 필요할 때
  • 플랫폼 간 이식성이 필요할 때
  • 변수의 타입 체크나 함수 프로토타입 등 구조적 프로그래밍이 필요한 복잡한 애플리케이션을 개발할 때
  • 업무에 매우 중요하거나 회사의 미래가 걸린 애플리케이션을 개발할 때
  • 보안이 중요해서 시스템 무결성을 보장하기 위해 외부 침입, 크래킹, 파괴 등을 막아야 할 때
  • 서로 의존적인 관계에 있는 여러 컴포넌트로 이루어진 프로젝트를 진행할 때
  • 과도한 파일 연산이 필요할 때
  • 다차원 배열이 필요할 때
  • 링크드 리스트나 트리 같은 데이터 구조가 필요할 때
  • 그래픽이나 GUI를 만들고 변경하는 작업이 필요할 때
  • 시스템 하드웨어에 직접 접근해야 할 때
  • 포트나 소켓 I/O가 필요할 때
  • 예전에 쓰던 코드를 사용하는 라이브러리나 인터페이스를 써야 할 때
  • (오픈 소스 스크립트 언어의 경우) 독점적이고 소스 공개를 안 하는 애플리케이션을 만들어야 할 때


스크립트는 일반적으로 컴파일되지 않고, 인터프리터에 의해 소스 코드 또는 바이트코드로부터 직접 해석되거나, JIT 컴파일 이후 네이티브 코드로 실행된다.[4]

6. 2. 보안 문제

보안 상 중요해서 시스템 무결성을 보장하기 위해 외부의 침입, 크래킹, 파괴 등을 막아야 할 필요가 있을 때는 스크립트 언어를 사용하지 않는 것이 좋다.[1] 이러한 경우에는 컴파일 언어 등으로 대체한다.[1]

6. 3. 대규모 프로젝트 부적합

스크립트 언어는 다음과 같은 상황에서 사용하기 적합하지 않으며, 컴파일 언어 등으로 대체하는 것이 좋다.[1]

  • 자원 집약적인 작업: 특히 속도가 중요한 정렬, 해시 등에 적합하지 않다.
  • 정밀 계산: 임의 정밀도 연산 등 강력한 산술 연산이 필요한 경우에 적합하지 않다.
  • 플랫폼 간 이식성: 다양한 운영 체제에서 실행되어야 하는 경우에 적합하지 않다.
  • 복잡한 애플리케이션: 변수 타입 체크, 함수 프로토타입 등 구조적 프로그래밍이 필요한 경우에 적합하지 않다.
  • 중요 업무: 회사의 미래가 걸린 중요한 애플리케이션에는 적합하지 않다.
  • 보안: 시스템 무결성을 보장해야 하는 보안상 중요한 애플리케이션에는 적합하지 않다.
  • 상호 의존적인 프로젝트: 여러 컴포넌트가 서로 의존적인 관계를 가지는 프로젝트에는 적합하지 않다.
  • 과도한 파일 연산: 파일 입출력이 많은 작업에는 적합하지 않다.
  • 다차원 배열: 다차원 배열이 필요한 경우에 적합하지 않다.
  • 데이터 구조: 링크드 리스트, 트리 같은 자료 구조가 필요한 경우에 적합하지 않다.
  • GUI: 그래픽 사용자 인터페이스(GUI)를 만들고 변경하는 작업에는 적합하지 않다.
  • 하드웨어 접근: 시스템 하드웨어에 직접 접근해야 하는 경우에 적합하지 않다.
  • 네트워크: 포트나 소켓 입출력이 필요한 경우에 적합하지 않다.
  • 기존 코드: 예전에 쓰던 코드를 사용하는 라이브러리나 인터페이스를 써야 할 때는 적합하지 않다.
  • 비공개 소스: 소스 코드를 공개하지 않는 독점적인 애플리케이션을 개발해야 하는 경우 (오픈 소스 스크립트 언어의 경우)에 적합하지 않다.

참조

[1] 웹사이트 ECMAScript 2019 Language Specification https://tc39.github.[...] Ecma International 2018-04-02
[2] 웹사이트 Beginner's Introduction to Perl http://www.perl.com/[...] Perl.com 2000-10-16
[3] 웹사이트 Programming is Hard, Let's Go Scripting... http://www.perl.com/[...] 2007-12-12
[4] 웹사이트 Scripting Languages http://www.mactech.c[...] 2009-07-22
[5] 웹사이트 In Praise of Scripting: Real Programming Pragmatism http://www.cse.wustl[...] IEEE Computer 2013-08-27
[6] 서적 IBM System/360 Operating System Job Control Language (C28-6529-4) http://www.bitsavers[...] 1967-03
[7] 웹사이트 TRAC, A Procedure-Describing Language for the Reactive Typewriter http://tracfoundatio[...] 2012-03-09
[8] 웹사이트 Multics Glossary – A — (active function) http://www.multician[...] 2012-03-09
[9] 웹사이트 VM and the VM Community: Past, Present, and Future http://web.me.com/me[...] 2012-03-09
[10] 웹사이트 Multics Glossary – R — (RUNCOM) http://www.multician[...] 2012-03-09
[11] 웹사이트 What is glue code (glue code language)? - Definition from WhatIs.com https://whatis.techt[...] 2022-01-31
[12] 웹사이트 Interpreted vs Compiled Programming Languages https://www.freecode[...] 2020-01-10
[13] 웹사이트 Script Adalah https://rajatips.com[...] 2022-02-23
[14] 웹사이트 Shell scripts - What can you change https://linuxhint.co[...] 2022-02-23
[15] 웹사이트 Job Control Basics (Bash Reference Manual) https://www.gnu.org/[...] 2022-05-20
[16] 문서 Oraperl - [DEPRECATED] Perl access to Oracle databases for old oraperl scripts https://metacpan.org[...] metacpan.org
[17] 문서 Perl http://www.orafaq.co[...] Underground Oracle FAQ
[18] 웹사이트 Glue It All Together With Python https://www.python.o[...] python.org 1998-01-07
[19] 웹사이트 JavaScript for Automation Release Note https://developer.ap[...] Apple Inc. 2014-09-04
[20] 서적 The Computing Universe: A Journey through a Revolution Cambridge University Press
[21] 서적 IBM System/360 Operating System Job Control Language (C28-6529-4) http://www.bitsavers[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com