프로그램 아키텍쳐/소프트웨어공학

소프트웨어의 개요 - 프로그래밍 언어의 분류

본클라쓰 2010. 6. 18. 11:44

 

컴퓨터를 이용하여 어떤 문제를 해결하고자 할 때에는 컴퓨터가 이해할 수 있는 언어로 기술된 프로그램이 필요하다. 현재의 컴퓨터는 기계어(Machine)만 이해할 수 있는데 기계어는 사람이 이해하기가 어렵다. 그러므로 사람이 기억하기 쉽고 사용하기 쉬운 언어로 어셈블리 언어(Assembly Language)와 컴파일러 언어(Compiler Language)가 개발되었다.

 

 

 

기계어(Machine Language)

 

기계어는 하드웨어를 설계할 때 결정되는 언어로 컴퓨터가 이해할 수 있는 '0'과 '1'로 표현되는 비트의 집합으로 구성되며 1세대 언어라고 한다.

 

기계어는 컴퓨터에 대해 어떤 동작을 요구하는 명령으로써 기계어를 명령어라고도 하는데 이 명령어는 일반적으로 다음과 같이 세 부분으로 구성되어 있다.

 

명령 기호부(Operation Code), 어드레스부(Address Part), 수식부(Modify)

 

어떤 동작을 할 것인지를 지시하는 명령 기호부, 동작의 대상이 되는 데이터가 주 기억장치의 어느 위치에 있는지를 지시하는 어드레스부, 그리고 어드레스부에 수식을 가해서 어드레스를 변경해주는 수식부로 되어 있다. 어드레스부는 제 1어드레스부와 제2어드레스로 나누는데 제 1어드레스부를 OP1, 제 2어드레스부를 OP2라 하며, 이것을 2형 어드레스 명령어라 한다.

 

기계어를 사용하여 프로그램을 작성한다는 것은 매우 어렵다. 그 이유는 첫째, 명령 기호부, 수식부, 어드레스부 등을 '0'과 '1'로 기술해야 하고 둘째, 읽기가 어렵기 때문에 프로그램의 변경, 삭제, 추가 등이 곤란하기 때문이다.

 

 

 

어셈블리 언어(Assembly Language)

 

기계어의 명령 기호부, 수식부를 기억하기 쉬운 기호로, 어드레스부를 기호 어드레스로 표기한 것이 어셈블리 언어 또는 기호 언어(Symbolic Language)라고 한다.

 

기계어나 어셈블리 언어는 컴퓨터가 가진 기능을 모두 표현 가능하나 컴퓨터의 각 명령에 관한 세부적인 지식이 필요하다. 또한 기계어나 어셈블리 언어는 기종에 따라 서로 다른 것이 보통인데 따라서 기종을 바꿀 때마다 그 기종에 맞는 어셈블리 언어를 다시 배워야 하는 단점이 있다.

 

기계어 대신 어셈블리 언어로 프로그램을 작성할 때 프로그래머는 다음과 같은 장점을 얻을 수 있다.

 

· 명령 코드를 기억하기 쉽고 사용이 간편한 약호 코드로 쓸 수 있어 프로그램 작성이 쉽다.

· 어드레스를 기호로 쓸 수 있고, 실제의 어드레스를 어셈블러가 지정해주기 때문에 어드레스 지정의 오류를 줄일 수 있다.

· 명령 코드가 약호 코드이기 때문에 프로그램 내용을 쉽게 이해할 수 있으며, 수정, 삭제, 삽입 등이 쉽다.

 

어셈블리 언어는 컴퓨터의 기능을 충분히 살릴 수 있는 언어이나 기종에 따라 다르므로 사용자 프로그램을 작성할 때 주로 사용한다.

 

 

 

컴파일러 언어

 

어셈블리 언어는 기계어를 단순히 기호화한 것에 불과한 언어로 기계어 수준에 벗어나지 못한 저급 언어에 속한다. 그러나 컴파일러 언어는 우리가 일상적으로 사용하는 자연어에 가까운 고급 언어로써 기계어 수준에서 완전히 벗어난 언어를 의미한다.

 

어셈블리 언어는 기종을 바꿀 때마다 다르므로 새로 배워야 하나 컴파일러 언어는 기종에 관계없는 처리 중심 언어이므로 어느 기종에서나 사용 가능한 공통 언어이다. 고급 언어로 작성된 프로그램은 컴파일러라고 하는 프로그램에 의해서 기계어로 변환된 후에라야 컴퓨터에 의해 수행된다.

 

 

출처) 스마트 시대를 위한 컴퓨터 과학의 이해, 휴먼싸이언스, 이윤배 저