스크립트 언어(Scripting Language)

정웅·2025년 12월 29일

개발지식

목록 보기
1/3
post-thumbnail

스크립트 언어란?

스크립트 언어는 보통 별도의 빌드 (컴파일) 과정을 거치지 않고, 인터프리터/런타임 환경에서 바로 실행할 수 있는 언어를 말한다.
대표적으로 Python, JavaScript, Ruby, PHP, Bash 등이 있다.

다만 "스크립트 언어는 컴파일을 하지 않는다"는 표현은 엄밀히는 부정확할 수 있다. 예를 들어 Python은 실행 전에 바이트 코드(.pyc)로 변환될 수 있고, JavaScript 엔진은 JIT(Just-In-Time) 컴파일로 실행 중 기계어로 변환해 성능을 높이기도 한다.
즉, 스크립트/컴파일의 구분은 "내부 구현이 컴파일을 하냐 안 하냐"보다는 "사용/배포 방식(바로 실행 중심인지, 빌드 산출물 중심인지)"으로 이해하는 것이 정확하다.


컴파일 언어와의 비교

  • 컴파일 언어(AOT 중심): 실행 전에 소스 코드를 미리 컴파일하여 실행 가능한 산출물(예: 실행파일, 바이너리)을 만든 뒤 실행하는 방식이 일반적이다.
    예: C/C++
  • VM 기반 언어(바이트코드 컴파일 + 런타임 실행) : 소스 코드를 바이트코드로 컴파일한 뒤 VM 위에서 실행한다. 실행 중 JIT 최적화가 들어갈 수 있다.
    예: Java, Kotlin
  • 스크립트 언어(런타임 실행 중심): 보통 소스 파일을 인터프리터/런타임이 즉시 실행한다(사용자 입장에서 별도 빌드가 필요 없는 경우가 많음).
    예: Python, JavaScript, Ruby, PHP, Shell

장단점

  • 스크립트 언어 장점
    • 빠른 작성/수정/실행(개발 사이클이 짧음)
    • 자동화, 데이터 처리, 프로토타이핑에 유리
    • 풍부한 라이브러리/생태계(특히 Python)
  • 스크립트 언어 단점
    • 런타임 특성상 초기 실행/일부 연산에서 성능이 불리할 수 있음
    • (동적 타이핑이 흔해서) 타입/실수 오류를 실행 중에 발견하는 경우가 많음
  • 컴파일 언어(AOT) 장점
    • 높은 성능, 배포/실행이 단순한 경우가 많음(실행파일)
    • 컴파일 단계에서 오류를 많이 잡을 수 있음(정적 타입 언어가 흔함)
  • 컴파일 언어 단점
    • 빌드/배포 과정이 추가될 수 있음
    • 플랫폼/환경 의존성이 생길 수 있음(특히 네이티브 바이너리)

단 성능은 언어만으로 결정되지 않고 구현/런타임/JIT/라이브러리/코드 품질에 크게 좌우된다.


스크립트 언어의 용도

1) 시스템/자동화(운영, DevOps)

  • 유닉스/리눅스: Shell(Bash, zsh)
  • 윈도우: Batch, PowerShell
  • 용도: 반복 작업, 배포, 로그 처리, 파일/프로세스 관리, 서버 운영 자동화 등에 사용

2) 웹 애플리케이션

웹에서 "스크립트"는 보통 어디에서 실행되느냐(서버/클라이언트)로 나눌 수 있다.

(1) 서버 사이드(Server-side) 스크립트
서버에서 실행되어 HTML/JSON 응답을 생성하고 클라이언트에 전달한다.

  • 예: PHP, Python(Django/FastAPI), Ruby(Rails), JavaScript(Node.js), Perl 등

참고: JSP는 ‘스크립트 언어’라기보다 Java 기반의 서버 템플릿(뷰) 기술이다. JSP는 서버에서 서블릿(자바 코드)로 변환·컴파일되어 실행되므로, 스크립트 언어 목록에 넣기보다는 “서버 템플릿/뷰 기술”로 분류하는 것이 더 정확하다.

(2) 클라이언트 사이드(Client-side) 스크립트
브라우저에서 실행되어 화면 렌더링, 이벤트 처리, 서버 통신(AJAX/fetch) 등을 수행한다.

  • 사실상 표준: JavaScript
  • 참고: TypeScript는 브라우저에서 직접 실행되지 않고 JavaScript로 컴파일된 결과가 브라우저에서 실행된다.
  • VBScript/JScript는 과거 IE 중심
    기술로 현재는 거의 사용하지 않는다.

스크립트 언어는 “런타임(인터프리터/VM)에서 즉시 실행되는 사용 경험이 중심인 언어”이며, 내부적으로는 바이트코드 변환이나 JIT 등 컴파일 기법이 섞일 수 있다.

profile
즐거운 개발 :) 신입 서버 개발자입니다

0개의 댓글