Notice
Recent Posts
Recent Comments
Link
블로그명..?
클린 아키텍처(Clean Architecture) - 3장 프로그래밍 패러다임 개요 본문
구조적 프로그래밍
- 최초로 적용된 패러다임(최초로 만들어진 패러다임은 아니다)
- 1968년 에츠허르 비버 데이크스트라가 발견
- 데이크스트라는 무분별한 점프(goto 문장)는 프로그램 구조에 해롭다는 사실을 제시
- 데이크스트라는 점프들을 if/then/else와 do/while/untill과 같이 더 익숙한 구조로 대체했다.
구조적 프로그래밍은 제어흐름 직접적인 전환에 대해 규칙을 부과한다.
객체 지향 프로그래밍
- 1966년, 올레 요한 달과 크리스텐 니가드에 의해 등장
- ALGOL언어의 함수 호출 스택 프레임을 힙(Heap)으로 옮기면, 함수 호출이 반환된 이후에도 함수에서 선언된 지역 변수가 오랫동안 유지될 수 있었음을 발견
- 이러한 함수가 클래스의 생성자가 되었고, 지역 변수는 인스턴스 변수, 중첩 함수는 메서드가 되었다.
- 함수 포인터를 특정 규칙에 따라 사용하는 과정을 통해 필연적으로 다형성이 등장하게 되었다.
객체 지향 프로그래밍은 제어흐름의 간접적인 전환에 대해 규칙을 부과한다.
함수형 프로그래밍
- 최근에 도입되기 시작했지만, 가장 먼저 만들어졌다.
- 알론조 처치는 수학적 문제를 해결하는 과정에서 람다 계산법을 발명했는데, 함수형 프로그래밍은 이러한 연구 결과에 직접적인 영향을 받아 만들어졌다.
- 1958년에 존 매카시가 만든 LISP 언어의 근간이 되는 개념이 람다 계산법이다.
- 람다 계산법의 기초가 되는 개념은 불변성(immutability)으로, 심볼(symbol)의 값이 변경되지 않는다는 개념이다.
- 함수형 언어에는 할당문이 전혀 없다.
- 대다수의 함수형 언어가 변수 값을 변경할 수 있는 방법을 제공하기는 하지만, 굉장히 까다로운 조건 아래에서만 가능하다.
함수형 프로그래밍은 할당문에 대해 규칙을 부과한다.
생각할 거리
- 각 패러다임은 프로그래에게서 권한을 박탈한다.
- 어느 패러다임도 새로운 권한을 부여하지 않는다.
- 각 패러다임은 부정적인 의도를 가지는 일종의 추가적인 규칙을 부과한다.
- 패러다임은 무엇을 해야 할지를 말하기보다는 무엇을 해서는 안 되는지를 말해준다.
결론
패러다임의 역사로부터 얻을 수 있는 교훈은 아키텍처와 어떠 관계가 있는가? 모두 다 관계가 있다.
우리는 아키텍처 경계를 넘나들기 위한 메커니즘으로 다형성을 이용한다.
우리는 함수형 프로그래밍을 이용하여 데이터의 위치와 접근 방법에 대해 규칙을 부과한다.
우리는 모듈 기반 알고리즘으로 구조적 프로그래밍을 사용한다.
세 가지 패러다임과 아키텍처의 세 가지 큰 관심사(함수, 컴포넌트 분리, 데이터 관리)가 어떻게 서로 연관되는지 주목하자.
'CleanArchitecture' 카테고리의 다른 글
클린 아키텍처(Clean Architecture) - 6장 함수형 프로그래밍 (0) | 2021.03.14 |
---|---|
클린 아키텍처(Clean Architecture) - 5장 객체 지향 프로그래밍 (0) | 2021.03.14 |
클린 아키텍처(Clean Architecture) - 4장 구조적 프로그래밍 (0) | 2021.03.13 |
클린 아키텍처(Clean Architecture) - 2장 두 가지 가치에 대한 이야기 - 행위, 구조 (1) | 2021.03.13 |
클린 아키텍처(Clean Architecture) - 1장 설계와 아키텍처란? (0) | 2021.03.13 |
Comments