본문내용 바로가기
MD의선택 무료배송 이벤트 사은품 소득공제

Great Code Vol.1 2/e 위대한 코드의 시작 컴퓨팅 머신의 이해

소프트웨어 아키텍처 | 2판
랜달 하이드 지음 | 동준상 옮김 | 에이콘출판 | 2022년 05월 31일 출간
클로버 리뷰쓰기

이 책의 다른 상품 정보

  • 정가 : 40,000원
    판매가 : 36,000 [10%↓ 4,000원 할인]
  • 혜택 :
    [기본적립] 2000원 적립 [5% 적립] [추가적립] 5만원 이상 구매 시 2,000원 추가적립 안내 [회원혜택] 회원 등급 별, 3만원 이상 구매 시 2~4% 추가적립 안내 [리뷰적립] 리뷰 작성 시 e교환권 최대 300원 추가적립 안내
  • 추가혜택 : 포인트 안내 도서소득공제 안내 추가혜택 더보기
  • 배송비 : 무료 배송비 안내
  • 개정정보 : 이 도서는 가장 최근에 출간된 개정판입니다. 2019년 04월 출간된 구판이 있습니다. 구판 보기
  • 배송일정 : 서울특별시 종로구 세종대로 기준 지역변경
    10월 01일 출고 예정 배송일정 안내
  • 바로드림 : 인터넷으로 주문하고 매장에서 직접 수령 안내 바로드림 혜택
    휴일에는 바로드림 픽업으로 더 빨리 받아 보세요. 바로드림 혜택받고 이용하기

이 책의 이벤트

해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
  • 컴퓨터/IT분야 2만원 이상 구매 시 개발자 매거진 <리드..
    2022.08.13 ~ 2022.10.31
  • 상반기 베스트/추천도서 확인하고 머그&노트 사은품도!
    2022.06.24 ~ 2022.09.30
  • 비전공자도 혼자 공부할 수 있는 친절한 컴퓨터 공학 책을 추천드..
    2022.03.17 ~ 2023.12.31
  • MANNING, O'REILLY, PACKT, WILE..
    2016.03.07 ~ 2022.12.31
상품상세정보
ISBN 9791161756486(1161756485)
쪽수 616쪽
크기 189 * 235 * 35 mm /1243g 판형알림
이 책의 원서/번역서 Write Great Code, Volume 1, 2nd Edition / Hyde, Randall

책소개

이 책이 속한 분야

소프트웨어 개발에 필요한 컴퓨팅 머신의 작동 원리와 상호작용 방식을 정보 표현 방식, 주요 연산 장치 및 주변 장치의 작동 방식에 대한 전문적인 설명과 시각화 자료, 다양한 레벨의 실습용 코드로 이해하기 쉽게 설명한다. 정보 표현 방식으로서 비트 논리 연산, 부동소수점수, 문자 데이터를 소개하고, CPU 및 메모리, 입출력 장치, 주변 장치버스, 파일시스템 등 컴퓨팅 머신과의 상호작용 방식을 설명한다.

작가의 말

『Write Great Code』(이하 WGC) 시리즈는 작성자 스스로가 자랑스럽게 여기고, 다른 프로그래머에게 영감을 주며, 클라이언트를 만족시키고, 사용자가 편리함을 느낄 수 있게 하는 코드 또 다른 측면으로는 코드 작성을 의뢰한 고객 또는 상사가 값어치를 인정하는 코드를 작성하는 방법을 설명한다. 시리즈 전반에 걸쳐, 다른 프로그래머가 경외하고 존경심을 표현할 만한 소프트웨어의 작성 방법이 과연 무엇인지 알아본다.

목차

1장. 탁월한 코드 작성을 위한 준비
1.1 『Write Great Code』 시리즈의 개요
1.2 이 책에서 다루는 내용
1.3 이 책의 활용을 위한 준비
1.4 탁월한 코드의 특징
1.5 이 책에 실린 예제의 실행 환경
1.6 이 책의 추가적인 활용 팁
1.7 참고 자료

