02 벽돌부터 시작하기: 프로그래밍 패러다임
1945년 튜링은 사람이 식별가능한 형태의 실질적 프로그램을 컴퓨터에 코드로 작성했다.
바이너리 언어로 반복문, 분기문, 할당문, 서브루틴, 스택 등 우리에게 익숙한 구조를 사용했다.
어셈블리의 등장, 컴파일러 발명으로 수많은 언어가 탄생했다.
다른 혁신적 변화는 프로그래밍 패러다임의 등장이다.
패러다임은 언어에 독립적인 구조이다. 이런 패러다임에 세가지 종류가 있다.
- 구조적, 객체지향, 함수형 프로그래밍.
3장 패더라임 개요
- 구조적 프로그래밍
최초로 적용된 패더라임
구조적 프로그래밍은 제어흐름의 직접적인 전환에 대해 규칙을 부과한다.
- 객체지향 프로그래밍
함수가 클래스의 생성자가 되고, 지역변수는 인스턴스 변수
그리고 중첩함수느 메서드가 되었다.
함수 포인터를 특정 규칙에 따라 사용하는 과정을 통해 다형성이 등장했다.
객체지향 프로그래밍은 제어흐름의 간접적인 전환에 대해 규칙을 부과한다.
- 함수형 프로그래밍
최근에 도입되기 시작했지만 가장 먼저 만들어진 패러다임이다.
알론조 처치는 어떤 수학적 문제를 해결하느 과정에서 람다 계산법을 발명.
람다 계산볍의 기초가 되는 개념은 불변성으로 심볼의 값이 변경되지 않는다는 개념.
함수형 프로그래밍은 할당문에 대해 규칙을 부과한다.
- 생각할 거리
각 패러다임은 새로운 권한을 부여하지 않는다.
부정적인 의도를 가지는 일종의 추가적인 규칙(무엇을 해서는 안되는지)을 부과한다.
이 세가지 패러다임 이후 등장한 패러다임은 전혀 없다.
- 결론
이것과 아키텍터와 어떤 관계가 있나??
우리는 아키텍처의 경계를 넘나들기 위해 다형성을 이용하고,
함수형 프로그래밍을 이요해 데이터의 위치와 접근방버에 규칙을 부과하고,
모듈의 기반 알고리즘으로 구조적 프로그래밍을 한다.
세가지 패러다임과 아키텍처의 세가지 큰 관심자(함수, 컴포넌트 분리, 데이터 관리) 가 어떻게 연관되는지 주목해야 한다.