확장메뉴
주요메뉴


닫기
사이즈 비교
소득공제
GREAT CODE 제2권

GREAT CODE 제2권

: 로우레벨을 고려한 프로그램 최적화

리뷰 총점5.0 리뷰 2건
정가
30,000
판매가
27,000 (10% 할인)
구매 시 참고사항
  • 본 도서의 개정판이 출간되었습니다.
eBook이 출간되면 알려드립니다. eBook 출간 알림 신청
분철서비스 시작 시 알려드립니다. 분철서비스 알림신청

품목정보

품목정보
발행일 2007년 07월 26일
쪽수, 무게, 크기 632쪽 | 188*250*35mm
ISBN13 9788960770171
ISBN10 8960770175

책소개 책소개 보이기/감추기

목차 목차 보이기/감추기

저자 소개 관련자료 보이기/감추기

저자 : 랜달 하이드(Randall Hyde)
최고의 어셈블리 언어 관련 서적인『The Art of Assembly Language』,『GREAT CODE 제1권』(모두 No Starch Press)의 저자다. 또한『Waite Group’s MASM 6.0 Bible』의 공동 저자이기도 하다. 그는 닥터 돕스 저널(Dr.Dobb’s Journal)과 바이트(Byte)지를 비롯한 여러 전문 잡지에 기고하고 있다.
역자 : 이건호 외
이건호
서울대학교 컴퓨터공학과 학부와 석사를 졸업했다. 각종 경시대회 참가를 취미로 삼다 또 다른 취미인 게임을 직접 만들기로 하고 게임업계에 투신. 엔씨소프트에서 리니지2 서버 프로그래머 등으로 6년 여간 열심히 일하다가 뒤늦게 UC버클리에서 공부를 다시 시작하기 직전에 번역을 마쳤다.

안병규
서울대학교 컴퓨터공학과 졸업. 서울과학고 재학시절 국제정보올림피아드 금메달 및 한국정보올림피아드 금상을 수상하였으며, 대학교 재학시절 게임업계에 투신하여 (주)넥슨에서 크레이지 아케이드, 빅샷을 개발했고 (주)제이투엠에서 레이시티를 개발했다. 현재 서울시 청담동에 거주하며 인생 제2의 도약을 준비하는 중이다.

박철현
한국과학기술원 전산학과 학부를 마치고 서울대학교 컴퓨터공학부에서 석사과정으로 네트워크를 공부하고 있다. 빠른 은퇴와 유유자적한 삶을 꿈꾸며 연구와 프로젝트에 매진하고 있다.

임중근
한국과학기술원 전산학과 학부와 석사를 졸업했다. 다수의 프로그래밍 컨테스트에 참가해 수상한 경력이 있는 슈퍼 프로그래머이다. 주 언어는 파스칼과 C++이다.

심지웅
9살 때 LOGO 언어를 시작으로 프로그래밍의 세계에 발을 들여놓은 후 국제정보올림피아드와 ACM ICPC World Final에 진출했다. 서울대학교 동기들과 함께 게임 개발사 헥스플렉스 엔터테인먼트를 창업, "더 보스"로 2003 대한민국 게임대상 최우수상을 수상했고, 현재는 미국의 University of Pennsylvania에서 컴퓨터공학 석사과정을 밟으며 인공지능 로봇 연구라는 새로운 목표에 도전 중이다.

책 속으로 책속으로 보이기/감추기



