2d3k / CS-Study

기본을 소홀히 하지 말자!!
0 stars 1 forks source link

[OS] 컴파일러 / 인터프리터 #44

Open 2d3k opened 1 year ago

2d3k commented 1 year ago

차이점?

2d3k commented 1 year ago

번역 방식: 컴파일러는 소스 코드를 한 번에 전체를 기계어로 번역하여 실행 파일을 생성합니다. 반면에, 인터프리터는 소스 코드를 한 줄씩 읽어들여 즉시 실행합니다.

실행 시간: 컴파일러는 소스 코드를 번역하는 과정에서 시간이 걸리지만, 번역된 실행 파일은 실행 시간에 빠르게 동작합니다. 반면에, 인터프리터는 소스 코드를 한 줄씩 실행하는 과정에서 번역과 실행이 동시에 이루어지기 때문에 번역 시간은 없지만 실행 시간은 상대적으로 느릴 수 있습니다.

오류 처리: 컴파일러는 소스 코드 전체를 번역하기 때문에, 오류가 발생하면 번역 과정에서 모든 오류를 찾아낼 수 있습니다. 인터프리터는 소스 코드를 한 줄씩 실행하기 때문에 오류가 발생한 줄까지만 실행되고, 그 이후의 코드는 실행되지 않을 수 있습니다.

실행 파일 생성: 컴파일러는 소스 코드를 기계어로 번역하여 실행 파일을 생성합니다. 이 파일은 컴퓨터의 운영체제와 하드웨어에 특정 종속성을 가지며, 해당 시스템에서만 실행됩니다. 반면에, 인터프리터는 소스 코드를 실행하기 때문에 별도의 실행 파일을 생성하지 않고, 각각의 실행 시에 번역 및 실행이 이루어집니다.

수정과 실행: 컴파일러를 사용하는 경우 소스 코드를 수정한 후에는 다시 컴파일하여 실행 파일을 생성해야 합니다. 반면에, 인터프리터를 사용하는 경우 소스 코드를 수정한 후에는 그때마다 바로 실행할 수 있습니다.

이식성: 컴파일러로 생성된 실행 파일은 특정 시스템에서만 실행되기 때문에 이식성이 낮을 수 있습니다. 반면에, 인터프리터는 각각의 시스템에서 해당 언어의 인터프리터가 설치되어 있다면 어떤 시스템에서든 실행이 가능하므로 이식성이 높을 수 있습니다.

hyeonayou commented 1 year ago

파일러(Compiler)와 인터프리터(Interpreter)는 모두 프로그래밍 언어를 실행 가능한 기계어로 변환하는 소프트웨어 도구입니다. 하지만 두 도구는 서로 다른 방식으로 프로그래밍 언어를 처리합니다.

컴파일러는 프로그램을 한 번에 전체를 기계어로 번역하여 목적 파일(Object file)을 생성합니다. 목적 파일은 실행 파일(Executable file)로 링킹(Linking)되어 실행됩니다. 컴파일러는 전체 코드를 컴파일하여 기계어로 번역하므로 실행 시간에는 빠르지만, 컴파일 시간이 길다는 단점이 있습니다. 또한, 번역된 코드는 실행 파일로 저장되어있어 다른 시스템에서는 실행되지 않을 수도 있습니다. -> c , c++ , java, go, swift 등등

반면 인터프리터는 프로그램을 실행할 때마다 한 줄씩 프로그램 코드를 읽어들여서 번역하고 실행합니다. 이러한 과정을 반복하여 프로그램을 실행합니다. 인터프리터는 프로그램을 한 번에 전체를 번역하지 않으므로 실행 시간에는 느리지만, 컴파일러와 달리 실행 환경에 맞게 코드를 동적으로 조정할 수 있습니다. 또한, 실행 파일이 생성되지 않으므로 다른 시스템에서도 바로 실행할 수 있습니다. -> Python, Ruby, javaScript, php 등

즉, 컴파일러는 전체 코드를 한 번에 기계어로 번역하여 실행 파일을 생성하고, 인터프리터는 한 줄씩 프로그램 코드를 해석하여 실행합니다.