서론
최근 Android 개발을 진행하던 중 함수형 프로그래밍, 리액티브 프로그래밍 등 다양한 용어들을 접하게 되어 프로그래밍 패러다임에 대해 정리해보려 한다.
프로그래밍 패러다임이란?
프로그래밍 패러다임이란 개발자가 프로그래밍을 위해 어떤 관점을 가지고 개발을 할지에 대한 결정에 도움을 줄 수 있는 방법들을 의미한다.
- 패러다임은 일반적으로 프로그래밍 언어의 사용, 데이터 구조, 알고리즘, 설계 방법 등을 포함
- 패러다임은 다양한 분야에서 사용되며 각각의 패러다임은 특정한 목적과 문제 해결 방법을 지님
- 프로그래밍 패러다임은 크게 명령형 프로그래밍과 선언형 프로그래밍으로 나뉨
명령형 프로그래밍(Imperative Programming)
- 명령형 프로그래밍은 문제를 어떻게 해결할지에 관점을 두고 컴퓨터가 수행할 명령을 순서대로 코드를 작성하는 기법
- 명령형 프로그래밍에는 절차 지향 프로그래밍(PP), 객체 지향 프로그래밍(OOP)이 있다.
절차적 프로그래밍(PP : Procedural Programming)
절차적 프로그래밍은 단어 그대로 프로그램이 순차적으로 진행되도록 개발하는 방식을 지향하고 프로시저 호출 개념을 바탕으로 하고 있는 프로그래밍 기법이다.
대표적인 프로그래밍 언어 : C, 포트란
객체 지향 프로그래밍(OOP : Object-Oriented Programming)
객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 객체들의 모임으로 파악하고자 하는 프로그래밍 기법이다. 각 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.
대표적인 프로그래밍 언어 : Java, C++ C#
선언형 프로그래밍(Declarative Programming)
- 선언형 프로그래밍은 문제를 어떻게 해결할지가 아닌, 무엇을 보여줄지에 관점을 두는 프로그래밍 기법
- 대표적인 선언형 프로그래밍은 함수형 프로그래밍, 반응형 프로그래밍이 있다.
함수형 프로그래밍(FP : Functional Programming)
함수형 프로그래밍은 함수를 통하여 새로운 데이터들을 만들어가며 파이프 형태로 프로그래밍하는 방식이다.
함수 단위로 나눠지기 때문에 재사용성이 높고, 불변(Immutability)을 지향하기에 동작 예측이 쉽고 가독성이 좋다.
대표적인 프로그래밍 언어 : 클로저(Clojure), 스칼라(Scala)
반응형 프로그래밍(Reactive Programming)
반응형 프로그래밍이란 데이터의 흐름과 변경사항의 전파에 중점을 둔 선언적 프로그래밍 패러다임이다.
정적 콘텐츠의 실시간 업데이트를 위해 비동기 프로그래밍 논리에 의존하는 디자인 패러다임이다.
반응형(리액티브) 프로그래밍은 어떤 이벤트가 발생하면 그것을 구독(관찰)하고 있던 관찰자(Observer)가 이를 알아채고 UI를 실시간으로 업데이트해 주는 것이라 볼 수 있다. 즉, 데이터 변경을 감지하여 전파하고 선언적으로 프로그래밍을 작성한다.
Android에서 LiveData, RxJava, Flow 등 현재 많이 사용되고 있는 라이브러리들을 활용하여 반응형 프로그래밍을 구현한다.
위에 작성해 둔 패러다임들 외에 각 패러다임의 장점을 활용하여 같이 쓰는 멀티 패러다임도 있다고 한다.(JavaScript에서 사용)
Reference
프로그래밍 패러다임
간단하게 프로그래밍 스타일을 의미하며 전체적인 프로그래밍 방식을 말한다.프로그램은 순차, 분기, 반복, 참조로 구성되어지며 프로그램 개발을 위하여 전략을 수립해야 한다.위에서 말한 전
velog.io
[Java] 프로그래밍 패러다임 이해하기
해당 글에서는 프로그래밍 패러다임에 대해서 이해하고 각각의 용어에 대해서 이해를 돕기 위해서 작성한 글입니다. 1) 프로그래밍 패러다임 💡 프로그래밍(Programming) 이란? - 하나 이상의 관련
adjh54.tistory.com
프로그래밍 패러다임 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 프로그래밍 패러다임(programming paradigm)은 프로그래밍의 패러다임 형태이다. 소프트웨어 공학을 할 때의 패러다임 형태인 방법론과 비교된다. 프로그래밍 패러
ko.wikipedia.org