•
해당 장에서는 세 가지 프로그래밍 패러다임인 구조적, 객체지향, 함수형에 대해 설명한다.
구조적 프로그래밍
•
최초로 적용된 패러다임으로 제어 흐름의 직접적인 전환에 대한 규칙을 부과한다.
객체 지향 프로그래밍
•
두 번째로 도입된 패러다임이다.
•
알골 언어의 함수 호출 스택 프레임을 힙으로 옮기면 함수 호출이 반환된 이후에도 함수에서 선언된 지역 변수가 오랫동안 유지됨을 발견하였다.
⇒ 바로 이러한 함수가 클래스의 생성자가 되었고 지역 변수는 인스턴스 변수 그리고 중첩 함수는 메서드가 되었다.
•
객체 지향 프로그래밍은 제어 흐름의 간접적인 전환에 대해 규칙을 부과한다.
함수형 프로그래밍
•
세 번째 패러다임은 최근에 들어서야 겨우 도입되기 시작했지만 세 패러다임 중 가장 먼저 만들어졌다.
•
함수형 프로그래밍은 할당문에 대해 규칙을 부과한다.
생각할 거리
•
각 패러다임은 프로그래머에게서 권한을 박탈한다. 즉, 어느 패러다임도 새로운 권한을 부여하지 않는다.
◦
각 패러다임은 부정적인 의도를 가지는 일종의 추가적인 규칙을 부여하는데, 무엇을 해야하는지보단 무엇을 하면 안 되는 지를 말해준다.
•
세 가지 패러다임은 우리에게서 각각 goto문, 함수 포인터, 할당문을 앗아갔고 더 이상 앗아갈 것은 없을 것이다.
결론
•
패러다임의 역사로부터 얻을 수 있는 교훈은 아키텍처와 어떤 관계가 있는가?이다.
•
우리는 아키텍처 경계를 넘나들기 위해 메커니즘으로 다형성을 이용한다.
•
우리는 함수형 프로그래밍을 이용하여 데이터의 위치와 접근 방법에 대해 규칙을 부과한다.
•
세 가지 패러다임과 아키텍처의 세 가지 큰 관심사(함수, 컴포넌트 분리, 데이터 관리)가 어떻게 서로 연관되는 지 주목하자.