티스토리 뷰
선언형 프로그래밍
명령형 프로그래밍
선언형? 명령형?
선언형 프로그래밍
선언형 프로그래밍은 아래 두 가지 뜻으로 통용되고 있다고 한다.
프로그램이 어떤 방법으로 해야 하는지를 나타내기보다 무엇과 같은지를 설명하는 경우에 '선언형' 이라고 한다.
웹 페이지는 선언형인데, 웹 페이지의 제목, 글꼴, 본문, 그림과 같이 '무엇' 이 나타나야 하는지를 묘사하는 것이지 '어떤 방법으로' 컴퓨터 화면에 페이지를 나타내야 하는지를 묘사하는 것이 아니다.
프로그램이 함수형 프로그래밍 언어, 논리형 프로그래밍 언어, 혹은 제한형 프로그래밍 언어로 쓰인 경우에 '선언형' 이라고 한다.
이 정의에서는 명령형 언어와 대비되는 프로그래밍 언어들을 선언형으로 통칭하는 것이다.
명령형 프로그래밍
선언형 프로그래밍과 반대되는 개념으로, 프로그래밍의 상태를 변경시키는 구문의 관점에서 연산을 설명하는 프로그래밍 패러다임의 일종이다.
컴퓨터가 수행할 명령들을 순서대로 써 놓은 것이다.
명령형 프로그래밍 언어 : C, C++, C#, Java, Pascal, Ruby ...
선언형 ? 명령형 ?
두 패러다임의 차이점은 다음과 같다.
명령형 : 알고리즘을 명시하고 목표는 명시하지 않는다.
선언형 : 목표를 명시하고 알고리즘을 명시하지 않는다.
위 처럼 명령형은 HOW ( 어떻게 할 것인지를 설명한다 ), 선언형은 WHAT ( 무엇을 할 것인지를 정의한다 ) 의 개념이다. 그렇기 때문에 선언형에서는 구체적인 문제 해결 방법이 나와 있지 않다.
좋은 예시가 있어 가져왔다.
명령형 횡단보도까지 약 99m 이동(성남대로331번길) , 횡단보도를 이용하여 경기성남분당경찰서 방면으로 횡단, 횡단보도까지 1개의 횡단보도를 지나 약 612m 이동, 횡단보도를 이용하여 메르세데스벤츠코리아더클래스효성분당전시장 방면으로 횡단, 네이버까지 약 50m 이동(불정로).
선언형 출발: 경기도 성남시 분당구 성남대로 333, 도착: 네이버 주소는 경기도 성남시 분당구 불정로 6.
명령형 언어를 사용할 때에도 DSL ( Domain-specific language ) 의 형태로 작성하여 선언적인 프로그래밍을 할 수 있다고 한다. 전체 시스템을 선언적이라 할 수는 없지만, 상위 레이어로 갈 수록 선언적인 특징을 가질 수 있다.
References
'프로그래밍 > 프로그래밍' 카테고리의 다른 글
DI : Dependency Injection ( 의존성 주입 ) (0) | 2019.09.16 |
---|---|
개방-폐쇄 원칙 (Open-Closed Principle, OCP) (0) | 2019.03.12 |
단일 책임 원칙 (Single Responsibility Principle, SRP) (0) | 2019.03.10 |
객체 지향 설계 (SOLID) (0) | 2019.03.03 |
리스코프 치환 원칙(Liskov substitution principle, LSP) (0) | 2019.03.03 |