공부기록/아키텍처

클린 아키텍처 3장

DGL 2021. 7. 21. 21:30

구조적 프로그래밍, 객체지향 프로그래밍, 함수형 프로그래밍에 대한 설명

구조적 프로그래밍

최초로 적용된 패러다임은 구조적 프로그래밍으로, 다익스트라가 발견함. 무분별한 goto는 프로그램 구조에 해롭다는 사실을 제시. 이러한 점프들을 if/then/else와 do/while/until과 같이 더 익숙한 구조로 대체했다.

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

객체지향 프로그래밍

구조적 프로그래밍보다 앞선 1966년에 의해 등장했음. 클래스의 생성자, 인스턴스 변수, 중첩함수는 메서드. 함수 포인터를 특정 규칙에 따라 사용하는 과정을 통해 필연적으로 다형성이 등장.

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

함수형 프로그래밍

컴퓨터 프로그래밍보다 먼저 등장함. 1958년 존 매카시가 만든 LISP 언어의 근간이 되는 개념이 람다 계산법. 람다 계산법의 기초가 되는 개념은 불변성, 심볼의 값이 변경되지 않는다는 개념.

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

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

세 가지 패러다임은 각각은 우리에게서, goto문, 함수 포인터, 할당문을 앗아간다. 우리에게서 가져갈 수 있는 것이 더 남아 있는가? 아마 없을 것 → 따라서 프로그래밍 패러다임은 앞으로도 딱 세 가지밖에 없을 것이다. 이 밖에 다른 패러다임이 없다는 증거는 이들 패러다임이 1958~1968, 10년에 걸쳐만들어 졌고, 이후로도 수십년이 지났지만, 새롭게 등장한 패러다임은 전혀 없다는 것.

  • 결론

아키텍처 경계를 넘나들기 위한 메커니즘으로 다형성을 이용한다.

함수형 프로그래밍을 이용하여 데이터의 위치와 접근 방법에 대해 규칙을 부과함.

모듈의 기반 알고리즘으로 구조적 프로그래밍을 사용한다.

아키텍처의 세 가지 관심사(함수, 컴포넌트 분리, 데이터 관리)가 어떻게 연관되는지 주목해야 한다.