2장. 컴퓨터의 수 표기법
2.1 수란 무엇인가
2.2 수
2.2.1 10진 위치 표기법
2.2.2 기수
2.2.3 2진수 체계
2.2.4 16진수 체계
2.2.5 8진수 체계
2.3 숫자와 문자의 상호 변환
2.4 내부 숫자 표현법
2.4.1 비트
2.4.2 비트 문자열
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.1.1 2진수의 덧셈
3.1.2 2진수의 뺄셈
3.1.3 2진수의 곱셈
3.1.4 2진수의 나눗셈
3.2 비트 논리 연산
3.3 2진수와 비트 문자열의 논리 연산
3.4 비트 연산의 유용한 속성
3.4.1 AND를 이용한 비트 문자열 검증
3.4.2 AND를 이용한 비트 세트의 0 포함 여부 검증
3.4.3 2진 문자열의 비트 세트 비교
3.4.4 AND를 이용한 모듈로 n 카운터 구현
3.5 이동 연산과 회전 연산
3.6 비트 필드와 데이터 묶음
3.7 데이터 묶기와 데이터 묶음 풀기
3.8 참고 자료

4장. 부동소수점 연산
4.1 부동소수점 연산의 개요
4.2 IEEE 부동소수점 형식
4.2.1 단정밀도 부동소수점 형식
4.2.2 복정밀도 부동소수점 형식
4.2.3 확장 정밀도 부동소수점 형식
4.2.4 쿼드 정밀도 부동소수점 형식
4.3 부동소수점 수의 정규화와 비정규화
4.4 라운딩
4.5 특수한 부동소수점 값
4.6 부동소수점 예외 규칙
4.7 부동소수점 연산 방식의 이해
4.7.1 이번 절에서 사용하는 부동소수점 형식
4.7.2 부동소수점 덧셈 및 뺄셈
4.7.3 부동소수점 곱셈 및 나눗셈
4.8 참고 자료

5장. 문자 데이터의 활용
5.1 문자 데이터
5.1.1 ASCII 문자셋
5.1.2 IBM의 EBCDIC 문자셋
5.1.3 더블 바이트 문자셋
5.1.4 유니코드 문자셋
5.1.5 유니코드 코드 포인트
5.1.6 유니코드 코드 플레인
5.1.7 서로게이트 코드 포인트
5.1.8 글리프, 문자, 그래핌 클러스터
5.1.9 유니코드 노멀과 캐노니컬 동등
5.1.10 유니코드 인코딩
5.1.11 유니코드 연결 문자
5.2 문자열
5.2.1 문자열 형식
5.2.2 문자열 유형: 정적, 유사 동적, 동적 문자열
5.2.3 문자열 참조 카운터
5.2.4 델파이 문자열
5.2.5 커스텀 문자열
5.3 문자셋 데이터 타입
5.3.1 문자셋의 멱집합 표기법
5.3.2 문자셋의 리스트 표기법
5.4 자체 문자셋 설계하기
5.4.1 효율적인 문자셋의 설계
5.4.2 숫자 표현을 위한 문자 코드 그룹화
5.4.3 알파벳 문자 그룹화
5.4.4 알파벳 문자의 비교 연산
5.4.5 기타 문자의 그룹화
5.5 참고 자료

6장. 메모리 구조와 접근 방식
6.1 컴퓨터의 기본적인 시스템 구성 요소
6.1.1 시스템 버스
6.2 메모리의 물리적 구조
6.2.1 8비트 데이터 버스
6.2.2 16비트 데이터 버스
6.2.3 32비트 데이터 버스
6.2.4 64비트 데이터 버스.
6.2.5 80x86 이외 프로세서의 바이트, 워드, 더블워드 접근 방식
6.3 빅 엔디안과 리틀 엔디안의 구조 비교
6.4 시스템 클럭
6.4.1 메모리 액세스와 시스템 클럭
6.4.2 대기 상태
6.4.3 캐시 메모리
6.5 CPU의 메모리 액세스 방법
6.5.1 직접 메모리 주소 지정 모드
6.5.2 간접 메모리 주소 지정 모드
6.5.3 인덱스 메모리 주소 지정 모드
6.5.4 스케일 인덱스 주소 지정 모드
6.6 참고 자료

