멀티패러다임 프로그래밍
2025년 04월 21일 출간
국내도서 : 2025년 04월 21일 출간
- eBook 상품 정보
- 파일 정보 ePUB (11.23MB) | 약 40.6만 자
- ISBN 9791169219334
- 지원기기 교보eBook App, PC e서재, 리더기, 웹뷰어
-
교보eBook App
듣기(TTS) 가능
TTS 란?텍스트를 음성으로 읽어주는 기술입니다.
- 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를 읽을 수 있습니다.
- 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.

쿠폰적용가 27,360원
10% 할인 | 5%P 적립이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.
카드&결제 혜택
- 5만원 이상 구매 시 추가 2,000P
- 3만원 이상 구매 시, 등급별 2~4% 추가 최대 416P
- 리뷰 작성 시, e교환권 추가 최대 200원
작품소개
이 상품이 속한 분야
복잡한 문제를 해결하기 위해
객체지향, 함수형, 명령형을 자유롭게 넘나들며 설계하고 구현하는 법
견고한 코드, 유연한 문제 해결을 위한 멀티패러다임 프로그래밍의 모든 것
현대 개발에서는 객체지향, 함수형, 명령형 프로그래밍을 상황에 따라 유연하게 조합하는 역량이 필요합니다. 이 책은 세 가지 패러다임의 강점을 통합해 더 유연하고 견고한 소프트웨어를 설계할 수 있도록 실무 중심으로 설명합니다. 타입스크립트를 기반으로 반복자와 제너레이터, 리스트 프로세싱, 고차 함수 등 현대 언어의 기능을 폭넓게 활용하며, 프런트엔드와 백엔드 개발에 바로 적용할 수 있는 통찰을 제공합니다. 단순히 구현 방법을 알려주는 것에 머무르지 않고 ‘왜 그렇게 구현해야 하는가’를 설명해 개발자의 사고력과 설계 역량을 강화합니다. 더 나은 코드와 구조를 고민하는 개발자에게 이 책은 프로그래밍 시야를 확장하고 실무와 이론을 잇는 든든한 길잡이가 될 것입니다.
1.1 객체지향 디자인 패턴의 반복자 패턴과 일급 함수
__1.1.1 GoF의 반복자 패턴
__1.1.2 ArrayLike로부터 Iterator 생성하기
__1.1.3 ArrayLike를 역순으로 순회하는 이터레이터 만들기
__1.1.4 지연 평가되는 map 함수
__1.1.5 멀티패러다임의 교차점: 반복자 패턴과 일급 함수
1.2 명령형 프로그래밍으로 이터레이터를 만드는 제너레이터 함수
__1.2.1 제너레이터 기본 문법
__1.2.2 제너레이터로 작성한 reverse 함수
1.3 자바스크립트에서 반복자 패턴 사례: 이터레이션 프로토콜
__1.3.1 이터레이터와 이터러블
__1.3.2 언어와 이터러블의 상호작용
__1.3.3 제너레이터로 만든 이터레이터도 이터러블
1.4 이터러블을 다루는 함수형 프로그래밍
__1.4.1 forEach 함수
__1.4.2 map 함수
__1.4.3 filter 함수
__1.4.4 고차 함수 조합하기
__1.4.5 재미난 filter
1.5 이터러블 프로토콜이 상속이 아닌 인터페이스로 설계된 이유
__1.5.1 Web API의 NodeList도 이터러블
__1.5.2 상속이 아닌 인터페이스로 해결해야 하는 이유
__1.5.3 인터페이스와 클래스 상속
1.6 요약 정리
2장 함수형 프로그래밍과 타입 시스템 그리고 LISP
2.1 타입 추론과 함수 타입 그리고 제네릭
__2.1.1 타입 추론
__2.1.2 함수 타입과 제네릭
2.2 멀티패러다임 언어에서 함수형 타입 시스템
__2.2.1 이터레이션 프로토콜과 타입 다시 보기
__2.2.2 함수형 고차 함수와 타입 시스템
__2.2.3 함수 시그니처와 중첩된 함수들의 타입 추론
2.3 멀티패러다임 언어와 메타프로그래밍 - LISP로부터
__2.3.1 Pipe Operator
__2.3.2 클래스와 고차 함수, 반복자, 타입 시스템을 조합하기
__2.3.3 LISP(클로저)에서 배우기 - 코드가 데이터, 데이터가 코드
__2.3.4 클로저에서 map이 실행될 때
__2.3.5 멀티패러다임 언어에서 사용자가 만든 코드이자 클래스를 리스트로 만들기
__2.3.6 LISP의 확장성 - 매크로와 메타프로그래밍
__2.3.7 런타임에서 동적으로 기능 확장하기
__2.3.8 언어를 확장하는 즐거움
2.4 요약 정리
3장 코드 : 객체 : 함수 = Generator : Iterator : LISP = IP : OOP : FP
3.1 코드가 곧 데이터 - 로직이 담긴 리스트
__3.1.1 [for, i++, if, break] - 코드를 리스트로 생각하기
__3.1.2 현대 언어에서 리스트 프로세싱 - 클로저, 코틀린, 스위프트, 스칼라, C#, 자바
__3.1.3 언어를 넘어 적용 가능한 개념, 패러다임
3.2 하스켈로부터 배우기
__3.2.1 하스켈의 함수와 함수 시그니처
__3.2.2 언어 차원에서 지원하는 커링
__3.2.3 main 함수와 IO
__3.2.4 head, map, filter, foldl 함수 시그니처
__3.2.5 함수 합성 - . 연산자와 $ 연산자
__3.2.6 sumOfSquaresOfOddNumbers 함수
__3.2.7 파이프라인 스타일 - &
__3.2.8 Either를 통한 에러 처리
__3.2.9 패턴 매칭
3.3 지연 평가 자세히 살펴보기
__3.3.1 중첩된 이터레이터의 실행 순서 - 제너레이터로 확인하기
__3.3.2 자세히 살펴보기
__3.3.3 이터레이터로 직접 살펴보기
__3.3.4 단순화해서 살펴보기
3.4 Generator :Iterator :LISP - 지연 평가와 안전한 합성
__3.4.1 find 함수 시그니처
__3.4.2 하스켈에서 find 함수와 안전한 합성
__3.4.3 find 함수로 생각하는 지연 평가와 리스트 프로세싱
__3.4.4 타입스크립트에서의 안전한 합성
__3.4.5 every 함수
__3.4.6 some 함수
__3.4.7 지연 평가에 기반한 break 로직 끼워 넣기
__3.4.8 every와 some 함수의 공통 로직을 함수형으로 추상화하기
__3.4.9 concat으로 더하기
3.5 요약 정리
4장 비동기 프로그래밍
4.1 값으로 다루는 비동기
__4.1.1 Promise __4.1.2 new Promise( )를 직접 사용해본 적 있는가
__4.1.3 Promise.race
__4.1.4 IO 작업에 타임아웃 설정하기
__4.1.5 응답 속도에 따라 다른 전략으로 UI 렌더링하기
__4.1.6 Promise.all
__4.1.7 Promise.allSettled
__4.1.8 Promise.any
4.2 지연성으로 다루는 비동기
__4.2.1 Promise 실행을 지연하려면
__4.2.2 챗GPT가 명령형으로 구현한 동시성 핸들링 함수
__4.2.3 함수형으로 구현한 동시성 핸들링 함수
__4.2.4 효과적인 비동기 핸들링으로 가는 계단 - 지연성
4.3 타입으로 다루는 비동기
__4.3.1 AsyncIterator, AsyncIterable, AsyncGenerator 프로토콜
__4.3.2 AsyncIterable을 다루는 고차 함수
__4.3.3 동기와 비동기를 동시에 지원하는 함수로 만드는 규약 - toAsync
__4.3.4 타입 시스템 + 비동기 함수형 함수 + 클래스
4.4 비동기 에러 핸들링
__4.4.1 여러 이미지를 불러와서 높이 구하기
__4.4.2 개선된 비동기 로직
__4.4.3 에러가 제대로 발생되도록 하는 것이 핵심
__4.4.4 안정적인 소프트웨어와 비동기 프로그래밍
4.5 요약 정리
5장 실전 함수형 프로그래밍
5.1 실전 데이터 다루기
__5.1.1 2차원 배열에서 숫자 다루기
__5.1.2 농구팀 데이터 다루기
__5.1.3 커머스 데이터 다루기
__5.1.4 커머스 데이터 다루기 2
__5.1.5 일관된 접근 방식으로 문제 해결하기
5.2 더 많은 문제에 적용하기
__5.2.1 pipe 함수
__5.2.2 pipe와 비동기 함수 합성
__5.2.3 zip 함수
__5.2.4 인덱스가 값으로 필요할 때
__5.2.5 콜라츠 추측 - 1이 될 때까지 세기
__5.2.6 break를 대신하는 take, takeWhile, takeUntilInclusive
__5.2.7 함수의 조합으로 만들어내는 로직
5.3 백엔드 비동기 프로그래밍
__5.3.1 커머스 플랫폼의 결제 프로세스 문제
__5.3.2 결제 내역 동기화 스케줄러 만들기
__5.3.3 해시 기반 접근으로 시간 복잡도 최적화
__5.3.4 안정적인 비동기 작업 간격 유지
__5.3.5 최대 요청 크기 제한을 효과적으로 처리하기
__5.3.6 사전 카운트로 효율 높이기
__5.3.7 병렬성으로 효율 높이기
__5.3.8 리스트 프로세싱 기반 비동기/동시성 프로그래밍
5.4 리스트 프로세싱 패턴화
__5.4.1 변형-누적 패턴
__5.4.2 중첩-변형 패턴
__5.4.3 반복자-효과 패턴
__5.4.4 필터-중단 패턴
__5.4.5 무한-중단 패턴
__5.4.6 분할-평탄 패턴
__5.4.7 변형-평탄 패턴
__5.4.8 결합-누적 패턴
__5.4.9 해시-매치 패턴
__5.4.10 리스트 프로세싱 함수 유형별 개념 정리
5.5 요약 정리
6장 멀티패러다임 프로그래밍
6.1 HTML 템플릿 엔진 만들기
__6.1.1 Tagged Templates
__6.1.2 리스트 프로세싱으로 구현하기
__6.1.3 push를 concat으로
__6.1.4 XSS 공격 방지
__6.1.5 중첩 데이터 처리로 컴포넌트 방식 개발 지원하기
__6.1.6 구조의 문제는 객체지향으로, 로직의 문제는 함수형으로 해결하기
__6.1.7 배열로부터 html 문자열 만들기
__6.1.8 객체를 함수형으로 더하기
__6.1.9 배열 처리를 클래스 내부로 이동하여 편의성 높이기
__6.1.10 고차 함수로 추상화하기
__6.1.11 작은 프런트엔드 개발 라이브러리 만들기
__6.1.12 멀티패러다임 언어가 제시하는 기회
6.2 멀티패러다임을 활용한 동시성 핸들링
__6.2.1 executeWithLimit 다시 보기
__6.2.2 챗GPT가 명령형으로 구현한 동시성 핸들링 함수
__6.2.3 멀티패러다임으로 구현한 동시성 핸들링 함수
__6.2.4 동시성(부하) 크기를 동적으로 변경할 수 있도록 확장하기
__6.2.5 무한 반복되는 작업의 부하 조절하기
__6.2.6 runAllSettled 추가하기
6.3 요약 정리
7장 객체지향 프런트엔드 개발 그리고 멀티패러다임적 접근과 응용
7.1 Setting 앱 만들기
__7.1.1 SwitchView
__7.1.2 SettingItemView
__7.1.3 SettingListView
__7.1.4 SettingPage
__7.1.5 전체 토글 기능 추가하기
__7.1.6 객체 간 통신과 커스텀 이벤트 디스패치
__7.1.7 이벤트가 자꾸 루프에 빠지고 부수 효과가 발생하는 이유
__7.1.8 타입 안전한 커스텀 이벤트 통신 패턴
__7.1.9 재사용 가능한 컴포넌트 SwitchView
__7.1.10 패러다임이 만드는 리액티브한 코드
7.2 Todo 앱 만들기
__7.2.1 CheckView
__7.2.2 추상 클래스와 상속
__7.2.3 Headless UI
__7.2.4 TodoItemView
__7.2.5 계층적 캡슐화를 통한 도메인과 UI 명명 불일치 관리
__7.2.6 TodoListView
__7.2.7 제네릭 클래스로 추상화
__7.2.8 TodoPage
__7.2.9 인터페이스에 기반한 객체 간 통신으로 중복 제거하기
__7.2.10 GoF의 디자인 패턴 관점으로 보기 - 전략 패턴
__7.2.11 일급 함수를 활용한 객체 간 통신 - 콜백 인젝션 패턴
__7.2.12 멀티패러다임적인 코드 설계
7.3 Todo 앱 만들기 2
__7.3.1 데코레이터로 코드를 간결하게
__7.3.2 TextSubmitView
__7.3.3 ListView에 헬퍼 메서드 추가하기
__7.3.4 새로운 Todo 생성하기
__7.3.5 SegmentControlView
__7.3.6 휴리스틱 기반 Diff로 DOM 업데이트 최적화
7.4 Todo 앱 만들기 3
__7.4.1 상태 패턴으로 유연하게 만들기
__7.4.2 상태 패턴 적용의 이점
__7.4.3 런타임에서도 변경 가능한 코드와 소프트웨어 동작
__7.4.4 상태 객체로 더 확장하기
__7.4.5 멀티패러다임 객체지향 설계
7.5 비동기와 UI, Promise와 Class
__7.5.1 Promise를 활용한 alert, confirm
__7.5.2 값으로서의 Promise, 컴포넌트 간 통신 매개
__7.5.3 그룹 채팅에 참여할 친구 선택하기
객체지향, 함수형, 명령형 이제는 선택이 아니라 조합!
다양한 패러다임을 이해하는 순간, 코드의 시야가 넓어집니다
객체지향, 함수형, 명령형은 더 이상 대립하거나 경쟁하는 개념이 아닙니다. 현대 언어들은 여러 패러다임을 포용하며 더욱 유연하고 강력한 도구로 진화하고 있습니다. 하지만 언어가 멀티패러다임을 지원한다고 해서 개발자가 자연스럽게 그 잠재력을 활용하게 되는 것은 아닙니다. 앞으로는 다양한 패러다임을 ‘어떻게’ ‘조화롭게’ 다룰 수 있는지가 더 중요합니다. 이 책은 그 과제에 실용적인 답을 제시합니다.
실제 서비스에서 마주하는 복잡한 문제를 어떻게 멀티패러다임적으로 사고하고 해결할 수 있을지 구체적인 코드와 함께 보여줍니다. 반복자 패턴, 고차 함수, 제너레이터 같은 객체지향과 함수형의 고급 개념을 하나의 맥락 속에서 통합해 설명하며 타입스크립트를 중심으로 LISP, 하스켈, 자바 등의 철학을 자연스럽게 연결해냅니다.
멀티패러다임 프로그래밍은 언어에 국한되지 않습니다. 프런트엔드 개발자는 자바스크립트의 본질과 새로운 설계 감각을, 백엔드 개발자는 비동기 프로그래밍을 잘 다루는 법과 효율적이고 안전한 데이터 처리 방법을 익히게 될 것입니다.
★주요 내용
● 멀티패러다임 프로그래밍 언어의 장점과 실용성
● 함수형 프로그래밍과 타입 시스템 그리고 LISP
● 실전 객체지향 프로그래밍
● 지연 평가와 비동기 프로그래밍
● 실전 함수형 프로그래밍
● 여러 패러다임을 상황에 맞게 조합하는 방법
★대상 독자
● 더 효율적이고 견고한 코드를 작성하고 싶은 분
● 탄탄한 기본기 위에 고급 개념을 더하고 싶은 분
● 중급 이상 개발자로 성장하고자 하는 분
● 타입스크립트와 자바스크립트를 사용하는 프런트엔드 개발자
● Node.js, Express.js, NestJS 등을 사용하는 백엔드 개발자
● 특정 언어에 국한되지 않고 멀티패러다임 사고를 자신의 언어에 확장하고 싶은 분
★먼저 읽은 베타리더들의 한 마디
● 이 책을 읽고 나서 그동안 무심코 사용한 문법이나 코드들 사이에 이미 멀티패러다임이 자리 잡고 있었다는 사실에 놀랐습니다. _김나영 (뱅크샐러드 건강팀 프런트엔드 개발자)
● 코드 유지보수를 위해 많은 고민을 해왔습니다. 이러한 고민을 해결하기 위해 프로그래밍 패러다임은 꼭 거쳐야 하는 관문이었고 이 책 덕분에 시야가 한층 넓어졌습니다. _김만경 (나인아크 게임 서버 개발자)
● 객체지향, 함수형, 명령형 등 다양한 프로그래밍 패러다임을 단순히 설명하는 것을 넘어, 멀티패러다임을 자유롭게 조합하여 활용할 수 있도록 돕는 실용적인 개발서입니다. _김영은 (백엔드 개발자)
● 객체지향과 함수형 패러다임이 서로 조화롭게 공존할 수 있음을 알게 되었고 예제 코드를 통해 빠르게 이해할 수 있었습니다. _박소예 (프런트엔드 개발자)
● 실무에서 자주 간과하기 쉬운 함수형 개념들을 탄탄하게 설명하고 실제 코드와 프로젝트에 어떻게 적용할 수 있는지를 구체적으로 보여줍니다. _서재완 (프런트엔드 개발자)
● 프레임워크에 익숙해지면서 자칫 놓치기 쉬운 자바스크립트의 기본기를 탄탄히 다지는 데도 큰 도움이 되는 책입니다. _성현제 (프런트엔드 개발자)
● 백엔드 개발자라면 한 번쯤 꼭 읽어보기를 권하고 싶은 책입니다. 단순히 기술을 겉핥기식으로 익히는 것이 아니라 그 본질을 꿰뚫고 깊이 있게 이해하는 데 큰 도움이 됩니다. _신윤수 (Node.js 백엔드 개발자)
● 특정 언어에 국한되지 않고 프로그래밍 패러다임의 쓰임새를 확실히 구분하여 설계하는 방법을 배울 수 있습니다. _윤수혁 (웹 개발자)
● 자바스크립트 언어를 깊게 이해하고 함수형과 객체지향 패러다임을 이해하고 적용할 수 있는, 두 마리 토끼를 잡을 수 있는 책입니다. _윤영선 (백엔드 개발자)
● 어떤 패러다임을 채택하더라도 더욱 가독성 높고 효율적으로 데이터를 처리할 수 있게 도와줍니다. _이기웅 (프런트엔드 개발자)
● 멀티패러다임적 사고가 어디까지 확장될 수 있을지 상상하게 만드는, 꼭 추천하고 싶은 책입니다. _임혁 (백엔드 개발자)
● 이론과 실무 사이의 간극을 훌륭하게 메워주는 책입니다. 마치 옆에서 라이브 코딩을 하며 설명해주는 듯한 느낌이 들었습니다. _정동환 (프런트엔드 개발자)
작가정보
마플코퍼레이션의 CTO이자 22년 차 소프트웨어 엔지니어. 카카오와 엔씨소프트 오픈마루팀에서 개발자로 근무했으며 넥슨, 네이버, 카카오 등 국내 주요 IT 기업의 개발자를 대상으로 기술 교육을 진행한 경험이 있다.
타입스크립트, 오브젝티브-C, 자바, Node.js, PostgreSQL, 클로저, 루비 온 레일즈 등 다양한 언어와 기술을 다루며 폭넓은 소프트웨어 개발 노하우를 쌓고 있다. 또한 객체지향 프런트엔드 개발 라이브러리인 rune-ts와 데이터베이스 쿼리 빌더 FxSQL을 직접 개발하고 함수형 라이브러리 FxTS 설계에도 참여하는 등 다양한 오픈소스 프로젝트에 기여했다. 최근에는 소프트웨어 공학을 사랑하는 온라인 커뮤니티 마플개발대학의 교수로 활동하며 지식을 공유하고 있다.
이 상품의 총서
Klover리뷰 (0)
- - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- - 리워드는 5,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다. (2024년 9월 30일부터 적용)
- - 리워드는 한 상품에 최초 1회만 제공됩니다.
- - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
구매 후 리뷰 작성 시, e교환권 100원 적립
문장수집
- 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
- e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- 리워드는 5,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다. (2024년 9월 30일부터 적용)
- 리워드는 한 상품에 최초 1회만 제공됩니다.
- sam 이용권 구매 상품 / 선물받은 eBook / 오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.
구매 후 문장수집 작성 시, e교환권 100원 적립
신규가입 혜택 지급이 완료 되었습니다.
바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!

