홈 > 부모님 > 부모님 > 소설,일반 > 컴퓨터,모바일
프로그램은 어떻게 작동하는가  이미지

프로그램은 어떻게 작동하는가
문과생도 쉽게 배우는 컴퓨터 프로그램 작동 메커니즘
보누스 | 부모님 | 2025.11.05
  • 정가
  • 23,000원
  • 판매가
  • 20,700원 (10% 할인)
  • S포인트
  • 1,150P (5% 적립)
  • 상세정보
  • 17.2x23.5 | 0.562Kg | 296p
  • ISBN
  • 9788964947708
  • 배송비
  • 2만원 이상 구매시 무료배송 (제주 5만원 이상) ?
    배송비 안내
    전집 구매시
    주문하신 상품의 전집이 있는 경우 무료배송입니다.(전집 구매 또는 전집 + 단품 구매 시)
    단품(단행본, DVD, 음반, 완구) 구매시
    2만원 이상 구매시 무료배송이며, 2만원 미만일 경우 2,000원의 배송비가 부과됩니다.(제주도는 5만원이상 무료배송)
    무료배송으로 표기된 상품
    무료배송으로 표기된 상품일 경우 구매금액과 무관하게 무료 배송입니다.(도서, 산간지역 및 제주도는 제외)
  • 출고일
  • 1~2일 안에 출고됩니다. (영업일 기준) ?
    출고일 안내
    출고일 이란
    출고일은 주문하신 상품이 밀크북 물류센터 또는 해당업체에서 포장을 완료하고 고객님의 배송지로 발송하는 날짜이며, 재고의 여유가 충분할 경우 단축될 수 있습니다.
    당일 출고 기준
    재고가 있는 상품에 한하여 평일 오후3시 이전에 결제를 완료하시면 당일에 출고됩니다.
    재고 미보유 상품
    영업일 기준 업체배송상품은 통상 2일, 당사 물류센터에서 발송되는 경우 통상 3일 이내 출고되며, 재고확보가 일찍되면 출고일자가 단축될 수 있습니다.
    배송일시
    택배사 영업일 기준으로 출고일로부터 1~2일 이내 받으실 수 있으며, 도서, 산간, 제주도의 경우 지역에 따라 좀 더 길어질 수 있습니다.
    묶음 배송 상품(부피가 작은 단품류)의 출고일
    상품페이지에 묶음배송으로 표기된 상품은 당사 물류센터에서 출고가 되며, 이 때 출고일이 가장 늦은 상품을 기준으로 함께 출고됩니다.
  • 주문수량
  • ★★★★★
  • 0/5
리뷰 0
리뷰쓰기

구매문의 및 도서상담은 031-944-3966(매장)으로 문의해주세요.
매장전집은 전화 혹은 매장방문만 구입 가능합니다.

  • 도서 소개
  • 출판사 리뷰
  • 작가 소개
  • 목차
  • 회원 리뷰

  도서 소개

역설적으로 들릴지도 모르지만, AI 시대에 요구되는 개발자의 능력은 기본기에 있다. 프로그램이 컴퓨터에서 어떻게 작동하는지를 제대로 알고 있어야, 목적에 맞는 프로그램을 만들 수 있고 문제가 발생했을 때도 수월하게 해결한다. 이 책은 메모리에 로딩된 기계어 명령을 CPU가 해석하고 실행하는 과정, 즉 프로그램이 컴퓨터에서 움직이는 진짜 모습을 보여준다.

이 과정에서 컴퓨터가 2진수를 이용하는 방식과 이유, 메모리와 디스크의 상호작용, 소스 코드가 실행 파일로 변환되는 컴파일과 링크 단계, 프로그램의 작동 환경과 주변장치 제어 등을 알아본다. 프로그래밍 입문자나 자기 실력에 깊이를 더하려는 초급 개발자가 컴퓨터 시스템의 본질을 이해하고 응용력을 키울 수 있도록 돕는다.

  출판사 리뷰

본질을 이해해야 응용할 수 있다!
AI 시대에도 경쟁력을 잃지 않는 개발자의 힘


인공지능의 부상으로 개발자의 입지가 축소되고 있다는 기사가 쏟아지고 있다. 개발자는 앞으로 불필요한 존재가 될까? 기업들은 ‘문제 해결 능력’을 갖춘 개발자를 더욱더 찾고 있다. 프로젝트의 올바른 방향을 설정하고, 숨어 있는 오류를 바로잡으며, 예상하지 못한 변수에 대처하는 실력을 갖춘 개발자 말이다. 그렇다면 진짜 실력은 어디서 올까.
만사가 그렇지만 탄탄한 실력은 본질, 즉 기본기를 제대로 닦는 데에서 나온다. 본질을 이해해야 응용을 할 수 있으며, 어떤 문제의 원인을 파악하거나 신기술을 익히는 일도 비교적 수월해진다. 따라서 개발자라면 프로그래밍 기술뿐만 아니라 그 뒤에 숨은 프로그램 작동 원리를 훤히 알고 있어야 한다. 즉 데이터와 명령의 집합체인 프로그램이 컴퓨터에서 어떻게 입력 · 연산 · 출력 · 저장되는지를 꿰뚫고 있어야 한다는 말이다.

