처음에는 번역서인줄 알았는데, 국내 저자분의 책입니다.
유인동 저자분은 다양한 경험을 하신 22년차 개발자 이십니다.
https://ciety.xyz/@mduniv/explore
MDU
Mold the Future, Master the Craft
ciety.xyz
마플개발대학이라는 곳에서도 활동하신다고 합니다.
주변의 책에 대한 평이 매우 좋아서 출간이 되고 평소에 관심이 있던 책이였습니다.
■ OO
· 다양한 언어의 특징중에 함수형, 객체지향, 절자척 언어의 구성으로 나누었지만, 현재는 다양한 언어에서 이러한 구분이 크게 의미가 없는 방향으로 진행이 되고 있습니다.
· 대상 독자
중급 이상 개발자로 성장하고 싶은 개발자 분들에게 적합하다고 합니다. 언어는 타입스크립트를 주로 사용하는데, 세부 사항은 아래와 같습니다.
소스코드는 아래와 같고, 인프런에서도 저자분의 동영상 강의가 함께 지속적으로 업데이트 되고 있습니다. (유료)
https://github.com/marpple/multi-paradigm-programming?tab=readme-ov-file
GitHub - marpple/multi-paradigm-programming: Multi-Paradigm Programming: Combining Object-Oriented, Functional, and Imperative A
Multi-Paradigm Programming: Combining Object-Oriented, Functional, and Imperative Approaches for Software Development and Design - marpple/multi-paradigm-programming
github.com
■ OO
· 언어의 구문 차이만 있지 이제는 언어의 특성이 점차 사라지고, 각각의 장점이 반영되고 있어서 이 시점에 그러한 경계선에서 어떠한 부분을 주의하고 신경써야 하는지 알려주는 책이 나온것 같습니다.
우리가 일반적으로 알고 있는 GoF의 디자인 패턴중에 "반복자 패턴"이 함수평 패러타임의 일급함수가 만나서 함수형 패러다임의 지연평가와 리스트프로세싱을 구현해나가는 것, 반복자 패턴을 시작으로 여러 객체지향 언어들이 함수형 패러다임을 스스로 구현하는 것
· forEach, map, filter 함수에 대해서 반복자 패턴을 활용하고 이터레이션 프로토콜을 준수하는 함수형 구현을 코드적으로 다룹니다.
객체지향에서 상속과 인터페이스를 많이 사용하는데, 반복자 패턴과 이터레이터를 지원하는 헬퍼 함수들은 상속이 아닌 인터페이스를 사용합니다. 그러한 부분에 대해서 왜 그렇게 선택해서 사용하는지 이책에서는 그러한 부분에 대해서 고민하는 내용이 다른 책과 참 많이 다른 부분입니다.
■ 함수형 프로그래밍과 LISP (List Processing)
· LIST 함수형 프로그래밍 언어의 한 종류로, 괄호 문법을 사용하여 모든 데이터를 리스트로 처리하는 특징을 가지고 있습니다. 이런 LIST의 사상이 책의 주제인 멀티패러다임 언어에도 많은 영향을 미치고 있습니다. 이러한 관점과 의견은 여러가지 언급되는 함수형/객체지향/절차향 등의 다양한 개념을 정확히 알고 파악하고 있어야 그 영향도를 파악할수 있다고 생각하는데 그런 점에서 이 책의 깊이를 알수 있습니다.
타입 추론을 통해서 명시적인 타입 선언 없이도안전한 코드를 작성 할수 있고, 고차원 함수와 재네릭을 활용하면 복잡한 함수형 프로그래밍 패턴을 구현하기 용이합니다. 제네릭 함수는 인자의 타입에 따라 반환 타입을 유연하게 정할수 있고
일급함수의 도입과 이터레이션 프로토콜의 확산은 자바8(2014), 스위프트(2014), 자바스크립트,타입스크립트 (2015), 코틀린(2016)등 주요 언어에서 다채로운 기능을 제공합니다.
· 이터레이터 생성 방식의 다양화
- IP(명령형 방식) : 제네레이터를 통한 이터레이터 생성
- OOP(객체지향적 방식) : 이터레이터 객체 직접 구현
- FP(함수형 방식) : 리스트 프로세싱 함수 조합으로 이터레이터 생성
코드, 객체, 함수는 각각 제너레이터, 이터레이터, LIST와 유사한 관계를 가집니다. 이터레이터는 반복자 패턴의 구현체로 컬렉션의 값을 일반화된 패턴으로 순회하는 객체입니다. 이를 통해 명령혀아 객체지향적, 함수형 접근 방식 모두를 통합하는 강력한 프로그래밍 모델을 만들수 있습니다.
· 비동기 프로그래밍 방식은 특정 작업이 완료되기 전에 다른 작업을 수행하는 프로그래밍 방식입니다.
요즘은 모바일로 많은 작업 수행이 있고, 사용자 화면의 편의성 측면에서도 이러한 방식이 많이 사용되어 집니다.
- 값으로 다르는 비동기 : Promise는 비동기 작업의 결과를 값으로 다룰수 있는 객체 방식
- 타입으로 다루는 비동기 : AsyncIterator, AsyncIterable, AsynGenerator 프로토콜
■ 다양한 실습 예제를 통한 학습
· 농구팀 데이터를 이용해서, 각 팀의 30점 이상 점수를 map, 2차원 배열등을 이용해서 처리해보기
· 커머스 데이터를 filter, map, reduce를 이용한 처리
· pipe, zip, range, takeWhile등 사용해보기
· 백앤드 비동기화 프로그래밍 : 커머스 결제 내역 동기화 , 누락된 결제 취소 및 환불 처리 등
· html 템플릿 엔진 만들기 : tagged templates
· 동시성 핸들링 함수 만들기
· 모바일 Setting 화면 만들기
· TODO 앱 만들기
를 통해서 어떻게 견고하고 유연한 코드를 작성하는지 다양한 접근 방식으로 프로그램적인 장점을 활용해서 접근하는 기법은
조금 더 나은 코드 및 다양한 멀티패더라임 프로그래밍을 경험하고 싶으신 독자분들이라면 많은 도움이 되실것 같고
한단계 더 높은 관점의 뷰를 가지실 수 있다고 생각이 들었습니다.
'book' 카테고리의 다른 글
그림으로 배우는 도커 (0) | 2025.04.12 |
---|---|
일잘러의 비밀, 챗GPT와 GPTs로 나만의 AI 챗봇 만들기 (0) | 2025.03.17 |
행동의 과학, 디자인의 힘 (0) | 2025.02.23 |
테스트 너머의 QA 엔지니어링 (0) | 2025.01.29 |
무엇이 1등 팀을 만드는가? (0) | 2024.12.21 |