7장. 복합 데이터 타입과 메모리 객체
7.1 포인터 타입
7.1.1 포인터 구현
7.1.2 포인터와 동적 메모리 할당
7.1.3 포인터 작업 및 포인터 산술 연산
7.1.3.1 포인터에 정수 더하기
7.2 배열
7.2.1 배열 선언
7.2.2 메모리에서의 배열 표현
7.2.3 배열 요소에 접근하기
7.2.4 다차원 배열
7.3 레코드와 구조체
7.3.1 파스칼/델파이의 레코드
7.3.2 C/C++의 레코드
7.3.3 HLA의 레코드
7.3.4 스위프트의 레코드(튜플)
7.3.5 레코드의 메모리 저장 방식
7.4 이산 유니온 데이터 타입
7.4.1 C/C++의 유니온
7.4.2 파스칼/델파이의 유니온
7.4.3 스위프트의 유니온
7.4.4 HLA의 유니온
7.4.5 유니온 타입의 메모리 저장
7.4.6 유니온 타입의 기타 활용 방식
7.5 클래스
7.5.1 클래스 개념 1: 상속
7.5.2 클래스 구조체
7.5.3 클래스 개념 2: 다형성
7.5.4 추상 메소드와 추상 베이스 클래스
7.6 C++의 클래스
7.6.1 C++의 추상 멤버 함수 및 클래스
7.6.2 C++의 다중 상속
7.7 자바의 클래스
7.8 스위프트의 클래스
7.9 프로토콜과 인터페이스
7.10 제네릭과 템플릿
7.11 참고 자료

8장. 불리언 로직과 디지털 설계
8.1 불리언 대수
8.1.1 불리언 연산자
8.1.2 불리언 공리
8.1.3 불리언 연산자의 우선순위
8.2 불리언 함수와 진리표
8.3 함수 번호
8.4 불리언 수식의 대수 처리
8.5 정규형
8.5.1 최소항의 합 정규형과 진리표
8.5.2 대수적으로 생성된 최소항의 합 정규형
8.5.3 최대항의 곱 정규형
8.6 불리언 함수의 단순화
8.7 불리언 로직의 적용 방식
8.7.1 전자 회로와 불리언 함수의 대응 관계
8.7.2 조합 회로
8.7.3 시퀀셜 로직과 클럭 로직
8.8 참고 자료

9장. CPU 아키텍처
9.1 CPU의 기본적인 설계 방식
9.2 명령어 디코딩 및 실행: 랜덤 로직과 마이크로코드의 비교
9.3 단계별 명령어 실행
9.3.1 mov 명령어
9.3.2 add 명령어
9.3.3 jnz 명령어
9.3.4 loop 명령어
9.4 RISC vs. CISC: 명령어의 신속 실행을 통한 성능 향상
9.5 병렬성: 더 높은 성능의 비결
9.5.1 기능성 유닛
9.5.2 프리페치 큐
9.5.3 프리페치 큐의 성능을 저하시키는 조건
9.5.4 파이프라이닝: 다중 명령어 중첩
9.5.5 명령어 캐시: 다수의 메모리 경로 제공
9.5.6 파이프라인 해저드
9.5.7 슈퍼스칼라 연산: 병렬적 명령어 실행
9.5.8 명령어의 비순차적 실행
9.5.9 레지스터 이름 변경
9.5.10 VLIW 아키텍처
9.5.11 병렬 처리
9.5.12 멀티프로세싱
9.6 참고 자료

10장. 명령어 집합 설계
10.1 명령어 집합 설계의 중요성
10.2 명령어 설계의 기본적인 목표
10.2.1 opcode 길이 선택
10.2.2 미래에 대한 대비
10.2.3 명령어 선택
10.2.4 명령어에 opcode 할당하기
10.3 가상의 Y86 프로세서
10.3.1 Y86 프로세서의 제한된 기능 소개
10.3.2 Y86 명령어의 종류
10.3.3 Y86의 피연산자 유형과 어드레스 모드
10.3.4 Y86 명령어 인코딩
10.3.5 Y86 명령어 인코딩 사례
10.3.6 Y86 명령어 집합의 확장
10.4 80x86 명령어 인코딩
10.4.1 명령어 피연산자 인코딩
10.4.2 add 명령어 인코딩
10.4.3 x86 상수 피연산자 인코딩
10.4.4 8비트, 16비트, 32비트 피연산자 인코딩
10.4.5 64비트 피연산자 인코딩
10.4.6 명령어의 대안으로서 인코딩
10.5 명령어 집합 설계의 중요성
10.6 참고 자료

