개발

무슨 책을 살까..?

강컴에서 5월 15일까지 쓸 수 있는 2만원 이상살 때 6천원 깎아주는 쿠폰을 줘서 무슨 책을 살까 고민중입니다.

근래에 책을 감당못할 정도로 사고 읽지도 못하는 일을 경험한 후에 요즘은 여러번 읽을 것 같지 않거나 급하지 않은 책은 학교 도서관에 신청해서 훑어보거나 후일을 기약하고 있습니다. 원서가 아니라면 99% 신청도서를 처리해주거든요. 2-3주 정도 걸리는게 약간의 단점이지만.

제가 이미 구입했거나 안볼꺼 같은 책이라도 좋은 책이라면 다른 사람들 보라고 열심히 신청하고 있죠. 장학금도 못탔는데 이런 식으로라도 등록금어치만큼 신청하고 졸업하려구요. 100권 좀 넘게 신청했으니 대충 목표달성이 눈에 보입니다. ;)

하지만 그러다보니 에세이류나 교양 도서의 구입과는 점점 멀어져가기만 하는게 슬프기도 합니다.

음.. 그래서 무슨 책을 살까 생각해보다가 아래의 리스트를 만들게 되었습니다. 물론 다 좋은 책들이고, 꼭 한번 읽어봐야 할 책이지만.. 어떤 책을 읽을까?가 아니라 어떤 책을 살까?의 고민을 하고 있습니다. 흑..

