yooniiverse
개발 블로그
yooniiverse
전체 방문자
오늘
어제
  • 분류 전체보기
    • 운영체제
    • 네트워크
    • ~2023.02
      • 외부교육
      • 대외활동
      • 스터디
      • 동아리
      • TIL
      • IT지식
      • 기타
      • 트러블 슈팅
      • 프로그래밍
      • Python
      • Java
      • JS
      • DB(SQL)
      • JSP
      • Spring
      • 기술면접
      • 자바
      • 코딩테스트
      • 자료구조
      • 알고리즘
      • 백준 문제풀이
      • 인공지능
      • 머신러닝
      • 프로젝트
      • 안드로이드 앱개발
      • 웹개발
      • 웹 서비스
      • 웹퍼블리싱
      • Node.js 백엔드 개발
      • CS
      • 1일 1CS지식
      • 운영체제
      • 네트워크
      • 데이터베이스
      • 정보처리기사
      • 도서 리뷰
      • 개발 관련 도서
      • 기타 도서

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yooniiverse

개발 블로그

컴파일러와 인터프리터의 차이는 무엇일까?
~2023.02/1일 1CS지식

컴파일러와 인터프리터의 차이는 무엇일까?

2022. 7. 18. 14:22

컴파일러와 인터프리터

컴파일러

  • 컴파일러는 프로그램 전체를 스캔하여 이를 모두 기계어로 번역한다.
  • 전체를 스캔하기 때문에 대개 컴파일러는 초기 스캔 시간이 오래 걸린다.
  • 하지만 전체 실행 시간만 따지고 보면 인터프리터 보다 빠르다. 컴파일러는 초기 스캔을 마치면 실행파일을 만들어 놓고 다음에 실행할 때 이전에 만들어 놓았던 실행파일을 실행하기 때문이다. 
  • 하지만 컴파일러는 고급 언어로 작성된 소스를 기계어로 번역하고 이 과정에서 오브젝트 코드라는 파일을 만드는데, 이 오브젝터 코드를 묶어서 하나의 실행 파일로 다시 만드는 링킹이라는 작업을 해야 한다. 이 때문에 컴파일러는 통상적으로 인터프리터 보다 많은 메모리를 사용해야 한다.
  • 또한 컴파일러는 오류 메시지를 생성할 때 전체 코드를 검사한 후에 오류 메세지를 생성한다. 그래서 실행 전에 오류를 발견할 수 있다.
  • 대표적인 언어로 C, C++, JAVA 등이 있다.

인터프리터

  • 컴파일러와는 반대로 인터프리터는 프로그램 실행시 한 번에 한 문장씩 번역한다.
  • 때문에 한 번에 전체를 스캔하고 실행파일을 만들어서 실행하는 컴파일러보다 실행시간이 더 걸린다.
  • 하지만 인터프리터는 메모리 효율이 좋다. 컴파일러처럼 목적 코드를 만들지도 않고, 링킹 과정도 거치지 않기 때문이다.
  • 인터프리터는 오류 메세지 생성과정이 컴파일러와 다른데, 인터프리터는 한 번에 한 문장씩 번역하기 때문에 프로그램을 실행시키고 한 문장씩 번역될 때 오류를 만나게 되면 바로 프로그램을 중지한다. 그래서 프로그램을 실행해 봐야 오류 발견이 가능하다.
  • 대표적인 언어로 Python, Ruby, Javascript 등이 있다.
컴파일러 인터프리터
  • 전체 파일을 스캔하여 한꺼번에 번역한다.
  • 초기 스캔시간이 오래 걸리지만, 한번 실행 파일이 만들어지고 나면 빠르다.
  • 기계어 번역과정에서 더 많은 메모리를 사용한다.
  • 전체 코드를 스캔하는 과정에서 모든 오류를 한꺼번에 출력해주기 때문에 실행 전에 오류를 알 수 있다.
  • 대표적인 언어로 C, C++, JAVA 등이 있다.
  • 프로그램 실행시 한 번에 한 문장씩 번역한다.
  • 한번에 한문장씩 번역후 실행 시키기 때문에 실행 시간이 느리다.
  • 컴파일러와 같은 오브젝트 코드 생성과정이 없기 때문에 메모리 효율이 좋다.
  • 프로그램을 실행시키고 나서 오류를 발견하면 바로 실행을 중지 시킨다. 실행 후에 오류를 알 수 있다.
  • 대표적인 언어로 Python, Ruby, Javascript 등이 있다.

 

컴파일러와 인터프리터의 차이

컴파일러는 전체 소스 코드를 보고 명령어를 수집, 재구성 하지만,

인터프리터는 소스코드의 각 행을 연속적으로 분석하며 실행한다.

 

컴파일러는 고레벨 언어를 바로 기계어로 변환하지만,

인터프리터는 고레벨 언어를 바로 기계어로 번역하지 않고 중간 형태로 변환시킨 후 실행한다.

 

 

출처:

[OS] Compiler vs Interpreter (velog.io)

https://velog.io/@jhur98/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%ACcompiler%EC%99%80-%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0interpreter%EC%9D%98-%EC%B0%A8%EC%9D%B4

'~2023.02 > 1일 1CS지식' 카테고리의 다른 글

데이터베이스의 무결성 제약조건의 정의와 필요성은?  (0) 2022.07.20
(작성중)트랜잭션의 각 격리 수준과, 각 수준에서 일어날 수 있는 문제는 무엇일까?  (0) 2022.07.18
DNS와 DHCP란?  (0) 2022.07.16
동기와 비동기, 블로킹과 논-블로킹이란?  (0) 2022.07.15
대표적인 SQL의 종류 3가지와 종류별 명령어는?  (0) 2022.07.14
    '~2023.02/1일 1CS지식' 카테고리의 다른 글
    • 데이터베이스의 무결성 제약조건의 정의와 필요성은?
    • (작성중)트랜잭션의 각 격리 수준과, 각 수준에서 일어날 수 있는 문제는 무엇일까?
    • DNS와 DHCP란?
    • 동기와 비동기, 블로킹과 논-블로킹이란?
    yooniiverse
    yooniiverse

    티스토리툴바