
프로그래밍 + 패러다임 으로 개발자가 프로그래밍을 위해 어떠한 관점을 가지고 개발을 할 지에 대해서 결정하는데 도움을 주는 것
개발자로 하여금 프로그래밍할 때에 관점을 제시해주는 역할을 한다.
프로그래밍이란?
하나 이상의 관련된 추상 알고리즘을 특정한 프로그래밍 언어를 이용해 구체적인 컴퓨터 프로그램으로 구현하는 기술
패러다임이란?
어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리
인식의 체계, 사물에 대한 이론적인 틀이나 체계를 의미하는 개념을 의미한다.
통상적으로 프로그래밍 패러다임 은 아래 3가지를 의미한다.
프로그래밍 패러다임의 등장 순서는 함수형 -> 객체지향 -> 절차적 이다.
그러나 성장은 절차적 -> 객체지향 -> 함수형 의 순서로 성장하였으며 이전의 패러다임의 문제점을 보완하는 과정에서 성장하였다.
그러므로 프로그래밍 패러다임은 단순히 진화론적 관점에서 우열을 판단할 수 없다.
프로그래밍 패러다임은 접근 방식과 사용 환경에 따라 유동적으로 활용해야 한다.
각각의 프로그래밍 패러다임은 장단점이 존재하며 이 때문에 상호 보완적 특성을 가진다.
프로그래밍 패러다임은 방법 / 목적 에 따라 크게 두가지로 분류된다.
명령형 프로그래밍은 어떻게 구현할 것인가? (HOW) 에 초점이 맞춰져 있다.
따라서 해당 과정마다 구체적인 임무를 제시하고 일부 참고 사항까지 제시한다.
반면, 선언형 프로그래밍은 무엇을 구현할 것인가? (WHAT) 에 초점이 맞춰져 있다.
선언형 프로그래밍을 하기 위해선 명령형 프로그래밍 단계가 이미 추상화되어 있다는 가정이 뒷받침 되어야 한다.
명령형과 선언형의 차이를 잘 설명한 블로그가 있어 해당 블로그에서 사용한 예시를 통해 이해하였다.
해당 그림은 치즈 생산을 두가지 형태에 따라 지시하는 예시를 나타낸 것이다.
좌측 그림은 명령형 접근에 대한 그림이고 우측 그림은 선언형 접근에 대한 그림이다.
명령형 접근을 통해 치즈를 생산할 경우 치즈를 생산하는데 필요한 과정 및 해당 과정마다 진행해야할 구체적인 임무와 참고 사항까지 제시한다.
반면 선언형 접근을 통해 치즈 생산을 하는 경우 치즈 생산 그 자체에만 초점을 맞추며, 생산 관리자는 지시를 내리는 행위만으로도 결과물을 도출한다.
이 때 치즈를 생산하는 행위는 명령형 접근을 통해 미리 생산 로직이 추상화 되어 있어야 한다.
main 함수가 하나의 큰 추상 개념이라고 보고, 그 안에서 함수 호출, 조건문 사용 등을 통해 구체화해나간다.함수 호출 중심?
전체 로직에서 재사용성이 높은 (재사용이 가능한) 코드들을 별도의 함수로 분리하여 필요할 때마다 해당 함수를 호출하는 방식의 프로그래밍
Top-Down 방식?
추상적인 개념을 구체화하는 방식
ex)
'핸드폰으로 사진을 찍는다.' 라는 추상적인 상황을 '카메라 앱을 선택한다 -> 원하는 모드를 선택한다 -> 초점을 맞춘다 -> 셔터를 누른다' 의 여러가지 상황으로 구체화한다.
외부 상태를 갖지 않는다?
같은 입력을 넣었을 때 언제나 같은 출력을 내보낸다는 것을 의미
즉, 어떠한 외부 요인도 함수의 입출력에 영향을 주지 않는다는 것
논리형 프로그래밍에 대한 자료가 그렇게 많지 않고 생소한 용어이기 때문에 추가적인 학습이 필요하다.
프로그래밍 패러다임 - 위키백과
[Java] 프로그래밍 패러다임 이해하기
[CS/Basic] 좀 더 나은 프로그램을 위해, 프로그래밍 패러다임
프로그래밍 패러다임 : 절차지향 vs 객체지향 vs 함수형
프로그래밍 패러다임의 동향 이미지 출처
[프로그래밍언어론] 11. Logic Programming Language (Prolog)
논리형 프로그래밍