본문 바로가기

추천 검색어

실시간 인기 검색어

한 권으로 읽는 컴퓨터 구조와 프로그래밍

더 나은 소프트웨어 개발을 위한 하드웨어 | 자료구조, 필수 알고리즘 등 프로그래머의 비밀 노트
조너선 스타인하트 저자(글) · 오현석 번역
책만 · 2021년 04월 08일
9.2 (55개의 리뷰)
추천해요 (34%의 구매자)
  • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 대표 이미지
    한 권으로 읽는 컴퓨터 구조와 프로그래밍 대표 이미지
  • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 부가 이미지1
    한 권으로 읽는 컴퓨터 구조와 프로그래밍 부가 이미지1
  • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 부가 이미지2
    한 권으로 읽는 컴퓨터 구조와 프로그래밍 부가 이미지2
  • A4
    사이즈 비교
    210x297
    183x238
    단위 : mm
MD의 선택 무료배송 사은품 이벤트 소득공제 분철서비스
10% 31,500 35,000
적립/혜택
1,750P

기본적립

5% 적립 1,750P

추가적립

  • 5만원 이상 구매 시 추가 2,000P
  • 3만원 이상 구매 시, 등급별 2~4% 추가 최대 1,750P
  • 리뷰 작성 시, e교환권 추가 최대 300원
배송안내
무료배송
배송비 안내
국내도서/외국도서
도서만 15,000원 이상 구매 시 무료배송
도서+교보Only(교보배송)을 함께 15,000원 이상 구매 시 무료배송

15,000원 미만 시 2,500원 배송비 부과

교보Only(교보배송)
각각 구매하거나 함께 20,000원 이상 구매 시 무료배송

20,000원 미만 시 2,500원 배송비 부과

해외주문 서양도서/해외주문 일본도서(교보배송)
각각 구매하거나 함께 15,000원 이상 구매 시 무료배송

15,000원 미만 시 2,500원 배송비 부과

업체배송 상품(전집, GIFT, 음반/DVD 등)
해당 상품 상세페이지 "배송비" 참고 (업체 별/판매자 별 무료배송 기준 다름)
바로드림 오늘배송
업체에서 별도 배송하여 1Box당 배송비 2,500원 부과

1Box 기준 : 도서 10권

그 외 무료배송 기준
바로드림, eBook 상품을 주문한 경우, 플래티넘/골드/실버회원 무료배송쿠폰 이용하여 주문한 경우, 무료배송 등록 상품을 주문한 경우
주문정보를 불러오는 중입니다.
서울시 종로구 종로 1

분철옵션 선택 시, 예상 출고일보다 3일 추가 기간 소요

분철서비스 안내보기

알림 신청하시면 원하시는 정보를
받아 보실 수 있습니다.

알립니다.

  • 분철도서의 경우 취소/반품은 어렵습니다. 이 점 양해 부탁드립니다.

해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.

패키지

북카드

키워드 Pick

키워드 Pick 안내

관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.

한 권으로 읽는 컴퓨터 구조와 프로그래밍 상세 이미지
컴퓨터는 어떻게 동작하며, 컴퓨터 프로그래밍이란 무엇인가? 개발자가 되기 위해 프로그래밍을 배우는 것은 단지 시작일 뿐이다! 뛰어난 프로그래머가 되려는 개발자는 물론, 비전공자도 재미있게 읽을 수 있는 컴퓨터공학 핵심 강의!

하드웨어의 토대가 되는 기초 전자회로, 게이트부터 시작해서 메모리, CPU, I/O, 컴퓨터 아키텍처 전반을 설명하고, 그 위에서 소프트웨어를 작성하는 방법을 웹과 C 프로그램으로 직접 만들어보며, 보안, 인공지능, 알고리즘 등의 내용에 이르기까지 개발자라면 반드시 알아야 할 커튼 뒤에 감춰진 컴퓨터 구조와 프로그래밍에 대한 거의 모든 것을 다루는 컴퓨터공학 개론서!

작가정보

Jonathan E. Steinhart
1960년대부터 엔지니어링을 해왔다. 중학교 때 하드웨어 설계를 시작했고, 고등학교 때 소프트웨어 설계를 해본 경험 덕분에 여름 단기 아르바이트로 벨 전화 연구소에서 일하는 기회를 얻을 수 있었다. 클라크슨 대학교에서 1977년 전자 공학 및 컴퓨터 과학 학사(BSEE)를 취득했으며, 졸업 후 텍트로닉스(Tektronix)에서 일하다가 스타트업을 창업했다. 그래픽스 하드웨어와 소프트웨어를 설계하고, CAD 시스템, 그래픽스 워크스테이션, 회로 시뮬레이터, 발전소, IC 설계용 언어 등을 만들었으며, 1987년에는 안전이 중요한 크리티컬 시스템 엔지니어링에 초점을 맞춘 컨설턴트가 되어 애플, 인텔, 썬, 웰치알린, 룰루 등의 기업을 컨설팅했다.
1990년대부터는 전업을 조금 줄이고, 포 윈즈 비냐드(Four Winds Vineyard)라는 와인 농장 경영도 겸업하고 있다.

번역 오현석

비사이드소프트(BSIDESOFT) 이사로 일하면서 매일매일 고객의 요청에 따라 코드를 만들어내고 있는 현업 개발자다. 어릴 때 처음 컴퓨터를 접하고 매혹된 후 경기과학고, KAIST 전산학과(프로그래밍 언어 전공 석사)를 거치면서 계속 컴퓨터를 사용해왔다.
직장에서는 주로 코틀린이나 자바를 사용한 서버 프로그래밍을 하고, 주말이나 빈 시간에는 번역을 하거나 공부를 하면서 즐거움을 찾는다. 시간이 아주 많이 남을 때는 시뮬레이션 게임을 하면서 머리를 식히고 놀고, 어떻게 하면 막내자식을 프로그래밍의 세계로 끌어들일 수 있을까 고민 중인 아빠이기도 하다.
『코어 파이썬 애플리케이션 프로그래밍 Core Python Applications Programming Third Edition』(에이콘출판, 2014)을 시작으로 『 Kotlin in Action』(에이콘출판, 2017), 『순수 함수형 데이터 구조』(에이콘출판, 2019), 『파이썬 코딩의 기술(개정 2판)』(길벗, 2020) 등 20권 이상의 책을 번역했다.

작가의 말

매스매티카(Mathematica)와 울프람(Wolfram) 언어를 만든 스티븐 울프람(Stephen Wolfram)이 쓴 ‘어떻게 컴퓨팅 사고를 가르칠까?(How to Teach Computational Thinking)’라는 블로그 글에는 프로그래밍을 가르치는 방법에 대한 흥미롭지만 상당히 반대되는 관점이 들어 있다. 울프람은 컴퓨팅 사고를 “컴퓨터가 할 일을 지시하기 위해 충분히 명확하게, 충분히 시스템적으로 사물을 수식화하는 방법”이라고 정의했다. 나도 이 정의에 완전히 동의한다. 사실 이 주장은 내가 이 책을 쓰게 된 계기 중 큰 부분을 차지한다. 하지만 프로그램을 배우는 사람이 컴퓨팅 사고를 개발하기 위해 토대가 되는 기술을 배우는 대신, 자신이 개발한 강력한 고수준 도구 등을 사용해야 한다는 울프람의 주장에는 강하게 반대한다. 예를 들어, 미적분학보다 통계학에 대한 관심이 늘어난다는 점을 보면 ‘데이터 주무르기(data wrangling)’가 점점 더 중요한 분야가 되고 있음이 분명하다. 하지만 사람들이 멋진 프로그램에 엄청난 양의 데이터를 입력하는데 이 데이터를 전혀 이해하지 못한다면 어떤 일이 벌어질까? 이럴 경우 한 가지 가능성은 사람들이 재미있어 보이지만 의미가 전혀 없거나 틀린 결과를 만들어내는 것이다. 예를 들어, 마크 지만, 요탐 에렌, 아쌈 엘오스타가 발표한 최근의 연구(「과학 문헌에 유전자 이름 오류가 널리 퍼져 있다(Gene Name Errors Are Widespread in the Scientific Literature)」)에 따르면, 유전학 논문 중 5분의 1가량에 스프레드시트를 잘못 사용해서 생긴 오류가 있다는 사실이 밝혀졌다. 이런 종류의 오류를 생각해보고, 더 강력한 도구가 더 많은 사람들 손에 들어갔을 때 생길 결과를 생각해보라! 사람의 생명에 영향을 끼치는 경우라면 이런 일을 바로잡는 일은 더욱 중요해질 것이다. 하부 기술을 잘 이해하면 무엇이 잘못되고 있는지 알아차리는 능력을 계발할 수 있다. 고수준 도구만 알면 잘못된 질문을 던지기 쉽다. 전동 공구를 사용하려면 먼저 망치 쓰는 법부터 익혀야 한다. 하부 시스템과 도구를 배워둬야 하는 또 다른 이유는 이를 통해 여러분이 새로운 도구를 만들 수 있는 능력을 가질 수 있다는 점이다. 새로운 도구를 만드는 사람은 언제나 필요하며, 도구 사용자가 늘어나면 늘어날수록 이런 사람의 중요성은 더 커진다. 컴퓨터를 잘 이해함으로써 프로그램의 동작에 대한 수수께끼가 풀린다면, 여러분은 분명히 더 나은 코드를 작성할 수 있다.

