제목:

저급 언어와 고급 언어

날짜: Posted on

컴퓨터 프로그래밍 언어 하면 저급 언어와 고급 언어로 분류됩니다. 고급 언어는 다시 컴파일러 언어와 인터프리터 언어, 절차 지향 언어와 객체 지향 언어 등의 분류가 있습니다. 여기서는 저급 언어와 고급 언어의 차이를 설명합니다.

저급 언어(Low-Level Language)는 기계어와 어셈블리어 이렇게 2개의 프로그래밍 언어가 있고, 나머지(C, Java, Python 등)는 모두 고급 언어(High-Level Language)로 분류됩니다.
여기서 저급 언어라 함은 질이 낮다는 의미가 아니라 컴퓨터와 가까운 언어라는 의미입니다. 본래 컴퓨터는 0과 1로 이루어진 언어인 기계어만을 실행할 수 있습니다. 어셈블리어는 어셈블러라는 것을 이용해 기계어로 바꾼 뒤 실행하는 것이고, 고급 언어는 컴파일러(코드 전체를 한꺼번에 저급 언어로 번역하여 실행) 또는 인터프리터(코드를 한 문장씩 저급 언어로 번역하면서 실행) 등의 번역 프로그램을 통해 저급 언어로 바꿔서 실행하도록 하는 구조입니다. 위 그림은 하드웨어와 기계어가 바로 연결되어 있고 그 위에는 어셈블리어, 또 그 위에는 고급 언어가 있는데, 이는 고급 언어로 프로그램을 작성하면 어셈블리어라는 가교를 거쳐 기계어로 번역되어 실행되는 것을 의미합니다.
위 피라미드가 이 과정을 설명해 주고 있습니다. 고급 언어로 프로그램을 작성하면 이를 컴파일러 또는 인터프리터가 어셈블리어로 번역한 뒤, 번역된 어셈블리어를 어셈블러가 기계어로 변환하면 컴퓨터가 이를 해석해서 실행하는 구조입니다.

우선 저급 언어의 장단점에 대해 설명하자면, 저급 언어는 컴퓨터 친화적인 언어라는 특징이 있으며 동작을 정확하게 제어할 수 있고 실행 속도가 빠르고 최적화된 프로그램을 작성할 수 있다는 장점이 있습니다. 그러나 단점도 있는데, 코드가 길어지고 가독성이 나빠서 다루기 어렵고 고급 언어에 비해 생산성이 떨어지며, 하드웨어 의존적인 특성으로 인해 이식성이 낮다는 점입니다.

CHPUT:  equ 0x00a2  ; 문자 출력을 위한 BIOS 코드

; 올바른 BIN이 되도록 설정
        org 0xD000  ; BIN 기준 주소
        
; 시작
Execute:
        ld hl, HelloWorld     ; hl에 HelloWorld 싣기

Print:
        ld a,(hl)   ; 문자열 하나 읽기
        cp 0        ; Null 값 체크
        ret z       ; Null이면 나간다, 아니면 다음
        call CHPUT  ; 문자 출력
        inc hl      ; 피연산자 hl 값 +1
        jr Print    ; 반복
        
HelloWorld:
        db "Hello, world!",0  ; HelloWorld 정의
        
end Execute
; 끝

▲저급 언어인 어셈블리어(Z80 어셈블리)로 Hello, world! 프로그램을 코딩한 예.

고급 언어의 장단점에 대해 설명하자면, 위와는 반대로 인간 친화적인 언어이며 저급 언어에 비해 축약된 코드로 프로그램 작성이 가능하고 가독성이 좋아 다루기 쉽고 생산성이 좋고 하드웨어 독립적인 특성으로 인해 이식성이 높다는 장점을 가지고 있습니다, 그 반면 저급 언어로 번역했을 때 크기가 커지고 저급 언어에 비해 속도가 느리다는 단점도 가지고 있습니다.

#include <stdio.h>

int main()
{
    printf("Hello, world!\n");
    return 0;
}

▲고급 언어인 C언어로 Hello, world! 프로그램을 코딩한 예.

이렇듯 저급 언어와 고급 언어 모두 장단점을 가지고 있습니다. 그러나 오늘날에는 특수한 경우를 제외하면 저급 언어가 거의 쓰이지 않는데, CPU의 성능과 저장 장치의 용량이 향상되고 번역 프로그램도 발전하여 고급 언어의 단점이 체감되지 않으며, CPU 아키텍처가 복잡해지며 저급 언어의 생산성이 더욱 떨어지기 때문입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다