클라우드, 인프라, 데브옵스(DevOps)에 해당하는 직군의 공고를 읽으면 서버와 네트워크에 대한 이해에 더하여 파이썬, 리눅스 쉘 스크립트 등 스크립트 언어에 대한 이해가 선호되는 걸 확인할 수 있었다.
이 게시글은 '스크립트 언어는 뭐길래 클라우드 분야에서 그렇게 선호되는 걸까'라는 궁금증에서 시작하여 스크립트 언어의 특징을 정리할 필요성을 느껴 작성하기 시작했다.
1. 스크립트 언어(Script Language)란?
○ 정의
- 컴퓨터 프로그래밍 언어의 한 종류로, 스크립트 작성 기능을 지원하는 소프트웨어(애플리케이션)을 제어하는 언어.
- 수정이 자주 발생하는 덩치 큰 소프트웨어에서 컴파일은 오래 소요되는 작업이므로, 수정이 빈번하게 발생하는 부분에서는 소스 코드를 한줄씩 읽어 바로 실행하는 인터프리터 방식이 효율적
- 때문에 스크립트 언어도 대부분 인터프리터 방식을 사용하는 인터프리터 언어라고 봄.
○ 장점
- 인터프리터 언어 : 스크립트 언어는 코드를 실행하기 위해 별도의 컴파일 과정 없이 코드를 직접 실행 가능
- 가독성과 간결성 : 스크립트 언어는 문법이 간단하며 가독성이 좋음
- 동적 타이핑 : 스크립트 언어는 변수의 데이터 타입을 선언하지 않아 유연한 코드 작성이 가능함
- 라이브러리와 생태계 : 풍부한 라이브러리 지원으로 다양한 기능을 간단히 사용 가능함
- 클라우드 서비스와의 통합 : 많은 클라우드 서비스가 스크립트 언어를 지원. 클라우드 API를 스크립트 언어로 간단히 호출 가능하기 때문에, 클라우드 환경에서의 자동화 및 관리 작업에 특히 용이함.
● 단점
- 프로그램 실행 시 매번 같은 코드를 번역해야 하기 때문에 프로그램의 실행 속도가 컴파일 언어에 비해 느림
- CPU 사용시간 낭비가 커서 산술연산 혹은 복잡한 구조의 프로그램에서는 효율적이지 않을 수 있음
- (컴파일 과정이 없기 때문에) 프로그램을 실행시켜야 오류 확인 가능함
- (컴파일 과정이 없기 때문에) 소스 코드가 그대로 실행파일이 되어 메모리 파일에 적재됨. 그 후 런타임 시 메모리가 명령어를 실행하기 위해 내부적으로 기계어로 변환하는 과정을 거침.
2. 인터프리터 방식의 스크립트 언어(Script Language) vs. 컴파일 언어(Compile Language)
Script Language | Compile Language | |
번역 단위 | 행(코드 한 문장) | 전체 |
번역 속도 | 빠름 | 느림 |
실행 속도 | 느림 | 빠름 |
기계어 번역 시기 | 메모리 적재 이후 내부적으로 번역 | 메모리 적재 이전 컴파일 과정 |
O.S 고려 | X | O |
언어 예시 | JavaScript, Python, JPS, JQuery 등 | C, C++, Java, Go 등 |
3. 클라우드 환경에서 스크립트 언어가 선호되는 이유
클라우드 환경에서 리눅스 쉘 스크립트 및 파이썬 같은 스크립트 언어가 선호되는 이유는 다음과 같습니다.
1) 크로스 플랫폼 호환성
- 클라우드 환경에서는 다양한 운영 체제 및 환경에서 애플리케이션이 실행됩니다.
- 스크립트 언어는 플랫폼 간 호환성이 뛰어나기 때문에 여러 운영 체제에서 동일한 스크립트를 실행할 수 있습니다.
2) 자동화 및 스크립팅
- 클라우드 인프라를 구성하고 관리하는 데에는 다양한 작업이 필요합니다.
- 스크립트 언어는 자동화 및 스크립팅 작업에 용이하며, 이를 통해 반복 작업을 효과적으로 처리할 수 있습니다.
3) API 상호작용
- 클라우드 플랫폼은 다양한 API를 제공하며, 이를 통해 서비스를 관리하고 제어할 수 있습니다.
- 스크립트 언어는 HTTP 요청을 쉽게 처리할 수 있고, API와 상호작용하기에 적합합니다.
4) 가독성과 유지보수성
- 스크립트 언어는 일반적으로 간단하고 가독성이 좋아 코드를 빠르게 작성하고 유지보수할 수 있습니다.
- 특히 클라우드 환경은 신속한 개발과 유연성이 중요하므로, 스크립트 언어의 특성이 유용합니다.
5) 빠른 프로토타이핑과 개발
- 스크립트 언어는 컴파일이 필요 없이 런타임에서 코드를 해석하므로 빠른 프로토타이핑과 개발 주기를 보장합니다.
예상 질답
Q. 스크립트 언어의 특징에 대해 설명해주세요.
스크립트 언어는 코드를 인터프리터를 통해 실행하는 언어로, 별도의 컴파일 단계 없이 소스 코드를 직접 해석하여 실행합니다. 주로 간결한 문법과 동적 타이핑, 높은 가독성 등의 특징을 갖고 있습니다. 이로써 빠른 개발 주기와 유연한 코딩이 가능하며, 특히 빠른 프로토타이핑, 스크립팅, 자동화 등에 적합합니다.
스크립트 언어는 주로 인터프리터를 통해 실행되므로 컴파일 언어에 비해 실행 속도가 상대적으로 느릴 수 있지만, 편리한 개발 환경과 라이브러리 생태계의 풍부함으로 많은 개발자들에게 선호되고 있습니다.
Q. 스크립트 언어와 컴파일 언어를 비교해 설명해주세요.
스크립트 언어와 컴파일 언어는 주로 코드의 실행 방식과 특징에서 차이가 있습니다. 스크립트 언어는 인터프리터를 통해 소스 코드를 실행하며, 컴파일 언어는 빌드 과정을 거쳐 목적 코드로 컴파일한 후 실행합니다.
스크립트 언어는 코드를 직접 해석하므로 별도의 컴파일 과정이 필요하지 않습니다. 이로써 빠른 프로토타이핑이 가능하며, 개발 생산성이 높습니다. 하지만 실행 시간에 코드를 해석하므로 컴파일 언어에 비해 실행 속도가 느릴 수 있습니다.
반면에 컴파일 언어는 소스 코드를 목적 코드로 컴파일 하는 과정이 필요합니다. 이는 실행 전에 코드를 미리 컴파일하므로 실행 속도가 빠릅니다. 또한 컴파일 과정에서 코드 최적화가 가능하며, 일부 오류를 컴파일 시간에 미리 발견할 수 있습니다. 하지만 컴파일 단계를 거쳐야 하기 때문에 개발 주기가 상대적으로 길어질 수 있습니다.
각각의 장단점을 고려하여 선택되는데, 스크립트 언어는 주로 빠른 개발과 유연성이 필요한 상황에서, 컴파일 언어는 성능과 안정성이 중요한 상황에서 주로 사용됩니다.
Q. 스크립트 언어는 컴파일 언어보다 실행 속도가 느린데 어떻게 빠른 개발이 가능한가요?
스크립트 언어의 빠른 개발은 주로 인터프리터 방식의 실행과 동적 타이핑 등의 특징에서 비롯됩니다.
스크립트 언어는 코드를 직접 해석하며, 이로 인해 코드를 즉시 실행할수 있습니다. 따라서 코드 수정이 발생할 때마다 번역 작업 없이 바로 실행할 수 있어, 빠른 프로토타이핑과 개발이 가능합니다. (인터프리터 방식)
또한 스크립트 언어는 변수의 타입을 선언하지 않아도 되는데, 이는 유연한 코드 작성 및 불필요한 선언을 줄여 코드 작성 시간을 단축하고 개발 생산성을 높이는 데 기여합니다. (동적 타이핑)
많은 스크립트 언어들이 간결하고 직관적인 문법을 가지고 있습니다. 이는 코드를 더 쉽게 이해하고 작성할 수 있게 돕습니다. (간결한 문법)
많은 스크립트 언어에서는 가비지 컬렉션 같은 자동 메모리 관리 기능이 제공됩니다. 이는 개발자가 메모리 할당과 해제를 명시적으로 다루지 않아도 되어 코드 작성을 간소화합니다. (자동 메모리 관리)
정리하면, 스크립트 언어는 개발 생산성을 높이기 위해 간단하고 유연한 문법, 빠른 수정 및 실행이 가능한 인터프리터 방식, 동적 타이핑 등의 특징을 제공하여 빠른 개발을 지원합니다.
참고 출처
- https://well-made-codestory.tistory.com/30#03
- https://docs.oracle.com/javase/10/scripting/scripting-languages-and-java.htm#JSJSG107
- https://www.ibm.com/docs/en/zos-basic-skills?topic=zos-compiled-versus-interpreted-languages
'프로그래밍 언어' 카테고리의 다른 글
[프로그래밍 기초] 명령형 vs. 선언형 프로그래밍 (0) | 2024.02.07 |
---|---|
[프로그래밍 기초] 정규표현식 (Regular Expression) (0) | 2023.10.24 |