절차지향?

dion·2020년 11월 22일
1

TL;DR

  • 절차지향이라는 말은 엄밀히 말하면 틀린 말입니다.
  • Procedure라는 용어는 '절차'가 아니라 '프로시저'로 읽어야합니다.
  • ~~나무위키에도 자세히 정리되어 있습니다.~~

절차'지향'?

절차지향이라는 말은 왜 나오게 되었을까요?

현대 언어들에 가장 큰 영향을 미치는 패러다임 두 가지를 꼽자면, 객체지향 패러다임과 함수형 패러다임이 있습니다.

여기서 이 객체지향 프로그래밍은 Procedural 프로그래밍과 함께 명령형 프로그래밍의 일종입니다. 보통 클래스와 메서드라는 개념을 설명하기 위해서 비교하는 대상이 C언어와 같은 객체지향 패러다임을 차용하지 않은 명령형 프로그래밍 언어와 비교하게 됩니다.

하지만, 이는 반대되는 개념이라는 소리가 아닙니다. 재사용성을 위해 객체를 선택했냐, 프로시저를 선택했냐의 차이뿐이죠.

이런 비교 과정에서 객체지향이 아니니까 절차지향이겠거니 하게되는 것이죠. 이는 우리나라만의 문제는 아니고, 해외에서도 헷갈리는지 검색하면 나오긴 합니다.

그래서 영문 위키피디아에는 Procedure-oriented language가 Procedural Programming으로 리다이렉트 됩니다.

그러니 엄밀히 말하면, '틀린' 용어입니다.

'절차'?

그러면 절차는 어떨까요? 맞는 말일까요?

맞다고 가정해봅시다. 그러면 우리가 알고있는 '절차'란 무엇인가요? 대부분의 사람들은 '정해진 순서대로 하는 것' 정도로 생각할겁니다.

근데, 어떤 프로그래밍 언어가 정해진 순서대로 실행되지 않나요? 뭔가 이상하지 않나요? 거기에 객체지향이 반대개념이라고 알고 계신 분들은 혼란이 오기 시작합니다. '그러면 객체지향은 정해진 순서대로 실행되지 않는건가?'

당연히 아닙니다. Procedural Programming의 Procedure는 프로시저라고 하는 우리가 흔히 함수라고 하는 그것입니다.

따라서 함수를 만들고, 함수를 나눠서 재사용성을 늘리는 기법은 Procedural 프로그래밍에서 온 것 입니다.

객체지향은 거기에 데이터와 함수를 묶은 객체라는 단위로 재사용성을 늘리는 것이죠.

결론

우리가 흔히 사용하는 용어들이 잘못된 경우가 많습니다. 어쩌면 제가 사용한 용어에도 잘못된 것이 아주 많을지도 모르겠습니다.

내가 사용하는 용어가 정확한지 살펴봄을 통해서 더 깊은 공부를 해보시는 것은 어떨까요?

참고

https://namu.wiki/w/%EC%A0%88%EC%B0%A8%EC%A0%81%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

https://en.wikipedia.org/wiki/Procedural_programming

profile
코드리뷰와 고양이를 좋아하는 개발자입니다. 좋은 글을 위한 비판은 언제든 환영합니다.

관심 있을 만한 포스트

0개의 댓글