Tag Archives: 프로그래밍

셰이더 프로그래밍 입문

제목 그대로 셰이더 프로그래밍에 대한 기초적인 내용을 다루는 책. 오랜 실무 경험을 쌓은 저자가 학교에서 학생들을 가르치면서 쌓은 강의 경험도 함께 녹여내어 친절하면서도 실용적인 책. 비슷한 시기에 읽은 <유니티로 배우는 게임 수학> 보다 이해하는데 좀 더 좋았음. –물론 그 책은 순수 셰이더는 아니고 3D 개념이 중심이고 셰이더는 막판에 조금 다룬다.

제목에도 쓰여 있지만 '입문' 책이기 때문에 이 책 이후로도 다양한 셰이더 프로그래밍 책을 함께 봐야 좀 더 능숙한 셰이더 프로그래밍을 할 수 있겠지만, 각종 셰이더 프로그래밍에 대한 개념 설명이 무척 잘 되어 있으니 일단 이 책부터 시작하는게 좋다고 생각 됨. 개인적으로는 일단 가볍게 본 수준이라, 한 번 더 읽으면서 좀 더 깊이있게 스터디를 해볼 생각.

쉽게 배우는 알고리즘

프로그래밍을 배우면서 놀랐던 적이 2번 있는데, 한 번은 C#에서 LINQ와 Lambda 식을 섞어 사용하는 것을 봤을 때였고, 다른 한 번은 재귀 알고리즘을 봤을 때였다. 재귀 알고리즘에 대한 놀라움 덕분에 나는 프로그래머는 아니지만 –가끔 오해하는 사람들이 있는데, 나는 'Designer'다– 알고리즘을 좀 배워봐야겠다는 생각을 하게 되었고, <Introduction to Algorithms>의 번역자인 문병로 교수가 직접 쓴 책인데다 '쉽게 배우는'이라는 타이틀이 달려 있어서 다른 책 보다 먼저 읽게 되었음. 

동일 저자의 <쉽게 배우는 유전 알고리즘>이 유전 알고리즘에 대한 기반 지식이 없으면 이해하기 어려워서 읽다가 말았는데, 이 책은 그것보다는 좀 쉬운 편. 알고리즘에 대한 기본적인 개념에서부터, 검색이나 정렬 등 실재하는 여러 문제에 대한 알고리즘과 NP 문제등 알고리즘에 대한 다양한 내용을 잘 다루고 있다. 

물론 교재로 쓰여진 책이니 만큼 한 번 읽었다고 내용을 온전히 이해했다고 보기는 어렵고, 별도로 공부를 해둬야 이해가 잘 될 것 같다. 다만 알고리즘에 대한 책은 많은 관계로 다른 책들도 살펴 본 후에 괜찮은 책을 따로 정리하는게 좋을 듯.

책 내용과는 별개의 것이지만, 결국 알고리즘이라는 것도 결국 생각하는 것과 관련한 것이라 알고리즘에 대한 지식을 배운다고 알고리즘 실력이 는다기 보기는 어렵고, 다양한 문제 상황에서 직접 문제를 해결하고 그것의 더 나은 방법을 찾아보고 해야 알고리즘 실력이 오르는 것 같다. –뭐 사람 하는 일에 아닌 일이 어디있겠느냐만– 

물론 도구를 쓰는 법을 배워야 도구를 사용할 수 있듯 이런 책을 통해 기본 지식은 배워야겠으나, 실력을 높이는 것은 어디까지나 직접해봐야 한다는 것. 다이어트 지식을 아무리 많이 가져도, 다이어트를 하지 않는 이상 살은 빠지지 않는다.

자연언어처리의 응용

자연언어처리를 응용한 분야에 대한 개괄. 

제목의 '응용'이 난이도를 나타날 때 쓰이는 표현으로 생각하고 대단히 어려운 책이 아닐까 싶었는데, 내용상 자연언어처리 이용한 응용 분야의 개념에 가까워서 그렇게 어려운 책은 아니었다. –일본인 저자들의 특성대로 내용이 체계적으로 쓰여져서 그랬을 수도 있음–  책에서도 더 자세한 내용을 알고 싶으면 참고문헌에 달린 논문들 찾아보라고 나옴.

두께도 얇고 지금 내가 하려는 것과는 거리가 조금 있어서 –내가 기대한 내용은 아니었던지라– 그냥 쓱 훑으면서 넘어 갔음.
 

