본문 바로가기

About my life/Development Studies

스크립트 언어와 프로그램 언어의 차이점: CS지식

728x90
반응형

 

스크립트 언어와 프로그램 언어는 코드 실행 방식에서 차이를 가지며, 스크립트 언어는 런타임에 소스 코드를 해석하여 실행하고, 프로그램 언어는 컴파일러를 통해 기계어로 번역 후 실행된다. 스크립트 언어는 빠른 개발과 동적 타이핑으로 특징되며, 프로그램 언어는 높은 성능과 시스템 프로그래밍에 적합하다. 대표적인 언어로는 JavaScript, Python이 스크립트 언어, C, Java가 프로그램 언어에 속한다.

 

 

 

위 요약글에서는 이해가 잘 안가시는 분들을 위해서 자세하게 어떤 부분에서 차이가 있는 지 아래에서 설명드리겠습니다. 

 

 

스크립트 언어와 프로그램 언어의 정의:

 

스크립트 언어:

 

스크립트 언어는 소스 코드를 런타임에 해석하여 실행하는 언어입니다. 이는 프로그램을 직접 실행하는 것이 아니라 인터프리터에 의해 해석되면서 실행됩니다. 변수의 데이터 타입이 런타임에 결정되는 동적 타이핑 특성을 가지고 있고, 일반적으로 프로그래머가 쉽게 학습하고 사용할 수 있도록 간결한 문법을 갖추고 있습니다.

 

프로그램 언어:

 

프로그램 언어는 소스 코드를 컴파일러에 의해 기계어로 번역한 후 실행하는 언어입니다. 번역된 프로그램은 실행 파일로 저장되어 나중에 실행됩니다. 변수의 데이터 타입이 컴파일 시점에 결정되는 정적 타이핑 특성을 가지고 있고, 일반적으로 스크립트 언어보다 복잡한 문법을 가지고 있다. 

 

 

 

 

 

 

스크립트 언어와 프로그램 언어의 특징:

 

 

 

 

스크립트 언어:
  • 빠른 개발: 상대적으로 간단한 문법과 동적 타이핑으로 인해 빠른 개발이 가능하다.
  • 동적 타이핑: 변수의 타입을 명시적으로 선언하지 않아도 되기 때문에 더 유연하게 코드를 작성할 수 있고, 코드 수정이 간편하다.
결국 문법이 간단하고 가독성이 높기 때문에 개발 속도를 높일 수 있고, 이로 인해 빠르게 프로토타입을 만들거나 새로운 기능을 빠르게 도입할 수 있다는 장점이 있다. 이러한 장점을 활용할 수 있는 곳에서 부분적으로 사용된다고 한다.

 

 

프로그램 언어:
  • 높은 성능: 미리 컴파일되어 실행되기 때문에 프로그램 언어는 일반적으로 높은 실행 속도를 보유하고 있다.
  • 시스템 프로그래밍: C, C++와 같은 프로그램 언어는 운영 체제나 하드웨어와 밀접한 상호작용이 필요한 시스템 프로그래밍에 적합하다.
일반적으로 소스 코드를 컴파일하게 되면 기계어로 번역이 되는데, 이때 성능 최적화가 이루어진다고 합니다. 그래서 보통 실행 파일로 프로그램을 실행할 경우 최적화된 기계어 코드로 실행하기 때문에 높은 실행 속도를 보유한다고 합니다. 그리고 프로그램 언어는 직접 메모리 관리를 할 수 있는 등등 시스템 프로그래밍을 위한 다양한 라이브러리와 프레임워크가 개발되어 있기 때문에 운영 체제나 하드웨어와 밀접한 상호작용이 필요한 시스템 프로그래밍에 적합한 것이다. 

 

 

 

 

 

 

스크립트 언어와 프로그램 언어의 원리:

 

스크립트 언어:

 

스크립트 언어는 런타임동안 별도의 컴파일 단계 없이 인터프리터를 통해 직접 실행된다는 것이 포인트이다. 인터프리터는 소스 코드를 한 줄씩 해석하여 중간 코드 or 기계어로 변환하고, 그 결과를 즉시 실행하는 프로그램을 말한다. 따라서 우리는 그 결과를 즉시 볼 수 있다.

 

 

