2.3. 프로그램과 현대 컴퓨터 구조

1. 프로그램이란?
프로그램이란 무엇일까요? 개발자가 되기 위해 가장 기초적인 이 용어의 본질을 역사적 흐름과 함께 이해해 봅시다.
▲ 프로그래밍과 코딩의 역사
단순하게 말해 프로그램이란 "기계에게 특정 작업을 수행하도록 지시하는 명령어들의 집합"입니다. 이러한 개념의 시초는 현대적인 컴퓨터가 등장하기 훨씬 전인 18세기로 거슬러 올라갑니다.
기계에 명령을 내리는 최초의 방식은 천공 카드(Punch Card)였습니다. 이는 1804년, 프랑스의 조제프 마리 자카드가 개발한 자카드 방직기에서 원하는 무늬를 짜기 위해 구멍 뚫린 종이 카드를 사용하던 것에서 유래했습니다. 천공 카드의 등장은 딱딱한 '물리적 기계'와 유연한 '명령어 패턴'을 최초로 분리해 낸 역사적인 사건이었으며, 이것이 바로 오늘날 우리가 부르는 '하드웨어'와 '소프트웨어' 개념의 시초가 되었습니다.
- 1. 명령과 기계의 분리 (소프트웨어의 탄생)
과거의 기계(예: 파스칼린 계산기, 1642)는 특정 기능(덧셈 등)을 수행하기 위해 기계 자체를 해당 용도에 맞게 설계해야 했습니다. 하지만 천공 카드가 등장하면서 기계(하드웨어)는 그대로 두고, 입력하는 종이(명령어)만 바꿔 끼우면 전혀 다른 작업을 수행할 수 있게 되었습니다. - 2. 원시적인 코딩 (이진법적 명령의 형태)
종이에 구멍이 뚫려 있으면 '1'(바늘 통과/전류 흐름), 없으면 '0'(바늘 막힘/전류 차단)으로 기계가 인식하게 하여 동작 패턴을 순차적으로 입력했습니다. 이처럼 천공 카드에 구멍을 뚫어 새로운 패턴을 만드는 행위가 바로 현대 프로그래밍의 기원이 되었습니다. - 3. 초기 방식의 한계와 진화
천공 카드는 정보를 순차적으로 입력하는 데는 훌륭했지만, 상황에 따라 스스로 흐름을 바꾸는 복잡한 '알고리즘(조건, 반복 등)'을 구현하기에는 한계가 있었습니다. 이를 해결하기 위해 명령어를 외부 종이가 아닌 컴퓨터 내부의 '메모리'에 저장하고 처리하는 현대식 컴퓨터(내장형 프로그램 방식)가 탄생하게 되었습니다.
2. 폰 노이만 구조
초기의 전자식 컴퓨터(ENIAC,1946 등)는 다른 계산을 하려면 사람이 직접 수천 개의 전선(배선)을 뽑았다가 다시 꽂아야 했습니다. 이를 '하드웨어 프로그래밍'이라고 부르는데, 프로그램 하나를 바꾸는 데 몇 주씩 걸리는 고된 작업이었습니다.
이 문제를 해결한 천재가 바로 존 폰 노이만(John von Neumann)입니다.
💡 폰 노이만 구조의 핵심 (1945년 제안)
"전선을 일일이 바꾸지 말고, 프로그램(명령어)도 데이터처럼 메모리 안에 저장해두자!"
이 '프로그램 내장 방식(Stored-Program Concept)' 덕분에 소프트웨어라는 개념이 탄생했고, 우리는 하드웨어를 뜯어고칠 필요 없이 코드만 수정하면 되는 시대를 맞이하게 되었습니다.
3. 현대적 컴퓨터 구조: 내장형 프로그램과 입출력 장치
프로그램이 컴퓨터 내부(메모리)로 들어가버리자, 새로운 문제가 생겼습니다.
“기계 안에 있는 프로그램이 잘 돌아가는지 어떻게 확인하고, 어떻게 명령을 내리지? ”
과거에는 전선을 직접 꽂거나 스위치를 조작하며 눈앞에서 기계의 동작을 확인했지만, 프로그램이 데이터의 형태로 메모리에 상주하게 되자 인간이은 추상적인 데이터와 대화할 도구가 필요해진 것입니다. 이 필연적인 갈증이 현대 컴퓨터의 표준 입출력 구조를 탄생시켰습니다.

- 모니터 (출력 장치): 내장된 프로그램의 처리 결과와 상태를 눈으로 확인하기 위해 연결되었습니다.
- 키보드/마우스 (입력 장치): 내장된 프로그램에 실시간으로 명령을 내리고 데이터를 입력하기 위해 연결되었습니다.
결국 [입력(키보드) ➡ 처리/저장(본체/메모리) ➡ 출력(모니터)]로 이어지는 이 구조가 바로 컴퓨터의 최초이자 표준 구조로 완성된 것입니다.
4. 요약 및 정리: 학습 목표 복기
이번 챕터에서 배운 핵심 내용을 학습 목표에 맞춰 정리해 봅시다.
🎯 1. 컴퓨터의 기원과 '계산'의 본질
"계산은 고된 노동이었다"
컴퓨터는 인간의 실수를 줄이고 반복적인 계산 노동을 자동화하기 위해 탄생했습니다. 사칙연산의 단순화를 통해 '더하기와 빼기'를 극한의 속도로 수행하는 것이 현대 CPU 동작의 근간임을 이해했습니다.
🎯 2. 하드웨어와 소프트웨어의 분리
"기계는 그대로, 명령만 바꾼다"
자카드 방직기와 천공 카드를 통해 물리적 장치(하드웨어)와 동작 지침(소프트웨어)이 분리되었습니다. 이는 하드웨어를 새로 만들지 않고도 코드(명령어)만 바꾸면 다른 일을 시킬 수 있는 '프로그래밍' 개념의 시작이었습니다.
🎯 3. 폰 노이만 구조와 현대적 표준
"내장형 프로그램 방식의 승리"
전선을 뽑고 꽂는 방식에서 벗어나, 프로그램을 데이터처럼 '메모리'에 저장하는 폰 노이만 구조가 확립되었습니다. 이로 인해 [입력 ➡ 처리/저장 ➡ 출력]이라는 현대 컴퓨터의 표준 아키텍처가 완성되었습니다.
수고하셨습니다!
하드웨어라는 빈 도화지는 준비되었습니다.
하지만 0과 1밖에 모르는 기계에 인간은 어떻게 복잡한 명령을 내릴 수 있을까요?
[다음 챕터] 인간의 생각이 어떻게 프로그램으로 바뀌는지 본격적으로 알아보겠습니다.