lan9uhnf185dgngl79jqhtl9q2

GREAT CODE 1 (효율적인 코드 작성의 기초, 하드웨어의 이해)

본문 바로가기

회원메뉴

쇼핑몰 검색

통합검색

GREAT CODE 1 (효율적인 코드 작성의 기초, 하드웨어의 이해)

정가
30,000 원
판매가
27,000 원    10 %↓
적립금
1,500 P
배송비
무료배송
배송일정
48시간 배송 예정 배송일정안내
ISBN
9791161752471
쪽수 : 460쪽
랜달 하이드  |  에이콘출판  |  2019년 04월 18일
소득공제 가능도서 (자세히보기)
주문수량
 
책 소개
「전자회로」, 「논리설계」, 「컴퓨터 아키텍처」, 「시스템 프로그래밍」… 대학교에서 이미 배운 과목인데 도무지 정리도 잘 안 되고, 막상 실무에서 사용하려고 하니 가물가물 생각이 잘 떠오르지 않는다면? 최고의 프로그래머가 되기 위해 반드시 알고 넘어가야 할 하드웨어와 컴퓨터 아키텍처에 대한 내용을 이 한 권에 녹여냈다. 컴퓨터 관련 전공 수업을 듣지 못했거나, 내용을 모두 잊어버렸거나, 기존 서적의 난해함에 질린 독자를 위한 필독서다.
저자 소개
저자 : 랜달 하이드 최고의 어셈블리 언어 관련 서적인 『The Art of Assembly Language, 2nd Edition』(No Starch Press, 2010)의 저자며, 『The Waite Group’s Microsoft Macro Assembler Bible』(Sams, 1992)의 공동 저자다. 「닥터 돕스(Dr.Dobb’s Journal)」와 「바이트(Byte)」를 비롯한 여러 전문 잡지에 기고하고 있다. 역자 : 전동환 서울대학교 컴퓨터공학과를 졸업하고 MOS 테크놀로지에서 순수 국산 RTOS인 Velos 개발에 참여했다. 현재 미국 캘리포니아대학교 샌디에이고 캠퍼스(UC San Diego)의 컴퓨터공학과에서 박사과정을 밟으며 새로운 컴퓨터 프로세서에 대한 연구를 하고 있다. 표지가 예쁜 중고 음반과 세일 폭이 큰 와인을 사랑한다. 역서로 에이콘출판사에서 펴낸 『인사이드 머신』(2007), 『켄트 벡의 구현 패턴』(2008) 등이 있다.
목 차
1장. 최고의 코드를 위해 알아야 할 것 __1.1 ‘GREAT CODE’ 시리즈 __1.2 이 책의 내용 __1.3 이 책의 대상 __1.4 최고의 코드의 특징 __1.5 동작 환경 __1.6 더 많은 정보를 원한다면 2장. 수치 표기법 __2.1 수란 무엇인가? __2.2 수 체계 __2.3 수치/문자열 변환 __2.4 내부 수치 표현법 __2.5 부호 있는 수와 부호 없는 수 __2.6 2진수의 유용한 속성 __2.7 부호 확장, 0 확장과 축소 __2.8 포화 __2.9 2진화 10진 표기법 __2.10 고정소수점 표기 __2.11 스케일 수치 포맷 __2.12 유리수 표기법 __2.13 더 많은 정보를 원한다면 3장. 2진법 연산과 비트 연산 __3.1 2진수, 16진수의 연산 __3.2 비트 논리 연산 __3.3 2진수와 비트 스트링에 대한 논리 연산 __3.4 유용한 비트 연산 __3.5 쉬프트와 로테이트 __3.6 비트 필드와 묶인 데이터 __3.7 데이터 묶기와 풀기 __3.8 더 많은 정보를 원한다면 4장. 부동소수점 표기 __4.1 부동소수점 연산 소개 __4.2 IEEE 부동소수점 포맷 __4.3 정규화 __4.4 라운딩 __4.5 특별 부동소수점 값 __4.6 부동소수점 예외 __4.7 부동소수점 연산 __4.8 더 많은 정보를 원한다면 5장. 문자 표기법 __5.1 문자 데이터 __5.2 문자열 __5.3 문자셋 __5.4 자신만의 문자셋 설계 __5.5 더 많은 정보를 원한다면 6장 메모리 구조와 접근 __6.1 기본 시스템 구성 요소 __6.2 메모리의 물리적 구조 __6.3 빅 엔디안 구조 vs. 리틀 엔디안 구조 __6.4 시스템 클럭 __6.5 CPU 메모리 접근 __6.6 더 많은 정보를 원한다면 7장. 혼합 데이터 타입과 메모리 객체 __7.1 포인터 __7.2 배열 __7.3 레코드/구조체 __7.4 유니온 __7.5 더 많은 정보를 원한다면 8장. 불리언 로직과 디지털 설계 __8.1 불리언 대수 __8.2 불리언 함수와 진리표 __8.3 함수 번호 __8.4 불리언 수식의 대수 처리 __8.5 정규형 __8.6 불리언 함수의 단순화 __8.7 결국, 불리언 로직은 컴퓨터에 어떻게 적용되는가? __8.8 더 많은 정보를 원한다면 9장. CPU 구조 __9.1 기본적인 CPU 설계 __9.2 명령어의 해석과 수행: 랜덤 로직 vs. 마이크로코드 __9.3 단계별 명령어 수행 __9.4 더 높은 성능의 비결, 병렬성 __9.5 더 많은 정보를 원한다면 10장. 명령어 집합 구조 __10.1 명령어 집합 설계의 중요성 __10.2 명령어 설계의 기본적인 목적 __10.3 가상 프로세서 Y86 __10.4 80x86 명령어 인코딩 __10.5 명령어 집합 설계가 프로그래머에게 의미하는 것 __10.6 더 많은 정보를 원한다면 11장. 메모리 구조와 구성 __11.1 메모리 계층 __11.2 메모리 계층의 동작방식 __11.3 메모리 하위시스템에 존재하는 성능 차이 __11.4 캐쉬의 구조 __11.5 가상 메모리, 보호 장치, 페이징 __11.6 스래싱 __11.7 NUMA와 주변 장치들 __11.8 메모리 계층을 고려한 소프트웨어 작성 __11.9 실행 중 메모리의 구성 방식 __11.10 더 많은 정보를 원한다면 12장. 입력과 출력 __12.1 CPU를 외부와 연결 __12.2 포트를 시스템에 연결하는 다른 방법들 __12.3 입출력 메커니즘 __12.4 입출력 속도 계층 __12.5 시스템 버스와 각 데이터 전송률 __12.6 버퍼링 __12.7 핸드쉐이킹 __12.8 입출력 포트의 타임아웃 __12.9 인터럽트와 폴링 __12.10 보호모드 연산과 장치 드라이버 __12.11 PC 주변 장치 __12.12 표준 PC 병렬 포트 __12.13 직렬 포 __12.14 동기 I/O 와 비동기 I/O __12.15 I/O 형식의 의미 __12.16 메모리 맵 파일
출판사 서평
★ 이 책에서 다루는 내용 ★ ■ 숫자나 문자열, 고급 자료구조 등을 표기하는 방법을 익혀, 컴퓨터가 각 데이터 타입을 사용하는 데 드는 비용을 파악한다. ■ 컴퓨터가 데이터를 구성하는 방법을 익혀, 데이터를 효율적으로 처리하는 방법을 알아낸다. ■ CPU가 동작하는 방식을 익혀, 컴퓨터가 처리하는 방식대로 동작하는 프로그램 코드를 작성한다. 입출력 장치가 동작하는 방식을 이해하면, 그러한 장치에 접근하는 애플리케이션의 성능을 최대화할 수 있다. ■ 메모리 계층 구조를 최적화해 사용하는 방법을 익혀, 최대한 빠른 프로그램을 작성할 수 있다. ★ 이 책의 대상 독자 ★ 이 책을 효과적으로 이용하기 위해서 적어도 한 가지 이상의 절차적 프로그램 언어를 다룰 줄 알아야 한다. C/C++, 파스칼(Pascal), 베이직(BASIC), 어셈블리 언어처럼 많이 사용되는 언어뿐 아니라 에이다(Ada), 모듈러2(Modula-2), 포트란(FORTRAN) 같은 언어여도 괜찮다. 또 작은 문제에 대한 명세를 받아서 그 문제에 대한 소프트웨어를 설계하거나 구현할 능력이 있어야 한다. 보통 대학 강의를 한 학기 정도 수강하거나, 독학으로 몇 달만 노력하면 이 책을 공부하는 데 큰 불편함은 없을 것이다. 이 책은 특별한 프로그램 언어를 위한 책은 아니다. 이 책에서 설명하는 개념은 프로그래밍 언어의 종류와 관계없이 적용할 수 있는 것들이다. 여러분의 편의를 위해서 프로그램 예문은 몇 가지 언어(C/C++, 파스칼, 베이직, 어셈블리 등)를 번갈아 가면서 사용할 것이다. 이 책을 쓸 때 여러분이 특정 언어를 알 것이라고 가정하지 않았다. 따라서 이 책에서 예시를 제시할 때는 코드에 대한 정확한 설명을 덧붙일 것이므로, 비록 그 언어에 익숙하지 않더라도 관련 설명을 통해서 프로그램의 동작을 충분히 이해할 수 있을 것이다. 이 책은 다양한 예시에서 다음 언어와 컴파일러를 사용했다. ■ C/C++: GCC, 마이크로소프트 비주얼 C++, 볼랜드 C++ ■ 파스칼(Pascal): 볼랜드 델파이(Delphi)/카일릭스(Kylix) ■ 어셈블리: 마이크로소프트 MASM, HLA(the High Level Assembler), Gas(파워 PC용) ■ 베이직(BASIC): 마이크로소프트 비주얼 베이직 ★ 이 책의 구성 ★ 이 책에서는 프로그래머에게 직접 영향을 줄 수 있거나, 시스템 아키텍트의 의도를 이해하는 데 도움을 줄 수 있는 내용을 주로 다룬다. 컴퓨터 구조를 배우는 궁극적인 목적은 자신만의 CPU나 컴퓨터 시스템을 설계할 능력 배양이 아니라, 기존의 컴퓨터 설계를 가장 잘 활용하는 법을 아는 것이다. 그래도 컴퓨터 구조가 어떤 것인지 감이 오지 않는다면 책의 목차를 살펴보며 생각해 보자. 2장, 4장, 5장에서는 컴퓨터의 기본적인 데이터 표기법을 다룰 것이다. 예를 들어 컴퓨터가 어떠한 방법으로 부호 있는 정수와 부호 없는 정수, 문자, 문자열, 문자 집합, 실수, 분수와 같은 값들을 표현하는지 알아본다. 컴퓨터가 다양한 자료를 어떻게 표현하는지를 충분히 이해하지 못한다면, 특정 작업이 왜 그렇게도 비능률적인지 알 수 없을 것이다. 또 그 이유를 이해하지 못한다면 코드에서 데이터를 제대로 다루지 못할 가능성이 높고, 그 결과 최고의 코드와는 멀어지게 될 것이다. 3장에서는 대부분의 현대적인 컴퓨터 시스템에서 사용하는 이진법의 계산과 비트 오퍼레이션을 다룰 것이다. 대부분의 프로그램 언어가 이진법과 비트 오퍼레이션을 지원하기 때문에 이 책에서는 일반적인 프로그래밍 개론 과정에서 잘 다루지 않는 이진법과 논리 오퍼레이션을 통해 코드를 향상시키는 법에 대해서 알아볼 것이다. 최고의 코드를 작성하는 강력한 프로그래머가 되기 위해서는 널리 시용되는 이런 기법을 익숙하게 구사할 수 있어야 한다. 6장에서는 ‘메모리 계층과 접근’이라는 중요한 주제를 다룬다. 메모리 접근 문제는 현대 컴퓨터에서 시스템 성능 문제를 일으키는 주범이다. 6장은 메모리에 대한 소개를 시작으로 컴퓨터가 메모리에 접근하는 방법 메모리의 성능상 특징에 관해 상세히 명하겠다. 또 CPU가 메모리에 있는 다양한 자료구조에 접근할 때 사용하는 메모리 지정모드(addressing mode)에 대해서도 알아볼 것이다. 요즘 프로그램 중에서도 프로그램의 세부적인 메모리 접근에 대한 고려가 부족해서 프로그램의 완성도가 떨어지는 경우가 많다. 6장에서는 여러 문제를 해결할 수 있는 기반지식을 제공할 것이다. 7장은 다시 데이터 표현으로 돌아가서 복합 데이터 타입과 메모리 객체를 다룬다. 여기서는 앞 부분의 여러 장에서 다뤘던 내용과는 다르게 포인터, 배열 레코드, 구조체, 공용체 등과 같이 하이 레벨 데이터 타입에 관해 공부하게 된다. 많은 프로그래머가 메모리, 성능상의 문제를 고려하지 않은 채 커다란 복합 데이터 구조를 사용하고 있다. 7장에서는 이런 하이 레벨 복합 데이터 타입을 로우 레벨의 관점으로 설명함으로써 프로그램에서 이 기법을 사용할 때 지불해야 할 비용이 어느 정도인지 알려준다. 결국 이 기법을 좀 더 신중하고 현명하게 사용할 수 있게 될 것이다. 8장에서는 불리언 로직(boolean logic)과 디지털 설계에 관해 다룰 것이다. 8장에서는 CPU 설계와 그 외의 컴퓨터 시스템 요소를 이해하기 위해 필요한 수학적, 논리적 배경 지식을 제공한다. 주로 하드웨어적인 소재를 다루지만, 진정한 최고의 코드를 작성할 때 사용할 수 있는 몇 가지 아이디어도 얻을 수 있다. 특히 if, while 등과 같이 일반적인 고급 언어에서 사용되는 불리언 식을 최적화하는 방법은 유용하게 사용할 수 있다. 9장 역시 8장에 이어 하드웨어적인 내용으로 CPU의 구조에 관해 다룬다. 이 책의 궁극적인 목적이 자신의 CPU를 디자인하는 법을 가르치는 것이 아님에도 불구하고, 기본적인 CPU 설계와 동작을 제대로 이해해야 최고의 코드를 작성할 수 있다. CPU가 코드를 수행하는 방식에 맞춰서 코드를 작성하면, 더 적은 시스템 자원을 사용해서 더 좋은 성능을 얻을 수 있다. 반면에 코드 작성을 CPU 동작에 맞추지 않는다면, 느리고 자원을 많이 사용하는 프로그램이 될 것이다. 10장에서는 CPU 명령어 집합구조(instruction set architecture)에 대해 알아볼 것이다. 모든 CPU에서 명령어는 CPU 동작에 가장 기본이 되는 부분이고, 프로그램 수행시간은 수행되는 명령어의 종류와 수에 직접적인 영향을 받는다. 컴퓨터 구조에서 명령어를 설계하는 방법을 이해하게 되면, 어떤 오퍼레이션이 다른 오퍼레이션보다 시간이 더 걸리는 이유를 알 수 있게 된다. 뿐만 아니라 명령어의 한계와 CPU가 명령어를 해석하는 방식을 이해하면, 형편없는 일련의 코드를 최고의 코드로 탈바꿈시킬 수도 있다. 11장에서는 메모리 이야기로 돌아와서 메모리 아키텍처와 구조에 대해 알아본다. 이 장은 빠른 코드를 작성하는 데 큰 도움이 될 것이다. 여기서는 메모리의 계층에 대해 설명하고 캐시의 성능을 극대화하는 방법, 다른 고속 메모리 구성 요소 등을 알아본다. 최고의 코드는 현대 컴퓨터 애플리케이션의 일반적인 문제인 스래싱(thrashing)을 피해야만 한다. 이 장에서 스래싱을 배우며 애플리케이션에서 낮은 성능의 메모리 접근을 피하는 방법을 알게 될 것이다. ★ 지은이의 말 ★ 이 책 한 권이면 어셈블리 프로그래밍 언어를 익혀야 하는 부담 없이도 컴퓨터 구조에 관한 내용을 공부할 수 있다. C++, VB, 파스칼, 자바 등 여러 고급 언어 프로그래머를 위해 저술됐으며, 컴퓨터 교육과정에서 흔히 다루지 않는 컴퓨터 구조의 기계적인 수준까지 자세하게 다루고 있다.
고객 리뷰
평점 리뷰제목 작성자 작성일 내용보기

아직 작성된 리뷰가 없습니다.

반품/교환
· 회사명 : 북앤북스문고   · 주소 : 제주특별자치도 제주시 1100로 3308 B1  
· 대표자 : 김대철   · 사업자 등록번호 : 661-10-02383  
· 통신판매업신고번호 : 2023-제주노형-0169   · 개인정보 보호책임자 : 최재혁  

고객센터

(평일 09:30~17:30)
(점심 12:00~13:00)
· 전화 : 064)725-7279 (발신자 부담)
    064)757-7279 (발신자 부담)
· 팩스 : 064)759-7279
· E-Mail : bookpani@naver.com
Copyright © 2019 북앤북스문고. All Rights Reserved.