문서 읽는 데 34분 · A1

A-1: 컴퓨터는 어떻게 일하나

목차 25
전체 7강 중 1강 · 개발 입문
난이도 · 입문

ℹ️코딩이 처음인 비전공자를 위한 첫 과목 — 컴퓨터의 원리와 “프로그래밍적 사고”를 먼저 잡아요. 선수 지식 없이 시작할 수 있어요.

안녕하세요, 홍순구 튜터입니다. 코딩을 한 번도 해본 적 없는 분, 환영합니다. 백과사전의 가장 첫 문, 그 첫 번째 시간에 오신 걸 진심으로 반겨요.

먼저 안심부터 시켜 드릴게요. 오늘 우리는 코드를 한 줄도 쓰지 않습니다. 프로그래밍을 배우러 왔는데 코드를 안 쓴다니 이상하죠? 그런데 생각해보면 당연해요. 누군가에게 일을 시키려면 그 사람이 어떻게 일하는지를 먼저 알아야 하잖아요. 우리가 일을 시킬 상대는 컴퓨터입니다. 그래서 첫 시간은 "컴퓨터라는 이 친구가 도대체 안에서 어떻게 일하는가"를 들여다봅니다. 코드는 그다음이에요.

많은 분이 컴퓨터를 "똑똑한 마법 상자"로 생각해요. 그런데 오늘 수업이 끝나면 생각이 바뀔 겁니다. 컴퓨터는 똑똑하지 않아요. 다만 믿을 수 없을 만큼 빠르고, 시킨 것만 정확히 하는 기계예요. 그 단순함을 이해하는 순간, 프로그래밍이 훨씬 덜 무서워집니다.

오늘 우리가 걸을 길은 이렇습니다.

텍스트
   오늘의 여정 — 컴퓨터는 어떻게 일하나

   ① 컴퓨터는 사실 아주 빠른 계산기다
   ② 컴퓨터 안에는 누가 일하나 — 네 일꾼
   ③ 왜 하필 0 과 1 일까
   ④ 사진도 글자도 소리도 결국 0 과 1
   ⑤ 메모리는 번호 붙은 사물함이다
   ⑥ 프로그램이 실제로 돌아가는 그림

①에서 컴퓨터에 대한 오해를 풀고, ②에서 컴퓨터 안의 부품들을 사무실에 빗대어 봅니다. ③④에서 "왜 컴퓨터는 0과 1만 쓰는가"와 "그 0과 1로 어떻게 사진·글자까지 다루는가"를 보고, ⑤⑥에서 메모리와 프로그램 실행을 그림으로 묶습니다.

💡 오늘 수업의 핵심 — "컴퓨터는 똑똑한 게 아니라 아주 빠른 계산기다. 모든 정보를 0과 1(전기 꺼짐·켜짐)로 바꿔 다루고, 메모리라는 번호 붙은 사물함에 값을 넣고 꺼내며, 저장장치에 잠든 프로그램이 메모리로 올라와 CPU가 한 줄씩 실행한다"

🎯 학습 목표

  • 컴퓨터가 "똑똑한 기계"가 아니라 빠르게 계산하고 시킨 것만 하는 기계임을 이해하고, 컴퓨터를 이루는 네 부품(CPU·메모리·저장장치·입출력)의 역할을 사무실 비유로 설명합니다.
  • 컴퓨터가 왜 0과 1만 쓰는지(전기 꺼짐·켜짐)와, 그 0과 1로 숫자·글자·이미지·소리를 어떻게 표현하는지를 설명합니다.
  • 메모리가 번호 붙은 사물함이라는 그림과, 저장장치의 프로그램이 메모리로 올라와 CPU가 한 줄씩 실행되는 전체 흐름을 자기 말로 그립니다.

Step 1: "컴퓨터는 사실 아주 빠른 계산기다"

질문 하나로 시작할게요. 컴퓨터는 똑똑할까요? 많은 분이 "그렇다"고 답합니다. 게임도 하고, 영상도 틀고, 번역도 해주니까요. 그런데 사실 컴퓨터는 하나도 똑똑하지 않습니다. 컴퓨터가 진짜로 할 줄 아는 건 딱 하나예요 — 계산. 그것도 아주 단순한 계산(더하기·빼기·비교하기)을, 대신 상상도 못 할 속도로 합니다.

요즘 컴퓨터는 1초에 수십억 번을 계산해요. 사람이 평생 해도 못 끝낼 계산을 눈 깜짝할 사이에 해치웁니다. 영상을 트는 것도, 게임을 그리는 것도, 알고 보면 전부 "엄청나게 많은 단순 계산을 엄청나게 빠르게" 한 결과예요. 똑똑해서가 아니라 빨라서 똑똑해 보이는 겁니다.

여기서 더 중요한 사실이 하나 있어요. 컴퓨터는 시킨 것만 합니다. 알아서 눈치껏 해주는 게 없어요. "대충 이렇게 해줘"가 안 통합니다. 하나부터 열까지 정확하게 시켜야 그대로 합니다. 이게 초보자에게는 답답하게 느껴지지만, 사실은 좋은 소식이에요. 컴퓨터가 제멋대로 행동하지 않으니, 우리가 시키는 법만 제대로 배우면 컴퓨터는 정확히 그대로 움직여 줍니다. 프로그래밍이란 결국 "이 빠르고 고지식한 계산기에게 일을 정확히 시키는 법"이에요.

그러니 앞으로 코드가 뜻대로 안 움직일 때, "컴퓨터가 멍청하네"가 아니라 "내가 뭔가를 정확히 안 시켰구나"로 생각하면 됩니다. 거의 항상 그게 맞아요.

💡 한 줄 정리

컴퓨터는 똑똑한 게 아니라, 단순한 계산을 엄청나게 빠르게 하고 시킨 것만 정확히 하는 기계다.

🙋 학생 질문 — "튜터님, 그럼 AI는요? 요즘 AI는 진짜 똑똑해 보이는데요?"

아주 좋은 질문이에요. 결론부터 말하면, AI도 그 바닥은 똑같은 "빠른 계산"입니다.

