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

조너선 스타인하트
636p
구매 가능한 곳

저자/역자

코멘트

2

더 많은 코멘트를 보려면 로그인해 주세요!

목차

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장

출판사 제공 책 소개

[도서 개요] 컴퓨터는 어떻게 동작하며, 컴퓨터 프로그래밍이란 무엇인가? 개발자가 되기 위해 프로그래밍을 배우는 것은 단지 시작일 뿐이다! 뛰어난 프로그래머가 되려는 개발자는 물론, 비전공자도 재미있게 읽을 수 있는 컴퓨터공학 핵심 강의! 하드웨어의 토대가 되는 기초 전자회로, 게이트부터 시작해서 메모리, CPU, I/O, 컴퓨터 아키텍처 전반을 설명하고, 그 위에서 소프트웨어를 작성하는 방법을 웹과 C 프로그램으로 직접 만들어보며, 보안, 인공지능, 알고리즘 등의 내용에 이르기까지 개발자라면 반드시 알아야 할 커튼 뒤에 감춰진 컴퓨터 구조와 프로그래밍에 대한 거의 모든 것을 다루는 컴퓨터공학 개론서! | 이 책에서 다루는 내용 | ● 실제 세계를 컴퓨터가 이해할 수 있는 형태인 비트, 논리, 숫자, 텍스트, 색 등으로 변환하는 원리와 방법 ● 논리 게이트, 가산기, 디코더, 레지스터, 메모리 등 컴퓨터를 이루는 기본 블록 ● 성능 향상의 관점에서 컴퓨터 하드웨어, 특히 메모리를 고려해 프로그램을 설계해야 하는 이유 ● 프로그램이 컴퓨터가 이해할 수 있는 기계어로 변환되는 과정 ● 소프트웨어 구성 요소를 조합해 웹 브라우저 같은 프로그램을 만드는 방법 ● 루프 불변 조건, 강도 감소, 재귀적 분할 등, 프로그램을 더 효율적으로 만들기 위한 알고리즘과 프로그래밍 트릭 ● 컴퓨터 보안과 인공지능, 머신러닝, 빅데이터의 이해 ● 프로젝트 설계, 문서화, 스케줄링, 이식성, 유지보수 등 현장에서 벌어지는 프로그래밍 실무에 관한 경험담과 조언 | 이 책의 구성 | 이 책은 개념적으로 세 부분으로 나뉜다. 첫 번째 부분은 컴퓨터 하드웨어를 탐구한다. 하드웨어가 무엇이고 하드웨어를 어떻게 만드는지 살펴본다. 두 번째 부분은 하드웨어에서 소프트웨어가 어떻게 작동하는지 살펴본다. 마지막 부분은 프로그래밍 기술, 즉 다른 사람들과 협력해 더 나은 프로그램을 만드는 방법에 대한 것이다. 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장은 실제 세계에서 프로그래밍을 할 때 생기는 문제 중 일부를 다룬다. | 이 책의 독자 대상 | 이 책은 좋은 프로그래머가 되고 싶은 사람을 위한 책이다. 좋은 프로그래머는 어떤 프로그래머일까? 첫 번째이자 가장 중요한 것으로, 좋은 프로그래머는 좋은 비판적 사고와 분석 기술을 지녀야 한다. 복잡한 문제를 해결하기 위해 프로그래머는 프로그램이 올바른 문제를 제대로 해결하는지 판단할 능력을 갖춰야 한다. 이는 생각보다 어렵다. 경험이 많은 프로그래머가 다른 사람의 코드를 보고 짜증을 내면서 "아이고, 이 프로그램은 별다르지 않은 간단한 문제에 대해 정답도 아닌 복잡한 해법을 구현해놓은 것뿐이네요."라는 주석을 다는 경우도 드물지 않다. 마법사가 사물의 진짜 이름을 배우면서 점점 사물을 지배하는 힘을 얻는 고전적인 판타지에 익숙할 것이다. 세부 사항을 잊어버리는 마법사에게 화가 미칠진저! 좋은 프로그래머는 이런 마법사처럼 사물의 핵심을 파악하면서 세부 사항을 잊어버리지 않는 사람이다. 좋은 프로그래머는 마치 숙련된 장인처럼 예술성을 갖추기도 한다. 마치 영어 원어민들에게도 난해하기로 소문난 제임스 조이스의 소설 『피네간의 경야』 영어 원문처럼 전혀 해독할 수 없는 코드를 보게 되는 경우도 드물지 않다. 모름지기 좋은 프로그래머란 작동할 뿐만 아니라 다른 사람들이 이해하고 유지보수하기 쉬운 코드를 작성한다. 마지막으로, 좋은 프로그래머는 컴퓨터 작동을 잘 이해해야 한다. 기반 지식이 얕으면 복잡한 문제를 잘 풀 수 없다. 이 책은 프로그래밍을 배우고 있지만 깊이 부족으로

이 작품이 담긴 컬렉션

3

본 사이트의 모든 콘텐츠는 왓챠피디아의 자산이며, 사전 동의 없이 복제, 전재, 재배포, 인용, 크롤링, AI학습, 데이터 수집 등에 사용하는 것을 금지합니다.

  • 주식회사 왓챠
  • 대표 박태훈
  • 서울특별시 서초구 강남대로 343 신덕빌딩 3층
  • 사업자 등록 번호 211-88-66013