코딩 기술과 요령을 넘어
프로그램의 원리를 파악하다


이런 의미에서 《프로그램은 어떻게 작동하는가》는 개발자 지망생 또는 신입 개발자에게 강력한 무기가 될 것이다. C 언어나 파이썬으로 작성한 소스 코드가 어떻게 컴퓨터가 이해할 수 있는 기계어로 번역되고(컴파일), 메모리에 올라가며(로딩), 최종적으로 CPU에서 어떻게 해석 및 실행이 되는지를 낱낱이 파헤치기 때문이다.
처음 이 책이 던지는 질문은 이렇다. 프로그래머에게 CPU란 무엇인가. 이 질문을 시작으로 우리는 a=1+2;와 같은 간단한 코드 한 줄이 CPU 내부에서 얼마나 역동적인 과정을 거치는지를 목격한다. 저자가 끊임없이 강조하듯 개발자가 모든 하드웨어 지식을 익힐 필요는 없다. 단지 개발자에게 필요한 CPU 지식이란 CPU에 있는 수많은 트랜지스터가 명령과 데이터를 잠시 보관하는 ‘레지스터’임을 이해하는 것이다.
프로그램 카운터가 다음 실행할 명령의 주소를 가리키고, 누산기가 연산 결과를 담으며, 플래그 레지스터의 상태에 따라 프로그램 흐름이 바뀌는 모습을 이해하는 것. 개발자에게 필요한 CPU의 본질은 이뿐이다. 이 지점에서 컴퓨터가 계산기라는 사실을 새삼 깨닫기도 한다. 결국 컴퓨터는 0과 1을 가지고 계산하는 기계다.

2진수 다루는 법을 이해하면
프로그램 작동 원리의 본질이 보인다


개발자는 따라서 컴퓨터가 세상을 인식하는 유일한 방식인 ‘2진수’의 세계를 조금 깊게 알아둘 필요가 있다. 기본과 본질을 다루는 책답게 저자는 컴퓨터가 왜 하필 2진수로 계산하는지부터 설명한다. IC 칩은 핀 하나가 0V와 +5V라는 두 가지 상태밖에 표현할 수 없고, 이런 물리적 한계가 0과 1이라는 디지털 세계를 탄생시켰다. 저자는 이 같은 설명에서 더 나아가 컴퓨터가 2진수를 어떻게 다루는지, 우리가 이런 컴퓨터의 특징을 어떻게 이용하는지를 소개한다. 이 과정을 거치면서 음수를 표현하기 위해 ‘2의 보수’라는 기발한 아이디어가 왜 필요한지, 왜 그토록 정확해 보이는 컴퓨터가 0.1을 100번 더해도 10이라는 결과를 내놓지 못하는 실수를 저지르는지(부동 소수점)에 대한 근본적인 답을 얻게 된다.

내 맘대로 메모리를 다루는
개발자가 진짜 실력자


CPU와 2진수 데이터에 대한 이해를 마쳤다면, 이제 프로그램의 주 무대인 ‘메모리’로 시선을 옮길 차례다. 개발자라면 메모리의 물리적 구조가 주소 핀과 데이터 핀으로 구성된 IC 칩에 불과해도, 논리적 구조를 변경하면 얼마든지 그 한계를 극복할 수 있음을 알아야 한다. 책에서는 배열이라는 기본적인 자료구조가 스택, 큐, 링 버퍼와 같은 고차원적인 자료구조로 어떻게 변모하는지를 시각 자료를 동원해 설명한다. 데이터를 넣고 빼는 순서의 차이가 전혀 다른 쓰임새를 만들어내는 과정은 프로그래밍의 묘미를 느끼게 하기에 충분하다.
자료구조를 설명하는 대목에서 C 언어 학습의 장벽으로 불리는 ‘포인터’의 개념을 설명하기도 하는데, 이 부분도 인상적이다. 포인터는 ‘데이터가 저장된 주소’를 기억하는 변수이며, 이를 이해하는 핵심은 데이터형이라는 개념에 있다고 설명하는 대목에서 아마 많은 이가 포인터 개념에 품은 막연한 두려움을 떨칠 수 있을 것이다.

어셈블리어와 C 언어의 비교
프로그램이 움직이는 진짜 모습을 마주하다