요즘 AI가 글을 쓰고 그림을 그리는 건, 어마어마하게 많은 데이터를 가지고 "다음에 올 가장 그럴듯한 것"을 확률로 계산해서 내놓는 거예요. 똑똑한 판단을 하는 것처럼 보이지만, 안에서 벌어지는 일은 결국 수십억 번의 곱셈과 덧셈입니다. 사람처럼 "이해"하거나 "의도"를 갖는 게 아니라, 계산의 결과로 그럴듯한 답을 만들어내는 거죠.

그래서 "컴퓨터는 빠른 계산기"라는 오늘의 핵심은 AI 시대에도 그대로예요. 오히려 AI가 강력해질수록, 그 밑바탕인 컴퓨터와 프로그래밍의 원리를 아는 사람이 AI를 더 잘 다룹니다. 이 이야기는 A-7에서 "AI 시대에 코딩을 왜 배우는가"로 더 깊이 다룰게요.


Step 2: "컴퓨터 안에는 누가 일하나 — 네 일꾼"

컴퓨터가 빠른 계산기라는 걸 알았으니, 이제 그 안을 열어볼게요. 컴퓨터 안에는 네 종류의 부품이 각자 맡은 일을 합니다. 처음 보는 영어 이름이 나오지만 겁먹지 마세요. 작은 사무실 하나에 빗대면 전부 쉽게 이해됩니다.

텍스트
   컴퓨터 한 대 = 작은 사무실 하나

   CPU (중앙처리장치)    일꾼
        시킨 계산을 실제로 해내는 사람. 컴퓨터의 '두뇌'

   메모리 (RAM)    책상
        지금 하는 일거리를 펼쳐 두는 곳. 빠르지만 좁다

   저장장치 (SSD·하드디스크)    서류 캐비닛
        오래 보관할 자료를 넣어 두는 곳. 느리지만 넓다

   입출력장치 (키보드·화면·스피커)    문과 창구
        바깥(사람·세상)과 자료를 주고받는 통로

하나씩 볼게요. CPU(Central Processing Unit, 중앙처리장치)는 사무실의 일꾼입니다. 실제로 계산을 하는 건 오직 이 친구예요. Step 1에서 말한 "1초에 수십억 번 계산"을 해내는 게 바로 CPU입니다.

메모리(RAM)는 일꾼의 책상이에요. 일을 하려면 지금 쓰는 자료를 책상 위에 펼쳐 둬야겠죠. 메모리는 아주 빠르게 꺼내 쓸 수 있지만, 책상이 좁듯 공간이 한정돼 있고, 전원을 끄면 책상 위가 싹 치워집니다(그래서 컴퓨터를 끄면 저장 안 한 작업이 날아가요).

저장장치(SSD나 하드디스크)는 서류 캐비닛입니다. 당장 안 쓰는 자료, 오래 보관할 자료를 넣어 둬요. 캐비닛은 넓어서 많이 담지만, 책상보다 꺼내는 게 느립니다. 대신 전원을 꺼도 안의 자료는 그대로 남아요. 사진·문서·앱이 컴퓨터를 꺼도 사라지지 않는 이유가 이겁니다.

마지막으로 입출력장치는 사무실의 문과 창구예요. 키보드·마우스로 우리가 자료를 넣고(입력), 화면·스피커로 결과를 내보냅니다(출력). 바깥세상과 컴퓨터를 잇는 통로죠.

이 네 부품이 손발을 맞춰 일하는 게 컴퓨터입니다. 일꾼(CPU)이 캐비닛(저장장치)에서 자료를 꺼내 책상(메모리)에 펼치고, 계산해서, 창구(출력)로 결과를 내보내는 거예요. 이 흐름은 Step 6에서 다시 하나의 그림으로 묶을게요.

💡 한 줄 정리

컴퓨터는 CPU(일꾼)·메모리(책상)·저장장치(캐비닛)·입출력장치(문)라는 네 부품이 손발을 맞춰 일하는 작은 사무실이다.

🙋 학생 질문 — "튜터님, 메모리랑 저장장치가 둘 다 자료를 담는다는데 왜 나눠 놨나요? 하나면 안 되나요?"

핵심을 찌르는 질문이에요. 둘 다 자료를 담지만 성격이 정반대라서 둘 다 필요합니다.

메모리(책상)는 빠르지만 좁고, 끄면 사라집니다. 저장장치(캐비닛)는 느리지만 넓고, 꺼도 남습니다. 만약 책상만 있다면? 공간이 좁아 큰 자료를 못 다루고, 컴퓨터를 끌 때마다 모든 게 사라져요. 캐비닛만 있다면? 꺼내 쓰는 게 너무 느려서 컴퓨터가 답답하게 굼떠집니다.

그래서 둘을 역할로 나눕니다. 오래 보관은 넓고 안 사라지는 캐비닛(저장장치)에, 지금 당장 쓸 건 빠른 책상(메모리)에 올려 두고 일해요. "빠름"과 "많이·오래 보관"을 한 부품으로 동시에 만들 수 없어서(빠른 부품은 비싸고 작거든요) 둘로 나눈 겁니다. 이 "빠름 vs 넓음"의 맞바꿈은 컴퓨터 곳곳에 나오는 중요한 감각이에요.


Step 3: "왜 하필 0과 1일까"

컴퓨터 이야기를 하면 꼭 나오는 말이 있죠 — "컴퓨터는 0과 1로 되어 있다." 한 번쯤 들어봤을 거예요. 그런데 하필 0과 1일까요? 왜 우리처럼 0부터 9까지 쓰지 않을까요? 이걸 이해하면 컴퓨터의 정체가 확 잡힙니다.

답은 전기에 있어요. 컴퓨터는 전기로 움직이는 기계입니다. 그리고 전기로 가장 확실하게 구분할 수 있는 상태는 딱 두 가지예요 — 흐른다 / 안 흐른다. 스위치를 켜면 전기가 흐르고(ON), 끄면 안 흐릅니다(OFF). 이 둘은 헷갈릴 일이 없어요. 아주 또렷하게 구분되죠.

텍스트
   왜 0 과 1 뿐일까 — 전기 스위치로 생각하면 쉽다

   전기가 안 흐른다 (OFF)    0
   전기가 흐른다   (ON)     1

        스위치 하나가 가질 수 있는 값 = 0 또는 1
        이 '0이냐 1이냐' 한 칸을 비트(bit) 라고 부른다