11장. 메모리 아키텍처 및 구성
11.1 메모리 계층 구조
11.2 메모리 계층의 작동 방식
11.3 메모리 서브시스템의 성능 비교
11.4 캐시 아키텍처
11.4.1 직접 매핑 캐시
11.4.2 완전 연관 캐시
11.4.3 n-way 집합 연관 캐시
11.4.4 캐시 라인 교체 방식
11.4.5 캐시에서의 데이터 쓰기 방식
11.4.6 캐시 활용 및 소프트웨어
11.5 NUMA와 주변 장치
11.6 가상 메모리, 메모리 보호, 페이징
11.7 메모리 계층을 고려한 소프트웨어 개발
11.8 런타임 시 메모리 구성
11.8.1 정적 객체, 동적 객체, 바인딩, 생애주기
11.8.2 코드 영역, 읽기 전용 영역, 상수 영역
11.8.3 정적 변수 영역
11.8.4 스토리지 변수 영역
11.8.5 스택 영역
11.8.6 힙 영역과 동적 메모리 할당
11.9 참고 자료

12장. 입력 및 출력 장치
12.1 컴퓨터 외부로 CPU 연결하기
12.2 시스템에 포트를 연결하는 다른 방법
12.3 I/O 메커니즘
12.3.1 메모리 맵 입출력 방식
12.3.2 I/O 맵 입출력 방식
12.3.3 DMA, 직접 메모리 접근 방식
12.4 I/O 속도의 계층 구조
12.5 시스템 버스와 데이터 전송 속도
12.5.1 PCI 버스의 성능
12.5.2 ISA 버스의 성능
12.5.3 AGP 버스
12.6 버퍼링
12.7 핸드셰이킹
12.8 I/O 포트의 타임아웃
12.9 폴링 기반 I/O 및 인터럽트
12.10 작업 보호 모드와 장치 드라이버
12.10.1 장치 드라이버 모델
12.10.2 장치 드라이버와의 통신
12.11 참고 자료

13장. 컴퓨터 주변 장치 버스
13.1 소형 컴퓨터 시스템 인터페이스
13.1.1 SCSI의 한계점
13.1.2 SCSI의 성능 및 기능 개선
13.1.3 SCSI 프로토콜
13.1.4 SCSI의 장점
13.2 IDE/ATA 인터페이스
13.2.1 SATA 인터페이스
13.2.2 파이버 채널
13.3 USB, 유니버설 시리얼 버스
13.3.1 USB의 설계
13.3.2 USB의 성능
13.3.3 USB의 데이터 전송 유형
13.3.4 USB-C
13.3.5 USB 장치 드라이버
13.4 참고 자료

14장. 대용량 저장 장치와 파일 시스템
14.1 디스크 드라이브
14.1.1 플로피 디스크 드라이브
14.1.2 하드 드라이브
14.1.3 RAID 시스템
14.1.4 광학 드라이브
14.1.5 CD, DVD, 블루레이 드라이브
14.2 테이프 드라이브
14.3 플래시 저장 장치
14.4 RAM 디스크
14.5 SSD
14.6 하이브리드 드라이브
14.7 대용량 저장 장치의 파일 시스템
14.7.1 시퀀셜 파일 시스템
14.7.2 효율적인 파일 할당 전략
14.8 대용량 저장 장치의 데이터 활용 소프트웨어 개발
14.8.1 파일 액세스 성능
14.8.2 동기적 및 비동기적 I/O
14.8.3 I/O 작업 유형별 성능
14.8.4 메모리 맵 파일
14.9 참고 자료

15장. 기타 입출력 장치
15.1 PC 주변 장치
15.1.1 키보드
15.1.2 표준 PC 병렬 포트
15.1.3 시리얼 포트
15.2 마우스, 트랙패드, 기타 포인팅 장치
15.3 조이스틱, 게임 컨트롤러
15.4 사운드 카드
15.4.1 오디오 인터페이스 주변 장치가 음을 출력하는 방법
15.4.2 오디오 파일 및 MIDI 파일 포맷
15.4.3 오디오 장치 프로그래밍
15.5 참고 자료

