컴퓨터는 어떻게 자연어를 번역하는걸까? - 컴퓨터의 언어 번역
본문 바로가기

용어 정리, 이슈/과학&기술

컴퓨터는 어떻게 자연어를 번역하는걸까? - 컴퓨터의 언어 번역

728x90

1. 프로그램 언어의 번역 과정

컴퓨팅에서, 번역기(translator) 혹은 프로그래밍 언어 처리기(programming language processor)하나의 컴퓨터 언어에서 다른 언어로 코드를 변환하는 모든 시스템을 말한다. 여기서 고급 언어로 작성된(사람이 작성한) 프로그램을 원시 프로그램(source program)이라고 한다.

이 번역기에는 C++와 자바(Java)와 같은 고급 언어와 사람이 읽을 수 있는 컴퓨터 언어(소스 코드), 자바 바이트코드(Java bytecode)와 같은 중급 언어, 어셈블리어(assembly language), 기계어(machine code)와 같은 저급 언어 및 위의 언어들에 가깝게 처리한 번역들이 포함된다.즉, 각 컴퓨터 언어간의 번역을 하는 시스템들이 포함된다는 말이다. 이러한 번역은 어떻게 되는걸까?

원시 프로그램사용자가 C언어나 Java 등 프로그래밍 언어로 작성한 번역되기 전의 프로그램을 말한다. 이 원시 프로그램을 컴파일러, 어셈블러, 인터프리터와 같은 번역기를 사용해 번역(complie)하면, 목적 프로그램이 나타난다. 목적 프로그램원시 프로그램을 기계어로 번역한 프로그램으로, 언어 번역기가 필요하다.

이후 목적 프로그램을 실행 가능한 로드 모듈로 만드는 링커(linker)라는 작업을 통해, 로드 모듈이 나타나는데, 이 로드 모듈(lode module)실행 가능한 형태의 프로그램을 말한다. 이 실행가능한 형태의 프로그램(로드 모듈)을 실행하기 위해 로드 모듈 프로그램을 주기억장치 내로 옮긴 로더(loader, 적재)를 해서 해당 프로그램을 실행할 수 있게 된다.

 

2. 언어 번역 프로그램

자연어로 적힌 원시 프로그램을 기계어로 적힌 목적 프로그램으로 바꾸는 과정번역(compile)이라고 한다. 그럼 이런 번역을 하는 프로그램에는 어떤 것들이 있을까? 대표적인 3가지를 알아보자.

 

2-1. 컴파일러(compiler) : 문서 번역같이 번역

컴파일러(compiler)는 Fortran, COBOL, ALGOL, C 등의 고급 언어로 작성된 원시 프로그램을 기계어로 번역하는 프로그램이다. compile[컴파일] 자체가 '편집하다'라는 뜻이므로, 언어 편집(언어 번역)을 하는 프로그램이라고 할 수 있다.

 

2-2. 어셈블러(assembler)

어셈블러(assembler)어셈블리어(저급 언어)로 작성된 프로그램을 기계어로 번역하는 프로그램이다. assemble[어셈블]은 '모으다'라는 뜻이다.

 

2-3. 인터프리터(interpreter) : 통역사같이 번역

인터프리터(interpreter)는 BASIC, APL, Lisp, SNOBOL 등의 고급 언어로 작성된 원시 프로그램을 한 줄씩 대화식으로 번역하여 바로 실행해 주는 프로그램이다. interpret[인터프리트]는 '해석하다'라는 뜻이다. 이 인터프리터는 목적 프로그램을 생성하지 않고 즉시 실행 결과를 출력한다.

 

번역기 컴파일러 인터프리터 어셈블러
번역 언어 고급 언어 저급 언어

한편, 컴파일러와 인터프리터 모두 고급 언어로 작성된 원시 프로그램을 번역한다는 점에서 같으나 차이점이 꽤 있다. 아래의 표를 참고하자. 

구분 컴파일러 인터프리터
번역 단위 전체 행(1줄) 단위
목적 프로그램 생성 없음
번역 속도 느림 빠름
실행 속도 빠름 느림

 

반응형