《프로그램은 어떻게 작동하는가》의 백미는 어셈블리어와 C 언어를 비교하는 부분이다. 기계어와 일대일로 대응하는 어셈블리어의 특성상, 어셈블리어가 어떻게 작동하는지를 알면 프로그램이 컴퓨터에서 작동하는 진짜 모습을 이해할 수 있기 때문이다. C 언어로 작성된 함수 호출, 반복문(for), 조건 분기(if)가 컴파일을 거치면 어떤 어셈블리어 코드로 변환되는지를 직접 살펴보면서, 독자는 마침내 프로그램의 실체를 마주한다.
고급 언어로 작성한 코드가 실제로는 movl, addl, cmpl, jmp와 같은 명령의 복잡한 조합으로 실행된다는 사실을 확인하는 경험은 개발 실력을 극적으로 올려줄지도 모른다. 선명하게 보이지 않던 ‘컴퓨터의 실제 작동’을 이해한 순간, 코드가 어떻게 메모리와 CPU를 움직이는지를 명확하게 파악하기 때문이다.
저자 또한 어셈블리어와 C 언어 코드를 비교하는 경험을 통해 “프로그램이 작동하는 구조가 손에 잡힐 듯이 보였다.”라고 고백한 것처럼, 이 경험은 이전과 전혀 다른 차원에서 프로그램을 이해하는 자신을 발견하는 계기가 된다.

상위 1% 개발자가 추천하는
프로그래밍 입문의 필독서


AI 시대로 접어들수록 원리 중심의 학습은 더욱 중요해졌다. 반복적인 코딩 작업을 AI가 대체하는 현실에서 개발자는 이제 단순 코딩을 벗어나 업무의 방향을 설정하고, 미묘한 오류를 잡아내며, 창의적인 해결책을 제시할 수 있어야 한다. 이 모든 역량의 바탕에는 원리, 즉 본질에 대한 이해가 깔려 있어야 한다.
결국 AI 시대에 살아남을 개발자는 스스로 질문하고 사태를 파악해 해결할 줄 아는 사람이다. 《프로그램은 어떻게 작동하는가》는 변화무쌍한 현실 문제에서 답을 찾는 지성과 통찰력을 어떻게 하면 갈고닦을 수 있는지를 말한다. 이 책으로 프로그래밍 코드의 실체와 작동 원리를 제대로 경험해 보자. 단순한 지식 습득을 넘어, 개발자의 깜냥을 한 단계 올리는 데 소중한 디딤돌이 된다.




  작가 소개

지은이 : 야자와 히사오
IT 전문 저자 겸 강사. 대형 전자제품 제조회사와 소프트웨어 개발 업체에서 컴퓨터 제조와 시스템 개발 같은 다양한 업무를 경험하며 실력을 쌓았다. 현재는 독립해 데이터 분석 애플리케이션 개발에 종사한다. 본업을 하는 틈틈이 여러 잡지에 IT 칼럼을 기고하거나 관련 책을 집필하는 데에도 힘을 쏟고 있다. 특히 《IT 업무의 기본이 되는 컴퓨터 구조 원리 교과서》 《프로그램은 어떻게 작동하는가》 등은 일본에서만 수십만 부가 넘게 팔리며 컴퓨터와 프로그램을 공부하는 학생과 IT 업계 종사자들에게 반드시 읽어야 할 바이블로 각인됐다. 집필 활동 외에도 IT 기업의 신입 사원이나 컴퓨터 학과 학생들을 대상으로 강연 활동도 활발히 하고 있다. 현재 야자와 주식회사 대표이사다.

  목차

들어가는 말
책에서 해설할 주요 키워드

제1장 프로그래머에게 CPU란 무엇일까
CPU의 내부를 살펴보자
CPU는 레지스터의 집합체
프로그램의 흐름을 결정하는 프로그램 카운터
조건 분기와 반복 시스템
함수 호출의 구조
베이스와 인덱스로 배열 실현하기
CPU가 할 수 있는 일은 극히 단순

제2장 데이터를 2진수로 상상해 보자
컴퓨터가 정보를 2진수로 취급하는 이유
그나저나 2진수란?
시프트 연산과 곱셈 및 나눗셈의 관계
컴퓨터 처리를 하기에 편리한 ‘2의 보수’
논리 우측 시프트와 산술 우측 시프트의 차이
논리 연산에 익숙해지는 요령

COLUMN 여러분이라면 어떻게 설명할까요?
초등학생에게 CPU와 2진수 설명하기

제3장 컴퓨터가 소수점 수의 계산을 틀리는 이유
0.1을 100번 더해도 10이 되지 않음
소수점 수를 2진수로 표현하려면
컴퓨터가 계산을 틀리는 이유
부동 소수점 수는 무엇인가
정규 표현과 초과 표현
프로그램에서 실제로 확인해 보자
컴퓨터 계산 오류를 피하려면
2진수와 16진수

