Object Oriented Programming의 약자로써 class와 object에 기반한 프로그래밍 패러다임(디자인 패턴) 이다.
관련된 데이터끼리 묶어서 class를 형성하고 그 안에서 object instance를 만듬으로써 프로그램을 디자인한다.
코드의 재사용률을 높이고 코드를 간결하게 함으로써 유지보수가 쉽다.(DRY principle)
데이터를 안전하게 보존할 수 있다.(encapsulation와 abstraction등)
대표적인 언어
side effect가 없는 pure function을 구현함으로써 프로그램을 디자인한다.
여러개의 작은 function을 엮으며 하나의 큰 function을 구현하고 불변성을 지키게 된다.
높은 수준의 추상화를 제공한다.
함수 단위의 코드 재사용이 증가한다.
디버깅이 쉽다.
불변성을 지향하기 때문에 프로그램의 동작을 예측하기 쉬움
대표적인 언어