소스코드와 명령어

컴퓨터 구조

목록 보기
5/20

컴퓨터에서 소스 코드가 명령어로 변환되는 과정


1. 소스 코드와 명령어

  • 소스 코드는 개발자가 작성한 코드로, 컴퓨터가 직접 이해할 수 없습니다.
  • 컴퓨터가 이해하는 명령어는 0과 1로 이루어진 저급 언어로 변환되어야 합니다.


2. 고급 언어와 저급 언어

  1. 고급 언어 (High-level Language)

    • 사람이 이해하기 쉽게 작성된 프로그래밍 언어입니다.
    • 예시: C, C++, Python, Java
  2. 저급 언어 (Low-level Language)

    • 컴퓨터가 직접 이해할 수 있는 언어로, 크게 두 가지로 나뉩니다:
      • 기계어 (Machine Language): 0과 1로 이루어진 명령어.
      • 어셈블리어 (Assembly Language): 사람이 읽기 쉽게 변환된 기계어.


3. 저급 언어의 종류

  1. 기계어 (Machine Language)

    • 컴퓨터가 직접 이해하는 0과 1로 이루어진 명령어.
    • 사람이 읽고 쓰기 어려움.
  2. 어셈블리어 (Assembly Language)

    • 기계어를 사람이 읽고 쓰기 쉽게 변환한 언어.
    • 예시: MOV, ADD, SUB와 같은 명령어.


4. 고급 언어의 변환 과정

1) 컴파일 언어 (Compile Language)

  • 소스 코드가 한 번에 컴파일러에 의해 저급 언어로 변환됩니다.

  • 변환된 결과를 목적 코드(Object Code) 또는 실행 파일이라고 합니다.

  • 예시 언어: C, C++

  • 컴파일 과정:

    1. 소스 코드 작성.
    2. 컴파일러가 소스 코드를 목적 코드로 변환.
    3. 컴퓨터가 목적 코드를 실행.

2) 인터프리터 언어 (Interpreter Language)

  • 소스 코드가 한 줄씩 인터프리터에 의해 해석되고 실행됩니다.

  • 즉각적인 실행이 가능하지만, 전체 코드가 저급 언어로 완전히 변환되지 않습니다.

  • 예시 언어: Python, JavaScript

  • 인터프리터 과정:

    1. 소스 코드 작성.
    2. 인터프리터가 한 줄씩 소스 코드를 해석하고 즉시 실행.


5. 차이점 비교

구분컴파일 언어인터프리터 언어
변환 방식한 번에 전체 코드 변환한 줄씩 해석 및 실행
실행 속도빠름느림
오류 처리코드 전체 검사 후 변환 중단오류가 발생한 지점까지만 실행
예시 언어C, C++, JavaPython, JavaScript


6. 중간 코드 (Intermediate Code)

  • 일부 언어(예: Java, Python)는 컴파일 언어와 인터프리터 언어의 특징을 모두 가집니다.
  • 소스 코드를 바이트 코드(Byte Code)라는 중간 코드로 변환한 후, 인터프리터가 이를 실행합니다.
    • Java: JVM(Java Virtual Machine)이 바이트 코드를 실행.
    • Python: Python Interpreter가 바이트 코드를 실행.

7. 예시로 살펴보기

  1. 컴파일 언어 예시 (C)

    • 작성된 C 코드가 컴파일러에 의해 어셈블리어로 변환되고, 최종적으로 기계어로 변환되어 실행.
  2. 인터프리터 언어 예시 (Python)

    • Python 코드가 바이트 코드로 변환되고, 인터프리터가 이를 읽어 실행.

8. 고급 언어의 두 가지 방식은 절대적이지 않음

  • 모든 언어가 컴파일 언어나 인터프리터 언어로 명확히 구분되지 않습니다.
    • 일부 언어는 두 가지 방식 모두 지원.
    • 예: Python은 인터프리터 언어지만, 컴파일 과정을 통해 바이트 코드로 변환하기도 합니다.

9. 요약

  • 고급 언어는 컴퓨터가 직접 이해하지 못하기 때문에 저급 언어로 변환되어야 합니다.
  • 변환 방식은 컴파일인터프리터 두 가지가 있으며, 각 방식은 장단점을 가집니다.
  • 개발자는 언어의 특성과 변환 방식을 이해하여 적절한 언어를 선택해야 합니다.

👉 이제 컴퓨터가 소스 코드를 어떻게 명령어로 변환하는지 이해하셨다면, 더 깊은 프로그래밍 학습으로 나아갈 수 있습니다! 😊

0개의 댓글