MK ATLAS· 과학 아틀라스

개념 풀이

기계에게 말을 거는 법 — 컴퓨터 언어는 사람을 위한 것

컴퓨터 언어라고 하니 기계를 위한 말 같습니다. 반대입니다. 기계가 알아듣는 말은 숫자 명령 하나뿐이고, 프로그래밍 언어는 전부 사람이 읽으라고 만든 것입니다. 그리고 첫 프로그램은 컴퓨터가 생기기도 전에 쓰였습니다.

이 글이 꿰는 질문들 24분 분량갱신 2026-09-01

1·2편에서 본 대로 컴퓨터 속은 스위치 덩어리이고, 그 스위치를 움직이는 명령도 결국 켜짐과 꺼짐의 줄, 즉 숫자입니다. '이 숫자를 저기로 옮겨라'가 어떤 번호, '두 숫자를 더해라'가 어떤 번호, 이런 식입니다. 이것을 기계어라고 부릅니다.

초기에는 사람이 이 숫자를 직접 다뤘습니다. 종이 카드에 구멍을 뚫어서요. 구멍이 있으면 1, 없으면 0. 프로그램 하나가 카드 수천 장이었고, 떨어뜨려 순서가 섞이면 끝장이었습니다.

첫 프로그램은 컴퓨터보다 먼저 나왔다

놀랍게도 프로그램이라는 것을 처음 쓴 사람은 컴퓨터를 한 번도 본 적이 없습니다. 볼 수가 없었습니다. 아직 만들어지지 않았으니까요.

19세기 영국에 톱니바퀴로 계산하는 기계를 설계한 사람이 있었고, 그 기계는 끝내 완성되지 못했습니다. 그런데 그 설계도를 들여다보던 한 수학자가, 존재하지도 않는 그 기계에게 시킬 명령의 목록을 써 내려갔습니다. 순서대로, 되돌아가는 자리까지 표시해 가면서요.

그는 더 멀리 내다봤습니다. 이 기계가 다루는 것이 꼭 숫자일 필요가 없다고, 규칙만 정해주면 음악도 다룰 수 있을 거라고 적었습니다. 세상이 그 말을 따라잡는 데 백 년이 걸렸습니다.

번역을 기계에게 맡기다

카드 구멍 시대가 지나고, 사람들은 숫자 명령에 짧은 별명을 붙였습니다. '옮겨라'는 MOV, '더해라'는 ADD. 외우기는 나아졌지만 여전히 기계의 사정에 맞춘 말이었습니다.

1950년대에 어떤 프로그래머가 한 발 더 나간 생각을 합니다. 사람 말에 가까운 문장을 쓰면, 그걸 숫자로 바꾸는 일 자체를 컴퓨터에게 시키자. 번역 프로그램을 만들자는 것이었죠.

당시 반응은 싸늘했습니다. 컴퓨터는 계산이나 하는 기계인데 말을 어떻게 알아듣냐는 것이었습니다. 그가 옳았습니다. 오늘날 모든 프로그래밍 언어가 그 번역기 위에 서 있습니다. 사람은 사람의 말에 가깝게 쓰고, 번역기가 기계의 숫자로 바꿉니다.

여기부터 조금 더

기계는 시키는 대로만 한다

컴퓨터 언어로 말을 걸 때 가장 낯선 점은 융통성이 전혀 없다는 것입니다. 샴푸 통에 적힌 대로 해봅시다. '머리에 바르고, 헹구고, 반복하시오.' 사람은 두 번쯤 하고 멈춥니다. 컴퓨터는 영원히 반복합니다. 멈추라는 말이 없었으니까요.

프로그램의 오류라는 것은 대개 이런 것입니다. 기계가 고장 난 게 아니라, 시킨 대로 정확히 했는데 시킨 것이 틀린 경우. 그래서 프로그래밍의 절반은 쓰는 일이 아니라 내가 무슨 말을 한 건지 되짚는 일입니다.

말 한 줄이 목숨을 다루게 되다

처음에 프로그램은 계산 심부름이었습니다. 그런데 1960년대가 되자 사람이 탄 우주선이 프로그램으로 날게 됩니다. 이제 말 한 줄의 무게가 달라졌습니다.

달 착륙선이 내려가던 순간, 컴퓨터에 일이 몰려 경보가 울렸습니다. 감당 못 할 만큼의 일이 쏟아진 것입니다. 그런데 그 컴퓨터의 프로그램에는 이런 대비가 미리 적혀 있었습니다. 일이 넘치면, 덜 중요한 일을 버리고 착륙에 필요한 일부터 하라.

컴퓨터는 시킨 대로 덜 중요한 일을 버렸고, 착륙선은 무사히 내렸습니다. 잘못될 때 무엇을 먼저 할지까지 미리 말해둔 것 — 그 팀을 이끈 사람은 이 일에 '소프트웨어 공학'이라는 이름을 붙였습니다.

그런데 아직 이상한 점이 남아 있습니다. 프로그램을 갈아 끼우면 같은 기계가 전혀 다른 일을 합니다. 계산기였다가 편지지였다가 게임판이 됩니다. 기계 하나가 어떻게 무엇이든 될 수 있을까요. 다음 편은 그 물음에서 시작합니다.

남은 질문융통성 없는 기계에게 정확히 말하는 법을 익히는 일 — 그것은 기계의 말을 배우는 것일까요, 내 생각을 정리하는 법을 배우는 것일까요?