목차

  • 1장. 컴퓨터 내부의 언어 체계
    ▶ 컴퓨터는 어떤 말을 사용할까 ◀

    언어란 무엇인가
    문자 언어
    비트
    논리 연산
    ___불리언 대수
    ___드모르간의 법칙
    정수를 비트로 표현하는 방법
    ___양의 정수 표현
    ___2진수 덧셈
    ___음수 표현
    실수를 표현하는 방법
    ___고정소수점 표현법
    ___부동소수점 표현법
    ___IEEE 부동소수점 수 표준
    2진 코드화한 10진수 시스템
    2진수를 다루는 쉬운 방법
    ___8진 표현법
    ___16진 표현법
    ___프로그래밍 언어의 진법 표기법
    비트 그룹의 이름
    텍스트 표현
    ___아스키 코드
    ___다른 표준의 진화
    ___유니코드 변환 형식 8비트
    문자를 사용한 수 표현
    ___출력 가능하게 변경한 인코딩
    ___베이스64 인코딩
    ___URL 인코딩
    색을 표현하는 방법
    ___투명도 추가
    ___색 인코딩
    정리

    2장. 전자 회로의 조합 논리
    ▶ 컴퓨터는 어떤 논리로 비트를 다루는가 ◀

    디지털 컴퓨터의 사례
    ___아날로그와 디지털의 차이
    ___하드웨어에서 크기가 중요한 이유
    ___디지털을 사용하면 더 안정적인 장치를 만들 수 있다
    ___아날로그 세계에서 디지털 만들기
    ___10진 숫자 대신 비트를 사용하는 이유
    간단한 전기 이론 가이드
    ___전기는 수도 배관과 유사하다
    ___전기 스위치
    비트를 처리하기 위한 하드웨어
    ___릴레이
    ___진공관
    ___트랜지스터
    ___집적 회로
    논리 게이트
    ___이력 현상을 활용한 잡음 내성 향상
    ___차동 신호
    ___전파 지연
    ___출력 유형
    게이트를 조합한 복잡한 회로
    ___가산기
    ___디코더
    ___디멀티플렉서
    ___셀렉터
    정리

    3장. 메모리와 디스크의 핵심: 순차 논리
    ▶ 컴퓨터는 비트를 어떻게 기억하는가 ◀

    시간 표현과 상태 기억
    ___발진자
    ___클록
    ___래치
    ___게이트가 있는 래치
    ___플립플롭
    ___카운터
    ___레지스터
    메모리 조직과 주소 지정
    ___임의 접근 메모리
    ___읽기 전용 메모리
    블록 장치
    플래시 메모리와 SSD
    오류 감지와 정정
    하드웨어와 소프트웨어 비교
    정리

    4장. 컴퓨터 내부 구조
    ▶ 컴퓨터 하드웨어는 어떻게 구성되는가 ◀

    메모리
    입력과 출력
    중앙 처리 장치
    ___산술 논리 장치
    ___시프트
    ___실행 장치
    명령어 집합
    ___명령어
    ___주소 지정 모드
    ___조건 코드 명령어
    ___분기 명령어
    ___최종 명령어 집합 구성
    마지막 설계
    ___명령어 레지스터
    ___데이터 경로와 제어 신호
    ___데이터 흐름 제어
    RISC와 CISC 명령어 집합
    GPU
    정리

    5장. 컴퓨터 아키텍처와 운영체제
    ▶ 컴퓨터는 어떻게 프로그램과 메모리를 조직적으로 관리할까 ◀

    기본적인 구조 요소들
    ___프로세서 코어
    ___마이크로프로세서와 마이크로컴퓨터
    프로시저, 서브루틴, 함수
    스택
    인터럽트
    상대 주소 지정
    메모리 관리 장치
    가상 메모리
    시스템 공간과 사용자 공간
    메모리 계층과 성능
    코프로세서
    메모리상의 데이터 배치
    프로그램 실행
    메모리 전력 소비
    정리

    6장. 입출력과 네트워킹
    ▶ 컴퓨터는 외부와 어떻게 상호작용하는가 ◀

    저수준 I/O
    ___I/O 포트
    ___버튼을 눌러라
    ___빛이 있으라
    ___빛, 동작, 그리고 상호 연동
    ___밝기 조절
    ___그레이의 2n가지 그림자
    ___쿼드러처
    ___병렬 통신
    ___직렬 통신
    ___파동에 올라타라
    ___범용 직렬 버스
    네트워킹
    ___최근의 LAN들
    ___인터넷
    아날로그 처리 방법
    ___디지털을 아날로그로 변환
    ___아날로그를 디지털로 변환
    ___디지털 오디오
    ___디지털 이미지
    ___비디오
    휴먼 인터페이스 장치
    ___터미널
    ___그래픽 터미널
    ___벡터 그래픽
    ___래스터 그래픽
    ___키보드와 마우스
    정리

    7장. 데이터 구조와 처리
    ▶ 어떻게 해야 프로그램에서 데이터를 잘 구성하고 처리할까 ◀

    기본 데이터 타입
    배열
    비트맵
    문자열
    복합 데이터 타입
    단일 연결 리스트
    동적 메모리 할당
    더 효율적인 메모리 할당
    가비지 컬렉션
    이중 연결 리스트
    계층적인 데이터 구조
    대용량 저장장치
    데이터베이스
    인덱스
    데이터 이동
    벡터를 사용한 I/O
    객체 지향의 함정
    정렬
    해시
    효율성과 성능
    정리

    8장. 프로그래밍 언어 처리
    ▶ 컴퓨터는 프로그램을 어떻게 해석하고 변환하는가 ◀

    어셈블리 언어
    고수준 언어
    구조적 프로그래밍
    어휘 분석
    ___상태 기계
    ___정규식
    단어에서 문장으로
    누구나 프로그래밍 언어를 만들 수 있는 시대
    파스 트리
    인터프리터
    컴파일러
    최적화
    하드웨어를 다룰 때 주의하라
    정리

    9장. 웹 브라우저
    ▶ 추상적인 컴퓨터를 이해하기 위한 가상 머신 ◀

    마크업 언어
    균일 자원 위치 지정자
    HTML 문서
    DOM: 문서 객체 모델
    ___트리 관련 용어
    ___DOM 처리
    CSS
    XML 등의 마크업 언어
    자바스크립트
    jQuery
    SVG
    HTML5
    JSON
    정리

    10장. 애플리케이션 프로그래밍과 시스템 프로그래밍
    ▶ 고수준 언어와 저수준 언어 프로그래밍 방식 비교 ◀

    동물 추측 프로그램 버전 1: HTML과 자바스크립트 프로그램
    ___애플리케이션 수준의 뼈대
    ___웹 페이지 본문
    ___자바스크립트
    ___CSS
    동물 추측 게임 버전 2: C 프로그램
    ___터미널과 명령줄
    ___프로그램 빌드
    ___터미널과 장치 드라이버
    ___문맥 전환
    ___표준 I/O
    ___원형 버퍼
    ___추상화를 활용한 코드 개선
    ___런타임 라이브러리와 표준 입출력
    ___버퍼 오버플로
    ___C 프로그램
    ___훈련
    정리

    11장. 성능 향상을 위한 알고리즘 기법
    ▶ 계산을 간소화하는 프로그래밍 트릭 ◀

    표 찾기
    ___변환
    ___텍스처 매핑
    ___문자 종류 판별
    정수를 사용한 계산 방법
    ___직선
    ___곡선 다루기
    ___다항식
    재귀적 분할
    ___나선
    ___구성적인 기하
    ___시프트와 마스크
    계산을 회피하는 그 밖의 수학적 기법들
    ___멱급수 근삿값 계산
    ___CORDIC 알고리즘
    무작위성과 관련 있는 예제들
    ___공간을 채우는 곡선
    ___L 시스템
    ___스토캐스틱 기법
    ___양자화
    정리

    12장. 병렬성과 비동기성
    ▶ 컴퓨터는 어떻게 한 번에 많은 일을 하는가 ◀

    경합 조건이란 무엇인가
    공유 자원
    프로세스와 스레드

    ___트랜잭션과 작업 크기
    ___락 대기
    ___교착 상태
    ___단기 락 구현
    ___장기 락 구현
    브라우저 자바스크립트
    비동기 함수와 프로미스
    정리

    13장. 컴퓨터 보안
    ▶ 컴퓨터는 어떻게 데이터를 안전하게 지키는가 ◀

    보안과 프라이버시 개요
    ___위협 모델
    ___신뢰
    ___물리적 보안
    ___통신 보안
    ___모던 타임즈
    ___메타데이터와 감시
    ___사회적 맥락
    ___인증과 권한부여
    크립토그래피
    ___스테가노그래피
    ___치환 암호
    ___전치 암호
    ___더 복잡한 암호
    ___일회용 패드
    ___키 교환 문제
    ___공개키 암호
    ___전방향 안전성
    ___암호학적 해시 함수
    ___디지털 서명
    ___공개키 인프라
    ___블록체인
    ___패스워드 관리
    보안을 위한 소프트웨어 예방 조치
    ___올바른 대상을 보호하라
    ___로직은 세 번 체크하라
    ___오류를 검사하라
    ___공격 표면을 최소화하라
    ___경계 내부에 머물러라
    ___좋은 난수를 생성하기는 힘들다
    ___네 코드를 알라
    ___극단적인 영리함은 여러분의 적이다
    ___눈에 보이는 것을 이해하라
    ___과다수집하지 마라
    ___모아두지 마라
    ___동적 메모리 할당은 여러분의 친구가 아니다
    ___가비지 컬렉션도 여러분의 친구가 아니다
    ___코드 역할을 하는 데이터
    정리

    14장. 세상을 바꾸는 기계 지능
    ▶ 미래를 열어가는 인공지능, 머신러닝, 빅데이터 ◀

    개요
    머신러닝
    ___베이즈
    ___가우스
    ___소벨
    ___캐니
    ___특성 추출
    ___인공 신경망
    ___머신러닝 데이터의 활용
    인공지능
    빅데이터
    정리

    15장. 훌륭한 프로그래머가 되기 위한 팁과 경험담
    ▶ 알아두면 좋은 실무 상식과 조언 ◀

    가치 제안
    소프트웨어 개발의 발자취
    ___간추린 역사
    ___오픈소스 소프트웨어
    ___크리에이티브 커먼즈
    ___이식성의 발전
    ___패키지 관리
    ___컨테이너
    ___자바
    ___노드
    ___클라우드 컴퓨팅
    ___가상 머신
    ___이동식 장치
    프로그래밍 환경
    ___초보 프로그래머도 경험을 얻는 방법
    ___추정하는 방법 배우기
    ___프로젝트 스케줄링
    ___의사결정
    ___성향이 다른 사람들과 함께 일하기
    ___직장 내 문화 다루기
    ___정보를 얻은 상태에서 선택하기
    개발 방법론
    프로젝트 설계
    ___생각을 글로 써보자
    ___빠른 프로토타이핑
    ___인터페이스 설계
    ___코드를 재활용할 것인가, 직접 작성할 것인가
    프로젝트 개발
    ___나이 든 개발자의 잡설
    ___이식성이 있는 코드
    ___소스 코드 제어
    ___테스트
    ___버그 보고와 추적
    ___리팩토링
    ___유지보수
    스타일을 지켜라
    기존 프로젝트를 활용하라
    정리

