C++ 함수형 프로그래밍
로즈
2023-12-05 00:46
187
0
본문
C++ 함수형 프로그래밍
도서명 : C++ 함수형 프로그래밍
저자/출판사 : 알렉산드루,볼보아카, 에이콘출판
쪽수 : 424쪽
출판일 : 2022-09-30
ISBN : 9791161756684
정가 : 30000
1부. C++의 함수형 빌딩 블록
1장. 함수형 프로그래밍 소개
__기술적 요구사항
__함수형 프로그래밍 소개
__도처에 존재하는 함수형 프로그래밍의 구조
__구조화된 루프와 함수형 루프 비교
__불변성
__OOP와 함수형 디자인 스타일 비교
__모듈 확장성과 중복 제거
__요약
__질문
2장. 순수 함수 이해하기
__기술적 요구사항
__순수 함수란?
__C++에서의 순수 함수
____인자가 없는 순수 함수
____하나 이상의 인자를 지닌 순수 함수
__순수 함수와 불변성
____불변성과 참조에 의한 전달
____불변성과 포인터
____불변성과 비클래스 함수
____불변성과 출력 파라미터
____정적 함수가 과연 정답일까?
____정적 함수의 대안
__순수 함수와 I/O
__요약
__질문
3장. 람다 파헤치기
__기술적 요구사항
__람다란 무엇인가?
__C++에서의 람다
____변수 캡처
____값에 의한 변수 캡처와 참조에 의한 변수 캡처
____다수 값 캡처
____포인터 값 캡처
__어떠한 캡처를 사용해야 할까?
____람다와 순수 함수
____람다 불변성과 값에 의한 인자 전달
____람다 불변성과 참조에 의한 인자 전달
____람다 불변성과 포인터 인자
____람다와 I/O
____람다 불변성과 값 캡처
______참조에 의해 캡처한 값의 불변성
______값에 의해 캡처한 포인터의 불변성
______참조에 의해 캡처한 포인터의 불변성
__람다와 클래스
____데이터 멤버를 람다로 활용하기
____정적 변수를 람다로 활용하기
____정적 함수를 람다로 변환하기
____람다와 커플링
__요약
__질문
4장. 함수형 합성 아이디어
__기술적 요구사항
__함수형 합성이란?
____함수형 합성
____C++에서의 함수형 합성 구현
____교환법칙이 성립하지 않는 함수형 합성
__복합적 함수 합성
____합성 함수 심층 구현
____다수의 인자를 가진 함수 분해
______곱의 결과 값 증가시키기
______증가시킨 후 곱하기
______함수의 합성과 분해에 대한 회고
__함수형 합성을 활용한 중복 제거
____incrementResultOfMultiplication 일반화
____multiplyIncrementedValues 일반화
__요약
__질문
5장. 파셜 애플리케이션과 커링
__기술적 요구사항
__파셜 애플리케이션과 커링
____파셜 애플리케이션
____C++에서의 파셜 애플리케이션
____클래스 메서드에서의 파셜 애플리케이션
____커링
______커링이란?
______커링과 파셜 애플리케이션
______다수의 인자를 가진 함수의 커링
__파셜 애플리케이션과 커링을 활용한 중복 제거
__요약
__질문
2부. 함수로 설계하기
6장. 함수형으로 사고하기 - 데이터 입력부터 데이터 출력까지
__기술적 요구사항
__입력 데이터가 함수에 들어와 출력 데이터로 나가기까지
____명령형 스타일 vs 함수형 스타일 동작 예제
____틱택토 결과
____입력과 출력
____출력 데이터
____입력 데이터
____데이터 변환
____filledWithX를 위한 all_of 활용
____map/transform 사용하기
____transform 단순화하기
____좌표
____보드에서 줄 구하기 및 좌표 구하기
____보드에서 줄 구하기
____범위
____열 구하기
____대각선 구하기
____모든 줄, 열, 대각선 구하기
____any_of를 활용한 X 승리 확인하기
____reduce/accumulate를 활용한 보드 표시하기
____find_if를 활용한 승리 상세 내역 표시하기
____솔루션 완성하기
____○ 승리 확인하기
____none_of를 활용한 무승부 확인하기
____게임 진행 중 확인하기
____옵셔널 타입을 활용한 에러 관리
__요약
7장. 함수형 연산자를 활용한 중복 제거
__기술적 요구사항
__함수형 연산자를 활용한 중복 제거
____DRY 원칙
____중복과 유사성
____파셜 애플리케이션을 활용한 파라미터 유사성 정리하기
____다른 함수의 출력으로 함수를 호출하는 유사성을 함수형 합성으로 대체하기
____고차원 함수를 활용한 구조적 유사성 제거하기
____고차원 함수를 활용해 숨은 루프 제거하기
__요약
8장. 클래스를 활용해 응집도 향상시키기
__기술적 요구사항
__클래스를 활용해 응집도 향상시키기
____함수형 관점에서의 클래스
__OOP와 함수형 동치
____고응집성 원칙
____응집 함수를 클래스로 묶기
____클래스를 순수 함수로 쪼개기
__요약
9장. 함수형 프로그래밍의 테스트 주도 개발
__기술적 요구사항
__함수형 프로그래밍에서의 TDD
____순수 함수를 위한 유닛 테스트
____TDD 주기
__예시 - TDD를 활용해 순수 함수 설계하기
____포커 패 문제
______요구사항
______1단계 - 생각하기
______예제
______첫 번째 테스트
______첫 번째 테스트 통과하기
______리팩터링
______다시 한 번 생각하기
______더 많은 테스트
______두 번째 테스트
______테스트 통과하기
______리팩터링
______생각하기
______다음 테스트 - 단순 스트레이트 플러시
______테스트 통과하기
______더 진행하기
______isStraightFlush 구현하기
______스트레이트 플러시 확인을 comparePokerHands와 연결하기
______두 스트레이트 플러시 비교하기
______생각하기
______두 스트레이트 플러시 비교하기(계속)
__요약
3부. 함수형 프로그래밍의 장점 활용하기
10장. 퍼포먼스 최적화
__기술적 요구사항
__퍼포먼스 최적화
____퍼포먼스 전달 과정
______측정치와 측정법을 포함한 퍼포먼스의 명확한 목표 정의하기
______퍼포먼스용 몇 가지 코딩 가이드라인 정의하기와 코드의 특정 부분에
______가이드라인을 명확히 유지하고 재단하기
______코드가 동작하도록 만들기
______필요한 곳을 측정해 퍼포먼스 향상시키기
______모니터링 및 개선
__병렬론 - 불변성의 장점 활용하기
__메모이제이션
____메모이제이션 구현하기
____메모이제이션 활용하기
__꼬리 재귀 최적화
____완전 최적화한 호출
____If와 삼항 연산자 비교
____이중 재귀
__비동기 코드를 통한 실행 시간 최적화하기
____퓨처
____함수형 비동기 코드
____리액티브 프로그래밍 맛보기
__메모리 사용 최적화하기
____단순 루프 메모리 측정하기
____인플레이스 transform의 메모리 측정하기
____무브 반복자를 활용한 transform
____솔루션 비교하기
____불변형 데이터 구조
__요약
11장. 특성 기반 테스트
__기술적 요구사항
__특성 기반 테스트
____예제 기반 테스트와 특성 기반 테스트 비교
__생성기
__테스트에 특성 넣기
____00이 정의되지 않음이 되는 특성
____0[1 . maxInt]이 0이 되는 특성
____[1.maxInt]0이 1이 되는 특성
____[0 . maxInt]의 어떤 값에 1제곱을 하면 그 값이 나오는 특성
____특성: xy = xy-1 * x
____결론
__예제로부터 데이터 주도 테스트와 특성까지
__좋은 특성, 나쁜 특성
____구현에 관한 몇 가지 조언
__요약
12장. 순수 함수로 리팩터링하기와 순수 함수를 통한 리팩터링하
__기술적 요구사항
__순수 함수로 리팩터링하기와 순수 함수를 통한
__리팩터링하기
____리팩터링이란?
____레거시 코드의 딜레마
____종속성과 변경
____순수 함수와 프로그램의 구조
____컴파일러와 순수 함수를 활용한 종속성 식별
____레거시 코드를 람다로 변환하기
____람다 리팩터링하기
____람다에서 클래스로 변환하기
____리팩터링 메서드 요점
__디자인 패턴
____함수형 스타일 전략 패턴
____함수형 스타일 명령 패턴
____함수로 의존성 주입
__순수 함수형 디자인 패턴
____상태 유지하기
____밝혀지는 진실
____Maybe
____그렇다면 모나드는 무엇인가?
__요약
13장. 불변성과 아키텍처 - 이벤트 소싱
__기술적 요구사항
__불변성과 아키텍처 - 이벤트 소싱
__아키텍처에 불변성 적용하기
____이벤트 소싱의 장점
____이벤트 소싱의 단점과 함정
______이벤트 스키마 변경
______과거 데이터 삭제
__구현 예제
____데이터를 어떻게 가져올 것인가?
____참조 무결성은 어떻게 해결하는가?
__요약
4부. C++의 함수형 프로그래밍의 현재와 미래
14장. 범위 라이브러리를 활용한 게으른 평가
__기술적 요구사항
__범위 라이브러리 개괄
__게으른 평가
__범위 라이브러리를 활용한 게으른 평가
__액션으로 변형 가능한 변경
__무한 수열과 데이터 생성
____문자열 생성하기
__요약
15장. STL의 현재와 미래
__기술적 요구사항
__functional 헤더
__algorithm 헤더
____컬렉션의 각 객체에서 특성 하나 꺼내오기
____조건 계산하기
____표시나 연속이 가능한 포맷으로 변환하기
__numeric 헤더 - accumulate
____쇼핑 카트에 세금이 포함된 총가격 계산하기
____리스트를 JSON으로 변환하기
__algorithm으로 돌아가기 - find_if와 copy_if
__optional과 variant
__C++ 20과 범위 라이브러리
__요약
16장. 표준 언어의 현재와 미래
__기술적 요구사항
__표준 언어의 현재와 미래
____순수 함수
____람다
____파셜 애플리케이션과 커링
____함수형 합성
도서명 : C++ 함수형 프로그래밍
저자/출판사 : 알렉산드루,볼보아카, 에이콘출판
쪽수 : 424쪽
출판일 : 2022-09-30
ISBN : 9791161756684
정가 : 30000
1부. C++의 함수형 빌딩 블록
1장. 함수형 프로그래밍 소개
__기술적 요구사항
__함수형 프로그래밍 소개
__도처에 존재하는 함수형 프로그래밍의 구조
__구조화된 루프와 함수형 루프 비교
__불변성
__OOP와 함수형 디자인 스타일 비교
__모듈 확장성과 중복 제거
__요약
__질문
2장. 순수 함수 이해하기
__기술적 요구사항
__순수 함수란?
__C++에서의 순수 함수
____인자가 없는 순수 함수
____하나 이상의 인자를 지닌 순수 함수
__순수 함수와 불변성
____불변성과 참조에 의한 전달
____불변성과 포인터
____불변성과 비클래스 함수
____불변성과 출력 파라미터
____정적 함수가 과연 정답일까?
____정적 함수의 대안
__순수 함수와 I/O
__요약
__질문
3장. 람다 파헤치기
__기술적 요구사항
__람다란 무엇인가?
__C++에서의 람다
____변수 캡처
____값에 의한 변수 캡처와 참조에 의한 변수 캡처
____다수 값 캡처
____포인터 값 캡처
__어떠한 캡처를 사용해야 할까?
____람다와 순수 함수
____람다 불변성과 값에 의한 인자 전달
____람다 불변성과 참조에 의한 인자 전달
____람다 불변성과 포인터 인자
____람다와 I/O
____람다 불변성과 값 캡처
______참조에 의해 캡처한 값의 불변성
______값에 의해 캡처한 포인터의 불변성
______참조에 의해 캡처한 포인터의 불변성
__람다와 클래스
____데이터 멤버를 람다로 활용하기
____정적 변수를 람다로 활용하기
____정적 함수를 람다로 변환하기
____람다와 커플링
__요약
__질문
4장. 함수형 합성 아이디어
__기술적 요구사항
__함수형 합성이란?
____함수형 합성
____C++에서의 함수형 합성 구현
____교환법칙이 성립하지 않는 함수형 합성
__복합적 함수 합성
____합성 함수 심층 구현
____다수의 인자를 가진 함수 분해
______곱의 결과 값 증가시키기
______증가시킨 후 곱하기
______함수의 합성과 분해에 대한 회고
__함수형 합성을 활용한 중복 제거
____incrementResultOfMultiplication 일반화
____multiplyIncrementedValues 일반화
__요약
__질문
5장. 파셜 애플리케이션과 커링
__기술적 요구사항
__파셜 애플리케이션과 커링
____파셜 애플리케이션
____C++에서의 파셜 애플리케이션
____클래스 메서드에서의 파셜 애플리케이션
____커링
______커링이란?
______커링과 파셜 애플리케이션
______다수의 인자를 가진 함수의 커링
__파셜 애플리케이션과 커링을 활용한 중복 제거
__요약
__질문
2부. 함수로 설계하기
6장. 함수형으로 사고하기 - 데이터 입력부터 데이터 출력까지
__기술적 요구사항
__입력 데이터가 함수에 들어와 출력 데이터로 나가기까지
____명령형 스타일 vs 함수형 스타일 동작 예제
____틱택토 결과
____입력과 출력
____출력 데이터
____입력 데이터
____데이터 변환
____filledWithX를 위한 all_of 활용
____map/transform 사용하기
____transform 단순화하기
____좌표
____보드에서 줄 구하기 및 좌표 구하기
____보드에서 줄 구하기
____범위
____열 구하기
____대각선 구하기
____모든 줄, 열, 대각선 구하기
____any_of를 활용한 X 승리 확인하기
____reduce/accumulate를 활용한 보드 표시하기
____find_if를 활용한 승리 상세 내역 표시하기
____솔루션 완성하기
____○ 승리 확인하기
____none_of를 활용한 무승부 확인하기
____게임 진행 중 확인하기
____옵셔널 타입을 활용한 에러 관리
__요약
7장. 함수형 연산자를 활용한 중복 제거
__기술적 요구사항
__함수형 연산자를 활용한 중복 제거
____DRY 원칙
____중복과 유사성
____파셜 애플리케이션을 활용한 파라미터 유사성 정리하기
____다른 함수의 출력으로 함수를 호출하는 유사성을 함수형 합성으로 대체하기
____고차원 함수를 활용한 구조적 유사성 제거하기
____고차원 함수를 활용해 숨은 루프 제거하기
__요약
8장. 클래스를 활용해 응집도 향상시키기
__기술적 요구사항
__클래스를 활용해 응집도 향상시키기
____함수형 관점에서의 클래스
__OOP와 함수형 동치
____고응집성 원칙
____응집 함수를 클래스로 묶기
____클래스를 순수 함수로 쪼개기
__요약
9장. 함수형 프로그래밍의 테스트 주도 개발
__기술적 요구사항
__함수형 프로그래밍에서의 TDD
____순수 함수를 위한 유닛 테스트
____TDD 주기
__예시 - TDD를 활용해 순수 함수 설계하기
____포커 패 문제
______요구사항
______1단계 - 생각하기
______예제
______첫 번째 테스트
______첫 번째 테스트 통과하기
______리팩터링
______다시 한 번 생각하기
______더 많은 테스트
______두 번째 테스트
______테스트 통과하기
______리팩터링
______생각하기
______다음 테스트 - 단순 스트레이트 플러시
______테스트 통과하기
______더 진행하기
______isStraightFlush 구현하기
______스트레이트 플러시 확인을 comparePokerHands와 연결하기
______두 스트레이트 플러시 비교하기
______생각하기
______두 스트레이트 플러시 비교하기(계속)
__요약
3부. 함수형 프로그래밍의 장점 활용하기
10장. 퍼포먼스 최적화
__기술적 요구사항
__퍼포먼스 최적화
____퍼포먼스 전달 과정
______측정치와 측정법을 포함한 퍼포먼스의 명확한 목표 정의하기
______퍼포먼스용 몇 가지 코딩 가이드라인 정의하기와 코드의 특정 부분에
______가이드라인을 명확히 유지하고 재단하기
______코드가 동작하도록 만들기
______필요한 곳을 측정해 퍼포먼스 향상시키기
______모니터링 및 개선
__병렬론 - 불변성의 장점 활용하기
__메모이제이션
____메모이제이션 구현하기
____메모이제이션 활용하기
__꼬리 재귀 최적화
____완전 최적화한 호출
____If와 삼항 연산자 비교
____이중 재귀
__비동기 코드를 통한 실행 시간 최적화하기
____퓨처
____함수형 비동기 코드
____리액티브 프로그래밍 맛보기
__메모리 사용 최적화하기
____단순 루프 메모리 측정하기
____인플레이스 transform의 메모리 측정하기
____무브 반복자를 활용한 transform
____솔루션 비교하기
____불변형 데이터 구조
__요약
11장. 특성 기반 테스트
__기술적 요구사항
__특성 기반 테스트
____예제 기반 테스트와 특성 기반 테스트 비교
__생성기
__테스트에 특성 넣기
____00이 정의되지 않음이 되는 특성
____0[1 . maxInt]이 0이 되는 특성
____[1.maxInt]0이 1이 되는 특성
____[0 . maxInt]의 어떤 값에 1제곱을 하면 그 값이 나오는 특성
____특성: xy = xy-1 * x
____결론
__예제로부터 데이터 주도 테스트와 특성까지
__좋은 특성, 나쁜 특성
____구현에 관한 몇 가지 조언
__요약
12장. 순수 함수로 리팩터링하기와 순수 함수를 통한 리팩터링하
__기술적 요구사항
__순수 함수로 리팩터링하기와 순수 함수를 통한
__리팩터링하기
____리팩터링이란?
____레거시 코드의 딜레마
____종속성과 변경
____순수 함수와 프로그램의 구조
____컴파일러와 순수 함수를 활용한 종속성 식별
____레거시 코드를 람다로 변환하기
____람다 리팩터링하기
____람다에서 클래스로 변환하기
____리팩터링 메서드 요점
__디자인 패턴
____함수형 스타일 전략 패턴
____함수형 스타일 명령 패턴
____함수로 의존성 주입
__순수 함수형 디자인 패턴
____상태 유지하기
____밝혀지는 진실
____Maybe
____그렇다면 모나드는 무엇인가?
__요약
13장. 불변성과 아키텍처 - 이벤트 소싱
__기술적 요구사항
__불변성과 아키텍처 - 이벤트 소싱
__아키텍처에 불변성 적용하기
____이벤트 소싱의 장점
____이벤트 소싱의 단점과 함정
______이벤트 스키마 변경
______과거 데이터 삭제
__구현 예제
____데이터를 어떻게 가져올 것인가?
____참조 무결성은 어떻게 해결하는가?
__요약
4부. C++의 함수형 프로그래밍의 현재와 미래
14장. 범위 라이브러리를 활용한 게으른 평가
__기술적 요구사항
__범위 라이브러리 개괄
__게으른 평가
__범위 라이브러리를 활용한 게으른 평가
__액션으로 변형 가능한 변경
__무한 수열과 데이터 생성
____문자열 생성하기
__요약
15장. STL의 현재와 미래
__기술적 요구사항
__functional 헤더
__algorithm 헤더
____컬렉션의 각 객체에서 특성 하나 꺼내오기
____조건 계산하기
____표시나 연속이 가능한 포맷으로 변환하기
__numeric 헤더 - accumulate
____쇼핑 카트에 세금이 포함된 총가격 계산하기
____리스트를 JSON으로 변환하기
__algorithm으로 돌아가기 - find_if와 copy_if
__optional과 variant
__C++ 20과 범위 라이브러리
__요약
16장. 표준 언어의 현재와 미래
__기술적 요구사항
__표준 언어의 현재와 미래
____순수 함수
____람다
____파셜 애플리케이션과 커링
____함수형 합성
댓글목록0