스크립트 언어(Script Language) vs 컴파일 언어(Compile Language)
개요
스크립트 언어와 컴파일언어를 이해하고 그 차이를 알아본다.
목차
- 스크립트 언어(Script Language)란?
- 컴파일 언어(Compile Language)란?
- 스크립트 언어(Script Language) vs 컴파일 언어(Compile Language)
소개
1. 스크립트 언어(Script Language)란?
스크립트 언어(Script Language)의 정의
컴퓨터 프로그래밍 언어의 한 종류로, 스크립트 작성 기능을 지원하는 소프트웨어(애플리케이션)을 제어하는 역할을 하는 언어로 정의되어 있다. 수정이 자주 발생하는 덩치가 큰 소프트웨어에서 컴파일은 시간이 오래 소요되는 작업이므로, 수정이 빈번하게 발생하는 부분에서는 소스코드를 한줄씩 읽어 바로 실행하는 인터프리터 방식이 효율적이다. 이에 따라 스크립트 언어도 대부분 인터프리터 방식을 사용하는 인터프리터 언어라고 할 수 있다.
스크립트 언어(Script Language)의 발전
스크립트 언어의 대표적인 예는 Javascript, JSP, PHP, Python, Ruby 등이 있다. 이러한 언어들은 시간이 지남에 따라 빠르게 발전하고 있다. 그 예로 Javascript는 웹 환경이 고도화되고, 표준화되며 Node.js 런타임 환경 및 Electron 등이 등장하면서 스크립트 언어 자체만으로도 독립적인 프로그램의 개발이 가능해짐에 따라 소프트웨어를 제어하는 언어라고만 정의 할 수 없게 되었다.
스크립트 언어(Script Language)의 특징
- 스크립트 언어는 컴파일 언어에 비해 단순하고 쉬운 문법 구조를 갖고 있다.
- 컴파일러 없이 명령어를 한줄씩 읽으면서 실행하므로, 번역속도는 빠르지만 프로그램 실행 시 매번 같은 코드를 번역해야 한다. 따라서 프로그램의 실행속도는 컴파일 언어에 비해 느리다.
- CPU의 사용시간의 낭비가 크므로 복잡한 산술연산 혹은 복잡한 구조의 프로그램에서는 효율적이지 않을 수 있다.
- 컴파일 과정이 없기 때문에 프로그램을 실행시켜야 오류를 알 수 있다.
- 컴파일 과정이 없기 때문에, 소스 코드가 그대로 실행파일이 되어 메모리에 적재된다. 그 이후 런타임시 메모리가 명령어를 실행하기 위해 내부적으로 기계어로 변환하는 과정을 거친다.
2. 컴파일 언어(Compile Language)란?
컴파일 언어(Compile Language)의 정의
컴파일 언어란 소스코드(Source Code)를 컴파일 하여 목적코드(Object Code or Executable File)로 옮기고, 목적코드(기계어)를 읽어 실행시키는 방식으로 동작하는 언어이다.
컴파일 언어(Compile Language)의 특징
- 문법적 제약이 많아, 스크립트 언어에 비해 사용이 어렵다.
- 컴파일을 하기 때문에 규모가 큰 프로그램일 경우 컴파일 하는데에 오랜 시간이 소요된다.
- 한번 컴파일을 하면, 이후에는 기계어를 읽어들이기 때문에 실행속도가 빠르다.
- 기계어를 통해 프로그램이 실행되기 때문에 프로그램의 소스코드가 유출되기 어렵다.
- O.S 마다 기계어가 상이하기 때문에 O.S에 따라 작업을 다르게 해주어야 한다.
- 컴파일러가 소스코드를 기계어로 변환시켜준다. 그 이후 기계어가 메모리에 적재된다.
3. 인터프리터 방식의 스크립트 언어(Script Language) vs 컴파일 언어(Compile Language)
인터프리터 방식의 스크립트 언어 (Script Language) |
컴파일 언어 (Compile Language) |
|
번역 단위 | 행(코드 한 문장) | 전체 |
번역 속도 | 빠름 | 느림 |
실행 속도 | 느림 | 빠름 |
기계어 번역 시기 | 메모리 적재 이후 내부적으로 번역 | 메모리 적재 이전 컴파일 과정 |
O.S 고려 | X | O |
언어 예시 | JavaScript, Python, JSP, jQuery 등 | C, C++, Java, Go 등 |
참고사이트
1. https://docs.oracle.com/javase/10/scripting/scripting-languages-and-java.htm#JSJSG107
2. https://www.ibm.com/docs/en/zos-basic-skills?topic=zos-compiled-versus-interpreted-languages
3. https://velog.io/@junek3/%EC%BB%B4%ED%8C%8C%EC%9D%BC-%EC%96%B8%EC%96%B4%EC%99%80-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%96%B8%EC%96%B4%EC%9D%98-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC
'Programming Language > Javascript' 카테고리의 다른 글
[변수 선언] var vs let vs const (0) | 2022.01.12 |
---|