추천사

  • 세상은 빠르게 변화하고 있고 날마다 새로운 기술과 서비스들이 등장한다. 디지털 트랜스포메이션이니 4차 산업혁명이니 하는 용어들은 마치 유행어처럼 뉴스 꼭지 한 편을 차지하며 마치 이러한 시류에 편승하지 못하면 시대에 뒤처진 사람들처럼 느끼게 만들기도 한다. 모든 것이 온라인으로 옮겨지고 있으며 IT와 관련한 사업 창업이나 프로그래머 취업/전직에 모두가 관심을 가지는 시대가 되었다. 겉보기엔 모든 기술이 클라우드로 옮겨가고 기술에 대한 패러다임 자체가 바뀐 것처럼 보이지만 오늘날의 IT 기술을 지탱하는 원론적인 컴퓨터 이론이나 구조는 사실 그다지 크게 변한 것이 없다.
    이 책에서는 연륜 있는 베테랑 프로그래머가 오랜 경험을 바탕으로, 개발자와 컴퓨터공학 전공자가 반드시 알아야 할 컴퓨터의 동작 방식과 프로그래밍 언어에 대한 이야기를 한 권에 집약해서 보여준다. 이 책을 통해 독자들이 컴퓨터를 더 많이 이해하고 이를 바탕으로 더 나은 개발자와 컴퓨터공학 전공자로 성장하기를 바란다.

  • 어딘가 처음 가는 곳으로 여행을 간다면 여기저기서 여러 자료를 찾기도 하지만 우선 가이드북을 하나 챙긴다. 좋은 가이드북은 해당 나라나 지역에 대해 꽤 상세한 지도와 짧은 기간 동안 둘러보는 데 필요한 정보, 간단한 역사나 문화까지 모두 담고 있다. 그래서 가이드북을 통해서 방문하려는 여행지에 대해 전반적으로 이해하고, 이곳에서 내가 무엇을 즐길 수 있고, 필요한 것은 무엇인지를 이해할 수 있다. 그러면 더 자세히 필요한 내용이 무엇인지도 알 수 있을 것이고, 그런 내용은 여러 매체를 통해서 더 자세히 찾아볼 수 있다.
    이 책은 프로그램의 세계에 대한 좋은 가이드북이 될 수 있을 것이다. 프로그램이 컴퓨터 내에서 어떻게 작동하고 이런 것이 어떤 식으로 실제로 활용되는지를 두루두루, 하지만 꽤 상세하게 담고 있다. 컴퓨터공학에 관심이 있지만 어떻게 접근해야 할지 몰랐던 초심자에게 이 책은 전반적인 프로그램의 세계를 살펴볼 수 있는 기회가 될 것이고, 이미 오래 프로그래밍을 업으로 삼고 있지만 자신의 분야에만 익숙하거나 본질적으로 프로그램이 어떻게 돌아가는지를 잠시 잊었던 사람들은 이 책을 통해 자신이 하고 있는 것이 넓은 프로그램 세계에서 어디에 안착하고 있는지 환기할 수 있는 기회를 얻게 될 것이다.

  • 오늘날 최신 스마트폰은 물론이고 최신 노트북조차 분해하기가 매우 어렵다. 편의성과 심미성을 높이기 위해 확장성과 개방성을 다소 희생했다고 볼 수 있는데, 덕분에 내부에서 일어나는 일은 점점 더 이해하기 어려운 상황에 놓였다. 물론 이렇게 컴퓨터 하드웨어를 완전히 숨기고 심지어 운영체제를 비롯한 소프트웨어 층의 추상화 단계를 높인 덕분에, 과거에 비해 엄청나게 높은 생산성을 얻을 수 있다. 하지만 하드웨어와 소프트웨어의 접경 지대에서 성능이 떨어지거나 정상적으로 동작하지 않는 문제가 발생했을 때 레지스터 플립플롭이 반짝거리고 메모리를 덤프하는 등의 물리적인 단서가 없어졌기에, 근본 원인을 파악하는 작업은 무척 까다로워지고 말았다. 기술이 발전할수록 컴퓨터와 소프트웨어 사이의 간극은 점점 더 멀어지고 있다.
    그렇다면 요즘처럼 소프트웨어가 세상을 잡아먹는 시대에 소프트웨어 개발자가 2진법과 부동 소수점, 논리 게이트와 플립플롭을 알아야 할 이유가 있을까? 이렇게 한번 생각해보자. 컴퓨터는 계층적인 구조를 갖추고 있으므로 가장 아래 트랜지스터 수준에서 출발해서 CPU와 메모리가 구성되며, 입출력 장치가 붙으면서 컴퓨터라고 부를 수 있는 형태를 갖춘다. 그리고 이 위에서 운영체제, 웹 브라우저, 자바 가상 머신, 파이썬 인터프리터가 돌아가고, 최종적으로 온갖 종류의 애플리케이션이 일상에서 우리를 반긴다. 결국에는 층층이 쌓인 모든 구성요소가 제대로 맞물려 돌아갈 때 기능이나 성능 측면에서 훌륭한 소프트웨어가 탄생한다. 따라서 우리는 부분뿐만 아니라 큰 그림에서 바라봐야 하므로 어느 정도까지는 컴퓨터 하부에서 동작하는 기본적인 원리를 이해하고 있어야 한다.
    이 책은 소프트웨어를 지탱하는 기술을 하드웨어에서 시작해 거꾸로 거슬러 올라오면서 소프트웨어 개발에 기반이 되는 주요 지식과 팁을, 때로는 고전적으로 때로는 현대적으로 흥미를 유발하며 빠른 템포로 정리해준다. 컴퓨터 전공자라면 과거에 배운 내용을 다시 한번 되새기면서 즐거운 시간을 보낼 수 있을 것이고 비전공자라면 전공자들이 학교에서 어떤 지식을 배우는지 살펴볼 수 있는 좋은 기회가 될 것이다. 소프트웨어는 궁극적으로 비트와 바이트를 처리하는 논리적인 생각의 덩어리라는 사실을 이해하면 이 책의 내용이 훨씬 더 가슴속에 와 닿을 것이다.

  • 누구든 이 책 목차를 보면 현기증이 날 것이다. 빨리 알고 싶어서 현기증이 나거나 빨리 덮고 싶어서 현기증이 나거나. 하지만 최소한 이 책을 골라서 목차까지 펼쳐봐 놓고도 그냥 덮고 돌아선다면 나중에 이따금씩 계속 신경을 건드릴 것이다. 이런 책은 아마 다시 없을 수도 있겠다는 직감이 이미 뇌리에 박혔을 테니까.
    프로그래밍은 점점 더 추상화되고 있다. 덕분에 프로그래밍의 저변이 확대되어 개발자의 수도 많아졌고, 소프트웨어를 통해 점점 더 많은 세상사를 효율화할 수 있었으며, 소프트웨어가 세상의 중심에 우뚝 서게 됐다. 하지만 그런 소프트웨어를 만드는 개발자는 컴퓨팅의 중심에서 반대로 점점 멀어지고 있다. 개발자는 점점 더 많아지고 있으며 나도 모르는 사이에 흔한 개발자 중 한 사람이 되고 있다.
    프로그램을 그럭저럭 작성하는 것은 누구나 흔히 할 수 있는 일이지만, 프로그램을 애초부터 더 나은 방식으로 만들거나 또는 나중에 발생한 문제를 해결하고 개선하는 일은 프로그램이 컴퓨터에서 어떤 여정을 거쳐 실행되는지 아는 사람만이 할 수 있다. 그런 사람이 되고 싶다면 이 책만 한 길잡이가 없을 것이다. 컴퓨팅의 가장 기저에 있는 표현 방식과 내부 하드웨어 구조부터 시작해서 통신, 데이터 처리, 언어, 보안, 인공지능, 개발방법론에 이르기까지 이렇게 한 권에 모아볼 수 있는 책은 개발계의 규화보전이라 할 수 있겠다.
    이런 명저를 집필한 저자에게도 큰 감사와 존경을 보내지만, 이 만만치 않은 내용을 우리말로 옮기는 것만으로도 벅찬 일인데 영어로 된 유머마저도 우리말로 살려내고 원서 내용을 더 잘 이해할 수 있도록 풍부한 역자주를 달아주신 현석 님께도 깊은 감사와 경의를 표합니다.

  • 누구도 알려주지 않았던 컴퓨터 상식과 기본이 가득한 책이다. 컴퓨터가 동작하는 원리부터 시작해 소프트웨어와 하드웨어 그리고 네트워크 통신에 이르기까지 프로그래밍의 기본이 되는 지식들을 총망라한 바이블이다. 프로그래밍은 I/O(입출력)가 전부라 할 만큼 I/O의 이해와 처리 경험 및 기본 지식이 매우 중요하다. 그래서 인터뷰를 볼 때마다 이 사람은 I/O에 대해 어떻게 알고 다루는지 살펴보곤 하는데 이 책에서는 이 근간이 되는 다양한 Input과 Output을 다루고 있다. 또한, 단순 문자열부터 하드웨어 소프트웨어, 주변기기, 통신 방식 및 언어적 형태에 따른 다양한 방식으로 존재하는 I/O의 기본 원리와 처리 방식을 충실하게 설명해준다. 더불어 프로그래밍에 필요한 다양한 자료구조에 대한 설명과 알고리즘, 보안, 그래픽 처리까지 이 정도로 알려줘도 되나 싶을 만큼 저자의 모든 영혼을 쏟아부은 것 같다.
    아직 프로그래밍에 입문하기 전이거나 혹시 컴퓨터에 관심이 많은 분이라면 이 책을 강력히 추천한다. 분명 이 책을 다 본 후에는 세상이 다시 보이게 될 것이라고 감히 확신하기 때문이다. 이 외에 컴퓨터공학/과학 전공자에게도 자신의 지식을 복기하기 위한 필독서로 꼭 한 번쯤은 읽어보길 권한다.

  • 컴퓨터 분야에서 공부는 두 가지로 크게 갈린다. 하나는 항상 반짝이면서 핫한 최신 트렌드 기술 학습이고, 하나는 컴퓨터가 밑바닥부터 다시 설계되지 않는 이상 좀처럼 바뀌지 않는 기초 학습이다. 전자인 인공지능, 블록체인 등 컴퓨터뿐만 아니라 사회 전반에 영향을 미치는 최신 기술을 익히는 것은 적재적소의 기술 분야에 빠르게 대응할 기회를 포착할 수 있는 장점이 있는 반면, 이런 기술의 생명주기는 상대적으로 짧아서 한 번 배우고 나서 얼마나 오래 써먹을지는 쉽게 가늠하기 힘들다. 하지만 기본기를 익히는 후자는 다르다. 한번 익혀 놓으면 어디든 써먹을 수 있는 기초를 다질 수 있고, 빠르게 변화하는 기술 생태계의 특성상 언젠가 또 새로운 기술이 등장하더라도 자신감을 얻고 공부를 시작할 수 있는 초석이 된다.
    이 책은 밑바닥 지식을 훑어주는 주제를 다룸으로써, 바쁘게 변화하는 컴퓨터 지식의 흐름 속에서 자칫 간과하기 쉬운 기초를 튼튼하게 다져준다. 이 책에서 설명하는 모든 내용은 컴퓨터를 업으로 삼고 있는 사람이라면 한 번은 꼭 짚어야 할 지식임에 틀림없다.

  • 요즘 개발자들은 하드웨어가 어떻게 생겼는지도 모르는 클라우드 환경에서 명령어 몇 줄로 애플리케이션의 기본 코드를 생성하고, 원하는 기능을 지원하는 라이브러리와 프레임워크, 개발 도구들을 찾아 이리저리 조합한 뒤 빠르게 프로그램을 완성해서 출시하기 바쁘다. 이렇게 사용한 개발 기술의 상당수는 몇 년 뒤 유행이 지나면 버리고 새롭게 등장해 인기를 끄는 기술을 다시 학습해야 한다.
    그런데 매번 새로운 것 같은 프로그램을 만드는 최신 기술에도 깊이 살펴보면 변함없이 적용되어 있는 원리와 지식이 존재한다. 예전 인터넷, 클라우드, 오픈소스, 프레임워크 등이 없던 시절에 프로그래밍을 바닥부터 공부하기 시작했던 개발자들이라면 자연스럽게 배워왔던 컴퓨터 구조와 프로그래밍의 기초 원리들이다. 이런 내용을 한자리에 모아놓은 책이 있다니 무척이나 반갑다.
    어린 시절부터 혹은 전공 과정에서 이런 내용을 배워왔던 개발자라면 이 책을 읽으면서 잊고 지냈던 많은 추억이 떠오를 것이다. 처음부터 바로 웹이나 앱 개발로 시작한 젊은 개발자들이라면 뭘 이런 걸 다 알아야 하나 싶기도 할 텐데, 이런 밑바닥 지식이 개발자를 종종 괴롭히는 문제를 해결하는 데 중요한 실마리를 제공해주기도 하니 흥미를 가지고 읽어보자.

  • 언젠가부터 조금만 긴 글에도 TL; DR 딱지와 함께 독자를 놓치기 싫은 글쓴이의 몇 줄 요약이 붙어 있다. 세상이 점점 빠르게 돌아가면서 뭐 하나를 진득하니 붙들기가 점점 어려워지고 머리에 넣는 지식도 당장 써먹을 수 있는 기능 위주로 익히는 추세다.
    이런 시기에 이 책의 저자는 고집스럽게도 프로그래밍을 잘하려면 컴퓨터와 프로그램이 어떻게 움직이는지 알아야 한다며 전자공학 전공자들이나 배울 법한 전기회로 그림을 눈앞에 디민다. 필요에 의해 급하게 코딩을 배우는, 단순한 프로그래밍 기법 위주 스타일의 도서들과 10분 내외 의 유튜브 강의에 익숙한 독자라면 ‘이제 비로소 쓸 만한 게 나오려나’ 싶겠지만 항로는 사회로 방향을 틀어 소프트웨어 개발의 역사와 직장 내 문화까지 흘러간다. 저자는 코딩 교육 열풍의 이면에는 ‘질 낮은 프로그래머를 회사에 많이 공급함으로써 프로그래머의 급여 수준을 낮추고 회사의 이익을 증가시키려는 목적’이 있다고 진단한다. 따라서 이 덫에 빠지지 않으려면 우리 스스로 문제를 정의할 줄 알아야 하고 문제를 효율적으로 풀 줄 알아야 하는데, 그러려면 컴퓨터가 돌아가는 방식을 이해해야 한다고 역설한다.
    바다에 빠졌을 때 헤엄쳐 나올 수 있는 사람은 커다란 배를 타고 세계를 일주한 사람이 아니라 맨몸으로 자맥질을 해본 사람이고, 지도에 없는 보물섬을 찾을 수 있는 사람은 GPS가 안내하는 길로만 다닌 사람이 아니라 지도를 보고 빈 곳을 궁금해 찾아가 보고, 가끔은 허탕도 치면서 지도에 없는 배움을 몸으로 익힌 사람이다.
    컴퓨터공학이나 전자공학 전공자라면 이미 교과과정을 통해 이 책의 내용을 충실히 배웠을 것이다. 하지만 나처럼 필요에 의해 맨몸으로 시작한 사람이라면 처음 보는 개념이 낯설게 다가올 수도 있겠으나 얼마든지 충분히 소화할 수 있다. 나와 같은 타 전공자라도 이 책을 덮을 때쯤엔 새로 들어간 해역에 용감히 잠수해보는 용기가 샘솟기를 바란다.