코드 컴플릿

뭐 딱히 설명이 필요 없는 책. 마이크로소프트 공식 지정 학습서인데 무슨 설명이 더 필요할까?

'코드는 작성하는 시간 보다 읽히는 시간이 훨씬 길다'는 대전제하에 코드를 작성하는 법에서부터 테스트, 리팩토링, 개발 관리, 협업 등 프로그래밍 영역 전반에 대해 다루고 있는데, 다루는 범위가 워낙 넓어서 초심자에서부터 고급 프로그래머에 이르기까지 모두에게 도움이 될만하다.

특히 나 같은 초심자라면 더 나은 실력을 갖춘 프로그래머가 되기까지 두고 두고 보면서 배울 수 있는 책이라 생각 됨.

실용주의 프로그래머

뭐 딱히 설명이 필요 없는 책. 프로그래밍을 논하고 있기는 하지만, 비단 프로그래밍을 넘어 어떠한 일을 하든 통용될 수 있는 자세와 방법에 대해 이야기 한다.

요즘 무엇을 하든간에 결국엔 '자기 성장'에 귀결되고, 결국 인생이랑 자기 성장의 과정이라는 생각을 하고 있는데, 이 책을 읽으며 그와 관련하여 많은 생각을 할 수 있어서 좋았다.

뇌를 자극하는 C# 4.0 프로그래밍

C#의 기초부터 시작해서 고급 기능까지를 두루 살피는 책. 단순히 언어의 문법과 사용법만이 이야기하는 것이 아니라 그 개념과 사용 이유에 대해서도 잘 설명하고 있어서 이해가 더욱 잘 된다.

개인적으로는 기초 없이 MSDN만 찾아보고 잘 이해 안 되던 개념들을 책을 통해 잘 이해할 수 있었던 점도 좋았고, 생각 없이 노가다로 구현한 것들에 대한 우아한 해법도 배울 수 있어서 좋았다. –람다 식이나 LINQ 등을 보면서 C#이 꽤나 근사한 언어라는 것을 깨닫게 됨– 부실했던 기초가 조금은 보강이 된 느낌.

후반부의 고급 기능들은 아직 경험해 본 바가 없어서 한 번에 잘 이해는 하지 못했는데, 꽤나 잘 정리된 것 같아서 앞으로 경험을 쌓으며 다시 훑으면 잘 이해할 수 있으리라 생각.

Head First Design Patterns

게임 디자이너라는 직군으로 회사 다니던 시절에 '디자인 패턴'이라는 제목만 보고 혹해서 샀다가 실제 코드가 들어 있는 것 보고 책장 구석에 박아뒀었는데, 근래 프로그래밍을 좀 배우면서 다른 사람들의 코드가 보고 싶어 보게 된 책.

아직은 이런 디자인 패턴 책을 볼만한 수준은 아닌지라 책에서 다루고 있는 패턴들을 명확히 이해하지는 못했지만 –책을 옆에 두고 보면서 차차 익혀야지–, 코드를 어떤 식으로 구성 하는지를 이해할 수 있어서 개인적으로 큰 도움이 되었다. 

다른 책에 비해 다루는 패턴의 수는 적지만 널리 쓰이는 패턴들을 잘 골라 다루는 점은 좋은 듯. 헤드 퍼스트 시리즈의 특징인 단계적 설명으로 읽고 이해하기도 좋은 것도 좋다.

다만 개인적으로 헤드 퍼스트 시리즈 특유의 말풍선 있는 사람들 사진은 딱히 좋은건지 모르겠는데, 맥락이 떨어져 보이는 이런 과한 이미지 때문에 책이 좀 난잡하다고 느껴진다. 물론 클래스 다이어그램과 같이 전체 코드가 어떻게 구성되었는지에 대한 시각 자료는 좋다.

코딩을 지탱하는 기술

프로그래밍 언어와 프로그램을 문법을 처음 배울 때 접하는 개념들 –비트, 함수, 변수, 클래스 등– 이 어떤 이유로 생겨났고 그것들이 어떻게 발전해 왔는지를 정리한 프로그래밍 교양서.

설명하는 각 개념들이 여러 프로그래밍 언어에서 어떻게 비슷하고 다른지와 그 개념들이 발전해 온 역사를 되짚으며 단계적이고 체계적으로 설명하고 있어서 내용 이해가 매우 잘 된다. 훌륭한 교양 서적.