제4장 네모난 모양의 메모리를 둥글게 사용하기
메모리의 물리적인 구조는 단순
메모리의 논리적인 이미지는 빌딩
정말 간단한 포인터
메모리를 효율적으로 잘 사용하기 위한 기본은 배열
스택과 큐, 링 버퍼
요소의 추가와 삭제를 쉽게 할 수 있는 리스트
효율적으로 데이터를 찾을 수 있는 이진 탐색 트리

제5장 메모리와 디스크의 친밀한 관계
메모리에 읽어와야 실행됨
디스크 접속을 고속화하는 ‘디스크 캐시’
디스크를 메모리의 일부로 사용하는 가상 메모리
메모리를 디스크로 사용하는 SSD
메모리를 절약하는 프로그래밍 기법
디스크의 물리 구조도 잘 봐두자

제6장 내 힘으로 데이터를 압축해 보자
파일은 바이트 단위로 기록
런 렝스 부호화의 구조
런 렝스 부호화의 결점
모스부호에서 허프먼 부호화의 기초 확인하기
트리를 이용해 만드는 허프먼 부호화
허프먼 부호화로 압축률이 대폭 향상
무손실 압축과 손실 압축

COLUMN 여러분이라면 어떻게 설명할까요?
게임에 푹 빠진 중학생들에게 메모리와 디스크 설명하기

제7장 프로그램은 어떤 환경에서 작동하는가
작동 환경=OS+하드웨어
CPU 이외의 하드웨어가 가진 차이를 극복한 Windows
OS마다 다른 API
소스 코드를 사용해 설치하기
어디서든 똑같은 실행 환경을 제공하는 Java 가상 머신
클라우드로 제공되는 가상 실행 환경
BIOS와 부트스트랩

제8장 소스 파일로 실행 가능 파일을 만들기까지
네이티브 코드만 실행할 수 있는 컴퓨터
네이티브 코드의 내용을 확인해 보자
소스 코드를 변환하는 컴파일러
컴파일만으로는 실행 가능 파일을 얻을 수 없다
스타트업과 라이브러리 파일
DLL 파일과 임포트 라이브러리
실행 가능 파일을 실행할 때 필요한 것은?
로드할 때 만들어지는 스택과 힙
살짝 어려운 Q&A

제9장 OS와 애플리케이션의 관계
역사로 보는 OS의 기능
OS의 존재를 의식하자
시스템 호출과 고급 언어의 이식성
하드웨어를 추상화하는 OS와 고급 언어
Windows라는 OS의 특징

COLUMN 여러분이라면 어떻게 설명할까요?
스마트폰을 좋아하는 여고생에게 OS의 역할을 설명하기

제10장 어셈블리어를 통해 프로그램의 진짜 모습 이해하기
어셈블리어는 네이티브 코드와 일대일로 대응
C 컴파일러로 어셈블리어의 소스 코드를 출력
유사 명령과 명령
어셈블리어의 구문 ‘연산 코드와 피연산자’
가장 자주 사용되는 movl 명령
스택에 데이터를 저장
함수를 호출하는 구조
호출된 함수의 구조
전역 변수와 지역 변수의 구조
반복 처리의 구조
조건 분기의 구조
어셈블리어를 경험하는 의의

제11장 하드웨어를 제어하는 방법
애플리케이션은 하드웨어와 상관이 없다?
하드웨어와 입출력을 하는 in 명령과 out 명령
인터럽트를 요청하는 주변장치
인터럽트로 실시간 처리를 실현
대량의 데이터를 단시간에 전송할 수 있는 DMA
문자나 그래픽이 표시되는 시스템

COLUMN 여러분이라면 어떻게 설명할까요?
동네 할머니에게 디스플레이와 TV의 차이를 설명하기

제12장 컴퓨터를 학습시키는 방법
기계 학습이란?
서포트 벡터 머신
Python의 대화 모드를 사용하는 방법
학습 데이터 준비하기
손글씨 숫자 데이터의 내용 확인해 보기
기계 학습으로 손글씨 문자 인식하기
교차 검증해 보기

COLUMN 여러분이라면 어떻게 설명할까요?
단골 술집 주인에게 기계 학습의 종류를 설명하기

부록 1 C 언어에 도전해 보자!
C 언어의 특징
변수와 함수
데이터형
입력, 연산, 출력
함수 만들기/함수 사용하기
지역 변수와 전역 변수
배열과 반복
그 외의 언어 구문

부록 2 Python에 도전해 보자!
Python의 특징
모두 다 객체
데이터형
입력, 연산, 출력
함수 만들기/함수 사용하기
지역 변수와 전역 변수
배열과 반복
그 외의 언어 구문

맺음말
찾아보기

  회원리뷰

리뷰쓰기

    이 분야의 신상품