프로그래밍 패러다임

» programming, developer

프로그래밍 패러다임(Programming Paradigm)이란?

한 시대의 사람들의 견해나 사고를 근본적으로 규정하고 있는 인식의 체계. 또는, 사물에 대한 이론적인 틀이나 체계

프로그램을 설계하고 구현하기 위한 원칙, 개념 및 기술을 제공하는 프로그래밍 접근방식 또는 어떠한 관점을 가지고 개발하는 전략, 방법론이다.

대표적으로 절차적, 객체지향, 함수형 프로그래밍이 존재한다.

  • 명령형 프로그래밍
    • 절차지향 프로그래밍
    • 객체지향 프로그래밍
  • 선언형 프로그래밍
    • 함수형 프로그래밍
    • 반응형 프로그래밍

명령형 프로그래밍

절차적 프로그래밍

물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시한다. 데이터를 조작하는 프로시저나 함수를 중심으로 구성되는 패러다임이다. 단계별 지침에 중점을 두고 사용을 통한 코드 재사용성을 강조한다. C, Pascal은 이 패러다임을 따르는 언어의 예이다.

장점

  • 컴퓨터의 처리구조와 유사해 실행속도가 빠르다.
  • 프로그램의 흐름에 쉽게 추적할 수 있다.

    단점

  • 각 코드가 매우 유기성이 높아 유지보수가 어렵다. (새로운 데이터나 기능을 추가하기 어려움, 부분 고장시 전체 고장으로 확대)
  • 실행 순서가 정해져 있으므로 코드의 순서가 바뀌면 동일한 결과를 보장하기 어렵다.
  • 디버깅이 어렵다.

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

클래스의 인스턴스인 객체를 중심으로 진행된다. 데이터와 동작을 캡슐화하는 개체로 코드를 구성한다. OOP는 추상화, 상속, 다형성 및 캡슐화와 같은 개념을 허용한다. JAVA, C++, Python은 OOP를 지원하는 언어이다.

장점

  • 모듈화 캡슐화로 인해 유지보수에 용이하다.
  • 객체지향적이기 때문에 현실 세계와 유사성에 의해 코드를 이해하기 쉽게 만든다.
  • 객체 자체가 하나의 프로그램이기에 재사용에 용이하다
  • 실세계에서의 사물들과의 상호작용을 하고 객체로 표현시 실생활과 너무나 닮아 가상에서 개발자에겐 가장 직관적이다.

    단점

  • 대부분의 객체지향 프로그램은 속도가 상대적으로 느려지고 많은 양의 메모리를 사용하는 경향이 있다.
  • 코드를 설계하고 작성하는데 절차적 프로그래밍에 비해 많은 시간이 소요된다.

선언형 프로그래밍

함수형 프로그래밍(FP)

계산은 수학 함수의 평가로 취급하고 상태 및 변경 가능한 데이터 변경을 방지한다. 불변성, 순수 함수 및 고차 함수를 강조한다. Haskell, Lisp 및 Erlang 등이 있다.

선언적 프로그래밍

원하는 결과를 달성하기 위한 세부 단계를 지정하기 보다는 원한느 결과를 설명하는데 중점을 둔다. 어떻게 계산하냐 보다 무엇을 계산해야 하는지를 다룬다. 데이터베이스 쿼리에 사용되는 언어인 SQL이 있다.