만약 컴퓨터가 0~9를 쓰려면, 전기 세기를 열 단계로 나눠 구분해야 해요. "이 정도 세기는 3, 이 정도는 4" 하고요. 그런데 전기 세기는 미세하게 흔들려서, 3인지 4인지 헷갈리기 쉽습니다. 반면 "흐른다/안 흐른다"는 절대 안 헷갈려요. 그래서 컴퓨터는 틀릴 일 없는 두 가지 상태만 쓰기로 한 겁니다. 단순하지만 확실한 쪽을 택한 거죠.

이 "0이냐 1이냐" 한 칸을 비트(bit)라고 불러요. 컴퓨터가 다루는 가장 작은 정보 단위예요. 그런데 비트 하나로는 0과 1, 두 가지밖에 표현 못 하죠. 그래서 비트를 여러 개 묶어서 씁니다.

텍스트
   비트를 묶으면 더 많은 걸 표현한다

   비트 1개    2 가지   (0, 1)
   비트 2개    4 가지   (00, 01, 10, 11)
   비트 3개    8 가지   (000 ~ 111)
   비트 8개    256 가지    이 묶음을 1바이트(byte) 라고 부른다

비트 8개를 묶은 걸 1바이트(byte)라고 해요. 8개의 0/1 칸이면 256가지(0부터 255까지)를 표현할 수 있습니다. 우리가 흔히 보는 "이 파일은 10MB" 할 때의 그 바이트가 이거예요. 정보의 양을 세는 기본 단위죠. 켜짐·꺼짐 스위치 여러 개의 조합 — 그게 컴퓨터가 세상 모든 걸 다루는 방식의 출발점입니다.

💡 한 줄 정리

컴퓨터는 전기의 켜짐(1)·꺼짐(0)이 절대 안 헷갈리기 때문에 0과 1만 쓰고, 그 한 칸을 비트, 여덟 칸 묶음을 바이트라고 부른다.

🙋 학생 질문 — "튜터님, 0과 1 두 개만으로 정말 모든 걸 표현할 수 있나요? 너무 부족해 보여요."

처음엔 다들 그렇게 느껴요. 그런데 핵심은 "묶으면 된다"입니다.

생각해보세요. 전구 하나는 켜짐·꺼짐 두 가지뿐이라 별 정보가 없어요. 그런데 전구 10개를 한 줄로 놓고 각각 켜고 끄면? 그 조합이 무려 1,024가지입니다. 전구 20개면 100만 가지가 넘어요. 칸을 늘릴수록 표현할 수 있는 조합이 폭발적으로 늘어납니다.

컴퓨터 안에는 이런 0/1 칸이 수십억 개 있어요. 그러니 0과 1 단 두 글자라도, 충분히 많이 묶으면 세상의 어떤 숫자도, 글자도, 사진도, 음악도 표현할 수 있습니다. 부족한 건 "종류"가 아니라 "개수"였던 거죠. 다음 Step에서 그 0과 1로 글자와 사진까지 어떻게 표현하는지 직접 볼게요.


Step 4: "사진도 글자도 소리도 결국 0과 1"

자, 컴퓨터가 0과 1만 쓴다는 건 알았어요. 그런데 우리가 컴퓨터로 보는 건 0과 1이 아니잖아요. 글자를 읽고, 사진을 보고, 음악을 듣죠. 어떻게 0과 1이 이 모든 게 될까요? 비결은 하나예요 — "무엇을 어떤 숫자로 할지 미리 약속한다." 그리고 숫자는 Step 3에서 봤듯 0과 1로 바꿀 수 있고요.

먼저 숫자는 쉬워요. 우리가 쓰는 숫자를 2진수(0과 1만 쓰는 수)로 바꾸면 됩니다. 예를 들어 우리의 65는 컴퓨터 안에서 1000001이 돼요(한 칸은 8비트라, 앞을 0으로 채우면 01000001이죠). 같은 숫자를 표기법만 바꾼 거예요.

글자는 어떻게 할까요? 글자는 숫자가 아니니, 글자마다 번호를 미리 정해 둡니다. 전 세계가 약속한 표가 있어요. 거기서 'A'는 65번, 'B'는 66번… 이렇게 정해져 있습니다.

텍스트
   글자 'A' 가 컴퓨터에 저장되는 길

   'A'    약속표의 번호 65    2진수 1000001
   'B'    약속표의 번호 66    2진수 1000010
   'C'    약속표의 번호 67    2진수 1000011

        글자마다 번호를 미리 정해 둔 '약속표' 가 있어서,
        글자  번호  0과 1 의 길로 저장된다

그러니까 우리가 'A'를 타이핑하면, 컴퓨터는 그걸 65로 바꾸고, 다시 1000001로 저장해요. 화면에 보여줄 땐 거꾸로 1000001 → 65 → 'A'로 되돌립니다. 한글도 똑같아요 — 한글 글자 하나하나에도 약속된 번호가 있습니다. (이 약속표가 무엇인지, 왜 여러 개인지는 나중에 언어 과목에서 더 자세히 다뤄요.)

사진은 어떨까요? 사진을 아주 크게 확대하면 작은 색점들이 보여요. 이 점 하나를 픽셀이라고 합니다. 각 픽셀의 색을 숫자로 적으면(예: 빨강의 양·초록의 양·파랑의 양), 그 숫자가 다시 0과 1이 돼요.

텍스트
   사진 = 아주 작은 색점(픽셀) 의 격자

   # # . #        각 점(픽셀)의 색을 숫자로 (예: 빨강 = 255, 0, 0)
   . # # .          그 숫자는 다시 0 과 1 로
   # . # #          점이 수백만 개 모이면 한 장의 사진이 된다

소리도 같은 원리예요. 소리의 출렁임을 아주 짧은 간격으로 숫자로 받아 적으면(1초에 수만 번), 그 숫자가 0과 1이 됩니다. 결국 글자든 사진이든 소리든, 길은 똑같아요 — 무엇을 어떤 숫자로 할지 약속하고, 그 숫자를 0과 1로 바꾼다. 컴퓨터가 세상의 모든 정보를 다루는 단 하나의 방식입니다.

💡 한 줄 정리

글자·사진·소리는 "무엇을 어떤 숫자로 할지"를 미리 약속한 뒤 그 숫자를 0과 1로 바꿔 저장한다 — 컴퓨터는 모든 것을 숫자로 바꿔 다룬다.

🙋 학생 질문 — "튜터님, 글자 번호를 누가 정하나요? 나라마다 다르면 글자가 깨지지 않나요?"