출판사 서평

대부분의 개발자들은 자신이 만든 프로그램을 움직이는 하부 기술에 대해 잘 알지 못한다. 코드가 잘 도는데 구태여 근원적인 하부 기술에 신경을 써야 할까? 그렇다. 하부 기술을 밑바닥부터 이해하면, 프로그램이 잘 작동하게 만들 수 있고 찾기 어려운 버그에 당황하지 않게 된다. 자신이 작성한 코드가 보안 문제로 인해 9시 뉴스에 나오기를 원하는 사람은 없을 것이다.
수많은 기술에 대한 상세 자료가 이미 온라인에 존재한다. 하지만 대부분 이런 자료들은 잘 정리되어 있지 않으며, 한꺼번에 정리해 모아둔 곳을 찾기도 어렵다.
백전노장 엔지니어인 조너선 스타인하트가 쓴 이 책은 컴퓨터의 토대가 되는 개념을 밀도 있게 탐구한다. 또한 컴퓨터 하드웨어의 내부 구조는 물론, 하드웨어 위에서 소프트웨어가 작동하는 원리, 그리고 소프트웨어 기술 발전과 함께 역사 속에서 사람들은 기술을 사용해 어떻게 문제를 풀어왔는지 등의 다양하고도 심도 있는 내용을 다룬다.
저자는 컴퓨터라는 기계에서 프로그램 코드가 실행될 때 벌어지는지 일들에 대해 여러분이 미처 몰랐던, 혹은 잊었던 이야기들을 들려준다. 더 나은 소프트웨어와 효율적인 코드를 작성하는 법을 깨우치는 데 필요한 탄탄한 기초를 다질 수 있는 책이다.

