프로그래밍 패러다임

Kim Dong Kyun·2023년 4월 4일
0
post-custom-banner

절차지향 프로그래밍

  • 일련의 절차(Procedure)를 순서대로 수행하며 문제를 해결하는 방식입니다.

데이터와 함수를 분리하여 생각하고, 문제를 해결하기 위해 필요한 기능들을 함수로 구현하고 이들 함수를 조합하여 프로그램을 구현합니다.

C언어나 Pascal 등이 이러한 방식을 따르는 대표적인 언어입니다.

객체지향 프로그래밍

  • 문제를 해결하기 위해 필요한 객체(Object)들을 생성하고, 이들 객체간의 상호작용을 통해 문제를 해결하는 방식입니다.

데이터와 함수를 하나의 단위인 객체로 묶어서 생각하며, 객체의 상태를 변경하거나 메시지를 주고받으면서 문제를 해결합니다. Java나 Python, C++ 등이 이러한 방식을 따르는 대표적인 언어입니다.

함수형 프로그래밍

  • 문제를 해결하기 위해 함수(Function)를 조합하며, 함수가 입력받은 인자에 대해 어떤 연산을 수행한 뒤 출력값을 반환하는 방식입니다.

함수를 일급 객체로 취급하며, 상태 변경을 최소화하여 부작용(Side Effect)을 방지하고, 코드의 재사용성과 가독성을 높입니다. Haskell, Lisp, Erlang 등이 이러한 방식을 따르는 대표적인 언어입니다.

차이점

이들 프로그래밍 패러다임의 가장 큰 차이점은 문제를 해결하는 방식에 있습니다.

  • 절차지향은 함수와 데이터를 분리하여 생각
  • 객체지향은 데이터와 함수를 하나의 단위인 객체로 묶어서 생각
  • 함수형은 함수를 일급 객체로 취급하며, 상태 변경을 최소화하여 부작용을 방지합니다.

또한, 객체지향과 함수형은 상속과 다형성 같은 개념에서 차이가 있습니다.
객체지향은 상속을 통해 다형성을 구현하지만, 함수형은 함수의 인자와 반환값의 타입에 의해서 구현합니다.

post-custom-banner

0개의 댓글