IT Book/오브젝트(Object)

[Objects] 0. 프로그래밍 패러다임 - 오브젝트 정독하기

잇트루 2023. 8. 20. 22:13
반응형

프로그래밍 패러다임

프로그래밍 패러다임(Programming paradigm)이라는 용어는 튜링상(Turing Award)을 수상한 로버트 플로이드(Robert W. Floyd)가 ACM 튜링상 강연(ACM Turing Award Lecture)에서 'The Paradigms of Programming'이라는 제목으로 강의하면서 처음 등장했다.

 

프로그래밍 패러다임은 특정 시대의 어느 성숙한 개발자 공동체에 의해 수용된 프로그래밍 방법과 문제 해결 방법, 프로그래밍 스타일이라고 할 수 있다. 간단히 말해서 우리가 어떤 프로그래밍 패러다임을 사용하느냐에 따라 우리가 해결할 문제를 바라보는 방식과 프로그램을 작성하는 방법이 달라진다.

 

프로그래밍 패러다임이 중요한 이유

  • 개발자 공동체가 동일한 프로그래밍 스타일과 모델을 공유할 수 있게 함으로써 불필요한 부분에 대한 의견 충돌을 방지한다.
  • 프로그래밍 패러다임을 교육시킴으로써 동일한 규칙과 방법을 공유하는 개발자로 성장할 수 있도록 준비시킬 수 있다.

 

 

프로그래밍 언어와 패러다임

플로이드가 언급한 것에 따르면 각 프로그래밍 언어가 제공하는 특징과 프로그래밍 스타일은 해당 언어가 채택하는 프로그래밍 패러다임에 따라 달라진다.

  • C 언어 : 절차형 패러다임을 기반으로 하는 언어
  • Java : 객체지향 패러다임을 기반으로 하는 언어
  • LISP : 함수형 패러다임을 수용한 가장 대표적인 언어
  • PROLOG : 논리형 패러다임을 수용한 가장 대표적인 언어

 

각 패러다임과 패러다임을 채용하는 언어는 특정한 종류의 문제를 해결하는 데 필요한 일련의 개념들을 지원한다. 개발자는 코드를 통해 패러다임을 이해하고 적용할 수 있는 기술을 습득해야만 한다.

 

한 가지 주의할 점은 절차형 패러다임에서 객체지향 패러다임으로 전환됐다고 해서 두 패러다임이 함께 존재할 수 없는 것은 아니다. 오히려 서로 다른 패러다임이 하나의 언어 안에서 공존함으로써 서로의 장단점을 보완하는 경향을 보인다. 대표적인 예로 절차형 패러다임과 객체지향 패러다임을 접목시킨 C++와 함수형 패러다임과 객체지향 패러다임을 접목시킨 스칼라(Scala)가 있다. 이처럼 하나 이상의 패러다임을 수용하는 언어를 다중패러다임 언어(Multiparadigm Langauge)라고 부른다.

 

 

이 책의 목적

‘은총알은 없다’ - 프레드 브룩스(Fred Brooks)

 

‘프로그래밍 패러다임이 중요한 이유’는 이 책이 쓰인 이유이기도 하다. 이 책은 객체지향 패러다임에 관한 책이다. 이 책의 목적은 객체지향 패러다임이 제시하는 프로그래밍 패러다임을 설명하는 것이다.

 

이 책은 코드를 개발하는 우리가 객체지향 패러다임이라는 용어를 사용할 때 완벽하게 동일하지는 않더라도 어느 정도 유사한 그림을 머릿속에 그릴 수 있는 기반을 제공할 것이다. 또한 객체지향에 대한 다양한 오해를 제거함으로써 객체지향 프로그래밍을 하는 개발자들이 동일한 규칙과 표준에 따라 프로그램을 작성할 수 있게 할 것이다.

 

프로그래밍 패러다임은 혁명적(Revolutionary)이 아니라 발전적(Evolutionary)이다. 비록 객체지향 패러다임을 주로 사용한다고 하더라도 다른 패러다임을 배우는 것이 도움이 될 것이다.

 

객체지향 패러다임은 은총알이 아니다. 객체지향이 적합하지 않은 상황에서는 언제라도 다른 패러다임을 적용할 수 있는 시야를 기르고 지식을 갈고닦아야 한다.

 

 

https://link.coupang.com/a/7mbMi

 

오브젝트:코드로 이해하는 객체지향 설계

COUPANG

www.coupang.com

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

반응형