정확히 그 문제가 실제로 있었어요. 옛날엔 나라마다 글자 번호표가 제각각이었습니다. 그래서 한국에서 쓴 문서를 다른 나라 컴퓨터에서 열면 글자가 와장창 깨지는 일이 흔했어요. 외계어처럼 □□□가 뜨는 거죠. 이메일이나 웹페이지에서 글자가 깨져 본 경험, 한 번쯤 있을 거예요.

그래서 전 세계가 "글자 번호를 하나의 표로 통일하자"고 약속했습니다. 세상의 거의 모든 문자(한글·영어·한자·이모지까지!)에 고유 번호를 매긴 국제 표준이 생겼어요. 덕분에 지금은 어느 나라 컴퓨터에서 열어도 글자가 안 깨집니다.

이 "번호 매기는 약속"과 "그 번호를 0과 1로 저장하는 방식"이 정확히 무엇인지는, 이 과목에서는 "그런 약속표가 있다"까지만 알면 충분해요. 더 깊은 내용은 후속 언어 과목과 컴퓨터 구조 과목(cs-fundamentals)에서 본격적으로 다룹니다. 지금은 "모든 게 숫자로, 숫자는 0과 1로"라는 큰 그림만 가져가면 됩니다.


Step 5: "메모리는 번호 붙은 사물함이다"

Step 2에서 메모리를 "일꾼의 책상"이라고 했죠. 이번엔 그 책상 안을 조금 더 자세히 들여다볼게요. 메모리가 실제로 어떻게 생겼는지를 알면, 나중에 배울 변수(값을 담는 것)가 한결 쉬워집니다.

메모리는 번호가 붙은 사물함이 길게 줄지어 있는 것이라고 생각하면 딱 맞아요. 헬스장이나 수영장의 사물함을 떠올려 보세요. 칸마다 번호가 있고, 그 번호로 "몇 번 칸을 열어줘"라고 지목하죠. 메모리도 똑같아요. 칸마다 번호(이걸 주소라고 불러요)가 있고, 각 칸에 값을 하나씩 넣을 수 있습니다.

텍스트
   메모리 = 번호(주소) 붙은 사물함이 줄지어 있는 것

   번호:  [ 0 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] ...
   내용:  [25 ] ['A'] [12 ] [   ] [99 ] [   ]
           └ 0번 칸에 25 라는 값이 들어 있다

   CPU 는 "3번 칸에 7 을 넣어줘" 또는 "1번 칸 값을 꺼내줘" 처럼
   번호(주소) 로 칸을 지목해서 값을 넣고 꺼낸다

CPU(일꾼)가 일을 할 때, 이 사물함을 끊임없이 씁니다. "0번 칸에 25를 넣어둬", "그 값을 꺼내서 1 더한 뒤 다시 넣어둬" 같은 식으로요. 계산에 필요한 값을 잠깐잠깐 이 칸들에 보관하면서 일하는 거예요.

여기서 Step 2에서 말한 메모리의 성격이 다시 나와요 — 메모리는 빠르지만, 전원을 끄면 사물함이 싹 비워집니다. 그래서 오래 보관할 자료는 저장장치(캐비닛)로 옮겨 둬야 해요. 메모리는 어디까지나 "지금 일하는 동안" 값을 잠깐 두는 곳이에요.

이 그림을 꼭 기억해 두세요. 나중에 언어 과목에서 변수라는 걸 배울 텐데, 변수란 사실 "이 사물함 칸에 이름표를 붙여 두는 것"이거든요. 65번 칸이라고 외우긴 어려우니, 그 칸에 "나이"라는 이름표를 붙여 두고 "나이 칸에 25를 넣어줘"라고 하는 거예요. 오늘 그 바탕인 사물함 그림을 잡아 두면, 변수가 전혀 어렵지 않게 다가올 겁니다.

💡 한 줄 정리

메모리는 번호(주소)가 붙은 사물함이 줄지어 있는 것이고, CPU는 그 번호로 칸을 지목해 값을 넣고 꺼내며 일한다.

🙋 학생 질문 — "튜터님, 그럼 칸 번호를 우리가 일일이 외워야 하나요? 너무 복잡할 것 같아요."

다행히 전혀 그럴 필요 없어요. 그게 바로 프로그래밍 언어가 우리를 위해 해주는 일이거든요.

만약 우리가 직접 "1057번 칸에 값을 넣어라" 하고 번호를 외워가며 짜야 한다면 정말 끔찍하겠죠. 그래서 프로그래밍 언어는 우리가 이름만 붙이게 해줍니다. "나이"라는 이름을 쓰면, 컴퓨터가 알아서 빈 칸 하나를 골라 거기에 "나이" 이름표를 붙이고, 우리 대신 그 칸의 번호를 기억해 줘요. 우리는 번호를 몰라도 "나이"라는 이름으로 값을 넣고 꺼내면 됩니다.

이렇게 "복잡한 번호를 사람이 읽기 쉬운 이름으로 가려주는 것"이 프로그래밍 언어의 큰 역할 중 하나예요. 그 이름 붙은 칸을 변수라고 부르는데, A-3에서 본격적으로 만납니다. 오늘은 "그 아래엔 번호 붙은 사물함이 있다"는 진짜 그림만 알아 두면, 나중에 변수가 마법처럼 느껴지지 않고 "아, 그 사물함에 이름 붙인 거구나" 하고 와닿을 거예요.


Step 6: "프로그램이 실제로 돌아가는 그림"

이제 오늘 배운 부품들을 하나의 흐름으로 묶어 볼게요. "프로그램을 실행한다"는 게 컴퓨터 안에서 실제로 무슨 일인지, 한 장의 그림으로 그려 봅시다. 이 그림이 오늘 수업의 종합이에요.

먼저 프로그램이 뭔지 한 줄로만 짚을게요. 프로그램은 "컴퓨터에게 시킬 명령들을 순서대로 적어 둔 것"이에요. (이건 다음 시간 A-2에서 자세히 다룹니다.) 그 명령 묶음이 평소엔 저장장치(캐비닛)에 파일로 잠들어 있어요. 우리가 앱 아이콘을 더블클릭하는 순간, 이런 일이 벌어집니다.