최고의 코드에 대한 평가 기준은 한 권의 책에서 모두 다루기에는 너무 많을 정도로 다양하다. 그러므로 『GRATE CODE』 시리즈 제2권인 이 책에서는 중요한 기준 중 하나인 “성능”에 대한 논의에 집중할 것이다. 컴퓨터 시스템의 성능이 MHz에서 수백 MHz로, 또 다시 GHz로 향상되면서 컴퓨터 소프트웨어의 성능에 대한 관심은 뒷전이 되었다. 오늘날 “절대로 코드 최적화 작업을 해서는 안 된다!”라고 주장하는 소프트웨어 엔지니어를 접하는 것은 전혀 낯선 일이 아니게 되었다. 하지만 우습게도 일반 사용자들은 그렇게 생각하지 않는다.
이 책은 효율적인 코드를 작성하는 방법을 설명하고 있지만, 일반적으로 생각하는 좁은 의미의 최적화에 대한 책은 아니다. 흔히 말하는 최적화는 소프트웨어 개발의 최종 단계에서 엔지니어들이 왜 자신들의 코드가 성능 명세에 부합하지 않는지 분석하고 그 사양을 만족하도록 코드를 수정하는 과정이다. 하지만 불행히도 최적화 단계 이전까지 성능에 대한 고려가 빠져 있었다면 최적화 과정이 실질적인 성능 향상으로 이어질 가능성은 거의 없다. 애플리케이션이 적당한 성능을 갖도록 보장하는 작업은 개발의 첫 단계인 설계와 구현에서 이루어져야 한다. 최적화는 시스템의 성능을 미세하게 향상시키지만 기적을 불러일으키는 경우는 거의 없다.
“설익은 최적화는 모든 악의 근원이다”라는 문구를 인용할 때 흔히 도날드 커누스(Donald Knuth)를 언급하지만, 처음으로 이 말을 꺼낸 사람은 토니 호어(Tony Hoare)다. 이 문장은 흔히 개발의 마지막 단계(흔히 경제적 원인 혹은 출시일을 이유로 최적화가 생략되는 단계) 때까지 최적화를 기피하는 엔지니어들의 슬로건으로 사용되어 왔다. 하지만 호어는 “애플리케이션 개발의 초기 단계에서 성능에 대한 고려를 하는 것은 모든 악의 근원이다”라고 말하지는 않았다. 그가 명시한 “설익은 최적화”라는 표현은 그 당시에 어셈블리 언어로 작성된 코드의 명령어 개수와 사이클 수를 세는, 코드의 기반이 유동적인 초기 단계에서 하기에는 적당하지 않은 종류의 최적화를 의미했다. 그러므로 호어의 주장은 적절한 것이었다. 찰스 쿡(Charles Cook)의 짧은 에세이(www.cookcomputing.com/blog/archives/000084.html)로부터 인용한 다음 설명은 이 문구를 잘못 받아들였을 때의 문제점을 간략하게 설명하고 있다.

“나는 항상 이 문구가 너무 자주 원래 의도와는 다른 영역에 적용되면서 소프트웨어 디자이너들이 실수하도록 이끌고 있다고 생각해왔다.
이 문구의 완전한 본래 문장은 “말하자면 97% 정도의 시간 동안에는 미세한 부분의 성능 효율에 대해서는 잊고 있어야 한다. 설익은 최적화는 모든 악의 근원이다”이고, 나는 이에 동의한다. 보통 전체 성능의 병목지점이 어디인지 분명해지기 전까지 미세한 최적화에 신경 쓰는 것은 시간의 낭비이다. 하지만 반대로 시스템 레벨의 소프트웨어를 디자인할 때는 처음부터 성능에 대한 고려를 항상 염두에 두어야 한다. 우수한 소프트웨어 개발자는 발달된 감지 능력을 이용해서 성능 측면에서 문제를 일으킬만한 부분을 자동적으로 고려하게 되어 이를 잘 수행한다. 미숙한 개발자들은 이후 단계에서의 약간의 미세 조정으로 어떤 문제도 해결할 수 있을 것이라는 잘못된 믿음으로 인해 이를 무시한다.”

토니 호어가 진정으로 의미한 것은, 소프트웨어 엔지니어들은 하나의 문장이 몇 개의 CPU 사이클을 소요하는지 등을 세는 전통적 의미의 최적화가 아닌 다른 요소들, 예를 들어 좋은 알고리즘 디자인과 그 알고리즘에 대한 우수한 구현 등에 대해서 더 신경을 써야 한다는 것이다.
경험이 많은 소프트웨어 엔지니어라면 이러한 부분적인 구현 기술은 성능 측면에서 별 차이를 가져오지 못한다고 주장할 수도 있을 것이다. 어떤 측면에서는 그러한 평가가 옳을 수도 있다. 하지만 우리는 이렇듯 미세한 차이점이 누적된다는 것을 기억해야 한다. 이 책에 소개된 기술들을 사용하지 않는다고 하더라도 여전히 가독성이 떨어지고 유지보수가 더 힘든 코드를 작성할 가능성도 존재한다는 점이 분명한 이상, 기능(시스템 디자인의 관점에서)을이 같은 두 종류의 코드가 주어졌을 때 성능이 더 우수한 쪽을 선택해야 한다는 것은 명백하다. 하지만 불행히도 오늘날의 많은 소프트웨어 엔지니어들은 서로 다른 방식으로 구현된 두 가지 코드가 주어졌을 때 어느 쪽이 더 우수한지 구별할 수 있는 능력이 부족하다.
이 책에서 소개된 많은 개념들은 최적화 단계에서 적용하는 것도 가능하지만, 대부분의 기술들은 최초의 코딩 단계에서부터 고려되어야 한다. 코드를 완전히 작성할 때까지 이런 부분들에 대한 신경을 끄고 있다가는 그 이후에 이런 개념들을 적용하기는 매우 힘들 것이다. 완성된 코드에 이 개념들을 구현하는 것 자체가 너무 많은 노력을 필요로 하기 때문이다.
책을 읽는 동안 호어 박사의 “설익은 최적화는 모든 악의 근원이다”라는 문구를 꼭 명심해야 한다. 이 책에 소개된 정보를 잘못 적용하여 읽기 힘들고 유지보수가 힘든 코드를 작성하는 경우도 분명히 생길 것이다. 이런 실수는 특히 코드가 유동적이고 변경될 가능성이 높은 프로젝트의 초기 구현 과정에서 더욱 큰 악재가 된다. 하지만 이 책이 다른 것은 모두 무시하고 가장 효율적인 구문을 선택하는 것만을 목표로 하지 않는다는 것을 명심해야 한다. 이 책의 관심사는 다양한 HLL 구문이 발생시키는 비용을 이해하여 선택권이 주어졌을 때 더 효율적이고 올바른 방법을 선택할 수 있도록 하는 것이다. 어떤 경우에는 효율이 좀 떨어지는 코드를 선택해야 하는 정당한 이유가 존재한다. 하지만 주어진 구문의 비용을 이해하지 못한다면 효율적인 대안을 선택할 방법 자체가 존재하지 않는 것이다.
--- 저자 서문

