Functional C# (C#으로 배우는 함수형 프로그래밍)

Functional C# (C#으로 배우는 함수형 프로그래밍)

$32.58
Description
C# 개발자를 위한 함수형 프로그래밍 학습서다. 명령형 프로그래밍 방식과 함수형 프로그래밍을 비교하고, 함수형 프로그래밍을 위한 C#의 언어적 지원과 이를 이용한 실제 구현 예를 살펴보면서 함수형 프로그래밍을 배운다.
저자

위스누앤거로

C#MCP이자뛰어난C/C++개발자며,『Boost.AsioC++NetworkProgramming-SecondEdition』(Packt,2015)의저자다.20여년전,중학생이었을때MS-DOS환경에서BASIC언어를이용한프로그래밍을시작했다.이후데스크톱이나웹응용프로그램뿐만아니라C#과C/C++를이용한SIM카드운영체제포팅,개인화,PC/SC통신등과관련한스마트카드프로그래밍분야에서남다른경력을쌓아왔다.현재는인도네시아의스마트카드관련기술과혁신을주도하는회사인CIPTA에서수석스마트카드소프트웨어엔지니어로일하고있다.

목차

1장.C#으로함수형스타일맛보기
__함수형프로그래밍소개
____정의,스크립트,세션이해하기
____대체와단순화를이용한해석
____함수형프로그래밍의함수이해하기
__함수형vs명령형접근방식
__C#컴파일러준비
__함수형프로그래밍의개념
____퍼스트클래스함수와고차함수
____순수함수
____재귀함수
__C#과함수형프로그래밍
____수학적개념을이용한함수형프로그래밍이해
____함수형C#에튜플적용하기
____C#의커링
____파이프라인
____메서드체인
__명령형코드를함수형코드로바꾸기
____명령형코드접근방식
____함수형코드접근방식
____함수형프로그래밍의장점과단점
__요약

2장.대리자살펴보기
__대리자소개
____간단한대리자
____멀티캐스트대리자
__내장대리자
____제네릭대리자
____Action과Func
__대리자의가변성구별
____공변성
____반공변성
__요약

3장.람다식을이용한무명메서드표현
__무명메서드란
____무명메서드만들기
____무명메서드를인수로사용하기
____무명메서드작성가이드
____무명메서드의장점
__람다식
____무명메서드를람다식으로변환하기
____람다식으로대리자형식만들기
____식트리와람다식
__람다식을이용한이벤트구독
____event키워드
____EventHandler와EventHandler
__함수형프로그래밍에서람다식의강점
____퍼스트클래스함수
____클로저
__요약

4장.확장메서드로객체기능확장하기
__확장메서드와친해지기
____확장메서드만들기
____인텔리센스연계
__다른어셈블리의확장메서드호출
____네임스페이스참조
____기존네임스페이스이용
____인터페이스,컬렉션,object활용하기
____인터페이스확장
____컬렉션확장
____object확장
__함수형프로그래밍에서확장메서드가가지는장점
__확장메서드의한계
____정적클래스확장
____기존클래스나형식의메서드구현수정하기
__요약

5장.LINQ를이용해컬렉션조회하기
__LINQ란무엇인가
__LINQ의실행지연
__플루언트구문과질의식비교
____LINQ플루언트구문
____LINQ질의식
__표준질의연산자
____필터링
____투영
____조인
____정렬
____그룹화
____집합연산
____변환메서드
____요소연산
__요약

6장.비동기프로그래밍으로함수형프로그래밍의반응성개선하기
__반응형응용프로그램개발
____동기식프로그램실행
____스레드사용하기
____스레드풀을이용한스레드생성
__비동기프로그래밍모델패턴
____동기식Read()메서드
____BeginRead()와EndRead()
____LINQ를이용한BeginRead()메서드호출
__태스크기반비동기패턴
____Task와Task클래스
____간단한TAP모델적용하기
____WhenAll()확장메서드
____TAP모델로APM감싸기
__async,await키워드를이용한비동기프로그래밍
__함수형프로그래밍의비동기함수
__요약

7장.재귀호출
__재귀호출에대해
____재귀호출의동작방식
____반복을재귀호출로리팩토링하기
__꼬리재귀
____누적기전달형
____연속전달형
____직접재귀와간접재귀
__LINQAggregate를이용한함수형재귀호출
____Aggregate메서드
__요약

