튜링·폰노이만 — 계산기가 컴퓨터가 된 순간
튜링머신의 수학적 모델 + 폰노이만의 프로그램 내장식 구조 = 현대 컴퓨터의 설계도.
오늘 돌아가는 모든 CPU는 1945년 폰노이만이 그린 설계도의 직계 후손이다. AI가 '계산할 수 있는 것'과 '없는 것'의 경계를 이해하려면 튜링의 정의를 알아야 한다.
1936년 앨런 튜링이 "계산이란 무엇인가"를 수학적으로 정의했다. 무한한 테이프에 기호를 읽고 쓰며 상태를 바꾸는 가상 기계 — 튜링머신. 이것으로 할 수 있는 것이 곧 계산 가능한 것의 정의가 됐다. 현대의 모든 컴퓨터는 결국 '튜링머신과 동등'하다.
1945년 폰노이만 보고서는 설계 원리를 제시했다. 핵심은 프로그램 내장식(stored-program) — 프로그램(명령어)도 데이터와 같은 메모리에 저장된다. 이전에는 새 프로그램마다 회로를 재배선했다. 폰노이만 구조 이후엔 메모리에 명령어만 올리면 같은 하드웨어로 무엇이든 할 수 있게 됐다.
| 구성 요소 | 역할 | 비유 |
|---|---|---|
| CPU (제어 + ALU) | 명령어를 꺼내 해석·실행 | 요리사 |
| 메모리 | 명령어와 데이터 저장 | 조리대 |
| I/O | 키보드·모니터·디스크 | 손님 주문·음식 배달 |
| 버스 | CPU↔메모리↔I/O 연결 통로 | 주방 동선 |
"Code is data, data is code" — 이 한 줄이 폰노이만의 혁명. 덕분에 컴파일러(코드를 데이터로 다뤄서 다른 코드 생성), JIT, 자기수정 프로그램, LLM이 코드를 생성하는 것까지 전부 가능하다.
튜링 완전성(Turing-complete) — 어떤 시스템이 튜링머신이 할 수 있는 모든 계산을 할 수 있으면 '튜링 완전'. Python·C·JavaScript·스프레드시트·심지어 MS Excel 수식까지 튜링 완전. 반대로 HTML·JSON·SQL(재귀 CTE 없는 버전)은 아니다.
AI 시대의 경고 — 튜링의 정지 문제(Halting Problem)는 "임의 프로그램이 언제 멈출지 일반적으로 예측 불가"를 증명했다. LLM이 아무리 영리해도 이 수학적 경계는 깨지 못한다. 버그 없는 코드 생성 AI는 원리적으로 불가능하다는 근거.
명령어와 데이터를 같은 메모리에 저장해 범용 컴퓨터를 가능케 한 구조를 제안한 사람은?
어떤 언어가 튜링 완전이라면 이론상 그 언어로 불가능한 계산은 없다.