컴파일 인터프리터

창진·2022년 10월 26일
0

자바

목록 보기
2/10

2가지 방법으로 번역되는 프로그래밍 언어

프로그래밍 언어는 크게 2가지 방법으로 번역됩니다. 번역하는 방법에 따라 각각 인터프리터 언어(interpreted language), 컴파일 언어(compiled language) 라고 합니다.
인터프리터 언어는 동시 번역 컴파일 언어는 도서 번역 으로 비유할 수 있습니다

동시 통역사 같은 인터프리트 언어

-동시통역 의 방식으로 실행되는 대표적인 프로그래밍 언어가 파이썬과 자바스크립트입니다. 인터프리터 언어는 중간에 동시 통역사 역할을 해주는 인터프리터라는 장치가 0과1을 사용해 프로그래밍 언어를 실시간으로 번역을 해줍니다.

-인터프리터 언어는 런타임 시 자료형이 부여되기 때문에 변수의 자료형이 바뀔수 있습니다(동적타입)

도서 번역가 처럼 해석하는 컴파일 언어

-파이썬이 C 언어보다 느린 이유는 파이썬은 인터프리터 언어이고 C언어는 컴파일 언어이기 때문입니다. 쉽게 말해 파이썬은 컴퓨터에 실시간으로 0과 1로 이뤄진 문장을 통역해 줍니다. 하지만 C언어는 반대입니다. 완성된 코드를 한꺼번에 묶어서 통·번역하므로 작업 횟수가 한정되어 있습니다. 그러니 C언어가 더 빠른 겁니다 중간 과정이 매우 단순해서

-컴파일 언어는 플랫폼에 의존합니다. 코드가 실행할 환경(플랫폼)이 달라지면 개발자가 컴파일 과정을 한 번씩 실행해 줘야 합니다. 운영체제마다 각각 서로 다른 기계어를 쓰기 때문입니다.

-컴파일 언어는 자료형이 고정하는 이유는 프로그램의 모든 자료형이 컴파일 중에 결정되기 때문입니다(정적 타입)

인터프리터 언어는 오류를 제때 알기 힘들다

인터프리터 언어가 느린 이유는 또 있습니다. 동시통역하다가 모르는 오류가 생기면 중간에 멈춰버리게 됩니다. 오류 수정이 수월한 대신 이런 상황은 개발자에게 있어서 치명적이라고 할 수 있습니다. 예를 들어 코드 100줄로 프로그램을 작성했는데 97번째 줄까지 실행되다가 98번째 줄에서 오류가 발생해버리면 97번째 줄까지 실행한 시간은 다 버린 셈이 돼버리기 때문입니다.
반면 컴파일 언어에서는 다 번역할 때 까기 시작하지 않습니다. 하지만 컴파일 언어는 실행하거나 배포할 때마다 컴파일 과정을 거치는데 프로그램에 따라서 컴파일에 많은 시간을 소모하기도 합니다. 실행 중인 프로그램에 업데이트할 내용이 생기면 코드를 수정한 다음 전체를 다시 빌드해서 배포해야 합니다. 대신 이러한 특징 때문에 오류를 미리 방지할 수 있습니다.

컴파일과 인터프리터 다 활용하는 자바

자바는 앞서 말한 컴파일 인터프리터 두 방법 다 활용합니다. 여러분들이 자바로 코드를 작성하면 컴파일합니다. 하지만 컴파일해서 얻은 결과는 기계어가 아닙니다. 자바 바이트 코드라는 것입니다. 그리고 이 자바 바이트 코드를 다시 윈도우, 리눅스, 맥 OS 에서 실행될 때 자바 가상머신이라는 것이 해석해서 각각의 기계어로 번역을 해줍니다.

이러한 자바의 특징 덕분에 코들린이 자바와 100% 호환될 수 있습니다. 코틀린을 자바 바이트 코드로 컴파일 하면 됩니다 그러면 결국 실행에 쓰이는 것은 자바 바이트 코드니까 둘 사이에 아무런 문제가 없습니다.

profile
안녕하세요

0개의 댓글