OOP
OOP는 Object Oriented Programming의 약자로 객체지향 프로그랭밍을 뜻합니다.
OOP는 객체지향 프로그래밍이란 프로그램을 단순히 데이터와 처리방법으로 나눈 것이 아니라, 객체라는 기본단위로 나뉘고 이들의 상호작용으로 서술하는 방식입니다.
객체란 하나의 역할을 수행하는 메소드와 변수의 묶음으로 봐야한다.
OOP 장점 & 단점
코드의 재사용성이 증가합니다.
생산성 향상
유지보수가 편리합니다.
개발속도가 느립니다.
실행속도가 느립니다.
FP(Functional Programming)
FP는 Functional Programming의 약자로 함수형 프로그래밍을 뜻합니다.
과거 명령형 프로그래밍을 기반으로 개발했던 개발자들은 개발하는 소프트웨어의 크기가 커짐에 따라, 엉켜있는 스파게티 코드를 유지보수하는 것이 매우 힘들다는 것을 깨달았습니다.
이를 해결하기 위해 함수형 프로그래밍 이라는 프로그래밍 패러다임에 관심을 갖게 되었고, 함수형 프로그래밍은 거의 모든 것을 순수 함수로 나누어 문제를 해결하는 기법으로 작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 해주었습니다.
FP의 장점 & 단점
높은 수준의 추상화를 제공합니다.
함수 단위의 코드 재사용이 수월합니다.
불변성을 지향하기 떄문에 프로그램의 동작을 예측하기 쉽습니다.
순수 함수를 구현하기 위해서는 코드의 가독성이 좋지 않을 수 있습니다.
함수형 프로그래밍에서는 반복이 for문이 아닌 재귀를 통해 이루어지고, 이러한 스타일은 무한 루프를 일으킬 수 있습니다.
순수함수를 사용하는 것은 쉬울 수 있지만 조합하는 것은 쉽지 않습니다.