CS

컴퓨터구조] 컴퓨터 언어

Orblangjeee 2024. 12. 23. 13:18
반응형

저급 언어(Low-level programming language)

  • 컴퓨터가 직접 이해하고 실행할 수 있는 언어
  • 종류
    • 기계어(Machine code) : 0과 1(이진수)로 이루어진 명령어 모음
    • 어셈블리어(Assembly language) : 0과 1로 이루어진 기계어를 사람이 읽을 수 있는 형태로 변환한 언어
      출처 : stackexchange
  • 컴퓨터 구조에 따라 사용하는 기계어가 달라지며, 기계어에 일대일로 대응되어 만들어지는 어셈블리어도 각각 다르다.

 

고급 언어(High-level programming language)

  • 사람이 이해하고 작성하기 쉽게 만들어진 언어
  • 고급 언어로 작성된 소스 코드가 실행되려면 반드시 저급 언어로 변환되어야 한다.
  • 종류
    • 컴파일 언어 : 컴파일러(Compiler)에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어
      • 컴파일러는 소스 코드 전체를 훑어 문법적인 오류는 없는지, 실행 가능한 코드인지 등을 따져 처음부터 끝까지 저급 언어로 컴파일한다.
      • 종류 : C, C++, C#, Java …
      • 목적 코드(object code) : 컴파일러를 통해 저급 언어로 변환된 코드
    • 인터프리터 언어 : 인터프리터(Interpreter)에 의해 소스 코드가 한 줄씩 실행되는 고급 언어
      • 인터프리터는 소스 코드를 한 줄씩 실행하기 때문에 코드 n번째 줄에 오류가 있더라도 n-1번째 줄까지는 올바르게 수행
      • 종류 : Python, PHP, Java …

  • 일반적으로 인터프리터 언어보다 컴파일 언어가 더 빠르다.
  • 현대 프로그래밍 언어 중에는 컴파일과 인터프리트를 동시에 수행하는 경우가 많아 컴파일 언어와 인터프리터 언어 간의 경계가 모호하다. (e.g. Java는 컴파일과 인터프리트를 동시에 실행한다.)

 

예시 : C언어 컴파일 과정

  1. 전처리 과정 (Preprocessing) test.c ⇒ test.i
    • 본격적으로 컴파일하기 전에 처리할 작업들
    • 외부에 선언된 다양한 소스 코드, 라이브러리 포함 (e.g. #include)
    • 프로그래밍의 편의를 위해 작성된 매크로 변환 (e.g. #define)
    • 컴파일할 영역 명시 (e.g. #if, #ifdef …)
  2. 컴파일 과정 (Compiling) test.i ⇒ test.s
    • 전처리가 완료된 소스 코드를 저급 언어(어셈블리 언어)로 변환
  3. 어셈블 과정 (assembling) test.s ⇒ test.o
    • 어셈블리어를 기계어로 변환
    • 목적 코드(Object code)를 포함하는 목적 파일이 됨
  4. 링킹(Linking) test.o ⇒ test.exe
    • 목적 파일 vs 실행 파일
      • 목적 파일과 실행 파일은 둘 다 기계어로 이루어진 파일
      • 그러나 목적 파일은 링킹(Linking)이라는 작업을 거쳐야 실행 파일이 된다.
    • 링킹(Linking) : 여러 개의 목적 파일과 라이브러리를 연결하는 과정

 

 

면접 예상 질문

  1. 컴파일러와 인터프리터의 차이점에 대해 설명하시오
    컴파일러는 소스 코드 전체를 저급 언어로 변환하여 실행 파일을 만듭니다. 한 번 실행 파일이 만들어지면 실행 시간이 빠르지만, 일부를 수정하면 전체를 컴파일 해야합니다.
    그에 반해 인터프리터는 한 줄씩 저급 언어로 변환하며 바로 실행됩니다. 메모리를 적게 소요하고 디버깅에 용이하지만 매번 변환하여 실행하기 때문에 실행 시간이 느립니다.
  2. 컴파일 과정에 대해 설명하시오
    먼저, 전처리 과정에서 헤더 파일을 포함하고 매크로를 확장하는 등 소스 코드를 준비합니다. 이후 컴파일 과정을 통해 소스 코드를 어셈블리 코드로 변환하고, 어셈블 과정을 거쳐 기계어가 담긴 오브젝트 파일을 생성합니다. 마지막으로 링킹 단계에서 여러 오브젝트 파일과 라이브러리를 결합해 실행 가능한 프로그램으로 완성합니다

 

더보기

https://www.hanbit.co.kr/media/books/book_view.html?p_code=B9177037040

 

혼자 공부하는 컴퓨터 구조+운영체제

어려운 컴퓨터 구조와 운영체제의 원리를 누구나 쉽게 이해할 수 있도록 용어와 개념은 한 번 더 풀어쓰고, 적절한 예시와 이해하기 쉬운 그림으로 재미있게 구성했다. 또한 일상 소재를 활용한

www.hanbit.co.kr

 

https://youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl&si=4IJYIW_UONCMcQBr

 

[컴퓨터 공학 기초 강의] 혼자 공부하는 컴퓨터 구조+운영체제

강민철 저자님과 함께하는 『혼자 공부하는 컴퓨터 구조+운영체제』 강의입니다. 다른 입문서에서는 알려주지 않았던 진짜 컴퓨터 공학 지식을 만나보세요! 👨‍🏫 누구를 위한 강의인가요? -

www.youtube.com

 

 

https://velog.io/@andthensome/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC-%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0 

 

컴파일러 & 인터프리터

컴파일러, 인터프리터 둘 다 C 나 자바같은 고레벨언어로 작성된 프로그래밍 언어를 기계어로 변환하는 것은 맞으나 그 과정에 있어서 차이를 보인다.

velog.io

 

https://beluga9.tistory.com/67

 

C 프로그램 실행 파일

소스 파일(*.c) 소스 파일은 프로그래머가 만들고 싶은 프로그램을 직접 작성한 파일을 말합니다. 파일 확장자는 .c를 사용하는데, 반드시 지켜야하는 것은 아니지만 c언어 소스 파일을 구별하기

beluga9.tistory.com

 

반응형