본문 바로가기

클린 아키텍처

[개발서적] 클린 아키텍처 03 - 패러다임의 개요

패러다임이란?

패러다임은 어떤 프로그래밍 구조를 사용하지, 그리고 언제 이 구조를 사용해야 하는지를 결정한다. 현재까지 이러한 패러다임에는 세가지 종류가 있다.

 

구조적 프로그래밍

최초로 적용된 패러다임으로 1968년 에츠허르 비버 데이크스트라가 발견했다. 데이크스트라는 무분별한 점프(goto 문장)는 프로그램 구조에 해롭다는 사실을 제시했다. 이러한 점프들을  if/then/else와 do/while/until과 같이 더 익숙한 구조로 대체했다.

 

구조적 프로그래밍은 제어흐름의 "직접적인 전환"에 대해 규칙을 부과한다.

 

객체 지향 프로그래밍

두 번째로 도입된 패러다임은 구조적 프로그래밍보다 2년 앞선 1966년 올레 요한 달과 크리스텐 니가드에 의해 등장했다. 알골 언어의 함수 호출 스택 프레임을 힙으로 옮기면 함수 호출이 반환된 이후에도 지역 변수가 오랫동안 유지될 수 있음을 발견한다.  

바로 이러한 함수가 클래스의 생성자가, 지역 변수는 인스턴스 변수, 중첩 함수는 메서드가 된다.  함수 포인터를 특정 규칙에 따라 사용하는 과정을 통해 다형성이 등장하게 된다.

 

객체 지향 프로그래밍은 제어흐름의 "간적적인 전환"에 대한 규칙을 부과한다.

 

함수형 프로그래밍

 

함수형 프로그래밍은 수학적 문제를 해결하는 과정에서 발명된 람다 계산법에 영향을 받아 만들어 졌다.  람다 계산법의 기초가 되는 개념은 불변성으로 심볼의 값이 변경되지 않는다는 개념이다. 이는 함수형 언어에는  할당문이 전혀 없다는 뜻이기도 하다.

 

함수형 프로그래밍은 "할당문"에 대해 규칙을 부과한다.

 

생각할 거리

각 패러다임은 프로그래머에게 권한을 박탈한다는 공통점이 있다.  어느 패러다임도 새로운 권한을 부여하지 않는다. 즉 패러다임은 무엇을 해야할지를 말하기보다는 무엇을 해서는 안되는 지를 말해준다.