텍스트
   프로그램을 실행하면 — 한 장면

   ① 저장장치(캐비닛) 에 프로그램이 파일로 잠들어 있다
        │   실행(더블클릭) 을 누르면…
        
   ② 메모리(책상) 로 프로그램이 통째로 올라온다
        │   이제 빠르게 꺼내 쓸 준비 완료
        
   ③ CPU(일꾼) 가 메모리에서 명령을 한 줄씩 꺼낸다
        │   읽고  실행하고  다음 줄로  (계속 반복)
        
   ④ 결과가 입출력장치(화면·스피커) 로 나온다

순서를 따라가 볼게요. ① 평소 프로그램은 저장장치에 잠들어 있어요. ② 실행을 누르면 그 프로그램이 빠른 메모리(책상)로 올라옵니다. 캐비닛에서 꺼내 책상에 펼치는 거죠. ③ 그러면 CPU(일꾼)가 메모리에 펼쳐진 명령을 한 줄씩 꺼내서, 읽고 → 실행하고 → 다음 줄로 넘어가는 걸 쉴 새 없이 반복합니다. ④ 그 결과가 화면이나 스피커로 나와요.

핵심은 ③의 "한 줄씩, 순서대로, 반복"이에요. 컴퓨터는 명령을 한꺼번에 이해하는 게 아니라, 위에서부터 한 줄씩 차례로 실행합니다. Step 1에서 "시킨 것만, 정확히"라고 했던 게 여기서 드러나요. 우리가 명령을 적은 순서 그대로, 한 줄도 건너뛰지 않고 따라가요. 그래서 프로그래밍에서는 "순서"가 정말 중요합니다. 같은 명령이라도 순서가 바뀌면 결과가 달라지거든요.

이게 컴퓨터가 일하는 전체 그림이에요. 캐비닛(저장)에서 책상(메모리)으로 올라온 명령을, 일꾼(CPU)이 한 줄씩 실행해 창구(출력)로 결과를 내보낸다. 오늘 배운 네 부품이 전부 이 한 흐름 안에서 손발을 맞춥니다. 앞으로 어떤 프로그램을 만들든, 그 밑에서는 늘 이 일이 벌어지고 있다고 생각하면 돼요.

💡 한 줄 정리

프로그램을 실행하면 저장장치의 명령들이 메모리로 올라오고, CPU가 그걸 위에서부터 한 줄씩 순서대로 실행해 결과를 화면으로 내보낸다.

🙋 학생 질문 — "튜터님, 그럼 여러 프로그램을 동시에 켜면 일꾼(CPU)이 하나인데 어떻게 다 하나요?"

날카로운 질문이에요! 사실 일꾼 하나가 여러 일을 "동시에"는 못 해요. 비밀은 아주 빠르게 번갈아 가며 하는 데 있습니다.

CPU는 음악 앱을 잠깐 처리하고, 곧바로 웹 브라우저를 잠깐 처리하고, 또 메신저를 잠깐… 이렇게 여러 프로그램을 눈 깜짝할 사이에 번갈아 가며 조금씩 처리해요. 워낙 빨라서(1초에 수십억 번 계산하니까) 우리 눈에는 전부 동시에 도는 것처럼 보이는 거예요. 마치 일꾼 한 명이 여러 책상을 빛의 속도로 오가며 일하는 것처럼요.

요즘 컴퓨터는 일꾼(CPU 안의 처리 단위)이 여러 명이기도 해서 진짜로 몇 가지를 동시에 하기도 합니다. 하지만 그 수보다 훨씬 많은 프로그램을 켜도 멀쩡히 돌아가는 건, 이 "빠르게 번갈아 하기" 덕분이에요. 이 주제(여러 일을 어떻게 나눠 처리하는가)는 운영체제를 다루는 cs-fundamentals 과목에서 깊이 배웁니다. 오늘은 "일꾼이 빠르게 번갈아 한다" 정도만 알아 두면 충분해요.


마무리

첫 시간, 정말 수고 많으셨어요. 코드 한 줄 없이도 컴퓨터의 정체를 꽤 깊이 들여다봤습니다. 오늘 잡은 그림이 앞으로 배울 모든 것의 바닥이 돼요.

오늘 배운 핵심 세 가지

  1. 💡 컴퓨터는 똑똑한 게 아니라 빠른 계산기다. 단순한 계산을 엄청난 속도로, 시킨 것만 정확히 한다. CPU(일꾼)·메모리(책상)·저장장치(캐비닛)·입출력(문) 네 부품이 사무실처럼 손발을 맞춘다.
  2. 💡 컴퓨터는 모든 것을 0과 1로 다룬다. 전기의 켜짐·꺼짐이라 안 헷갈리기 때문이다. 숫자·글자·사진·소리도 "무엇을 어떤 숫자로 할지" 약속한 뒤 0과 1로 바꿔 저장한다.
  3. 💡 프로그램은 메모리로 올라와 CPU가 한 줄씩 순서대로 실행한다. 메모리는 번호 붙은 사물함이고, 명령은 위에서부터 차례로 처리되기에 "순서"가 결정적이다.

다음 시간 예고

오늘 우리는 "컴퓨터가 어떻게 일하는가"를 봤어요. 그런데 한 가지 의문이 남죠. 컴퓨터는 0과 1만 알아듣는다는데, 그럼 우리는 그 0과 1을 일일이 적어서 명령해야 할까요? 다행히 아닙니다. 다음 시간(A-2)에는 프로그램과 프로그래밍 언어를 다룹니다. "프로그램이란 명령의 순서"라는 게 정확히 무슨 뜻인지(요리 레시피에 빗대서요), 그리고 0과 1만 아는 컴퓨터에게 어떻게 사람의 말에 가까운 언어로 일을 시킬 수 있는지 — 그 사이를 잇는 번역(통역사 같은 인터프리터와 번역서 같은 컴파일러)의 비밀을 풀어봅니다. 오늘 "컴퓨터는 0과 1만 안다"를 기억해 두면, 다음 시간 "왜 언어가 필요한가"가 자연스럽게 이어질 거예요.


과제

오늘은 코드를 쓰지 않으니, 과제도 종이와 머리로 하는 연습이에요. 개념을 내 말로 바꿔보는 게 목적이니, 부담 없이 해보세요.

[기초] 내 주변 기기에서 네 일꾼 찾기

