본문 바로가기

이야기/방법론

프로그래밍 패러다임

개발자의 입장에서 바라봤을 때, 어떤 방식으로 프로그램을 구현해야 할까?

이걸 프로그래밍 패러다임이라고 표현함.

 

사용하던 구현 방식의 단점을 극복, 보완하기 위한 순서임.

 

절차 지향 → 객체 지향 → 함수형

 


과정에 집중하느냐, 결과에 집중하느냐 따라서 두 분류로 나뉨.

 

 

1. 명령형 프로그래밍

  • 절차지향 프로그래밍 : 절차의 연속
  • 객체지향 프로그래밍 : 객체 + 객체

2. 선언형 프로그래밍

  • 함수형 프로그래밍 : 순수함수 + 일급객체

 

비교를 하자면...

  • 명령형 : 구현을 위한 알고리즘을 명시하되 목표는 명시하지 않음. (How)
  • 명령형 : 프로그램은 명령의 수행이며, 어떻게 구현하는지 그것이 중요하다.
  • 선언형 : 목표만 명시하고 알고리즘은 명시하지 않음. (What)
  • 선언형 : 프로그램은 함수의 계산이며, 무엇을 구현하는지 그것이 중요하다.

 


객체 지향 vs 함수형

 

객체지향 : 코드의 재사용에 관심 있음. 온갖 내용은 모두 어떻게 하면 코드를 다시 쓸 수 있을까? 그 고민에 대한 나름의 해답에 불과함.

  • 추상화(속성, 행위, 객체, 클래스)
  • 캡슐화(은닉성, 응집도, 결합도)
  • 상속(구체화, 일반화)
  • 다형성(오버로딩, 오버라이딩)

함수형: 원하는 결과를 반드시 도출하는 순수 함수에 관심 있음. 예상치 못한 변경에 따른 오류를 피하고자 상태 변경을 최대한 회피하려는 게 목적임.

  • 일급객체 (파라미터, 반환값, 값으로 활용. 변수, 데이터 구조 안에 담음. 동적 할당, 비교 연산 가능.)
  • 고차함수 (파라미터, 반환값으로 사용할 수 있는 함수)
  • 불변성 (데이터 변경을 최대한 막음)
  • 순수함수 (동일한 입력에는 항상 같은 값을 반환해야 함, 부작용(SideEffect)가 없어야 함, 상태 변경을 해서는 안됨.)
  • 합성함수 (여러 함수를 조합해 새로운 함수를 만듦)

 

'이야기 > 방법론' 카테고리의 다른 글

준용할 수 있는 변수명을 사용하기  (0) 2022.12.30
체계적인 코드 네이밍의 장단점과 요약  (0) 2022.11.23
방법론이 뭐지?  (0) 2022.01.10