8장.지연과캐시기법을이용한코드최적화
__지연이란
____지연열거
____지연평가
____엄격하지않은평가
____지연초기화
____지연의장단점
__값비싼자원캐시하기
____사전연산
____메모화
__요약

9장.패턴이용하기
__함수형프로그래밍의패턴매칭
____패턴매칭을이용한데이터변환
____패턴매칭을위한분기
____패턴매칭간소화
____C#7의패턴매칭
__모나드설계패턴소개
____모나드M형식만들기
____모나드에제네릭데이터형식구현하기
____Lazy와Task로모나드구현하기
____모나드패턴규칙
__요약

10장.C#으로함수형프로그래밍하기
__함수형윈도우폼개발
____폼이면의코드작성
____명령형접근방식의계산엔진구현
__요약

11장.코딩모범사례와함수형코드테스팅
__함수형C#으로살펴보는코딩모범사례
____모호한시그니처방지
____변경가능한클래스를변경불가능하게리팩토링하기
____변경가능성및일시적인결합의방지
____부작용에대한대응책
__도메인논리와가변셸로코드분리하기
____부작용이있는코드확인
____AddRecord()메서드리팩토링
____RemoveRecord()메서드리팩토링
____단위테스트에서도메인논리실행하기
____코드에가변셸추가하기
__요약

찾아보기

출판사 서평

★이책에서다루는내용★

■함수형접근방식에따른응용프로그램개발
■함수형으로작성한코드의단위테스팅
■함수형프로그래밍기반의효율적인코드생성
■LINQ질의를이용한데이터처리
■응용프로그램응답성개선을위한비동기프로그래밍활용
■함수형코드에서재귀를이용한코드단순화
■프로그램코드최적화를위한지연과캐시기법

★이책의대상독자★

이책은C#의기본적인사항들에대해어느정도이해하고있는개발자들에게적합하며,함수형프로그래밍에대한사전지식은필요하지않다.

★이책의구성★

1장,‘C#으로함수형스타일맛보기’에서는함수형프로그래밍의개념,명령형프로그래밍과비교를통해함수형프로그래밍접근법을소개한다.간단한명령형코드를함수형으로리팩토링해본다.
2장,‘대리자살펴보기’에서는대리자정의,문법,사용법을알아본다.다양한대리자변형과내장대리자에대해서도살펴본다.
3장,‘람다식을이용한무명메서드표현’에서는대리자개념과대리자를이용해서무명메서드를만들고사용하는방법을알아본다.무명메서드에대해충분히이해한다음에는이를람다식으로변환하고함수형프로그래밍에적용해본다.
4장,‘확장메서드로객체기능확장하기’에서는함수형프로그래밍에서확장메서드가갖는장점을자세하게살펴본다.확장메서드의사용방법,인텔리센스에서새로운메서드를가져오는방법,다른어셈블리에서확장메서드를호출하는방법등도알아본다.
5장,‘LINQ를이용해컬렉션조회하기’에서는C#의LINQ연산자를소개하고LINQ문법의두가지,일반프로그래밍방식과쿼리식문법을비교한다.덧붙여LINQ프로세스에서지연실행이무엇인지살펴본다.
6장,‘비동기프로그래밍으로함수형프로그래밍의반응성개선하기’에서는함수형접근방식에서비동기프로그래밍을설명한다.비동기프로그래밍모델(APM)과태스크기반비동기패턴(TAP)에대해알아본다.
7장,‘재귀호출’에서는순환문과비교해재귀호출이갖는장점을기술하고,직접및간접재귀호출에대해설명한다.
8장,‘지연과캐시기법을이용한코드최적화’에서는함수형프로그래밍관점의최적화라는관점으로지연과캐시기법에대해이야기한다.
9장,‘패턴이용하기’에서는전통적인스위치케이스(switch-case)작업에비해패턴을이용할때얻을수있는장점에대해살펴본다.패턴매칭과모나드에대해논하면서C#7에서새로도입한패턴매칭기능을사용한다.
10장,‘C#으로함수형프로그래밍하기’에서는주어진명령형코드를기반으로함수형코드를개발하는방법을보여준다.이전장에서배운지식을근간으로함수형접근법에따라애플리케이션을만들어본다.
11장,‘코딩모범사례와함수형코드테스팅’에서는함수형접근방법의우수사례를설명하면서숨김없는시그니처를만들고부작용에대응하는방법을알아본다.또한코드를도메인논리와변경가능한셸내로격리하고단위테스트를수행한다.