반응형

Intro


절차지향 프로그래밍과 객체지향 프로그래밍의 차이는 많은 책들에서 초기 도입 부분에 많이 설명되고 기업의 신입 면접에서도 가끔 맨 처음 기본이 있는지 알아보기 위해 물어보던 내용입니다. 이번 포스팅을 통해 절차 지향 프로그래밍과 객체지향 프로그래밍의 차이의 비교와 장, 단점을 이해하는 시간을 가져보도록 하겠습니다.

절차지향 vs 객체지향


절차지향 프로그래밍이란?
절차지향 프로그래밍은 일련의 흐름에 의해 진행되는 프로그래밍입니다. 사람들이 폭포에 많이 비교를 하는데 물이 위에서 아래로 떨어지듯 코드의 흐름이 위에서부터 아래로 순서대로 진행되는 방식입니다. 예를 들어 사람을 프로그래밍화 해서 구성할 때 머리->몸통->왼팔->오른팔->왼다리->오른다리 이런 식으로 일련의 순서를 기준으로 잡고 프로그래밍하는 방식입니다. 사람이라는 코드를 만들 때 구성하는 순서는 기준에서 바뀌지 않습니다.

절차지향 프로그래밍 대표 언어

  • C언어
  • 파스칼
  • 코볼

C언어는 아는데.. 파스칼 언어와 코볼은 잘 몰라서 위키에서 찾아봤습니다.
파스칼 언어 : 포인터를 사용한 구조적 프로그래밍과 데이터 구조화(data structuring)를 그 특징으로 한다. 파스칼 참조 링크
코볼 언어 : 사무용으로 설계된, 영어와 같은 컴퓨터 프로그래밍 언어이다. 코볼은 주로 비즈니스, 금융, 회사/정부 관리 시스템에 주로 사용된다.코볼 참조 링크

장점

  • 컴퓨터 구조와 유사하여 처리속도가 빠르다.
  • 개인 프로젝트나 과제 같이 길지 않은 프로젝트에 적합.

단점

  • 유지 보수가 어렵다.
  • 대규모 프로젝트에 적합하지 않다.
  • 실행 순서가 정해져 있으므로 코드의 순서가 바뀌면 동일한 결과를 보장하기 어렵다.

객체지향 프로그래밍이란?
객체지향 언어는 대상에 주목하여 프로그램을 작성하는 프로그래밍입니다. 여기서 대상에 주목한다는 말은 작업의 소유자가 객체이고, 개개의 객체는 작업(함수)을 가지고 객체가 다른 객체의 함수를 호출함으로 프로그래밍을 작동시키는 프로그래밍입니다. 객체지향을 통해 사람을 프로그래밍할 때 절차 지향과는 달리 사람을 구성하는데 순서에 제약이 없습니다.

객체지향 프로그래밍 대표언어

  • C++
  • Java
  • Python

장점

  • 코드의 재사용이 쉽고, 유지 보수가 쉽다.
  • 디버깅이 상대적(절차 지향에 비해)으로 쉽다
  • 직관적인 코드 분석이 가능하다.

단점

  • 코딩의 난이도 증대
  • 실행 속도가 상대적으로 절차 지향 프로그래밍에 비해 느림

마무리


이번 포스팅에서 절차지향 프로그래밍과 객체지향 프로그래밍이 무엇인지와 장, 단점을 비교해봤습니다. 위에 내용만 봤을 때는 객체지향 프로그래밍이 더 좋은 프로그래밍 기법이라고 생각할 수 있습니다. 하지만 객체지향 프로그래밍이 더 우수한 프로그래밍 기법은 아닙니다. 용도의 차이가 있을 뿐입니다. 요즘에는 컴퓨터의 성능이 아주 우수하기 때문에 메모리에 크게 제약을 받지는 않습니다. 하지만 예를 들어 메모리가 작은 아주 저가의 임베디드 보드에 숫자를 카운트할 수 있는 기능을 넣었다고 가정했을 때 절차 지향 프로그래밍은 그냥 숫자를 세는 함수를 호출하면 되는데 객체지향 프로그래밍은 객체를 선언하고 함수를 호출해야 되기 떄문에 메모리 관리 측면에서 절차지향 프로그래밍이 더 유리합니다.
이상으로 포스팅을 마치며 다음 시간에는 객체지향의 특징인 상속, 캡슐화, 다형성에 대해 알아보도록 하겠습니다. 감사합니다.

반응형

+ Recent posts