[Compiler] 1. 컴파일러 개요

2023. 3. 18. 22:30Computer Sciences/Compiler

1. 컴파일러의 필요성

언어란?

의사전달을 하기 위한 도구

언어의 종류

  • 자연언어
  • 형식언어
    • 프로그래밍 언어

컴파일러가 필요한 이유

  • 인간은 문제를 해결하기 위해 컴퓨터를 사용하며 컴퓨터와 의사소통을 하기 위한 언어가 필요하다.
  • 컴퓨터는 기계어를 사용하지만 인간이 기계어를 사용하여 문제를 표현하기란 무척 어렵기 때문에 인간은 사람 중심 언어인 고급 언어를 사용한다.
  • 그러나 컴퓨터는 인간이 사용하는 고급 언어를 이해하지 못한다.
  • 따라서 인간이 사용하는 고급 언어를 기계어로 변환해주는 번역기인 컴파일러가 필요하다.

2. 프로그래밍 언어

참조 호출과 값 호출

참조 호출

  • 실제 매개변수의 주소를 대응되는 형식 매개변수로 넘겨주는 방법으로 C언어의 포인터 변수에 대한 매개변수 전달 방식에 사용
  • 2개 이상의 변수가 메모리를 공유함으로써 지역 변수 이외의 변수 값을 변화시키는 사이드 이펙트가 발생하며 프로그램을 읽고 이해하는데 어려움을 준다.

값 호출

  • 실제 매개변수와 별도로 형식 매객변수에 대한 메모리를 별도로 할당하는 방법
  • 사이드 이펙트는 발생하지 않지만 메모리가 추가로 필요하다.