절차지향 프로그래밍
정의
- 프로시저를 이용하여 작성하는 프로그래밍 방식으로 프로시저 콜의 개념을 바탕으로 한 프로그래밍 패러다임
- 어떤 기능을 어떤 순서로 처리할 것인가의 관점을 가지는 기능 중심의 패러다임이다
특징
- 하나의 큰 기능을 작은 단위의 기능들로 나누어 처리하는 top-down 방식으로 설계
- 데이터와 함수를 별개로 취급
- 모든 함수는 데이터 공유 가능
- 순서가 바뀌면 결과를 얻기 어려움
- 프로그램이 커지면 유지보수가 어려움
객체지향 프로그래밍
정의
- 프로그램 구현에 필요한 객체들의 역할을 정의하고 객체간 상호작용을 통해 프로그램을 작성하는 패러다임
- 객체가 중심이 되며 어떤 객체가 어떤 역할을 하는지의 관점으로 바라보는 방식
특징
- 코드 재사용성 및 확장성 증가
- 객체의 상호작용을 통해 모델링이 더 쉽다.
- 캡슐화를 통해 은닉 및 보안성 증가
- 절차지향 프로그래밍보다 속도가 느리다
- 객체의 구성으로 절차지향 프로그래밍보다 메모리 비용이 크다.
함수형 프로그래밍
정의
순수 함수를 조합해 프로그램을 만드는 방식
특징
- side effect가 없는 순수 함수를 1급 객체로 간주해 파라미터나 반환값으로 사용할 수 있다.