Compiled vs Interpreted

DD·2020년 12월 27일
0

프로그래밍 이론

목록 보기
3/12
post-custom-banner

프로그래밍 언어는 크게 3가지로 구분된다.

  • 기계어 (Machine Language)
  • 어셈블리어 (Assembly Language)
  • 고급어 (High-level Language)

기계어는 컴퓨터가 사용하는 언어로 0 과 1만으로 이루어져있으며 0과 1로 이루어져있는 특정 그룹은 특정 명령을 컴퓨터에 내리게 되는데 이 명령을 인스트럭터(instructor)라고 한다.

어셈블리어는 기계어를 사람이 알아볼 수 있는 단어로 1:1 대응하여 기호화한 것이다.

고급어는 익히 알고 있는 JAVA, C, C++ 등. 사람이 쉽게 이해하고, 사용할 수 있도록 되어있는 언어이다.

이 고급언어를 기계어로 변환하는 행위를 컴파일이라하며, 변환하는 방식, 과정에 따라 Compiled language, Interpreted language로 나뉜다.

Compiled Language

고급 언어로 작성된 프로그램을 기계어로 '미리, 한번에' 번역하는 언어.
대표적으로 C, C++, C#, JAVA등이 있다.

특징

  • 컴파일 타임에 컴파일 된다. 그래서 Interpreted language에 비해 속도가 빠른 경향이 있다.
  • 미리 컴파일을 하기 때문에 배포전 오류를 잡아낼 수 있다.
  • 테스트를 위해 실행할 때 마다 컴파일을 해야해서 추가시간이 소요된다.
  • 생성된 바이너리 코드가 플랫폼에 영향을 받는다.

Interpreted Language

고급 언어로 작성된 프로그램을 기계어로 '실행 중에, 순차적으로' 번역하는 언어.
대표적으로 Javascript, Python, PHP. Ruby 등이 있다.

특징

  • 런타임에 컴파일 된다. 그래서 Compiled Language에 비해 속도가 느린 경향이 있다.
  • 인터프리터가 실행하기 때문에 플랫폼의 영향을 받지 않는다. (크로스플랫폼)
  • 동적 타이핑을 지원하고, 프로그램 크기가 대체로 더 작다.
  • 컴파일 어너보다 약간의 추가적인 유연성을 제공한다.
  • 코드 인젝션 공격등의 위험이 있다.
  • 소스 코드를 쉽게 읽고 복사할 수 있다.
  • 테스트를 위해 수정, 보완했을 경우 전체를 recompile할 필요 없이 즉각 실행시켜 확인할 수 있다.

참고

프로그래밍 컴파일드 언어, 인터프리티드 언어(Compiled, Interpreted Languages) 그리고 자바(Java)
Compiled VS Interpreted 언어

profile
기억보단 기록을 / TIL 전용 => https://velog.io/@jjuny546
post-custom-banner

0개의 댓글