여러분이 매일 쓰는 기기(스마트폰·노트북·게임기 등) 하나를 고르세요. 그 기기에서 CPU(일꾼)·메모리(책상)·저장장치(캐비닛)·입출력장치(문)에 해당하는 부분이 각각 무엇일지 짝지어 적어 보세요. 예를 들어 스마트폰이라면 입출력장치는 무엇무엇이 있을까요? 정답을 맞히는 것보다, 네 부품의 역할을 내 기기에 대입해 보는 게 핵심입니다.

[응용] 내 이름을 0과 1로 바꿔보기

Step 4에서 'A'는 65번이라는 약속표 이야기를 했죠. 아래 표를 이용해, 짧은 영어 단어 하나(예: 내 이름 이니셜 "HI")를 글자 → 번호 → 2진수 순서로 직접 바꿔 보세요. 손으로 적어 보면 "글자가 0과 1로 저장된다"는 게 머리가 아니라 손에 남습니다.

텍스트
   참고 약속표 (일부)
   H = 72 = 1001000      I = 73 = 1001001
   A = 65 = 1000001      Z = 90 = 1011010

[심화] "컴퓨터는 똑똑한가, 빠른가" 내 말로 설명하기

Step 1에서 "컴퓨터는 똑똑한 게 아니라 빠른 것"이라고 했습니다. 이 말에 동의하나요? 일상에서 컴퓨터(또는 스마트폰·AI)가 "똑똑해 보였던" 순간을 하나 떠올리고, 그게 사실은 "빠른 계산" 덕분이라고 설명할 수 있을지 짧은 글로 적어 보세요. 만약 "이건 빠른 것만으로는 설명 안 되는데?" 싶은 순간이 있다면, 그 의문도 함께 적어 두면 좋아요. 정답은 없습니다.


생각해볼 주제

정답이 하나로 떨어지지 않는 질문들이에요. 혼자 곰곰이 생각해도 좋고, 같이 공부하는 사람과 이야기해도 좋습니다.

1. 0과 1 단 두 글자로 어떻게 세상의 모든 정보를 담을까?

컴퓨터는 0과 1만 씁니다. 그런데 그걸로 글자·사진·음악·영상까지 전부 표현하죠. "겨우 두 글자"가 어떻게 이렇게 풍부한 걸 담을 수 있을까요? Step 3의 "전구를 여러 개 묶으면" 이야기와 연결해서, 핵심이 "글자의 종류"가 아니라 "칸의 개수"라는 점을 자기 말로 설명해 보세요.

2. "컴퓨터가 똑똑하다"는 말은 맞을까, 틀릴까?

오늘 우리는 컴퓨터를 "빠른 계산기"라고 봤습니다. 그런데 요즘 AI는 사람처럼 대화하고 그림도 그려요. 그렇다면 컴퓨터는 정말 똑똑해진 걸까요, 아니면 여전히 "빠른 계산"일 뿐일까요? "빠르다"와 "똑똑하다"는 무엇이 다른지, 그 경계가 어디일지 생각해 보세요.

3. 만약 컴퓨터가 0, 1, 2 세 가지 신호를 쓸 수 있었다면?

컴퓨터가 전기의 켜짐·꺼짐 두 가지(0과 1)를 쓰는 이유를 오늘 배웠죠. 그런데 만약 전기 신호를 "약·중·강" 세 단계로 또렷이 구분할 수 있었다면, 컴퓨터는 0·1·2 세 가지를 썼을까요? 그게 더 좋았을까요, 아니면 새로운 문제가 생겼을까요? Step 3에서 "왜 두 가지만 쓰는가"의 이유(헷갈리지 않음)와 연결해 상상해 보세요.

✅ 예시 답안정답 보기

이 문서는 A-1 「컴퓨터는 어떻게 일하나」의 과제와 생각해볼 주제에 대한 예시답안입니다. 정답을 외우는 용도가 아니라, 개념을 어떻게 내 말로 풀어내는지 흐름을 참고하는 용도로 보세요. 특히 이 과목은 "정답"보다 "스스로 설명해 보는 것"이 더 중요합니다.


과제 예시답안

🎯 [과제 1 예시답안] 내 주변 기기에서 네 일꾼 찾기

채점 포인트

항목 배점 기준
네 부품 모두 짝지음 40% CPU·메모리·저장장치·입출력을 빠짐없이 대응시켰는가
역할 이해 35% 각 부품을 "왜 그것에 대응되는지" 역할로 설명했는가
입출력 구분 25% 입력 장치와 출력 장치를 함께 짚었는가 (스마트폰은 화면이 둘 다임을 알면 가산)

풀이 예시

스마트폰을 골랐을 때:

부품 (역할) 스마트폰에서
CPU (일꾼 — 계산) 폰 안의 칩(흔히 'AP'라 부르는 두뇌). 앱을 돌리는 실제 계산을 한다
메모리 (책상 — 지금 쓰는 자료) 여러 앱을 동시에 띄워 두는 공간. 꽉 차면 앱이 느려지거나 꺼진다
저장장치 (캐비닛 — 오래 보관) 사진·앱·동영상이 저장되는 공간("저장 공간 부족" 알림의 그곳)
입출력장치 (문 — 주고받기) 입력: 터치스크린·마이크·카메라 / 출력: 화면·스피커·진동

특히 스마트폰의 화면은 재미있어요. 손가락 터치를 받아들이는 입력이면서, 동시에 그림을 보여주는 출력이기도 합니다. 한 부품이 문 역할(입력)과 창구 역할(출력)을 겸하는 셈이죠.

💡 튜터의 한마디 — 이 과제의 목적은 정확한 부품 이름을 맞히는 게 아니에요. "내가 매일 쥐는 기기 안에도 일꾼·책상·캐비닛·문이 다 있구나"를 느끼는 겁니다. 그렇게 연결해 두면, 앞으로 "메모리가 부족하다", "저장 공간이 찼다" 같은 일상의 말이 전부 오늘 배운 그림으로 또렷하게 보입니다.

🎯 [과제 2 예시답안] 내 이름을 0과 1로 바꿔보기

채점 포인트

항목 배점 기준
글자 → 번호 35% 약속표로 각 글자를 올바른 번호로 바꿨는가
번호 → 2진수 45% 번호를 0과 1로 정확히 바꿨는가
과정 이해 20% "글자 → 번호 → 0과 1"의 두 단계 흐름을 설명했는가

풀이 예시

