1.12 에러, 인터프리터, 컴파일러

SeungHee Yun·2023년 9월 19일
0

전문가를 위한 C++

목록 보기
12/15

개요

여러분들이 아무리 실력이 뛰어난 프로그래머라 하더라도,
프로그래밍을 하면서 한번 쯤은 에러를 만나게 됩니다.
하지만 이 에러에도 여러 종류가 있다는 사실 알고 계셨나요??


에러 ( Error )

에러의 사전적인 개념은 그릇되어 이치에 맞지 않는 일을 말합니다.
이런 에러는 프로그램을 평가 받거나 배포를 한 뒤 항상 어디선가
예상치 못한 곳에서 튀어나오는데요, 이러한 치명적인 상황은
우리를 당황하게 만들기에, 상황에 따라 우리에게 매우 부정적인 경험을 줍니다.


컴파일 에러 ( Compilation Error )

문법적인 오류로 컴파일러가 이해하지 못하는 코드를 발견할 때 발생하는 에러

* 키워드, 맞춤법이 틀린 경우
* 필요한 문장 부호가 빠진 경우 (주로 ;)
* 선언되지 않은 변수를 사용한 경우
* if문 보다 end if 문을 사용한 경우

런타임 에러 ( RunTime Error )

설계 미숙, 기계적 결함으로 인해 프로그램 실행 중 발생하는 에러

* 0으로 나누는 경우
* 무한 루프에 빠지는 경우
* Null Pointer Error (배열)
* segmentation fault / bus error - 존재하지 않는 메모리 위치에 접근하는 경우

링킹 에러 ( Linking Error )

흩어진 소스 코드 파일들을 컴파일 한 뒤, 각자 연결할 때 발생하는 에러


논리 에러 ( Logic Error )

컴파일 및 실행은 되지만, 사용자가 의도한 작업을 수행하지 못하는 에러


파스 에러 ( Parse Error )

인터프리터 언어에서 문법의 오류로 인해 나타나는 에러
( = 인터프리터의 컴파일 에러 )


컴파일러 vs 인터프리터

컴파일러와 인터프리터는 고급언어로 작성된 원시 프로그램 ( Source Program ) 을
목적 프로그램 ( Object Program ) 으로 번역하는 번역 프로그램이며,
번역 방식에 따라 구분 됩니다.


컴파일러

  • 컴파일러는 고급 언어로 작성된 프로그램 전체를 목적 프로그램으로 번역한 후, 링킹 작업을 통해 컴퓨터에서 실행 가능한 실행 프로그램을 생성합니다.
  • 번역 실행 과정을 거쳐야 하기 때문에 번역 과정이 번거롭고 번역 시간이 오래 걸리지만, 한번 번역한 후에, 다시 번역하지 않으므로 실행 속도가 빠릅니다.
  • 컴파일러를 사용하는 언어에는 C언어 Java 등이 있습니다.

인터프리터

  • 인터프리터는 고급 언어로 작성된 프로그램을 한 줄 단위로 받아들여 번역하고, 번역과 동시에 프로그램을 한 줄 단위로 즉시 실행시키는 프로그램입니다.
  • 프로그램이 직접 실행되므로 목적 프로그램은 생성되지 않습니다.
  • 줄 단위로 번역, 실행되기 때문에, 시분할 시스템에 유용하며
    원시 프로그램의 변화에 대한 반응이 빠릅니다.
  • 번역 속도는 빠르지만 프로그램 실행 시 매번 번역해야 하므로
    실행 속도는 느립니다.
  • 인터프리터를 사용하는 언어에는 Python, BASIC, SNOBOL, APL 등이 있습니다.
  • CPU의 사용시간의 낭비가 큽니다.

참조 : 코딩팩토리, 초코파이 티스토리


profile
Enthusiastic Game Developer

0개의 댓글