파일을 읽고 단어의 빈도 세기 프로그램을 33가지 방법으로 풀어낸 책

위 책은 파이썬으로 프로그래밍을 하였고, 본인은 코틀린을 이용하였다

이 중 Rest와 같은 형식은 2종은 제외하였다

GitHub 주소: https://github.com/yukyongsoo/programming-pattern

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