"HI"를 바꿔보겠습니다.

텍스트
   1단계 — 글자를 약속표의 번호로
   H    72
   I    73

   2단계 — 번호를 2진수(0과 1)로
   72    1001000
   73    1001001

   결과 — "HI" 는 컴퓨터 안에서
   H        I
   1001000  1001001

2단계를 어떻게 했는지 한 번 풀어볼게요. 72를 0과 1로 바꾸는 건 "72를 어떤 2의 묶음들의 합으로 만드나"를 찾는 일이에요.

텍스트
   72 = 64 + 8
      = (64 자리 1) (32 자리 0) (16 자리 0) (8 자리 1) (4 자리 0) (2 자리 0) (1 자리 0)
      = 1 0 0 1 0 0 0
      = 1001000

64가 있으면 그 자리에 1, 없으면 0. 32·16은 안 쓰니 0, 8은 쓰니 1, 4·2·1은 안 쓰니 0. 그래서 1001000이 됩니다.

💡 튜터의 한마디 — 2진수 변환이 손에 안 익어도 괜찮아요. 이 과제의 진짜 목적은 "내 이름이 컴퓨터 안에서는 0과 1 덩어리로 저장된다"를 눈으로 확인하는 거예요. 평소 당연하게 타이핑하던 글자가, 그 아래에선 약속된 번호를 거쳐 0과 1이 된다는 것 — 이 감각 하나면 충분합니다. 2진수 계산 자체는 후속 과목에서 더 다루니 지금 완벽하지 않아도 돼요.

🎯 [과제 3 예시답안] "컴퓨터는 똑똑한가, 빠른가" 내 말로 설명하기

채점 포인트

항목 배점 기준
구체적 사례 35% "똑똑해 보였던" 순간을 구체적으로 들었는가
빠름으로 재해석 40% 그 사례를 "빠른 계산"으로 풀어 설명했는가
자기 생각 25% 동의/의문을 자기 언어로 정리했는가 (정답 없음)

풀이 예시

똑똑해 보였던 순간: 지도 앱이 목적지까지 가장 빠른 길을 1초 만에 찾아줄 때, 정말 똑똑하다고 느꼈습니다.

빠름으로 다시 보면: 그런데 사실 지도 앱이 한 일은, 출발지에서 목적지까지 가능한 수많은 길을 하나하나 따져보고 "이 길은 12분, 저 길은 15분…" 하고 전부 계산해 비교한 것이에요. 사람이 손으로 하면 몇 시간 걸릴 그 비교를, 컴퓨터가 1초에 수백만 번 계산해서 가장 짧은 걸 골라준 거죠. 똑똑한 직감으로 길을 "아는" 게 아니라, 무식할 만큼 많은 경우를 빠르게 다 계산해서 답을 찾은 겁니다.

내 생각: 그래서 저는 "똑똑하다"보다 "빠르다"가 더 정확한 표현 같습니다. 다만 한 가지 의문은 남아요 — 길 찾기는 계산으로 설명되는데, 친구에게 메시지를 추천해 주거나 사진 속 얼굴을 알아보는 건 "빠른 계산"만으로 다 설명되는 걸까? 이 부분은 더 알아보고 싶습니다.

💡 튜터의 한마디 — 마지막에 남긴 그 의문이 정말 좋아요. 사실 얼굴 인식이나 추천도 그 바닥은 "빠른 계산"(확률 계산)이지만, 그걸 한 번에 와닿게 설명하긴 어렵죠. 그 "왜?"를 품는 태도가 개발자의 출발점입니다. 정답을 적었느냐보다, 당연해 보이는 걸 한 번 뒤집어 "이게 사실은 뭐지?" 하고 물은 게 이 과제의 전부예요. 잘하셨습니다.


생각해볼 주제 예시답안

🤔 [생각해볼 주제 1] 0과 1 두 글자로 어떻게 모든 정보를 담을까

문제 상황 요약

컴퓨터는 0과 1만 쓴다. 그런데 그걸로 글자·사진·음악·영상까지 전부 표현한다. "겨우 두 글자"가 어떻게 이렇게 풍부한 정보를 담는지, 그 비밀이 "글자의 종류"가 아니라 "칸의 개수"에 있다는 점을 자기 말로 풀어보는 게 이 주제다.

튜터의 가이드 및 해설

핵심은 부족한 게 "종류"가 아니라 "개수"였다는 점이다. 0과 1 두 가지만으로는 표현이 빈약해 보이지만, 그 칸을 여러 개 묶으면 조합의 수가 폭발적으로 늘어난다.

전구로 생각하면 쉽다. 전구 하나는 켜짐·꺼짐 두 가지뿐이라 정보가 거의 없다. 그런데 전구 2개를 나란히 놓으면 (꺼짐·꺼짐), (꺼짐·켜짐), (켜짐·꺼짐), (켜짐·켜짐) — 네 가지가 된다. 3개면 8가지, 10개면 1,024가지, 20개면 100만 가지가 넘는다. 칸을 하나 늘릴 때마다 표현할 수 있는 조합이 두 배씩 불어나기 때문이다.

그래서 "두 글자라 부족하다"는 직관은 틀렸다. 글자가 두 종류뿐이어도, 칸을 충분히 많이 쓰면 어떤 정보든 담을 수 있다. 글자 하나에 8칸(1바이트)이면 256가지를 구분하니 알파벳·기호를 다 담고, 사진 한 장은 수백만 개의 점 각각을 여러 칸으로 표현하니 0과 1이 수천만 개씩 모인다. 정보가 풍부해 보이는 건 글자의 종류가 많아서가 아니라, 0과 1 칸을 어마어마하게 많이 쓰기 때문이다.

비유를 하나 더 들면, 우리가 쓰는 글자도 자음·모음 몇십 개로 세상 모든 문장을 만든다. 종류가 적어도 충분히 길게 조합하면 무엇이든 표현된다는 점에서 같은 원리다. 컴퓨터는 그 "종류"를 단 둘(0과 1)로 줄인 대신, "길이(칸 수)"를 극단적으로 늘린 것뿐이다.

💡 핵심을 한마디로

0과 1이 부족해 보이는 건 "종류"만 봐서다. 칸을 하나 늘릴 때마다 조합이 두 배로 불어나니, 두 글자라도 충분히 많이 묶으면 세상 어떤 정보든 담을 수 있다. 부족했던 건 종류가 아니라 개수였다.

