프로그래밍 패러다임 (Programming Paradigm)
패러다임 : 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계. 또는 사물에 대한 이론적인 틀이나 체계.
- 전체적인 프로그래밍 방식
- 프로그래밍 스타일이나 개념적 접근 방식
- 프로그램을 구조화하고 조직하는 방식에 영향을 미친다.
- 프로그래밍 패러다임에 따라 지향하는 프로그래밍의 원칙들도 달라진다.
프로그래밍 패러다임의 종류
선언형 프로그래밍 (Declarative Programming)
'데이터를 어떻게 조작해야 하는지'가 아니라, '원하는 데이터는 무엇인지'에 집중
- 명령형으로 구현된 것들이 추상화되어 있어야 함
- 쉽게 말하면, 원하는 데이터만 말해도 그 과정을 알고 있어야 한다.
- 내장된 함수가 많다!
- 해결 방법은 컴퓨터에게 위임한다.
- 전체적인 가독성, 추상화 수준을 높임
- 재사용성이 높고 병렬 처리가 유리함
SQL
, React
- 명령형 (Imperative) 프로그래밍과 반대되는 개념이다
함수형 프로그래밍
내가 작성한 블로그
- 최소 단위가 함수이며, 함수를 통하여 새로운 데이터들을 만들어가며 파이프 형태로 프로그래밍 하는 방식이다.
- 이때 이 함수는 일급 객체여야 한다.
- 불변성을 지향하고, 순수 함수를 사용하여 부수 효과를 방지한다.
명령형 프로그래밍
'데이터를 어떻게 조작할지'에 집중
- 컴퓨터가 수행할 명령들을 순서대로 적어둔다.
- 프로그래밍의 상태, 상태를 변경시키는 구문의 관점에서 연산을 설명한다.
객체지향 프로그래밍
- 프로시저 호출의 개념을 바탕으로 한다.
객체
를 기본 단위로 하여 서로 간의 상호관계 작용으로 개발
- 객체 내부의
데이터
를 메서드
를 활용하여 다룬다.
- 설계에 많은 시간이 소요되고, 다른 패러다임에 비해 느리다.
추상화
, 캡슐화
, 상속
, 다형성
을 특징으로 한다.
- 객체 지향의 설계 원칙으로는 SOLID가 있다.
C++
, Java
, C#
, JavaScript
등
절차지향 프로그래밍
- 프로그램이 순차적으로 진행되어서 유기적으로 연결되도록 구성한다.
- 하나의 큰 기능을 처리하기 위해 작은 단위의 기능들로 나누어 처리하는
Top-Down
접근 방식
으로 설계
- 가독성이 좋고 실행 속도가 빠르다.
- 모듈화가 어렵고 유지 보수성이 떨어진다.
C
, Fortran
등
한 줄 요약
프로그래밍 패러다임은 프로그래밍을 하는 방식에 대한 틀이나 체계이다. 프로그래밍 패러다임에 따라 지켜야 할 원칙들이나, 구조화 방식이 달라진다.
참고
프로그래밍 패러다임 : [개발 이야기](https://qus.kr/developer/post/programming-paradigm/), [Dev.Hoon](https://velog.io/@codenmh0822/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8C%A8%EB%9F%AC%EB%8B%A4%EC%9E%84)
선언형 프로그래밍 : [요즘 IT](https://yozm.wishket.com/magazine/detail/2083/), [코드 연구소](https://code-lab1.tistory.com/244)