파일을 읽고 단어의 빈도 세기 프로그램을 33가지 방법으로 풀어낸 책
위 책은 파이썬으로 프로그래밍을 하였고, 본인은 코틀린을 이용하였다
이 중 Rest와 같은 형식은 2종은 제외하였다
GitHub 주소: https://github.com/yukyongsoo/programming-pattern
- 그리운 옛날
- 매우 옛날 메모리가 매우 작았던 시절의 프로그래밍
- 제약
- 주 기억 장치의 양은 매우 작다
- 식별자가 없다. 메모리 주소만을 이용 할 수 있다
- 포스
- 스택, 힙, 프로시저만 존재하는 언어의 프로그래밍
- 제약
- 데이터 스택이 존재한다. 모든 연산은 이 스택을 대상으로 한다
- 힙이 존재한다. 나중에 연산해야 하는 데이터를 저장한다
- 프로시저가 존재 할 수 있다
- 일체식(모놀리틱)
- 제약
- 추상화를 할 수 없다
- 라이브러리를 전혀 사용 할 수 없다
- 코드가 매우 길어지며 개발자가 깊게 생각할 시간이 없음을 의미한다
- 순환복잡도가 매우 높다
- 요리책 (구조적 프로그래밍)
- 제약
- 먼 분기가 없다
- 프로시저는 상태를 전역 변수 형태로 공유 가능하다
- 절차적 분해가 가능하다
- 프로시저는 멱등성이 아닐 수 있다
- 파이프라인
- 제약
- 함수는 상태를 서로 공유하지 않는다
- 규모가 큰 문제는 파이프라인으로 합성해 해결한다
- 함수는 입력을 취해 출력을 만들어 낸다
- 멱등성이 지켜져야 한다
- 코드 골프
- 제약
- 가능한 짧아야 한다
- 무한거울(재귀)
- 제약
- 중요한 부분 또는 모든 부분을 귀납법을 이용하여 모델링한다
- 즉, 기초 사례(N0) 다음에 N+1 규칙을 명시한다
- 꼬리 재귀를 이용하여 콜 스택을 최적화한다