프로그램 언어:

 

프로그램 언어로 작성된 소스 코드는 컴파일러를 사용하여 기계어나 특정 플랫폼에 맞는 중간 코드로 변환되어 목적 코드가 만들어집니다. (이때 작성된 소스 코드가 여러 개의 소스 파일로 나뉘어 있거나 외부 라이브러리를 사용하는 경우, Linker가 이들을 하나로 합치고 실행 파일에 필요한 라이브러리와의 연결을 수행합니다. ) 목적 코드는 특정 플렛폼에서 실행 가능한 형태로 되어있으며, 컴퓨터의 아키텍처에 최적화된 기계어로 되어있습니다. 실행 파일이 실행되면 CPU가 기계어를 한 줄씩 실행하여 처리한다. 

 

 

좀 더 깊게 들어가서 둘의 차이점을 말해보자면 다음과 같습니다.

 

먼저 런타임 측면에서 살펴보면 스크립트 언어는 인터프리터라는 중간 매개체를 통해 소스 코드를 해석하고 기계어로 변환하는 과정이 포함되어있기 때문에 오버헤드가 있지만, 프로그램 언어는 컴파일 단계에서 모두 기계어로 변환되어 있기 때문에 런타임 관점에서는 기계어를 실행만 하면 된다. 

 

 

두 번째로 실행속도 측면에서 살펴보면 스크립트 언어는 전체 소스 코드를 분석하여 기계어로 변환하는 것이 아닌 한 줄씩 기계어로 변환하여 실행하기 때문에 최적화 단계가 존재하지 않는다. 그러나 프로그램 언어는 컴파일러가 전체 소스 코드를 분석하여 기계어로 변환할 때 여러가지 최적화 단계를 거칩니다. 따라서 인터프리터의 오버 헤드가 없다고 하더라도 최적화된 기계어로 되어있는 프로그램 언어가 훨씬 더 빠를 수밖에 없게 된다.

 

 

세 번째로 라이브러리 측면에서 보면 프로그램 언어는 시스템 프로그래밍을 위한 다양한 라이브러리가 개발되어있기 때문에 하드웨어의 특성을 활용할 수 있고, 메모리를 효율적으로 사용하고 관리하도록 최적화할 수 있다. 그 뿐만 아니라 컴파일 단계에서 "Constant Folding", " Variable Tracking", "Local Variable Optimization", "Loop Optimization", "Inline Caching" 등등의 최적화가 이루어지기 때문에 실행 속도가 빠를 수밖에 없다. 하나의 예시로 Inline Caching 기법은 컴파일에서 확인한 자주 사용되는 기계어 코드를 캐시에 저장하여 높은 실행 속도를 유지할 수 있다.

 

 

 


 

 

스크립트 언어와 프로그램 언어는 용도에 따라 다르게 사용되며 같은 언어라도 각각의 특징을 모두 갖고 있는 언어가 존재한다. 따라서 각 언어에 대해서 깊이 있게 알고 필요한 부분에 정확하게 사용할 줄 아는 것이 가장 중요한 것 같다.

 

 


 

 

스크립트 언어와 프로그램 언어의 종류:

 