🤔 [생각해볼 주제 2] "컴퓨터가 똑똑하다"는 말은 맞을까, 틀릴까

문제 상황 요약

오늘 컴퓨터를 "빠른 계산기"라고 봤다. 그런데 요즘 AI는 사람처럼 대화하고 그림도 그린다. 그렇다면 컴퓨터는 정말 똑똑해진 걸까, 여전히 "빠른 계산"일 뿐일까? "빠르다"와 "똑똑하다"가 무엇이 다른지, 그 경계가 어디일지 생각해보는 주제다.

튜터의 가이드 및 해설

먼저 "빠르다"와 "똑똑하다"의 차이를 짚어보자. 빠르다는 같은 일을 더 짧은 시간에 많이 하는 것이고, 똑똑하다는 스스로 이해하고 판단하고 의도를 갖는 것에 가깝다. 컴퓨터가 하는 일의 바닥은 변함없이 단순 계산이다. 다만 그걸 인간이 따라갈 수 없을 만큼 빠르게, 그리고 엄청난 양으로 한다.

AI도 마찬가지다. AI가 사람처럼 글을 쓰는 건, 방대한 데이터를 바탕으로 "다음에 올 가장 그럴듯한 단어"를 확률로 계산해 이어 붙이는 것이다. 결과만 보면 이해하고 판단하는 것 같지만, 안에서 벌어지는 일은 수십억 번의 곱셈과 덧셈이다. 사람처럼 "왜 이렇게 쓰는지"를 의식하거나 의도하는 게 아니라, 계산의 결과로 그럴듯한 답이 나오는 것이다.

그렇다면 그 경계는 어디일까? 이건 정답이 없는, 사람마다 갈리는 질문이다. 어떤 사람은 "결과가 똑똑해 보이면 똑똑한 것"이라 하고(겉으로 드러난 행동을 기준으로), 어떤 사람은 "스스로 이해하고 의도해야 똑똑한 것"이라 한다(속에서 일어나는 일을 기준으로). 후자의 기준으로 보면 오늘날의 컴퓨터·AI는 여전히 "아주 빠르고 정교한 계산"에 가깝다.

여기서 중요한 깨달음은 이거다 — 무엇이 진짜 똑똑함인지를 따지는 것 자체보다, 컴퓨터가 결국 계산으로 움직인다는 사실을 아는 게 우리에게 힘이 된다. 그 원리를 알면 컴퓨터가 마법 상자가 아니라 "내가 정확히 시키면 정확히 따르는 도구"로 보이고, 그래서 우리가 그걸 부릴 수 있게 된다. 똑똑하든 빠르든, 결국 그 안의 원리를 이해한 사람이 그 도구를 다룬다.

💡 핵심을 한마디로

컴퓨터와 AI가 똑똑해 보이는 건 "빠르고 방대한 계산"의 결과이지, 사람처럼 이해하거나 의도해서가 아니다. 무엇이 진짜 똑똑함인지보다, 그 바닥이 계산이라는 걸 아는 사람이 결국 그 도구를 부릴 수 있다.

🤔 [생각해볼 주제 3] 만약 컴퓨터가 0, 1, 2 세 가지 신호를 쓸 수 있었다면

문제 상황 요약

컴퓨터가 전기의 켜짐·꺼짐(0과 1)을 쓰는 이유는 그 둘이 절대 안 헷갈리기 때문이었다. 그렇다면 만약 전기 신호를 "약·중·강" 세 단계로 또렷이 구분할 수 있었다면, 컴퓨터는 0·1·2를 썼을까? 그게 더 좋았을까, 새로운 문제가 생겼을까? "왜 두 가지만 쓰는가"의 이유와 연결해 상상해보는 주제다.

튜터의 가이드 및 해설

먼저 "0·1·2를 쓰면 좋은 점"부터 보자. 신호 종류가 셋이면 한 칸이 담는 정보가 늘어난다. 0과 1은 한 칸에 두 가지뿐이지만, 0·1·2는 세 가지를 담으니, 같은 칸 수로 더 많은 걸 표현할 수 있다. 이론적으로는 더 적은 칸으로 같은 정보를 담아 효율적일 수 있다.

그런데 여기서 오늘 배운 핵심이 발목을 잡는다. 컴퓨터가 0과 1만 쓰기로 한 진짜 이유는 "효율"이 아니라 "안 헷갈림"이었다. 전기가 흐른다/안 흐른다는 또렷하게 구분되지만, 전기 세기를 "약·중·강" 세 단계로 나누면 그 경계가 흐릿해진다. 약과 중의 중간쯤 되는 애매한 세기가 들어오면 컴퓨터가 헷갈리고, 그러면 계산이 틀린다. 신호 종류를 늘릴수록 구분해야 할 경계가 많아져서, 작은 잡음에도 오류가 날 위험이 커진다.

컴퓨터에서는 "빠르고 효율적인 것"보다 "절대 틀리지 않는 것"이 훨씬 중요하다. 계산기가 가끔 틀린 답을 낸다면 아무도 못 믿을 테니까. 그래서 약간의 효율을 포기하더라도, 절대 안 헷갈리는 두 가지 상태(0과 1)를 택한 것이다. 실제로 과거에 셋 이상의 신호를 쓰는 컴퓨터를 시도한 적도 있지만, 안정성과 만들기 쉬움에서 2진법이 이겨서 지금까지 표준으로 남았다.

이 주제가 보여주는 큰 교훈은, 기술의 선택이 늘 "가장 효율적인 것"으로 가지 않는다는 점이다. 때로는 "덜 효율적이어도 더 단순하고 확실한 것"이 이긴다. 컴퓨터의 0과 1이 바로 그 예다. 앞으로 프로그래밍을 배우며 "왜 더 좋은 방법을 두고 이렇게 할까?" 싶을 때, 그 답이 "확실함·단순함" 때문인 경우를 자주 만나게 될 것이다.

💡 핵심을 한마디로

신호가 세 가지면 한 칸에 더 많이 담아 효율적일 수 있지만, 경계가 흐려져 헷갈릴 위험이 커진다. 컴퓨터는 효율보다 "절대 안 틀림"이 중요해서, 덜 효율적이어도 가장 확실한 두 상태(0과 1)를 택했다.

전체 목록 개발 입문