5주차 과제 (양주원) - c-team-12/12- GitHub Wiki

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

  • 컴파일러(compiler) : 컴파일러는 프로그램 전체를 스캔하여 이를 모두 기계어로 번역하는 방식으로, 특성상 초기 스캔 시간이 오래 걸립니다. 그러나 전체 실행 시간으로 따지면 인터프리터보다 빠른데, 그 이유는 컴파일러의 경우 초기 스캔을 마치면 실행파일을 만들어 놓은 후 다시 실행시킬 때 만들어둔 실행파일을 실행하기 때문입니다.

겉보기에는 컴파일러가 좋아보이지만 컴파일러의 단점도 존재합니다. 컴파일러는 고급언어로 작성된 소스를 기계어로 번역한 뒤, 오브젝트 코드(Object Code)라는 파일을 만듭니다. 이 코드를 묶어서 하나의 실행 파일로 다시 만드는 작업을 링킹(Linking)이라고 하는데, 이 과정에서 인터프리터보다 더 많은 메모리를 사용한다는 단점이 있습니다.

  • 인터프리터(interpreter) : 프로그램을 실행하면 한 번에 한 문장씩만 번역하는 방식으로, 전체적으로 스캔을 실행하는 컴파일러보다 실행시간이 느립니다. 그러나 컴파일러의 단점을 보완한 것이 인터프리터의 장점이라고 할 수 있는데, 인터프리터는 컴파일러가 수행하는 과정 중 하나인 링킹(Linking)을 거치지 않기 때문에(인터프리터의 한 문장씩 번역하는 방식에서 비롯), 메모리 사용에도 효과적이며 오류 메시지 생성과정 역시 컴파일러와는 다릅니다.

통상적으로 인터프리터는 한 번에 한 문장씩 번역할 때 오류를 만나게 될 경우 바로 프로그램을 중지합니다. 그래서 프로그램을 직접 실행해봐야 오류 발견이 가능하다는 특징이 있습니다. 대표적인 언어들은 파이썬(Python), 루비(Ruby), 자바스크립트(Javascript)가 있습니다.

대표적인 예시 코드

  1. 구구단 출력

image

사용자로부터 숫자를 입력받으면 그 숫자의 구구단을 출력합니다.

  1. (반복문 활용) 1부터 10까지 출력

image

for문(반복문 중 하나)을 사용하여 1부터 10까지의 숫자를 출력합니다.

  1. 배열에 저장된 숫자의 평균 구하기

image

배열에 포함된 5개의 숫자를 더한 후, 평균을 구하여 출력합니다.

  1. 문자 입력 후 대소문자 구분하기

image

사용자가 입력한 문자가 대문자인지 소문자인지 식별합니다.

  1. 비밀번호 생성

image

숫자와 문자를 섞어서 랜덤한 비밀번호를 생성합니다.