후기: 로우레벨로 생각하고, 하이레벨로 코딩하라
부록 A ASCII 문자셋

추천사

InformIT.com

“오늘날 프로그래머는 과도한 업무 부담 속에 신기술을 따라잡느라 힘든 시간을 보내고 있으며, 컴퓨터 아키텍처의 기본이나 프로그래밍 언어의 작동 방식 등을 배울 겨를이 없다. 이 책은 그러한 간극을 채워주는 역할을 할 것이다.... 더보기

BayLISA

“이 책은 시중에 나와있는 프로그래밍 자기 학습서와 다르며, 모든 프로그래밍 언어, 모든 프로그래밍 레벨의 토대를 설명한다. 서둘러 읽어보길 바란다.”

MacCompanion

“별 다섯 개를 줄 만한 책. 컴퓨터 사이언스 전공 과정에서 놓칠 수 있는 프로그래밍의 기본을 명쾌하게 설명한다. 효율적으로 작성한 코드란 무엇인지 알 수 있게 되며, 여러분이 직접 그러한 코드를 작성하게 될 것이다. 이 책... 더보기

VSJ Magazine

“읽는 재미가 있는 책”

WebServerTalk

“어셈블리 언어를 배우지 않고 프로그래밍 언어에 상관없이 탁월한 코드를 작성하는 방법을 알고자 하는 모두에게 권할 만한 책이다.”

출판사 서평

◈ 이 책에서 다루는 내용 ◈
◆ 효과적으로 머신을 활용하기 위한 숫자, 문자와 그 외 하이레벨 데이터 구조의 표현 방식을 알아보고, 각 데이터 타입의 리소스 비용 설명
◆ 머신이 좀 더 효율적으로 데이터에 접근할 수 있도록 조직화, 체계화하는 방법
◆ 머신의 본질적인 작동 방식을 파악하기 위한 CPU의 작동 방식
◆ 애플리케이션의 성능을 최대로 끌어올리기 위한 각종 I/O 주변 장치의 작동 방식
◆ 프로그램이 최고의 성능을 낼 수 있게 해주는 메모리 계층 구조


◈ 이 책의 대상 독자 ◈
특정 프로그램 언어에 맞춰 쓴 책이 아... 더보기

Klover 리뷰 (0)

북로그 리뷰 (0) 쓰러가기

북로그 리뷰는 본인 인증 후 작성 가능합니다.
책이나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 내용은 비공개 처리 될 수 있습니다.
※ 북로그 리뷰 리워드 제공 2021. 4. 1 종료
※ 북로그 서비스 종료 예정 2022. 9 월 말 (8월 31일 북로그 글쓰기 종료)
※ 2022년 9월까지 포스팅 별 개인소장 가능, 2023년 9월까지 일괄 백업 서비스 제공 예정 자세히 보기

문장수집 (0) 문장수집 쓰기 나의 독서기록 보기
※구매 후 문장수집 작성 시, 리워드를 제공합니다. 안내

교환/반품/품절안내

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

교환/반품/품절안내
반품/교환방법 마이룸 > 주문관리 > 주문/배송내역 > 주문조회 > 반품/교환신청 ,
[1:1상담>반품/교환/환불] 또는 고객센터 (1544-1900)

※ 오픈마켓, 해외배송주문, 기프트 주문시 [1:1상담>반품/교환/환불]
    또는 고객센터 (1544-1900)
반품/교환가능 기간 변심반품의 경우 수령 후 7일 이내,
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
반품/교환비용 변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
반품/교환 불가 사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등
  • 복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에
    해당되는 경우
(1) 해외주문도서 : 이용자의 요청에 의한 개인주문상품으로 단순변심 및 착오로 인한 취소/교환/반품 시 ‘해외주문 반품/취소 수수료’ 고객 부담 (해외주문 반품/취소 수수료 : ①서양도서-판매정가의 12%, ②일본도서-판매정가의 7%를 적용)
상품 품절 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는
이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은
    소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의
    소비자 보호에 관한 법률에 따라 처리함

이 책의 원서/번역서

안내
바로가기
  • 우측 확장형 배너 2
최근 본 상품