티스토리 뷰

728x90
반응형

선언형 / 명령형 프로그래밍

  1. 선언형 프로그래밍

  2. 명령형 프로그래밍

  3. 선언형? 명령형?

선언형 프로그래밍

선언형 프로그래밍은 아래 두 가지 뜻으로 통용되고 있다고 한다.

  • 프로그램이 어떤 방법으로 해야 하는지를 나타내기보다 무엇과 같은지를 설명하는 경우에 '선언형' 이라고 한다.

    웹 페이지는 선언형인데, 웹 페이지의 제목, 글꼴, 본문, 그림과 같이 '무엇' 이 나타나야 하는지를 묘사하는 것이지 '어떤 방법으로' 컴퓨터 화면에 페이지를 나타내야 하는지를 묘사하는 것이 아니다.

  • 프로그램이 함수형 프로그래밍 언어, 논리형 프로그래밍 언어, 혹은 제한형 프로그래밍 언어로 쓰인 경우에 '선언형' 이라고 한다.

    이 정의에서는 명령형 언어와 대비되는 프로그래밍 언어들을 선언형으로 통칭하는 것이다.

  • 선언형 프로그래밍 언어 : Lisp, Haskell, ML, Prolog, SQL, XSL ...

명령형 프로그래밍

선언형 프로그래밍과 반대되는 개념으로, 프로그래밍의 상태를 변경시키는 구문의 관점에서 연산을 설명하는 프로그래밍 패러다임의 일종이다.

컴퓨터가 수행할 명령들을 순서대로 써 놓은 것이다.

  • 명령형 프로그래밍 언어 : C, C++, C#, Java, Pascal, Ruby ...

선언형 ? 명령형 ?

두 패러다임의 차이점은 다음과 같다.

  • 명령형 : 알고리즘을 명시하고 목표는 명시하지 않는다.

  • 선언형 : 목표를 명시하고 알고리즘을 명시하지 않는다.

위 처럼 명령형은 HOW ( 어떻게 할 것인지를 설명한다 ), 선언형은 WHAT ( 무엇을 할 것인지를 정의한다 ) 의 개념이다. 그렇기 때문에 선언형에서는 구체적인 문제 해결 방법이 나와 있지 않다.

좋은 예시가 있어 가져왔다.

  • 명령형 횡단보도까지 약 99m 이동(성남대로331번길) , 횡단보도를 이용하여 경기성남분당경찰서 방면으로 횡단, 횡단보도까지 1개의 횡단보도를 지나 약 612m 이동, 횡단보도를 이용하여 메르세데스벤츠코리아더클래스효성분당전시장 방면으로 횡단, 네이버까지 약 50m 이동(불정로).

  • 선언형 출발: 경기도 성남시 분당구 성남대로 333, 도착: 네이버 주소는 경기도 성남시 분당구 불정로 6.

[출처] : https://medium.com/@hongseongho/%EC%84%A0%EC%96%B8%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0-1d8247342f17

명령형 언어를 사용할 때에도 DSL ( Domain-specific language ) 의 형태로 작성하여 선언적인 프로그래밍을 할 수 있다고 한다. 전체 시스템을 선언적이라 할 수는 없지만, 상위 레이어로 갈 수록 선언적인 특징을 가질 수 있다.

References

위키백과

https://ko.wikipedia.org/wiki/%EB%AA%85%EB%A0%B9%ED%98%95_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

https://github.com/funfunStudy/study/wiki/%EB%AA%85%EB%A0%B9%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EA%B3%BC-%ED%95%A8%EC%88%98%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EB%B9%84%EA%B5%90

https://medium.com/@hongseongho/%EC%84%A0%EC%96%B8%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0-1d8247342f17

https://www.ikpil.com/1204


반응형
공지사항
최근에 올라온 글