728x90
반응형
컴퓨터는 0 / 1(전류가 입력되면 1, 없으면 0)로 밖에 판단할 수 없다.
그렇기 때문에 개발자가 작성한 소스코드를 0과 1로 구성된 기계어(binary code)로 변환해 줘야 컴퓨터가 코드를 이해하고 실행할 수 있는데 코드를 기계어로 변환하는 방법에는 compile, interpret 두 가지가 있다.
컴파일러 (Compiler)
Compile은 번역하면 '집대성'이라고 한다. 즉, 여럿을 모아 하나로 크게 완성하는 것이라는 뜻이다.
컴파일러는 소스코드를 모아서(묶어서) 미리 컴파일(번역)해 두었다가 한번에 실행한다.
C, C++, C#, JAVA 등
장점:
- 한번 스캔을 마치면 실행파일을 만들어 놓고 계속 사용하기 때문에 인터프리터보다 실행속도가 빠르다.
- 컴파일 과정에서 오류를 검출할 수 있기 때문에 비교적 안정성이 높다.
단점:
- 빌드 시 한번에 다 번역하기 때문에 초기에 시간이 오래걸린다.
- 컴파일러는 기계어로 번역시 오브젝트 코드(Object Code)라는 파일을 만드는데 이 오브젝트 코드를 서로 연결하여 하나의 실행 파일로 만드는 링킹(Linking) 작업을 하기 때문에 메모리가 추가적으로 사용된다.
인터프리터 (Interpreter)
Interpret는 '해석하다'라는 뜻이다.
인터프리터는 프로그램을 실행하면 한 문장씩 번역해서 알려준다.
Python, Javascript, Ruby 등
장점:
- 컴파일러처럼 목적코드를 만들지도 않고, 링킹 과정도 거치지 않기 때문에 메모리 효율이 좋다.
- 코드 변경시 빌드 과정없이 바로 실행이 가능하기 때문에 개발하며 바로 테스트하기에 유리하다.
단점:
- 한번에 한 문장씩 읽고 번역하여 실행시키는 과정을 반복하다보니 실행시간이 느리다.
- 실행 시 한 문장씩 돌리기 때문에 프로그램을 실행해봐야 에러 검출이 가능하다.
reference.
https://www.youtube.com/watch?v=OxvtGYvVkRU
728x90
반응형