Skip to content

Latest commit

 

History

History
78 lines (46 loc) · 3.96 KB

File metadata and controls

78 lines (46 loc) · 3.96 KB

프로그래밍 패러다임

패러다임의 시대

패러다임

과거: 표준적인 모델을 따르거나 모방하는 상황을 가리키는 매우 제한적인 상황에서만 사용

현재: 사회 전체가 공유하는 이론, 방법, 문제의식의 체계라는 의미로 쓰임.

토마스 쿤은 과학의 발전을 기존처럼 점진적 누적으로 보지 않고, 혁명적 전환의 연속이라 주장했다. 기존 패러다임이 새로운 패러다임에 의해 전복되는 것이 과학 발전의 핵심이라 보고 이를 과학혁명이라고 부른다.

  • 예: 천동설 → 지동설 전환.

이 개념은 소프트웨어 개발 분야에서 널리 쓰이게 된다.

  • 예: 절차형 → 객체지향 프로그래밍의 전환.

프로그래밍 패러다임

프로그래밍 패러다임(programming paradigm)이라는 용어는 1979년 로버트 플로이드(Robert Floyd)가 처음 사용했다.

토마스 쿤은 '과학혁명의 구조'에서 과거 수세기에 걸쳐 일어난 과학혁명을 주도적인 패러다임이 변경된 결과로 인해 발생한 것으로 설명했다. 쿤의 의견 중 일부는 우리 분야에도 적절한 것으로 보인다. … 사실, 프로그래밍 언어는 일반적으로 어떤 패러다임의 사용을 권장하고 다른 패러다임의 사용을 막는다 [Floyd79].

왜 중요할까?

패러다임이라는 용어를 선택함으로써, 나는 법칙, 이론, 응용, 도구의 조작 등을 모두 포함한 실제 과학 활동의 몇몇 인정된 실례들이, 과학 연구의 특정한 정합적 전통을 형성하는 모델을 제공한다는 점을 시사하고자 한다. … 이런 패러다임에 대한 공부는 과학도가 훗날 과학 활 동을 수행할 특정 과학자 공동체의 구성원이 될 수 있도록 준비시키는 것이다. … [Kuhn12].

쿤의 주장처럼, 공통된 패러다임은 구성원 간의 기초 개념 충돌을 줄이고, 협업의 기반이 된다.

프로그래밍 패러다임은

  • 개발자 사이의 코딩 스타일 충돌을 줄이고,
  • 교육 과정에서 통일된 기준을 제공한다.

쿤의 패러다임과 프로그래밍 패러다임의 차이점

과학 패러다임 (쿤) 프로그래밍 패러다임
공존 가능성 공존 불가 (상호 배제) 공존 가능
비교 가능성 불가능 (세계관 자체가 다름) 비교 가능
발전 방식 혁명적 (Paradigm Shift) 점진적, 진화적 (Evolutionary)

공존 가능성

절차형 패러다임에서 객체지향 패러다임으로 전환됐다고 두 패러다임이 함께 존재할 수 없는 것은 아니다. 두 패러다임은 하나의 언어에 공존함으로써 서로를 보완한다.

예: C++은 절차형과 객체지향 패러다임을 모두 수용하며, 상황에 따라 적절한 스타일을 선택할 수 있다.

비교 가능성

패러다임이 바뀌었다고 프로그래머가 바라보는 세상이 완전히 달라지는 것은 아니다. 객체 지향 패러다임은 절차형 패러다임의 단점을 보완했지만 절차형 패러다임 위에서 구축됐다.

발전 방식

프로그래밍 패러다임은 과거의 패러다임의 단점을 보완하는 과정을 거친다.

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

각 언어는 특정 패러다임에 적합한 문제 해결 방식을 지원하며, 따라서 언어와 패러다임은 분리할 수 없다.

하지만 언어와 패러다임을 동일시하면 안 된다.

  • C → 절차형 패러다임
  • Java → 객체지향 패러다임
  • LISP → 함수형 패러다임
  • Prolog → 논리형 패러다임

결론

객체지향 패러다임은 프로그래밍의 하나의 강력한 방법론일 뿐이다.

모든 문제를 객체지향으로 해결할 수는 없다. 다른 패러다임(절차형, 함수형, 논리형)도 학습하고 적절하게 활용할 수 있어야 한다.