| 이 책에서 다루는 내용 |
● 실제 세계를 컴퓨터가 이해할 수 있는 형태인 비트, 논리, 숫자, 텍스트, 색 등으로 변환하는 원리와 방법
● 논리 게이트, 가산기, 디코더, 레지스터, 메모리 등 컴퓨터를 이루는 기본 블록
● 성능 향상의 관점에서 컴퓨터 하드웨어, 특히 메모리를 고려해 프로그램을 설계해야 하는 이유
● 프로그램이 컴퓨터가 이해할 수 있는 기계어로 변환되는 과정
● 소프트웨어 구성 요소를 조합해 웹 브라우저 같은 프로그램을 만드는 방법
● 루프 불변 조건, 강도 감소, 재귀적 분할 등, 프로그램을 더 효율적으로 만들기 위한 알고리즘과 프로그래밍 트릭
● 컴퓨터 보안과 인공지능, 머신러닝, 빅데이터의 이해
● 프로젝트 설계, 문서화, 스케줄링, 이식성, 유지보수 등 현장에서 벌어지는 프로그래밍 실무에 관한 경험담과 조언

| 이 책의 구성 |
이 책은 개념적으로 세 부분으로 나뉜다. 첫 번째 부분은 컴퓨터 하드웨어를 탐구한다. 하드웨어가 무엇이고 하드웨어를 어떻게 만드는지 살펴본다. 두 번째 부분은 하드웨어에서 소프트웨어가 어떻게 작동하는지 살펴본다. 마지막 부분은 프로그래밍 기술, 즉 다른 사람들과 협력해 더 나은 프로그램을 만드는 방법에 대한 것이다.

1장, “컴퓨터 내부의 언어 체계”
1장은 3살짜리 아이의 마음을 탐구하는 것부터 시작한다. 컴퓨터는 비트(bit)를 가지고 노는 기계다. 컴퓨터는 비트를 모아서 먹고 산다. 여러분은 비트가 무엇인지 배우고 비트로 무엇을 할 수 있는지에 대해 배운다. 우리는 비트나 비트 모음에 의미를 부여하기 위해 ‘있다고 치고’ 놀이를 할 것이다.

2장, “전자 회로의 조합 논리”
이번 장은 숫자 대신 비트를 사용하는 게 합리적인 이유를 보여주고, 이 합리성을 디지털 컴퓨터에서 찾아본다. 이 과정에서 요즘 우리가 사용 중인 기술에 이르는 길을 만들어준 오래된 기술을 살펴본다. 2장에서는 조합 논리의 기본을 설명하고, 더 복잡한 기능을 비트와 논리를 사용해 만드는 방법을 배운다.

3장, “메모리와 디스크의 핵심: 순차 논리”
여기서는 논리를 사용해 메모리를 만드는 방법을 배운다. 그리고 메모리는 시간이 지나도 유지되는 상태에 불과하므로, 어떻게 시간을 생성하는지 살펴본다. 3장에서는 순차 논리의 기본을 설명하고, 여러 가지 메모리 기술에 대해 논의한다.

4장, “컴퓨터 내부 구조”
이 장은 앞에서 소개한 논리와 메모리를 사용해 컴퓨터를 구성하는 방법을 보여준다. 여러 가지 구현 방법론을 살펴본다.

5장, “컴퓨터 아키텍처와 운영체제”
5장에서는 4장에서 살펴본 기본 컴퓨터에 몇 가지 장치를 추가한다. 필수적인 기능과 효율성을 어떻게 컴퓨터에 제공할 수 있는지 배운다.

6장, “입출력과 네트워킹”
컴퓨터는 바깥 세상과 상호작용할 필요가 있다. 6장에서는 입력과 출력(I/O)을 다룬다. 그리고 디지털과 아날로그의 차이를 살펴보고, 어떻게 디지털인 컴퓨터가 아날로그인 세상과 함께 일할 수 있는지 알아본다.

7장, “데이터 구조와 처리”
이제 컴퓨터의 동작을 배웠으므로, 컴퓨터를 더 효율적으로 사용하는 방법을 배워야 한다. 컴퓨터 프로그램은 메모리에 있는 데이터를 조작한다. 따라서 해결하려는 문제에 따라 프로그램이 메모리를 사용하는 방식을 적절히 매핑하는 것이 중요하다.

8장, “프로그래밍 언어 처리”
사람들이 컴퓨터를 더 쉽게 프로그램하기 위해 언어를 발명했다. 8장에서는 언어를 컴퓨터가 실제로 실행할 수 있는 어떤 것으로 변환하는 과정을 보여준다.

9장, “웹 브라우저”
웹 브라우저에서 사용하기 위한 프로그램이 많이 작성된다. 9장에서는 웹 브라우저가 어떻게 작동하는지 살펴보고, 웹 브라우저를 이루는 주요 구성요소에 대해 알아본다.

10장, “애플리케이션 프로그래밍과 시스템 프로그래밍”
애플리케이션 계층과 시스템 계층에서 실행되는 두 가지 버전의 프로그램을 작성하며, 애플리케이션과 시스템 수준 프로그래밍의 여러 가지 차이점을 보여준다.

11장, “성능 향상을 위한 알고리즘 기법”
프로그램을 효율적으로 만드는 것이 중요하다. 11장에서는 프로그램이 불필요한 작업을 하지 않게 해서 프로그램을 더 효율적으로 만들고 성능을 향상하는 방법을 살펴본다.