- 구매 후 90일 이내 작성 시, e교환권 100원 (최초1회)
- 리워드 제외 상품 : 마이 > 라이브러리 > Klover리뷰 > 리워드 안내 참고
- 콘텐츠 다운로드 또는 바로보기 완료 후 리뷰 작성 시 익일 제공
가장 와 닿는 하나의 키워드를 선택해주세요.
총 5MB 이하로 jpg,jpeg,png 파일만 업로드 가능합니다.
신고 사유를 선택해주세요.
신고 내용은 이용약관 및 정책에 의해 처리됩니다.
허위 신고일 경우, 신고자의 서비스 활동이 제한될 수
있으니 유의하시어 신중하게 신고해주세요.
이 글을 작성한 작성자의 모든 글은 블라인드 처리 됩니다.
구매 후 90일 이내 작성 시, e교환권 100원 적립
eBook 문장수집은 웹에서 직접 타이핑 가능하나, 모바일 앱에서 도서를 열람하여 문장을 드래그하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다.
차감하실 sam이용권을 선택하세요.
차감하실 sam이용권을 선택하세요.
선물하실 sam이용권을 선택하세요.
-
보유 권수 / 선물할 권수0권 / 1권
-
받는사람 이름받는사람 휴대전화
- 구매한 이용권의 대한 잔여권수를 선물할 수 있습니다.
- 열람권은 1인당 1권씩 선물 가능합니다.
- 선물한 열람권이 ‘미등록’ 상태일 경우에만 ‘열람권 선물내역’화면에서 선물취소 가능합니다.
- 선물한 열람권의 등록유효기간은 14일 입니다.
(상대방이 기한내에 등록하지 않을 경우 소멸됩니다.) - 무제한 이용권일 경우 열람권 선물이 불가합니다.
첫 구매 시 교보e캐시 지급해 드립니다.

- 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
- 한 ID당 최초 1회 지급 / sam 이용권 제외
- 구글바이액션을 통해 교보eBook 구매 이력이 없는 회원 대상
- 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)