Code-Tip/Theory of Programming

패러다임 :: FP vs OOP vs PP

put-stacker 2020. 7. 1. 10:27

 

프로그램 패러다임( Paradigm )이라는 개념이 있다.

패러다임은 형태나 규칙을 뜻하는 용어로 프로그램 패러다임은 프로그램 작성형식 ( Style of Programming )을 말한다.

코드 스타일과는 분류단위가 Syntax 와 module 이라는 점에서 차이가 있는 개념이다.

 

프로그램 패러다임은 크게 3가지로 분류된다.

 

 

Functional Programming ::

- 수학적 공식에 기반한 작성법이다. 대두되는 특징은 독립성이다.

상태와 같은 지속적인 데이터를 다루기 보단 연산이라는 개념의 I/O 를 작성하는 방식이다.

 

(ex : 계산기 프로그램 :: 우선순위 처리 / 사칙연산 계산)

 

 

Object Oriented Programming ::

- 사물표현 기반의 작성법이다. 프로그래밍이 자연계의 전산화를 위한 기술이기에 이해가 쉽고

군집과 사물이라는 개념에 대한 유지보수가 편리하다.

 

(ex : 엑셀 프로그램 :: 엑셀 생성 - [ 시트관리 / 셀 관리 / 권한관리 / ,... / 스트림관리 ]- 엑셀삭제 )

 

 

Procedural Programming ::

- 절차구조 기반의  작성법이다. 단계와 절차가 분명한 대상에 대한 작성에 용이하다.

단계에 따라 상태를 유지하며 수행하도록 구연된다.

 

(ex : 자판기 프로그램 :: 동전인식 > 메뉴선택대기 > 선택메뉴 배출 or 동전반환 )

 

 

FP vs OOP vs PP ::

- 실제 작성체감은 다르지만 주요구분은 Lifecycle 과 State Management 에 따라 분류된다.

Routine 에 따라 동작하는 것이 FP/PP, Instances 에 따라 동작하는 것이 OOP.

현재나 과거의 상태정보를 유지한다면 OOP/PP, 개별독립연산으로 기획됐다면 FP

 

대표적 언어

- FP = Script

- Oop = Java

- PP = C

 

사실상 패러다임은 프로그램 부분이나 분류수준에 따라 동시에 사용된다.

대표적 언어는 언어별 특징에 따라 해당 패러다임이 주로 사용되는 언어들이다.

자바는 유지보수와 이식성이 뛰어나기에, 유지와 개선성능을 목적으로 한 OOP 가 자주 도입되고

Script 언어들은 원래 Batch 언어로 불렸던것처럼 순차적인 개별연산작성에 많이 사용된다.

JS 의 경우 ES5~6에서 도입된 module 개념에 의해 OOP에 친숙해지며 Framework 생태게가 활성화 되었지만

기본적으로 스크립트언어들은 FP 성향이 강하다고 생각한다.

마지막으로 C 언어는 대표적인 PP 언어이다. 구조체기반의 루틴으로 동작하는 구조에 적합하다.