스크립트 언어:
  1. JavaScript (JS):
    • 웹 브라우저에서 동적인 웹 페이지를 만들기 위해 사용되는 스크립트 언어. Node.js와 같은 환경에서 서버 측 개발에도 사용됨.
  2. Python:
    • 다목적 스크립트 언어로, 웹 개발, 데이터 분석, 인공지능, 자동화, 게임 개발 등 다양한 분야에서 사용.
  3. Ruby:
    • 간결하고 가독성이 뛰어난 문법을 가진 스크립트 언어. Ruby on Rails 프레임워크로 유명한 웹 개발에 주로 사용.
  4. PHP:
    • 웹 개발에 특화된 서버 측 스크립트 언어. 주로 동적인 웹 페이지를 생성하기 위해 사용.
  5. Perl:
    • 텍스트 처리와 시스템 관리 등 다양한 용도로 사용되는 스크립트 언어. 유연한 문자열 처리 기능을 가지고 있음.
  6. Shell Script (Bash, PowerShell 등):
    • 운영 체제의 명령어를 스크립트 형태로 작성하여 자동화하는 데 사용. Bash는 Unix 계열, PowerShell은 Windows에서 사용.
  7. Lua:
    • 임베디드 시스템, 게임 개발, 스크립팅 엔진 등에서 사용되는 경량 스크립트 언어.
  8. TypeScript:
    • JavaScript에 정적 타입을 추가한 언어. 주로 대규모 프로젝트에서 유지보수와 코드 안정성을 강화하기 위해 사용.
  9. Swift Scripting:
    • 애플의 Swift 언어를 기반으로 하는 스크립트 언어. 주로 iOS 및 macOS 개발에 사용.
  10. Groovy:
    • Java 가상 머신에서 동작하며, Java와의 호환성을 가진 스크립트 언어. 주로 자바 개발 환경에서 사용.

 

 

프로그램 언어:
  1. C:
    • 저수준 언어로서 성능이 우수하고 시스템 프로그래밍에 많이 사용됨.
  2. C++:
    • C를 기반으로 객체 지향 프로그래밍을 추가한 언어로, 게임 개발, 시스템 프로그래밍, 소프트웨어 개발 등에 사용됨.
  3. Java:
    • 플랫폼 독립성을 가진 객체 지향 언어로, 대규모 응용 프로그램 및 웹 개발에 사용.
  4. Python:
    • 간결하고 가독성이 뛰어난 언어로, 다양한 분야에서 사용되며, 데이터 분석, 인공지능, 웹 개발, 자동화 등에 적합.
  5. JavaScript:
    • 웹 브라우저에서 동적인 웹 페이지를 만들기 위한 스크립트 언어로, 프론트엔드 및 백엔드 개발에 사용.
  6. C#:
    • 마이크로소프트에서 개발한 객체 지향 프로그래밍 언어로, 주로 Windows 애플리케이션 및 웹 개발에 사용.
  7. Swift:
    • 애플에서 iOS 및 macOS 애플리케이션 개발을 위해 만든 프로그래밍 언어.
  8. Ruby:
    • 동적 타입 언어로서 간편한 문법을 가지고 있으며, Ruby on Rails 프레임워크로 유명한 웹 개발에 사용.
  9. Go (Golang):
    • 구글에서 개발한 간결하고 효율적인 언어로, 분산 시스템 및 서버 개발에 사용.
  10. PHP:
    • 서버 측 웹 개발 언어로, 동적인 웹 페이지 생성을 위해 사용.
  11. TypeScript:
    • JavaScript에 정적 타입을 추가한 언어로, 대규모 프로젝트에서 유지보수와 코드 안정성을 강화하기 위해 사용.
  12. Rust:
    • 메모리 안전성과 성능에 중점을 둔 언어로, 시스템 프로그래밍 및 웹 어셈블리 등에 사용.
  13. Kotlin:
    • JVM 언어로서 안드로이드 애플리케이션 개발을 위해 만들어진 언어.

 

 

 

 

중첩 되는 언어같은 경우에는 둘의 특성을 모두 갖고 있다고 합니다. 따라서 위에서 언급했듯이 각 언어별로 특징을 깊게 이해하고 필요한 부분에 사용하시는 것을 추천드립니다.


Reference

1. https://www.techtarget.com/whatis/definition/scripting-language

 

What is scripting language? | Definition from TechTarget

This definition explains what a scripting language is and why the definition has changed over time from simply differentiating a programming language that is interpreted from one that is compiled, to address how the language is being used.

www.techtarget.com

2. https://codeinstitute.net/global/blog/what-is-a-programming-language/

 

What Is A Programming Language?  - Code Institute Global

A programming language is a set of instructions written by a programmer to deliver instructions to the computer to perform & accomplish a task.

codeinstitute.net

 

728x90
반응형