본문 바로가기

CS 백엔드/기타

프로그래밍 패러다임

1. 프로그래밍 패러다임

  • 전체적인 프로그래밍 방식을 의미한다.
  • 프로그램은 순차, 분기, 반복, 참조로 구성되어 있으며, 프로그램 개발을 위하여 전략을 수립해야 한다.
  • 위의 전략은 쉽게 말해서, 어떤 언어를 사용할 것인가, 프로그래밍에서 어떤 것을 지향하고, 지양할지 와 같은 다양한 방법을 가리키는데, 이러한 전략들이 바로 프로그래밍 패러다임이다.
  • 프로그래밍 패러다임은 선언형명령형으로 나뉜다.
    • 선언형 : 함수형프로그래밍
    • 명령형 : 절차지향적, 객체지향적 프로그래밍

 

 

2. 선언형과 함수형 프로그래밍

" 선언형 프로그래밍 "
무엇을 어떻게 해결해야는가에 집중하는 패러다임이며 해결방법은 컴퓨터에게 위임하는 방법이다.

 

(1) 함수형 프로그래밍

  • 최소 단위가 함수이며, 함수를 통하여 새로운 데이터들을 만들어가며 파이프 형태로 프로그래밍하는 방식이다. 
  • 함수 단위로 나누어지므로 재사용성이 높다.
  • 불변성을 지향하기 때문에 동작을 예측하기가 쉽고 부작용을 방지한다.
" Immutability(불변성) "

immutable 객체(변할 수 없는 객체)는 생성된 이후에는 바꿀 수 없는 객체이다.
불변성은 함수형 프로그래밍의 핵심 개념이다. 불변성이 없다면 프로그램의 데이터 흐름이 손실된다.

" Side Effects(부작용) "

함수형 프로그래밍에서 부작용은 함수 반환 값을 제외하고 함수 호출 외부에서 볼 수 있는 상태 변경을 뜻한다.
함수형 프로그래밍 규칙에 따르면 함수는 함수 외부의 상태를 수정할 수 없게 다룬다.

 

 

3. 명령형과 객체지향, 절차지향 프로그래밍

" 명령형 프로그래밍 "
문제를 어떻게 해결해야하는지 컴퓨터에게 명령을 내리는 방법이다.

 

(1) 절차지향 프로그래밍

  • 단어 그대로 순차적으로 명령을 수행할 뿐만 아니라, 프로시저 호출의 개념을 바탕으로 하고 있는 프로그래밍 패러다임이다.
  • C언어가 대표적인 절차지향 프로그래밍 언어이다.

 

(2) 객체지향 프로그래밍

  • 최소 단위가 객체이며, 객체를 만들고, 이 객체를 사용하여 데이터와 메서드를 묶고 소통하는 프로그래밍 방식이다.
  • Java, Python이 대표적인 객체지향 프로그래밍 언어이다.
  • 또한, 최소 단위가 객체로 이루어져 있어서, 유지 보수가 편하고 코드가 직관적이다.
  • 추상화, 캡슐화, 상속성, 다형성의 특징을 가지고 있다.
  • 또한, 오버로딩과 오버라이딩을 통해서 메서드를 재정의하여 사용할 수 있는 특징도 가지고 있다.

 

(3) 객체 지향의 설계 원칙

  • 단일 책임 원칙
  • 개방-폐쇄 원칙
  • 리스코프 치환 원칙
  • 인터페이스 분리 원칙
  • 의존 역전 원칙

'CS 백엔드 > 기타' 카테고리의 다른 글

백엔드 개발자의 로드맵  (0) 2022.05.29