12장, “병렬성과 비동기성”
하나 이상의 컴퓨터가 들어 있는 시스템이 아주 많다. 12장에서는 여러 컴퓨터가 서로 협력하면서 문제를 해결하려고 하는 경우에 생기는 여러 가지 문제를 살펴본다.

13장, “컴퓨터 보안”
컴퓨터 보안은 고급 주제다. 13장에서는 보안의 기본을 소개하면서 보안에 필요한 고급 수학을 잠깐 시도해본다.

14장, “세상을 바꾸는 기계 지능”
14장도 고급 주제를 다룬다. 빅데이터, 인공지능, 머신러닝을 조합한 결과로 나타난 새로운 응용에 대해(자율주행부터 광고로 여러분을 미치게 하는 방법에 이르기까지) 다룬다.

15장, “훌륭한 프로그래머가 되기 위한 팁과 경험담”
프로그래밍은 아주 체계적이고 논리적인 과정이다. 하지만 프로그램을 왜 하고 어떻게 할지 결정할 때 사람이 연관되는데, 사람은 논리가 부족할 때가 자주 있다. 15장은 실제 세계에서 프로그래밍을 할 때 생기는 문제 중 일부를 다룬다.

| 이 책의 독자 대상 |
이 책은 좋은 프로그래머가 되고 싶은 사람을 위한 책이다. 좋은 프로그래머는 어떤 프로그래머일까? 첫 번째이자 가장 중요한 것으로, 좋은 프로그래머는 좋은 비판적 사고와 분석 기술을 지녀야 한다. 복잡한 문제를 해결하기 위해 프로그래머는 프로그램이 올바른 문제를 제대로 해결하는지 판단할 능력을 갖춰야 한다. 이는 생각보다 어렵다. 경험이 많은 프로그래머가 다른 사람의 코드를 보고 짜증을 내면서 “아이고, 이 프로그램은 별다르지 않은 간단한 문제에 대해 정답도 아닌 복잡한 해법을 구현해놓은 것뿐이네요.”라는 주석을 다는 경우도 드물지 않다.
마법사가 사물의 진짜 이름을 배우면서 점점 사물을 지배하는 힘을 얻는 고전적인 판타지에 익숙할 것이다. 세부 사항을 잊어버리는 마법사에게 화가 미칠진저! 좋은 프로그래머는 이런 마법사처럼 사물의 핵심을 파악하면서 세부 사항을 잊어버리지 않는 사람이다.
좋은 프로그래머는 마치 숙련된 장인처럼 예술성을 갖추기도 한다. 마치 영어 원어민들에게도 난해하기로 소문난 제임스 조이스의 소설 『피네간의 경야』 영어 원문처럼 전혀 해독할 수 없는 코드를 보게 되는 경우도 드물지 않다.
모름지기 좋은 프로그래머란 작동할 뿐만 아니라 다른 사람들이 이해하고 유지보수하기 쉬운 코드를 작성한다.
마지막으로, 좋은 프로그래머는 컴퓨터 작동을 잘 이해해야 한다. 기반 지식이 얕으면 복잡한 문제를 잘 풀 수 없다. 이 책은 프로그래밍을 배우고 있지만 깊이 부족으로 인해 불만족스러워 하는 사람을 위한 책이다. 그리고 이미 프로그래밍을 배웠지만 프로그래밍과 컴퓨터에 대해 더 잘 알고 싶어 하는 사람을 위한 책이기도 하다.

[옮긴이의 글]
누구나 프로그래머가 될 수 있지만 누구나 좋은 프로그래머가 될 수 있는 것은 아니다. 자동차를 잘 운전하기 위해 꼭 차를 조립할 수 있어야 하는 것은 아니지만, 최상위 클래스 F1 드라이버가 되려면 드라이빙에 필요한 신체나 정신적인 능력은 물론 레이스에 적합하게 차를 설정하기 위한 다양한 공학적 지식도 필요한 것처럼, 좋은 프로그래머가 되기 위해서는 도메인 지식은 물론 컴퓨터의 동작 원리나 컴퓨터공학 전반에 대해 잘 이해할 필요가 있다.
운이 좋게도 나를 포함한 40대 이상 개발자들은 자라나면서 자연스럽게 컴퓨터 산업의 발달 과정에 맞춰 기술의 지평을 넓힐 수 있었지만, 요즘 컴퓨터에 입문하는 사람들은 지식 생산 속도나 프레임워크와 프로그래밍 언어 변화가 너무나 빨라서 실무에 사용하는 프레임워크와 프로그래밍 언어의 변화나 새로운 기술 트렌드를 좇아가기도 힘들다. 하지만 그렇다고 근본적인 컴퓨터공학에 대한 공부를 포기해서는 안 된다. 컴퓨터가 어떻게 작동하고 프로그래밍의 기초 원리가 무엇인지 이해하면, 직접 작성한 프로그램이 잘 작동하지 않을 때 조금 더 쉽게 문제를 해결할 수 있으며 새로운 기술을 배우고 익힐 때도 훨씬 더 수월할 수 있다.
누군가 좋은 스승이 있어서 하드웨어, 소프트웨어 등의 여러 내용을 잘 알려준다면 가장 좋겠지만, 쉽게 기초를 설명해주면서 컴퓨터공학에 대한 지식을 넓혀나갈 토대를 마련해줄 수 있는 책을 통해 컴퓨터 전반을 이해하는 것도 그에 못지않게 좋은 방법이다.
이 책은 저자가 자원봉사로 학생들을 가르치며 다뤘던 내용을 정리한 책이다. 하드웨어의 토대가 되는 기초 전자회로, 게이트로부터 시작해서 메모리, CPU, I/O, 컴퓨터 아키텍처 전반을 설명하고, 그 위에서 소프트웨어를 작성하는 방법을 웹과 C 프로그램을 통해 맛보여주며, 보안, 인공지능, 알고리즘 등의 내용까지 거의 모든 것을 다루는 컴퓨터공학 개론서라 할 수 있다. 이 책을 쭉 훑어보면서 컴퓨터공학에 대해 전체적으로 감을 잡고, 각 분야를 좀 더 자세히 다룬 책이 나 인터넷 강의 등을 찾아보면서 지식을 넓히는 작업을 꾸준히 하면 어느 순간 내공이 쌓이고 좋은 프로그래머가 된 자기 자신을 발견하게 될 것이다. 아무쪼록 컴퓨터에 관심을 가지는 일반 독자나, 컴퓨터공학을 간략히 살펴보고 싶은 개발자 동료들에게 이 책이 도움이 되길 바란다.
- 호주 브리즈번에서, 오현석

기본정보

상품정보
ISBN 9791189909284 ( 1189909286 )
발행(출시)일자 2021년 04월 08일
쪽수 636쪽
크기
183 * 238 * 38 mm / 1131 g
총권수 1권
원서명/저자명 The Secret Life of Programs/Steinhart, Jonathan E.

Klover

Klover 리뷰 안내
교보를 애용해 주시는 고객님들이 남겨주신 평점과 감상을 바탕으로, 다양한 정보를 전달하는 교보문고의 리뷰 서비스입니다.
리워드 안내
구매 후 90일 이내에 평점과 10자 이상의 리뷰 작성 시 e교환권 200원을 적립해 드립니다.
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
판매가 1,000원 미만 도서의 경우 리워드 지급 대상에서 제외됩니다.
한달 후 리뷰
구매 후 30일~ 120일 이내에 작성된 두 번째 구매리뷰에 대해 한 달 후 리뷰로 인지하고 e교환권 100원을 추가 제공합니다.
운영 원칙 안내
Klover 리뷰를 통한 리뷰를 작성해 주셔서 감사합니다. 자유로운 의사 표현의 공간인 만큼 타인에 대한 배려를 부탁합니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
  • 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
  • 도서와 무관한 내용의 리뷰
  • 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
  • 의성어나 의태어 등 내용의 의미가 없는 리뷰

리뷰는 1인이 중복으로 작성하실 수는 있지만, 평점계산은 가장 최근에 남긴 1건의 리뷰만 반영됩니다.
신고하기
다른 고객이 작성리뷰에 대해 불쾌함을 느끼는 경우 신고를 할 수 있으며, 신고 자가 일정수준 이상 누적되면 작성하신 리뷰가 노출되지 않을 수 있습니다.

구매 후 리뷰 작성 시, e교환권 200원 적립

문장수집

문장수집 안내
문장수집은 고객님들이 직접 선정한 책의 좋은 문장을 보여주는 교보문고의 새로운 서비스입니다. 마음을 두드린 문장들을 기록하고 좋은 글귀들은 "좋아요“ 하여 모아보세요. 도서 문장과 무관한 내용 등록 시 별도 통보 없이 삭제될 수 있습니다.
리워드 안내
구매 후 90일 이내에 문장수집 작성 시 e교환권 100원을 적립해드립니다.
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.

