절차적 프로그래밍(Procedural Programming)이란?
절차적 프로그래밍이란 물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며
프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법이다.
이는 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 더 빨리 처리되어 시간적으로 유리하다.
- 컴퓨터의 처리구조와 유사해 실행속도가 빠르다.
- 프로그램의 흐름을 쉽게 추적할 수 있다.
- 각 코드가 매우 유기성이 높아 유지보수가 어렵다
(새로운 데이터나 기능을 추가하기 어려움, 부분 고장 시 전체 고장으로 확대)
- 실행순서가 정해져 있으므로 코드의 순서가 바뀌면 동일한 결과를 보장하기 어렵다.
- 디버깅이 어렵다.
객체지향 프로그래밍(Object Oriented Programming)이란?
객체지향은 실제 세계를 모델링하여 소프트웨어를 개발하는 방법이다.
객체지향 프로그래밍에서는 "데이터와 기능이 함께 있다"라는 원칙에 따라 메소드와 속성이 존재한다.
1. 캡슐화
2. 추상화
3. 상속
4. 다형성
- 모듈화, 캡슐화로 인해 유지보수에 용이하다.
- 객체지향적이기 때문에 현실 세계와 유사성에 의해 코드를 이해하기 쉽게 만든다.
- 객체 자체가 하나의 프로그램이기에 재사용에 용이하다
- 대부분의 객체지향 프로그램은 속도가 상대적으로 느려지고 많은 양의 메모리를 사용하는 경향이 있다.
- 코드를 설계하고 작성하는데 절차적 프로그래밍에 비해 많은 시간이 소요된다.
끝으로
객체지향 프로그래밍과 절차적 프로그래밍은 상반된 개념이 아니다.
소프트웨어의 발전에 따라 절차적으로 짜여진 코드의 규모가 커졌고,
순서도가 꼬이면서 사람들이 읽기 힘든 '스파게티 코드'가 증가되는 문제가 대두되었다.
이를 해결하기 위해 모듈화, 캡슐화 등으로 재사용성을 높인 객체지향 프로그래밍의 패러다임 등장한 것이다.
모든 언어는 절차적이고 거기에 객체지향적인 관점을 추가하게 되었을 때 객체지향적 언어라고 불린다.
Reference