카테고리 없음

절차지향 / 객체지향 / 함수형 프로그래밍

신동편 2023. 7. 28. 14:04
728x90

절차지향, 객체지향, 함수형 프로그래밍은 세 가지 주요 프로그래밍 패러다임이다. 이들 각각은 다른 방식으로 프로그램을 구성하고 작성하는데 사용된다.

 


절차지향 프로그래밍

 

  • 절차지향 프로그래밍은 프로그램을 일련의 절차(순차적인 단계)로 보는 패러다임이다.
  • 데이터와 함수를 분리하여 처리한다. 즉, 데이터와 함수가 서로 독립적으로 존재한다.
  • 전통적인 프로그래밍 언어 중 C, Pascal, COBOL 등이 절차지향 프로그래밍을 대표적으로 사용한다.
  • 프로세스를 중심으로 프로그램을 설계하며, 프로그램의 흐름을 제어하는 것에 초점을 둔다.

 


객체지향 프로그래밍

 

  • 객체지향 프로그래밍은 프로그램을 상호작용하는 객체들의 집합으로 보는 패러다임이다.
  • 객체는 데이터와 그 데이터를 처리하는 메서드(함수)를 하나로 묶은 것이다.
  • 데이터와 메서드가 함께 캡슐화되어 객체가 독립적으로 작동할 수 있다.
  • 상속, 캡슐화, 다형성과 같은 개념을 지원하며, 코드의 재사용성과 유지보수성이 높다.
  • 대표적인 객체지향 프로그래밍 언어로는 Java, C++, Python 등이 있다.

 


함수형 프로그래밍

 

  • 함수형 프로그래밍은 프로그램을 수학적 함수의 평가로 간주하는 패러다임이다.
  • 상태를 변경시키지 않고 입력에 대한 출력만을 반환하는 함수를 중심으로 한다.
  • 함수형 프로그래밍은 불변성을 강조하며, 부작용(side effect)를 최소화하여 안정적인 동작을 지향한다.
  • 함수를 일급 객체로 취급하며, 고차 함수와 클로저 등을 사용하여 추상화 수준을 높이려 한다.
  • 함수형 프로그래밍 언어로는 Haskell, Lisp, Clojure, JavaScript(일부 기능) 등이 있다.

 


차이점

 

절차지향 프로그래밍은 데이터와 함수를 분리하여 프로그램을 작성하는 반면, 객체지향과 함수형 프로그래밍은 데이터와 함수를 더 높은 단위인 객체 또는 함수로 묶어서 관리한다.

 

객체지향 프로그래밍은 객체와 객체 간의 상호작용에 중점을 두고 상속, 다형성 등의 개념을 제공하는 반면, 함수형 프로그래밍은 함수의 조합을 통해 프로그램을 작성하며 불변성과 부작용 없는 함수를 강조한다.

 

객체지향 프로그래밍은 상태를 가진 객체들의 협력으로 프로그램을 구성하는 반면, 함수형 프로그래밍은 상태를 피하고 불변 데이터를 다루는 데 초점을 둔다.

728x90