프로그래밍 언어의 타입


프로그래밍 언어 는 구현 방법에 따라, 명령형 언어와 선언형 언어 두가지 형태로 구분 할수 있습니다.

두 언어의 형태는 목적과 사용법이 틀리며, 개발자는 두가지 형태가 가지는 특징과 이해 속에서 개발에 임해야 할 것 입니다.


이 포스트는 명령형 언어와 선언형 언어의 정의 및 특징에대한 이해를 돕는 참고 자료 입니다.


  1. 명령형 언어(Imperative)

    프로그램이 작동할때 낮은 수준의 단계에서 프로그램의 상태는 메모리의 특정 영역의 값으로 표현되며, 구문들은 기계어 명령어로 정의 됩니다.

    이런 패러다임은 높은 순준의 프로그램밍 언어 에서도 거의 유사하게 따릅니다.

    가령 프로그램의 상태는 변수에 저장하게 되며, 기계어 명령어 보다 복잡하지만 명령의 구문을 이용하여 제어를 하게 됩니다.

    이런 식의 처리는 일반적으로 처리해야 할 각각의 단계가 순차적으로 실행 되는 형태를 가집니다. 그래서 C TYPE 의 프로그램밍 언어들은 main()을 진입점으로 시작하여 각각의 프로그램 단계를 처리 하게 됩니다.

    이 방법은 컴퓨터에 있어서 자연스럽운 방법이며, 또한 실세계의 요리방법, 공정 점검표와 같이 각각의 단계에 지시사항이 있고 또한 상태를 가지고 있는것 처럼 실세계의 사고 형태 와도 잘 어울립니다.

    이런 사항들을 고려 해보면 명령형 언어는 개념적으로 친밀하며,직접적으로 구체화 되어 있다고 볼 수 있습니다.

    그래서 대부분의 프로그램밍 언어는 명령형 언어의 형태를 가집니다.

  2. 명령형 언어의 표현방식

명령형 언어를 이용하여 프로그램밍을 할때 무엇을 나타 내기 보다는 어떤 방법으로 처리한다 라는 것을 기술하게 됩니다.

즉 이말은 결과를 알지 못하며, 처리 방법을 정의하고 처리되어 진 결과를 표현한다. 입니다. 선언형 언어와 비교를 통해 이분부을 더욱 명확하게 설명 할 수 있는데, 단적인 선언형 언어 이지만 HTML과 비교를 해보면 쉽게 차이점을 알 수 있습니다.

HTML의 경우 어떻게 처리 되는지를 정의 하는 것이 아닌 어떻게 보여야 하는지를 나 타냅니다. 즉 이렇게 표현 한다 라른 선언을 통해 원하는 결과를 얻는 것 입니다. 지만 명령형 의 경우는 프로그램의 상태를 변수에 저정하고 로직에 따른 변화 방법 을 정의 하여 그 결과에 따른 결과를 얻는 방법입니다.


  1. 명령형 언어의 특징

    1. 상태를 저장 하는 변수를 가지고 있다.

      명령형 언어 타입에서는 처리 결과 또는 처리 상태를 보관할 장소가 필요합니다.

      실제 처리 되는 명령에 따라 상태는 변경되게 되며, 이런 변경된 상태는 처리 명령에 영향을 끼치게 됩니다.

  1. 결과를 예측 할 수 있지만 완료된 결과는 수행전 알수 없다.

    명령형 언어에서 프로그램의 수행 결과는 정의된 것이 아닌 명령의 처리를 통해 얻어 진다고 했습니다.

    그런 이유로 우리는 결과를 예측 할 수 있지만, 완료된 결과를 알수는 없습니다.

    이런 문제는 런타임 오류 등 버그로 프로그램에 존재 할 수 있으며, 또한 명령형 언어는 예측하지 못한 결과를 처리 하기 위해 대부분 예외 처리라는 방식의 기능을 가지고 있습니다.

  2. 프로그램의 서술 단계와 실행단계의 처리와 상태가 상이하다

    프로그램의 서술 단계에서는 예측을 통한 명령 단계를 서술 하게 됩니다.

    하지만 서술 단계에서 각 명령단계의 상태는 존재 하지 않기 때문에 실제 명령이 수행할 당시의 상태를 모두 반영 할 수 없습니다.

    이런 이유로 프로그램머는 실행 시점의 명령 처리와 상태를 확인 하기 위한 디버깅 이라는 기술을 사용하여 실제 수행할 당시 명령 처리와 상태가 서술 당시에 예측한 상태와 명령처리 상의 오류가 없는지 찾아서 처리 하게 됩니다.


사실 명령형 언어와 선언적 언어를 딱히 선을 잘라 구분 하기 힘들 수 있습니다.

이 두가지 특징을 모두 가지는 언어들이 속속 등장하고 있으며, 또한 명령형 언어의 대표격인 C 계열의 언어에서 조차 특정 프레임웍 사용으로 선언적 형태로 변경 되는 경우도 있습니다.

하지만 명령형 언어는 폰노이만의 초기 프로그램 내장형 컴퓨터의 사상과 일치 하며, 컴퓨터 상에서 어떤 문제를 해결하기 위한 가장 자연스러운 방법으로 통하고 있습니다.

명령형 언어의 종류에는 c,c++,c#,java,스몰토크,포트란,파스칼 등등 우리가 아는 대부분의 언어들이 포함 됩니다.

이 처럼 컴퓨터 프로그램밍의 기본 개념을 따르는 명령형 언어들의 특징과 방식은 프로그램을 작성하는 기초가 될수 있습니다.

다음시간에는 선언적 언어에 대해서 살펴 보며, 점점 중요성이 부각 되고 있는 선언적 방식의 프로그램에 대해서 포스팅 하겠습니다.

'Implementation' 카테고리의 다른 글

AOP(Aspect Oriented Programing)란?  (0) 2008.03.12
TDD 를 이용한 클래스 디자인  (0) 2007.08.24
|
blog comments powered by Disqus

matrim's Blog is powered by Daum & tistory