아래 평가은 책 내용이 아니라 현재 제 환경에 구입할만한 충분한 근거가 있느냐에 따른 매우 주관적인 평가입니다. 책 내용은 (위의 두권은 아직 못읽어봤지만 아마존, 지인들의 서평으로 보았을 때) 모두 별 다섯개도 모자른 명서들이지요.
[#M_ 고민중인 책들 보기.. | 글 닫기 |


C++ Gotchas : 99가지의 흥미로우면서도 난해한 C++ 이야기
구입 가치 평가 : ★★★★
목차를 보니 재미있을 듯 하다. 하지만 아직 MoreEffectiveC++을 채 못읽은 터라.. 그리고 EffectiveC++의 내용과 겹치는 부분도 있어보인다..


Efficient C++ : 프로그램 성능을 끌어올리는 핵심 테크닉
구입 가치 평가 : ★★★☆
아무래도 아직은 볼 때가 아닌거 같다.

그리고.. 우석님이 번역하신,


Debugging Applications for Microsoft .NET and Microsoft Windows
구입 가치 평가 : ★★★
꼭 읽어보고 싶은 책이지만, 이미 도서관에 신청해서 구비되어 있다. 그리고.....비싸다 ㅠ_ㅠ

Wrox 19,000원 행사에서 Beginning XML을 사려고 했는데, 이거 2판은 할인을 안하고 1판만 하는군요. 당할뻔했어요;;;


Professional 소프트웨어 개발
구입 가치 평가 : ★★☆
3/4정도 읽은 책이고, 에세이류라 할 수 있지만 읽으면서 감동의 물결~에 빠졌던 책이라서 맥코넬에 대한 예우차원에서 살까 하는 생각을 해봤습니다. 크...

그리고, 교양도서 하나 쑤셔넣기!
개인적으로 자기계발서는 이 책 하나만 읽어도 되지 않을까 하는 생각이예요.

성공하는 사람들의 7가지 습관
구입 가치 평가 : ★★★

자, 무슨 책을 살까요? 흑..._M#]

Efficient C++ : 프로그램 성능을 끌어올리는 핵심 테크닉

Upgrade_강컴::Efficient C++ : 프로그램 성능을 끌어올리는 핵심 테크닉

오~ 드디어 번역이 완료되었나봅니다. +_+

5월 14일날 발매 예정이군요.

벌써 읽어보실만한 분들은 다 읽어보셨겠지만, 전 아직 못읽어봐서 많이 기대가 됩니다. 크…

[#M_ 이어지는 내용 | 글 닫기 |
도서특징

손끝으로 구현할 수 있는 최고의 성능 기술에 관한 값진 개론서 !!
상당수의 프로그래머와 소프트웨어 디자이너는 효율적인 C++을 모순이라고 생각한다. 이들은 C++가 본래부터 느리고 성능이 중요한 응용프로그램에는 적절하지 못하다고 생각한다. 그러므로 C++는 네트워킹, 운영 체제 커널, 장치 드라이버 등과 같이 날카로운 영역에서는 거의 성공을 거두지 못하였다.

Efficient C++은 이러한 미신을 타파한다. 이 책은 상용 C++ 응용프로그램으로부터 마지막 최대한의 성능을 작성한 직접적인 경험을 가진 두 명의 저자가 썼으며 C++가 가진 고성능 프로그램 제작의 잠재력을 설명하고 있다. 실무적이고 일상적인 객체 지향 디자인 법칙과 상당량의 성능을 개선시킬 수 있는 C++ 코딩 기술에 관한 내용을 포함하고 있으며 숨겨진 연산 부하를 생성시키는 디자인과 코드의 공통적인 함정을 지적하고 있다.

이 책은 C++의 강력함과 유연성을 고성능, 확장성과 혼합하여 두 가지 면에서 최상의 프로그램을 작성하는데 초점을 두고 있다. 임시 객체, 메모리 관리, 템플릿, 상속, 가상 함수, 인라인, 참조 횟수, STL, 이외 많은 주제들을 다루고 있다.

이 책을 가짐으로써 여러분은 손끝으로 구현할 수 있는 최고의 성능 기술에 관한 값진 개론서를 가지게 되는 것이다.

【 아마존 서평 】

대단한 책!! ★★★★★
첫째로 이 책은 실용적이다! 이 책은 강의실의 교수님이 까다롭고 어렵게 가르치는 것보다 작가의 실제적인, 독창적인 경험에 바탕을 두고있다. 이 책을 공부하는 것은 즐거움이다. 또한 잘 쓰여졌다. 이보다 더 좋을 순 없다. 제목역시 적절하게 지어졌다. 간단하게 말해서 만약 여러분이 C++의 효율(efficiency)에 관심이 있다면, 주저 없이 이 책을 선택하길 바란다. 여러분이 C++에 대한 일반적인 호기심을 가진 프로그래머라면, 이 책은 여러분에게 만족을 줄 것이라고 장담한다.

C++ 성능(performance)을 수용할 수 있게 하는 핵심비결 ★★★★★
이 책의 작가들은 IBM의 네트워크나 웹 서버 소프트웨어의 개발자들이다. 그들은 이 책에서 C++ 프로그래밍의 성능에 중점을 두고있다. 이 책의 첫 번째 토픽은 생성자와 소멸자, 가상 함수(virtual functions), 반환 값 최적화, 임시 객체(temporary objects), 인라인, 메모리 관리 그리고 참조 횟수이다. 여러분은 효과적인 생성자 함수를 만드는 방법을 알게 될 것이다. 또한 임시 객체(temporary objects)를 저비용으로 구성(construct)하는 방법을 알게 될 것이다. 본문에서 저자들은 “지연 연산(lazy evaluation)”을 진행시키고, “쓸모없는 계산”, “진부한 코드(obsolete code)”라는 생소한 용어를 사용하면서도 효율과 성능이라는 측면의 주제를 놓치지 않고 자세히 설명하고 있다. 알고리즘과 데이터 구조는 다른 표준의 기준(standard reference)을 언급하고 있지만, STL(삽입, 삭제, 통과, 찾기 연산)을 다루고 있다. 게다가 보너스로 훌륭한 멀티쓰레딩(multithreading)을 다루고 있다.

성능 문제(Performance Issues)에 관해 매우 도움이 되는 개요~ ★★★★★
나는 이 책이 문제시 되고 있는 C++의 성능에 도움이 되는 책이라고 생각한다. 나는 케릭터 포인터(character pointer)와 비교하여 그 자체의 성능을 바꾼 간단한 profiling class에서 철저한 C++ string을 사용하는 방법이나, 할당 방법(allocation method)의 선택에 의해 발생되는 속도에서의 막대한 차이점에 놀랐다. 나는 C++을 전문적으로 매일 사용하고, 이 주제에 관한 다른 많은 책들도 봤지만, 난 이 책에서 가치 있는 부분을 발견할 수 있었다.

C++ 효율의 속도에 다가갈 수 있는 실용적인 방법 ★★★★★
나는 이 책의 제목을 처음 봤을 때, 이 책은 다른 훌륭한 C++에 관한 책들에서도 빠진 무언가를 다루고 있는 책이라고 생각했다. 이 책은 심지어 C++ 전문 프로그래머에게도 극도로 명료하고 이해하기 쉽게 쓰여졌다. 도표도 적절히 사용되었고, 텍스트도 간결하게 쓰여졌다. 예제 코드 또한 잘 선택되었으며, 필요 이상으로 부자연스럽지 않다. 이 책은 지하철이나, 버스 등 여러분의 남는 시간을 이용해 볼 수 있을 정도로 쉽다. 이 책은 진정한 C++ 프로그래머나, C++에 관해 더 알고자 하는 사람들에게 꼭 필요한 책이다.

Inline에 관한 훌륭한 책 ★★★★★
이 책은 실용적이고 중요하다. 세 챕터에서 중요한 인라인의 사용에 대해 다루고 있다. 이 책은 컴파일러(complier)의 현재 crop이 인라인 함수 호출 요청에 만족할 때와 하지 않을 때에 관한 세부사항도 다룬다. 이 책은 언제 컴파일러가 가상 함수 호출을 인라인할 수 있는지에 대한 힌트도 있다. 여러분은 이 책을 읽고, 여러분의 컴파일러 벤더에게 컴파일러의 예술 상태를 향상시킬 것을 요청하라.

C++ 프로그램을 빠르고 깨끗하게 만드는 방법 ★★★★★
C++은 매우 유동적이고 힘찬 언어이지만, 고유의 성능 위험(performance hazards)은 없다. 생성자 호출은 C++ 컴파일러에 의해 자동적으로 생성될 것이다. 나는 거의 10년 동안 C++ 코드를 가르치고 있고, 집필하고 있는데, 내가 생각하지 못한 부분도 있었다. 그러나, 그 부분들은 상대적으로 그냥 넘어가기 쉬웠지만 작가들은 명백히 해결해 주고있다. 메니져들은 C++개발자들을 위해 책을 사야 하고, 기업들 사이의 코딩 지침서를 construct하기 위해 이 책의 예제를 사용하라. 나는 지금까지 일하면서 C++에 대한 많은 책을 보았지만, 나는 이 책이 가장 가치 있는 책이라고 확신하다. 효율적인 코드는 아직도 매우 중요하고, 300페이지 정도의 이 책에서 저자는 여러분의 고귀한 신체 부분을 보존해줄 계획을 준다.

【 역자 Prolog】

처음 C++라는 언어를 접한 것은 학부 3학년 운영체제 과제물인 NACHOS 프로젝트를 통해서였다. 지금은 Java로 바뀐 자습서 수준의 간단한 운영체제인데, 이후로 역자는 한 번도 C++ 프로그래밍을 손에서 떼어본 적이 없을 만큼 C++와 아주 좋은 인연을 맺고 있다. 99년 9월, 처음 취업하여 MFC로 시작한 프로페셔널 프로그래밍(역자의 실력이 뛰어나다는 의미가 아니라, 돈을 받고 코드를 작성하기 시작하였다는 의미에서 프로페셔널 프로그래밍이라는 단어를 썼음을 밝힌다)은 이후 성능이 중요한(원서에는 performance-critical이라는 표현을 사용하였다) 검색 엔진이라는 미들웨어에 이르기까지 단 한 번도 Java나 순수 C와 같은 외도(?)의 길을 간 적이 없고 오로지 초지일관 C++만을 사용해왔으니, 이 책의 내용이 가슴에 와 닿기로 따지자면 여느 개발자 못지 않을 것이다. 그런 의미에서 이 책은 단순한 번역의 연장선으로 작성하는 역자 서문이 아닌 대한민국 누구보다 이 책을 정독하였을 역자의 입장으로서, 소위 '강추'의 메시지를 전달하기 위한 역자 서문이 되겠다.

정말 여러분이 성능 때문에 C++를 버리고 C를 선택한다면 가격 대비 효용이란 요소를 생각해 보기 바란다. 물론, C로 프로그램을 작성하면 손쉽게 C++ 이상의 성능을 낼 수 있고, OO 패러다임의 역효과 때문에 의도에 어긋나는 상황이 연출될 수도 있다. 하지만, 효율적인 C++ 프로그래밍의 방법을 알고 있다면 C++가 가진 OO 특성을 100% 발휘하면서 C만큼의 성능을 낼 수 있는 프로그램을 얼마든지 작성할 수 있다. 효율적인 C++ 프로그래밍의 방법이라고 하여 거창한 것이 아니다. 장대한 역사의 영문법도 몇 백 페이지 책 한 권으로 요약될 수 있듯이, 효율적인 C++ 프로그래밍의 법칙도 유한한 사례를 파악한 후 지능적으로 활용하는 것에 지나지 않는다. 이 책은 300페이지 가량의 다소 짧게 느껴지는 분량이지만, 책의 내용을 설명하면서 곁들여놓은 기타 참고 서적 이야기를 보면, 이 책은 효율적인 C++ 프로그래밍을 위한 "손끝으로 구현할 수 있는 최고의 성능 기술에 관한 값진 개론서"임이 틀림없다.

솔직히 타 회사의 미들웨어의 개발 현황을 직접 보지 못하여 자신 있게 이야기하긴 힘들지만, 모 포탈 회사의 검색 엔진을 비롯하여 대부분의 미들웨어 제품들은 순수 C로 작성되어 있다고 한다. 이러한 소프트웨어의 개발 경험을 가진 사람들과 이야기를 나누어보면 C++보다 C를 선택한 이유는 성능이 첫 번째가 아니었다. 능숙한 C++ 프로그래머의 수가 충분하지 못하기 때문에 C++를 개발 언어로 채택하면 까다로운 이름 법칙 및 문서화의 어려움 등 개발 프로세스가 원활하지 못할 수 있다는 것이 첫 번째 이유였다. 두 번째는 소스 코드가 다양한 플랫폼에 대응할 수 있어야 하는 이식성 문제였다. C++는 GNU 계열을 제외하고 여전히 운영체제의 고유 컴파일러마다 약간의 문법이 다를 뿐 아니라, 표준 C++ 라이브러리도 잘 호환되지 않는다. 세 번째 이유가 성능이었는데, C++가 근본적으로 느리다는 것이 아니라, C++의 유연함과 확장성을 최대한 이용하면서 좋은 성능을 내는 프로그램을 작성하기가 힘들기 때문이었다. 하지만, C로 개발을 진행하다 보면 특정 비즈니스 로직을 구현하기 위해 이미 통용되는 STL과 같이 편리한 기본 라이브러리의 로직을 똑같이 구현하는 헛수고를 남발할 수도 있다.

또한, 템플릿이나 상속/연산자 오버로드와 같은 C++의 고유 기능과 containment/aggregation과 같은 C++ 디자인 패턴을 사용하면 단 몇 줄에 끝나는 다이나믹한 구현을 위해 수백 줄의 스파게티 코드를 만들어내는 오류를 범할 수도 있다. 전자는 개발 언어가 C로 내정된 조직에 합류하여 자신에게 익숙한 STL의 로직을 C 구조체로 직접 구현해서 사용한 후배 개발자의 경험담이고, 후자는 속도를 위해 고전적인 C 스타일의 코드와 구조체 이상의 기능을 가지지 않은 클래스만으로 대형 프로젝트를 개발해 본 역자의 경험이다. 지나친 일반화의 오류를 범하고 있는지도 모르지만, C++의 효율을 제대로만 이해할 수 있다면 효율적인 C++ 프로그래밍을 수행할 수 있는 방법을 찾아 C++의 강력함과 유연성을 더해 나가는 방식으로 개발자들은 변해나갈 수밖에 없다. 이런 의미에서 이 책은 중급 C/C++ 프로그래머들의 필독서이다.

역자가 개발하는 검색 엔진은 100% C++로 작성되었다. 올해로 4년을 맞는 이 제품을 개발하며 느낀 점은, 효율적인 프로그래밍은 소프트웨어가 포함하는 비즈니스 로직과 개발 언어의 특성을 잘 파악하여 훌륭한 디자인과 아키텍처를 구현하는 것이 전부가 아니라는 것이다. 사실 어렴풋이 느끼고는 있었지만, 이 책을 통하여 위와 같은 문제 의식을 구체적으로 정리할 수 있었고 소프트웨어 개발을 바라보는 시각을 한층 더 높이게 되었다. 하드웨어와 운영체제 등 소프트웨어 하부 구조의 원리를 잘 알지 못하면 궁극적인 성능을 조절하기는 힘들다. 예를 들어, 쓰레드 개수가 많다고 해서 효율이 높아지는 것이 아니다. 또한, 디스크 IO를 줄이기 위해 압축하여 저장한 데이터를 메모리에 로드하고 압축을 푸는 방식의 메모리 위주 작업이 과연 압축하지 않은 디스크 IO에 비해 얼마나 더 효율적일까? 당연 하드웨어와 운영체제에 따라 다를 것이다.

이 책은 라이브러리나 C++ 기능에 국한되지 않고, 효율적인 프로그래밍을 하기 위한 운영체제와 하드웨어 이야기까지 단순한 트릭 이외에 근본적인 내용도 많이 포함하고 있다. 그래서 전산학과 학부에서 배우는 컴퓨터 구조와 운영체제 과목에 버금가는 기본 지식이 없다면 약간 이해하기 힘든 내용이 후반부에 있다. 모 보안회사에서 침입 탐지 시스템을 개발하는 친구는 성능을 좀더 높이기 위해 CPU 공부를 한다고 한다. 이 책의 예비 독자이자, 구루(GURU)를 꿈꾸는 여러분은 이 책을 통해 이러한 문제 의식을 깨닫는 것만으로도 책의 가치는 다 할 것이라는 이야기를 자신 있게 건넨다.
_M#]

Visual Assist X Build 1233 Release

출처

http://www.wholetomato.com/downloads/VA_X_Setup1233.exe

Fixes are described at:
http://www.wholetomato.com/support/history.html

VS.NET users do not need to reset toolbars during install to get the fixes in this build.

Changelog

Build 1233
Fixed problem with tooltips during debugging introduced in build 1232.
Install disables Navigation bar for C/C++. (VS.NET)

제발 STLPort header 제대로 못 읽는 문제좀 고쳐줬으면 =_=

Wrox 19,000원 균일가전

위 이미지를 클릭해보세요.

“Beginning XML이나 살까?” 했는데 일시 품절이군요 ㅠ_ㅠ

열심히 개선중인 VAX

문제점들이 계속 고쳐지고 있네요. 빨리 안정화되었으면 합니다. 이거, 버그때문에 코딩하면서 여간 신경쓰이는게 아니라.. (제 성격이 이상한걸까요? 흑..)

수일 단위로 마이너 릴리즈가 되고 있네요.

History of Changes and Fixes

This list of recent bug fixes and minor feature improvements is arranged by build number. Changes apply to all IDEs unless indicated.

TOPIC_IDs are noted when available. They refer to postings in our Forums. Postings made in a private forum are available only to members of that forum.