[클린 아키텍처] 3장. 패러다임 개요

혀어어언·2025년 7월 9일
0

📖 [3장] 패러다임 개요

📘 클린 아키텍처 북스터디 정리입니다
📚 도서: 로버트 C. 마틴 《Clean Architecture》
🧑‍💻 목적: 올바른 설계에 대한 감각과 습관을 익히기 위해
🗓️ 진행 기간: 2025년 7월 ~ 매주 2장


✅ 핵심 요약 (Key Takeaways)

이 장의 핵심 문장은?

  • 세 가지 패러다임과 아키텍처의 세 가지 큰 관심사가 어떻게 서로 연관되는지에 주목하자

저자가 전달하고자 하는 메세지 요약

  • 프로그래밍의 패러다임과 아키텍처 관심사의 연관성에 주목하며 독서할 것을 권장

💡 내용 정리

서론

  • 1938년, 앨런 튜링이 컴퓨터 프로그래밍의 기반 마련
  • 튜링의 프로그램은 반복문, 분기문, 할당문, 서브루틴, 스택 등 우리에게 익숙한 구조 사용. 바이너리 언어 사용
  • 1940년대 이후: 어셈블러, 컴파일러, 고급언어 등 발전
    후반 어셈블러 등장으로 코드를 바이너리로 작성하지 않아도 되게 되었음
  • 프로그래밍 패러다임: 프로그래밍을 하는 방법으로 대체로 언어에 독립적
  • 패러다임은 어떤 프로그래밍 구조를 사용할 지, 언제 이 구조를 사용해야 하는 지를 결정

패러다임 개요

세 가지 패러다임:

  • 구조적 프로그래밍
  • 객체 지향 프로그래밍
  • 함수형 프로그래밍

구조적 프로그래밍

  • 최초로 적용된 프로그래밍 (1968년 에츠허르 비버 데이크스트라가 발명)
  • 무분별한 점프(goto 문장)은 프로그램 구조에 해롭다는 사실 제시
  • 데이크스트라는 이러한 점프들을 if/then/elsedo/while/until과 같이 익숙한 구조로 대체

구조적 프로그래밍은 제어 흐름의 직접적인 전환에 대해 규칙을 부과한다

객체 지향 프로그래밍

  • 두번째로 적용된 패러다임 (1966년 올레 요한 달과 크리스텐 니가드)
  • 알골 언어의 함수 호출 스택 프레임을 힙으로 옮기면, 함수 호출이 반환된 이후에도 함수에서 선언된 지역 변수가 오랫동안 유지될 수 있음을 발견
  • 함수→클래스의 생성자, 지역변수→인스턴스 변수, 중첩함수→메서드
  • 함수 포인터를 특정 규칙에 따라 사용하는 과정을 통해 필연적으로 다형성이 등장하게 됨

객체 지행 프로그래밍은 제어 흐름의 간접적인 전환에 대해 규칙을 부과한다

함수형 프로그래밍

  • 가장 먼저 발명된 패러다임이지만 최근에서야 널리 사용
  • 알론조 처치는 어떤 수학적 문제를 해결하는 과정에서 람다 계산법을 발명했는데 함수형 프로그래밍은 이러한 연구 결과에 직접적 영향을 받아 만들어짐
  • 1958년 존 매카시가 만든 LISP 언어의 근간이 되는 개념이 람다 계산법
  • 불변성: 람다 계산법의 기초 개으로 심볼의 값이 변경되지 않는다는 개념. 즉, 함수형 언어에 할당문이 전혀 없다는 뜻

함수형 프로그래밍은 할당문에 대해 규칙을 부과한다

생각할 거리

  • 각 패러다임은 프로그래머에게서 권한을 박탈:
    • 구조적: goto
    • 객체 지향: 함수 포인터
    • 함수형: 할당문
  • 즉, 패러다임은 무엇을 해야 할지를 말하기 보다는 무엇을 해서는 안 되는 지를 말해줌

결론

  • 구조적 프로그래밍 → 알고리즘 모듈화
  • 객체지향 프로그래밍 → 아키텍처 경계와 다형성
  • 함수형 프로그래밍 → 데이터 위치와 접근 방식 규칙 부과
  • 세 가지 패러다임과 아키텍처의 세가지 큰 관심사(함수, 컴포넌트 분리, 데이터 관리) 간의 연관성에 주목해서 책을 읽어야 한다

0개의 댓글