출판사 리뷰 출판사 리뷰 보이기/감추기

회원리뷰 (1건) 회원리뷰 이동

한줄평 (1건) 한줄평 이동

총 평점 2.0점 2.0 / 10.0

배송/반품/교환 안내

배송 안내
반품/교환 안내에 대한 내용입니다.
배송 구분 예스24 배송
  •  배송비 : 무료배송
포장 안내

안전하고 정확한 포장을 위해 CCTV를 설치하여 운영하고 있습니다.

고객님께 배송되는 모든 상품을 CCTV로 녹화하고 있으며, 철저한 모니터링을 통해 작업 과정에 문제가 없도록 최선을 다 하겠습니다.

목적 : 안전한 포장 관리
촬영범위 : 박스 포장 작업

  • 포장안내1
  • 포장안내2
  • 포장안내3
  • 포장안내4
반품/교환 안내

상품 설명에 반품/교환과 관련한 안내가 있는경우 아래 내용보다 우선합니다. (업체 사정에 따라 달라질 수 있습니다)

반품/교환 안내에 대한 내용입니다.
반품/교환 방법
  •  고객만족센터(1544-3800), 중고샵(1566-4295)
  •  판매자 배송 상품은 판매자와 반품/교환이 협의된 상품에 한해 가능합니다.
반품/교환 가능기간
  •  출고 완료 후 10일 이내의 주문 상품
  •  디지털 콘텐츠인 eBook의 경우 구매 후 7일 이내의 상품
  •  중고상품의 경우 출고 완료일로부터 6일 이내의 상품 (구매확정 전 상태)
반품/교환 비용
  •  고객의 단순변심 및 착오구매일 경우 상품 반송비용은 고객 부담임
  •  직수입양서/직수입일서중 일부는 변심 또는 착오로 취소시 해외주문취소수수료 20%를 부과할수 있음

    단, 아래의 주문/취소 조건인 경우, 취소 수수료 면제

    •  오늘 00시 ~ 06시 30분 주문을 오늘 오전 06시 30분 이전에 취소
    •  오늘 06시 30분 이후 주문을 익일 오전 06시 30분 이전에 취소
  •  직수입 음반/영상물/기프트 중 일부는 변심 또는 착오로 취소 시 해외주문취소수수료 30%를 부과할 수 있음

    단, 당일 00시~13시 사이의 주문은 취소 수수료 면제

  •  박스 포장은 택배 배송이 가능한 규격과 무게를 준수하며, 고객의 단순변심 및 착오구매일 경우 상품의 반송비용은 박스 당 부과됩니다.
반품/교환 불가사유
  •  소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
  •  소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우 : 예) 화장품, 식품, 가전제품, 전자책 단말기 등
  •  복제가 가능한 상품 등의 포장을 훼손한 경우 : 예) CD/LP, DVD/Blu-ray, 소프트웨어, 만화책, 잡지, 영상 화보집
  •  소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우
  •  디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  •  eBook 대여 상품은 대여 기간이 종료 되거나, 2회 이상 대여 했을 경우 취소 불가
  •  중고상품이 구매확정(자동 구매확정은 출고완료일로부터 7일)된 경우
  •  LP상품의 재생 불량 원인이 기기의 사양 및 문제인 경우 (All-in-One 일체형 일부 보급형 오디오 모델 사용 등)
  •  시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  •  전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
소비자 피해보상
  •  상품의 불량에 의한 반품, 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 준하여 처리됨
환불 지연에
따른 배상
  •  대금 환불 및 환불 지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리
뒤로 앞으로 맨위로 공유하기