2020년 9월 10일 목요일

경제의 속살 4 - 정치편, 이완배 지음, 민중의소리 펴냄

 

시리즈 마직막 권이다.

정치편.

민주주의와 자유시장경제가 같이 살기 힘들 것 같다는 얘기를 오래 했다.

그놈의 자유시장경제.

자유 같은 소리 하고 있지... 흥...

자본주의... 돈이 근본이라니, 개소리도 하루이틀이지...



2020년 9월 8일 화요일

Writing Effective Use Cases, Alistair Cockburn 지음, 임병인 옮김, 인사이트 펴냄

 

오래된 책이다. 번역본 초판을 2011년에 찍었다. 

Usecase 정리할 것이 있어서 샀는데, 사면서 내심 눈에 익숙했다.

책이 와서 읽어보니... 음... 전에 읽었던 책이다. 물론 내용은 기억 안나고, 몇몇 아이콘들만 기억난다. 

아마 집구석 어딘가에 똑같은 놈이 굴러다니고 있을걸.


말로, 말 만으로 뭔가를 설명한다는 것이 점점 어려워지는 중이다. ㅡ,.ㅡ; 

Usecase로 남들에게 뭔가를 설명하는 것은 여전히 실패했고, 당분간은 썩 좋아지지 않을 전망이다. Usecase는 여전히 뭔가 장황하고, 별다를 포맷이 없음에도 포맷에 맞추어 작성해야 할 듯한 압박감이 든다. 또 한 편으로는 그래도 영업적인 측면의 내용을 텍스트로 기록하지 않으면 어떻게 기록해둘 것인가? (그 잘난 기억력으로?) 하는 생각도 들어서 프로젝트 개발 초기에는 영 불편하다. 뭔가 적고 싶은데, 적당히 적을만한 방법이 없다.

Usecase가 어느 정도 방법을 제시해줄 수 있을지 모르겠는데, 지금까지는 '대체로 실패' 학점을 받았다. 

Usecase에 익숙해지느냐 다른 방법을 찾아볼 것이냐 고민하는 중.


Functional C#, Wisnu Anggaro 지음, 안철진 옮김, 에이콘 펴냄


 

 c#을 functional 처럼 쓰겠다는 것인지, c#의 functional한 측면을 살펴보겠다는 책인지 좀 애매하지만, functional이 유행(? 나한테만?)이니까 한 권 사 봤다.

회사에서 주는 자기 계발 비용으로 산 책. (인거 같은데, 잘 기억은 안나네... 그 무렵에 같이 산 책일지도...)

번역은 무난하고, 편집도 읽는데 불편하지 않다. (이정도면 극찬 아닌가? 프로그래밍 책에서...?)

다만, 내용은 조금 아쉬운데, 사실 그건 c#이 functional language가 아니기 때문일 것이다. 

책 표지에 "Uncover the secrets of functional programming using c# and change the way you approach your application forever"라고 적혀있는데, 'forever'까지는 잘 모르겠지만, 그 외에 다른 목적은 적절히 이뤄낼만하다.

문법은 몇 년 정도 경력이 있는 c# 엔지니어라면 다 알 수 있는 구문들이다. 다만 generic이나 LINQ를 모른다면 쉽지 않을 수도 있겠다. 도입 부분에 설명도 있으니 이참에 배워보시는 것도 좋겠다.

후반부의 예제는 다소 밋밋하거나 좀 억지스러운 면이 있는데, 이 정도 책에 실을 수 있는 짧은 예제를 만들다보니 어쩔 수 없지 않은가 싶긴 하다. 

전체적으로 보자면, c#의 generic과 LINQ를 (약간)functional하게 사용하는데 도움이 될만한 책이며, 난이도는 (generic과 LINQ를 알고 있다면) 평이한 편이며 그만큼 대단히 새로운 능력을 얻을 수 있는 것은 아니지만 코딩 방법에 이런 길도 있구나 하는 걸 볼 수는 있는 정도의 책이다.

----

다음은 이 책을 읽으면서 보았지만 좀 더 찾아봐야 할 듯한 내용들:

* 커링: 여러 개의 인수를 가지는 함수를 인수의 일부를 담당하는 일련의 함수들로 나누는 작업(?)

public static int MonCurriedAdd( int a, int b ) => a + b;

int add = NonCurriedAdd( 2, 3 ) ;

----

public static int Func<int, int> CurriedAdd( int a ) => b => a + b ;

int add = CurriedAdd( 2 )( 3 ) ;

* 공변성/covariance과 반공변성/contravariance: 종종 나오는 말인데, (난 이런 단어에 무척 약하다. ㅡ,.ㅡ;) 서로 다른/variant 타입이 호환이 된다는 뜻인데, 프로그래밍에서라면 대체로 (다른 경우가 더 있는지는 잘 모르겠지만) 상속 관계에 있을 때 이런 공변성을 가진다. 상속관계를 거슬러 올라가느냐 내려가느냐에 따라 공변성과 반공변성이 구분된다. (라는 것 같다)

*MONAD 패턴: 별건 아니지만... 이름은 알아두는 것이 좋겠다.