구매 후 리뷰 작성 시, e교환권 100원 적립

이 책의 첫 기록을 남겨주세요

교환/반품/품절 안내

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

이벤트
TOP

저자 모두보기

매장별 재고 및 위치

할인쿠폰 다운로드

  • 쿠폰은 주문결제화면에서 사용 가능합니다.
  • 다운로드한 쿠폰은 마이 > 혜택/포인트 에서 확인 가능합니다.
  • 도서정가제 적용 대상 상품에 대해서는 정가의 10%까지 쿠폰 할인이 가능합니다.
  • 도서정가제 적용 대상 상품에 10% 할인이 되었다면, 해당 상품에는 사용하실 수
    없습니다.

적립예정포인트 안내

  • 통합포인트 안내

    • 통합포인트는 교보문고(인터넷, 매장), 핫트랙스(인터넷, 매장), 모바일 교보문고 등 다양한 곳에서 사용하실 수 있습니다.
    • 상품 주문 시, 해당 상품의 적립률에 따라 적립 예정 포인트가 자동 합산되고 주문하신 상품이 발송완료 된 후에 자동으로 적립됩니다.
    • 단, 쿠폰 및 마일리지, 통합포인트, e교환권 사용 시 적립 예정 통합포인트가 변동될 수 있으며 주문취소나 반품시에는 적립된 통합포인트가 다시 차감됩니다.
  • 통합포인트 적립 안내

    • 통합포인트는 도서정가제 범위 내에서 적용됩니다.
    • 추가적립 및 회원 혜택은 도서정가제 대상상품(국내도서, eBook등)으로만 주문시는 해당되지 않습니다.
  • 기본적립) 상품별 적립금액

    • 온라인교보문고에서 상품 구매시 상품의 적립률에 따라 적립됩니다.
    • 단 도서정가제 적용 대상인 국내도서,eBook은 15%내에서 할인율을 제외한 금액내로 적립됩니다.
  • 추가적립) 5만원 이상 구매시 통합포인트 2천원 추가적립

    • 5만원 이상 구매시 통합포인트 2천원 적립됩니다.
    • 도서정가제 예외상품(외서,음반,DVD,잡지(일부),기프트) 2천원 이상 포함시 적립 가능합니다.
    • 주문하신 상품이 전체 품절인 경우 적립되지 않습니다.
  • 회원혜택) 3만원이상 구매시 회원등급별 2~4% 추가적립

    • 회원등급이 플래티넘, 골드, 실버 등급의 경우 추가적립 됩니다.
    • 추가적립은 실결제액 기준(쿠폰 및 마일리지, 통합포인트, e교환권 사용액 제외) 3만원 이상일 경우 적립됩니다.
    • 주문 후 취소,반품분의 통합포인트는 단품별로 회수되며, 반품으로 인해 결제잔액이 3만원 미만으로 변경될 경우 추가 통합포인트는 전액 회수될 수 있습니다.

제휴 포인트 안내

제휴 포인트 사용

  • OK CASHBAG 10원 단위사용 (사용금액 제한없음)
  • GS&POINT 최대 10만 원 사용
더보기

구매방법 별 배송안내

배송 일정 안내

  • 출고 예정일은 주문상품의 결제(입금)가 확인되는 날 기준으로 상품을 준비하여 상품 포장 후 교보문고 물류센터에서 택배사로 전달하게 되는 예상 일자입니다.
  • 도착 예정일은 출고 예정일에서 택배사의 배송일 (약1~2일)이 더해진 날이며 연휴 및 토, 일, 공휴일을 제외한 근무일 기준입니다.
배송 일정 안내
출고예정일 도착예정일
1일이내 상품주문 후 2~3일 이내
2일이내 상품주문 후 3~4일 이내
3일이내 상품주문 후 4~5일 이내
4일이내 상품주문 후 5~6일 이내

연휴 및 토, 일, 공휴일은 제외됩니다.

당일배송 유의사항

  • 수도권 외 지역에서 선물포장하기 또는 사은품을 포함하여 주문할 경우 당일배송 불가
  • 회사에서 수령할 경우 당일배송 불가 (퇴근시간 이후 도착 또는 익일 배송 될 수 있음)
  • 무통장입금 주문 후 당일 배송 가능 시간 이후 입금된 경우 당일 배송 불가
  • 주문 후 배송지 변경 시 변경된 배송지에 따라 익일 배송될 수 있습니다.
  • 수도권 외 지역의 경우 효율적인 배송을 위해 각 지역 매장에서 택배를 발송하므로, 주문 시의 부록과 상이할 수 있습니다.
  • 각 지역 매장에서 재고 부족 시 재고 확보를 위해 당일 배송이 불가할 수 있습니다.

일반배송 시 유의사항

  • 날씨나 택배사의 사정에 따라 배송이 지연될 수 있습니다.
  • 수도권 외 지역 바로배송 서비스의 경우 경품 수령 선택 여부에 따라 도착 예정일이 변경됩니다.
  • 출고 예정일이 5일 이상인 상품의 경우(결제일로부터 7일 동안 미입고), 출판사 / 유통사 사정으로 품/절판 되어 구입이 어려울 수 있습니다. 이 경우 SMS, 메일로 알려드립니다.
  • 선물포장 주문 시 합배송 처리되며, 일부상품 품절 시 도착 예정일이 늦어질 수 있습니다.
  • 분철상품 주문 시 분철 작업으로 인해 기존 도착 예정일에 2일 정도 추가되며, 당일 배송, 해외 배송이 불가합니다.

해외주문 시 유의사항

  • 해외주문도서는 해외 거래처 사정에 의해 품절/지연될 수 있습니다.

Special order 주문 시 유의사항

  • 스페셜오더 도서나 일서 해외 주문 도서와 함께 주문 시 배송일이 이에 맞추어 지연되오니, 이점 유의해 주시기 바랍니다.

바로드림존에서 받기

  1. STEP 01
    매장 선택 후 바로드림 주문
  2. STEP 02
    준비완료 알림 시 매장 방문하기
  3. STEP 03
    바로드림존에서 주문상품 받기
  • 바로드림은 전국 교보문고 매장 및 교내서점에서 이용 가능합니다.
  • 잡지 및 일부 도서는 바로드림 이용이 불가합니다.
  • 각 매장 운영시간에 따라 바로드림 이용 시간이 달라질 수 있습니다.

수령 안내

  • 안내되는 재고수량은 서비스 운영 목적에 따라 상이할 수 있으므로 해당 매장에 문의해주시기 바랍니다.
  • 바로드림 주문 후 재고가 실시간 변동되어, 수령 예상 시간에 수령이 어려울 수 있습니다.

취소/교환/반품 안내

  • 주문 후 7일간 찾아가지 않으시면, 자동으로 결제가 취소됩니다.
  • 취소된 금액은 결제수단의 승인취소 및 예치금으로 전환됩니다.
  • 교환/반품은 수령하신 매장에서만 가능합니다.

사은품 관련 안내

  • 바로드림 서비스는 일부 1+1 도서, 경품, 사은품 등이 포함 되지 않습니다.

음반/DVD 바로드림시 유의사항

  • 음반/DVD 상품은 바로드림 주문 후 수령점 변경이 불가합니다. 주문 전 수령점을 꼭 확인해 주세요.
  • 사은품(포스터,엽서 등)은 증정되지 않습니다.
  • 커버이미지 랜덤발매 음반은 버전 선택이 불가합니다.
  • 광화문점,강남점,대구점,영등포점,잠실점은 [직접 찾아 바로드림존 가기], [바로드림존에서 받기] 로 주문시 음반 코너에서 수령확인이 가능합니다
  • 선물 받는 분의 휴대폰번호만 입력하신 후 결제하시면 받는 분 휴대폰으로 선물번호가 전달됩니다.
  • 문자를 받은 분께서는 마이 > 주문관리 > 모바일 선물내역 화면에서 선물번호와 배송지 정보를 입력하시면 선물주문이 완료되어 상품준비 및 배송이 진행됩니다.
  • 선물하기 결제하신 후 14일까지 받는 분이 선물번호를 등록하지 않으실 경우 주문은 자동취소 됩니다.
  • 또한 배송 전 상품이 품절 / 절판 될 경우 주문은 자동취소 됩니다.

바로드림 서비스 안내

  1. STEP 01
    매장 선택 후 바로드림 주문
  2. STEP 02
    준비완료 알림 시 매장 방문하기
  3. STEP 03
    바로드림존에서 주문상품 받기
  • 바로드림은 전국 교보문고 매장 및 교내서점에서 이용 가능합니다.
  • 잡지 및 일부 도서는 바로드림 이용이 불가합니다.
  • 각 매장 운영시간에 따라 바로드림 이용 시간이 달라질 수 있습니다.

수령 안내

  • 안내되는 재고수량은 서비스 운영 목적에 따라 상이할 수 있으므로 해당 매장에 문의해주시기 바랍니다.
  • 바로드림 주문 후 재고가 실시간 변동되어, 수령 예상시간에 수령이 어려울 수 있습니다.

취소/교환/반품 안내

  • 주문 후 7일간 찾아가지 않으시면, 자동으로 결제가 취소됩니다.
  • 취소된 금액은 결제수단의 승인취소 및 예치금으로 전환됩니다.
  • 교환/반품은 수령하신 매장에서만 가능합니다.

사은품 관련 안내

  • 바로드림 서비스는 일부 1+1 도서, 경품, 사은품 등이 포함되지 않습니다.

음반/DVD 바로드림시 유의사항

  • 음반/DVD 상품은 바로드림 주문 후 수령점 변경이 불가합니다. 주문 전 수령점을 꼭 확인해주세요.
  • 사은품(포스터,엽서 등)은 증정되지 않습니다.
  • 커버이미지 랜덤발매 음반은 버전 선택이 불가합니다.
  • 광화문점,강남점,대구점,영등포점,잠실점은 [직접 찾아 바로드림존 가기], [바로드림존에서 받기] 로 주문시 음반코너에서 수령확인이 가능합니다.
  1. STEP 01
    픽업박스에서 찾기 주문
  2. STEP 02
    도서준비완료 후 휴대폰으로 인증번호 전송
  3. STEP 03
    매장 방문하여 픽업박스에서 인증번호 입력 후 도서 픽업
  • 바로드림은 전국 교보문고 매장 및 교내서점에서 이용 가능합니다.
  • 잡지 및 일부 도서는 바로드림 이용이 불가합니다.
  • 각 매장 운영시간에 따라 바로드림 이용 시간이 달라질 수 있습니다.

수령 안내

  • 안내되는 재고수량은 서비스 운영 목적에 따라 상이할 수 있으므로 해당 매장에 문의해주시기 바랍니다.
  • 바로드림 주문 후 재고가 실시간 변동되어, 수령 예상시간에 수령이 어려울 수 있습니다.

취소/교환/반품 안내

  • 주문 후 7일간 찾아가지 않으시면, 자동으로 결제가 취소됩니다.
  • 취소된 금액은 결제수단의 승인취소 및 예치금으로 전환됩니다.
  • 교환/반품은 수령하신 매장에서만 가능합니다.

사은품 관련 안내

  • 바로드림 서비스는 일부 1+1 도서, 경품, 사은품 등이 포함되지 않습니다.

음반/DVD 바로드림시 유의사항

  • 음반/DVD 상품은 바로드림 주문 후 수령점 변경이 불가합니다. 주문 전 수령점을 꼭 확인해주세요.
  • 사은품(포스터,엽서 등)은 증정되지 않습니다.
  • 커버이미지 랜덤발매 음반은 버전 선택이 불가합니다.
  • 광화문점,강남점,대구점,영등포점,잠실점은 [직접 찾아 바로드림존 가기], [바로드림존에서 받기] 로 주문시 음반코너에서 수령확인이 가능합니다.

도서 소득공제 안내

  • 도서 소득공제란?

    • 2018년 7월 1일 부터 근로소득자가 신용카드 등으로 도서구입 및 공연을 관람하기 위해 사용한 금액이 추가 공제됩니다. (추가 공제한도 100만원까지 인정)
      • 총 급여 7,000만 원 이하 근로소득자 중 신용카드, 직불카드 등 사용액이 총급여의 25%가 넘는 사람에게 적용
      • 현재 ‘신용카드 등 사용금액’의 소득 공제한도는 300만 원이고 신용카드사용액의 공제율은 15%이지만, 도서·공연 사용분은 추가로 100만 원의 소득 공제한도가 인정되고 공제율은 30%로 적용
      • 시행시기 이후 도서·공연 사용액에 대해서는 “2018년 귀속 근로소득 연말 정산”시기(19.1.15~)에 국세청 홈택스 연말정산간소화 서비스 제공
  • 도서 소득공제 대상

    • 도서(내서,외서,해외주문도서), eBook(구매)
    • 도서 소득공제 대상 상품에 수반되는 국내 배송비 (해외 배송비 제외)
      • 제외상품 : 잡지 등 정기 간행물, 음반, DVD, 기프트, eBook(대여,학술논문), 사은품, 선물포장, 책 그리고 꽃
      • 상품정보의 “소득공제” 표기를 참고하시기 바랍니다.
  • 도서 소득공제 가능 결제수단

    • 카드결제 : 신용카드(개인카드에 한함)
    • 현금결제 : 예치금, 교보e캐시(충전에한함), 해피머니상품권, 컬쳐캐쉬, 기프트 카드, 실시간계좌이체, 온라인입금
    • 간편결제 : 교보페이, 네이버페이, 삼성페이, 카카오페이, PAYCO, 토스, CHAI
      • 현금결제는 현금영수증을 개인소득공제용으로 신청 시에만 도서 소득공제 됩니다.
      • 교보e캐시 도서 소득공제 금액은 교보eBook > e캐시 > 충전/사용내역에서 확인 가능합니다.
      • SKpay, 휴대폰 결제, 교보캐시는 도서 소득공제 불가
  • 부분 취소 안내

    • 대상상품+제외상품을 주문하여 신용카드 "2회 결제하기"를 선택 한 경우, 부분취소/반품 시 예치금으로 환원됩니다.

      신용카드 결제 후 예치금으로 환원 된 경우 승인취소 되지 않습니다.

  • 도서 소득공제 불가 안내

    • 법인카드로 결제 한 경우
    • 현금영수증을 사업자증빙용으로 신청 한 경우
    • 분철신청시 발생되는 분철비용

알림 신청

아래의 알림 신청 시 원하시는 소식을 받아 보실 수 있습니다.
알림신청 취소는 마이룸 > 알림신청내역에서 가능합니다.

한 권으로 읽는 컴퓨터 구조와 프로그래밍
더 나은 소프트웨어 개발을 위한 하드웨어 | 자료구조, 필수 알고리즘 등 프로그래머의 비밀 노트
한달 후 리뷰
/ 좋았어요
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 올해 주식 투자를 시작했다. 아무것도 모르고 초심자의 행운으로 분유값 정도를 벌고 나니, 조금 더 공부해보고 싶어져서 『초격차 투자법』을 구매했다.
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 구매했어요! 저도 공부하고 싶어서 구매했어요~ 다같이 완독 도전해봐요! :)
기대가됩니다~
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 구매했어요! 저도 공부하고 싶어서 구매했어요~ 다같이 완독 도전해봐요! :)
기대가됩니다~
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 구매했어요! 저도 공부하고 싶어서 구매했어요~ 다같이 완독 도전해봐요! :)
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 구매했어요! 저도 공부하고 싶어서 구매했어요~ 다같이 완독 도전해봐요! :)
기대가됩니다~
기대가됩니다~
기대가됩니다~
기대가됩니다~
이 구매자의 첫 리뷰 보기
/ 좋았어요
하루밤 사이 책한권을 읽은게 처음이듯 하다. 저녁나절 책을 집어든게 잘못이다. 마치 게임에 빠진 아이처럼 잠을 잘수없게 만든다. 결말이 어쩌면 당연해보이는 듯 하여도 헤어나올수 없는 긴박함이 있다. 조만간 영화화되어지지 않을까 예견해 본다. 책한권으로 등의 근육들이 오그라진 느낌에 아직도 느껴진다. 하루밤 사이 책한권을 읽은게 처음이듯 하다. 저녁나절 책을 집어든게 잘못이다. 마치 게임에 빠진 아이 처럼 잠을 잘수없게 만든다. 결말이 어쩌면 당연해보이는 듯 하여도 헤어나올수 없는 긴박함이 있다. 조만간 영화화되어지지 않을까..
작년까지만 해도 주식은 커녕 재테크에 관해 아무것도 모르다가 구매했어요! 저도 공부하고 싶어서 구매했어요~ 다같이 완독 도전해봐요! :)
기대가됩니다~
신고

신고 사유를 선택해주세요.
신고 내용은 이용약관 및 정책에 의해 처리됩니다.

허위 신고일 경우, 신고자의 서비스 활동이 제한될 수 있으니 유의하시어
신중하게 신고해주세요.

판형알림

  • A3 [297×420mm]
  • A4 [210×297mm]
  • A5 [148×210mm]
  • A6 [105×148mm]
  • B4 [257×364mm]
  • B5 [182×257mm]
  • B6 [128×182mm]
  • 8C [8절]
  • 기타 [가로×세로]
EBS X 교보문고 고객님을 위한 5,000원 열공 혜택!
자세히 보기