요약

  • 앤드류 D. 부스와 캐슬린 H. V. 브리튼의 1947년 보고서 『Coding for A.R.C.』는 수학적 절차와 20비트 기계 명령 사이에 축약된 기호적 작업 계층을 놓았습니다. 이는 초기 어셈블리 언어의 이정표였지만, 남아 있는 증거는 단일 발명가나 논쟁 없는 “최초의 어셈블러”라는 단순한 서사를 뒷받침하지 않습니다.
  • 이 표기법은 기계의 제약을 그대로 유지하면서 전사(轉寫)와 검토 비용을 줄였습니다. 기호를 유효한 명령으로 변환하는 것은 주소와 연산 코드가 올바르게 구성되었음을 보여줄 수 있었지만, 알고리즘·가정·입력·출력이 신뢰할 수 있다는 것을 증명하지는 못했습니다.

사라지지 않은 20비트

『Coding for A.R.C.』에 기술된 명령은 모호함의 여지가 없었습니다. 20비트 중 8비트는 메모리 위치를 선택했고, 7비트는 순서 번호를 담았으며, 마지막 5비트는 연산을 인코딩했습니다. 잘못된 필드에 입력된 숫자는 약간 다른 해석이 되는 것이 아니라 완전히 다른 명령이 되었습니다.

부스와 브리튼의 대응은 필드가 사라진 것처럼 가장하는 것이 아니었습니다. 그들은 필드 위에 더 실용적인 계층을 만들었습니다. 표 한 장이 축약된 기호와 숫자 명령 코드를 짝지었습니다. 프로그래머는 먼저 산술과 제어 흐름을 기술한 뒤 개략 코드를 만들고, 저장 공간을 배정하고, 마지막으로 기계가 실행할 세부 명령을 배열했습니다.

그 순서가 “어셈블리 언어”라는 익숙한 라벨보다 더 중요합니다. 이는 프로그래밍 행위를 여러 해상도에서 검사 가능하게 만들었습니다. 동료는 주소를 세기 전에 수학적 방법에 의문을 제기할 수 있었고, 코더는 분기를 필드에 담기 전에 루프를 추적할 수 있었습니다. 마지막에만 모든 기호적 의도가 ARC가 수행할 위치, 순서, 연산으로 자리 잡아야 했습니다.

이 보고서는 하드웨어 전환과도 결부되어 있었습니다. 서문에 따르면 릴레이 계산기에 사용된 코드는 전자식 기계용으로 계획된 코드와 동일했습니다. 따라서 이미 ARC용으로 코딩된 문제는 계획된 후속 기계로 옮겨갈 수 있었고, 릴레이 기계에서의 경험은 바꿀 만한 가치가 있는 변경 사항을 드러낼 수 있었습니다. 이는 표기법이 기계로부터 자유롭게 떠 있다는 주장이 아니라, 의도적으로 공유된 아키텍처를 통한 재사용이었습니다.

하나 이상의 계보를 가진 보고서

표지에는 앤드류 D. 부스와 캐슬린 H. V. 브리튼의 이름이 적혀 있습니다. 캐슬린은 아직 앤드류와 결혼하지 않았는데, 그래서 역사적 문서에는 오늘날 일반적으로 알려진 성이 아니라 당시의 성이 기록되어 있습니다. 그녀의 공로를 온전히 인정하는 일이 곁에 인쇄된 공동 저자를 지우는 것을 요구하지는 않습니다.

이 방법에는 또 하나의 공표된 계보가 있었습니다. 부스와 브리튼은 허먼 골드스타인과 존 폰 노이만이 개발한 반복적 계획 기법을 언급했습니다. 그들의 IAS 연구는 코딩을 하나의 어휘를 다른 어휘로 정적 치환하는 작업이 아니라, 끊임없이 변하는 제어 과정의 설계로 다루었습니다. 저장 프로그램 방식 기계는 분기하고, 명령을 다시 방문하고, 심지어 자신의 코드 일부를 바꿀 수 있었기 때문에 상세한 열거보다 흐름도가 먼저 나왔습니다.

기계 자체도 협업의 산물이었습니다. Birkbeck의 기관사에는 1946년 12월 캐슬린 브리튼, 젱가 스위팅(Xenia Sweeting), 앤드류 부스가 ARC 작업을 하는 사진에 캡션이 붙어 있습니다. 이후 구술사에서 앤드류는 캐슬린이 다른 여성과 함께 기계 시리즈 거의 전부를 배선했다고 회상했습니다. 그의 기억은 완전한 노동 기록이라기보다는 증언이지만, 흔한 단독 발명자 서사를 유지하기 어렵게 만듭니다.

캐슬린의 이후 기록은 그 연속성을 뒷받침합니다. 그녀의 1958년 저서 『Programming for an Automatic Digital Calculator』는 APE(X)C 계열과 관련 기계를 중심으로 프로그래밍 실무를 발전시켰습니다. 이는 1947년 보고서가 다른 사람의 하드웨어와의 형식적 연관이었음을 보여주지 않습니다. 그러나 ARC를 둘러싼 모든 기여가 개인의 소유물이 된다는 뜻이기도 하지 않습니다.

기호적이라는 것이 독립적이라는 뜻은 아니다

약칭은 기계가 받아들이는 것을 바꾸지 않고도 명령을 기억하기 쉽게 만들 수 있습니다. 그것이 ARC 체계의 섬세한 성과입니다. 기호는 검토와 재사용을 위한 인간 친화적 표면을 만들었지만, 모든 줄은 여전히 특정 명령 집합과 메모리 구성에 책임을 져야 했습니다.

이 구분은 종종 하나로 압축되는 두 가지 역사적 주장을 분리합니다. 부스-브리튼 보고서는 1947년에 발표된 초기 기호 표기법과 완전한 단계별 코딩 방법의 증거입니다. 데이비드 휠러의 1949년 EDSAC Initial Orders는 다른 이정표를 대표합니다. 케임브리지 자료는 문자 코드로 된 EDSAC 명령을 기술하고 있으며, 컴퓨터 역사 박물관은 휠러에게 기계에 내장된(하드와이어드) 어셈블러의 공을 돌립니다. “가장 이른 기호 표기법”과 “최초의 작동하는 어셈블러”는 문서, 번역, 그리고 실제 가동되는 기계에 대해 서로 다른 질문을 던집니다.

굳이 둘을 하나의 단상에 세워야 할 필요는 없습니다. 더 유익한 역사는 인터페이스의 축적입니다. 제어를 위한 다이어그램, 인간을 위한 축약 명령, 기호와 코드를 묶는 표, 그리고 기계가 준비된 프로그램을 받아들이게 하는 적재 루틴이 그것입니다. 각 단계는 작업을 원시 비트에서 멀어지게 하면서도 하위 계층에 정확한 의무를 남겼습니다.

성공적인 변환이 실제로 증명하는 것

기호 프로그램이 아무 불평 없이 변환되었다고 가정해 봅시다. 연산 기호는 존재합니다. 주소는 사용 가능한 필드에 맞습니다. 결과 워드는 기계가 기대하는 위치에 놓일 수 있습니다. 손으로 긴 계산을 옮겨 적을 때 이런 보장은 특히 가치 있습니다.

그러나 이는 목적의 증명이 아닙니다. 분기는 완벽하게 인코딩되었으면서도 잘못된 조건을 선택할 수 있습니다. 반복 방법은 쓰인 그대로 정확히 실행되면서, 모델이 부적절했기 때문에 쓸모없는 결과로 수렴할 수 있습니다. 올바르게 주소 지정된 입력은 오래되었거나 편향되었거나 잘못된 가정 하에서 측정된 것일 수 있습니다. 기계는 작업을 끝내면서 오류를 오히려 더 권위 있게 만들 수 있습니다.

이 경계는 현대 시스템에서도 익숙합니다. 컴파일러는 소스가 언어와 타입 규칙에 따라 변환되었다고 보고합니다. 배포 시스템은 선언된 자원이 수용되었다고 보고합니다. 인프라 도구는 관찰된 상태가 계획과 일치한다고 보고합니다. 그러나 그 어떤 메시지도 그 자체로 정책이 공정하고, 데이터가 대표적이고, 의존성이 안전하고, 비즈니스 결정이 현명하다는 것을 증명하지 못합니다.

부스와 브리튼의 표기법이 가치 있는 것은 바로 이 경계를 폐지하지 않기 때문입니다. 각 측면에 이름 붙일 수 있는 책임을 부여합니다. 인간의 추론이 절차를 선택합니다. 기호적 코딩은 정의된 어휘 아래에서 그것을 표현합니다. 번역과 세부 코딩은 그 어휘를 기계 필드에 묶습니다. 실행은 그 명령을 따릅니다. 그 후 결과는, 결과가 의도한 의미를 지니는지를 판단해야 하는 사람들에게 돌아갑니다.

인터페이스는 통제 표면이었다

어떤 표기법이 기계의 정상적인 입구가 되면, 그것을 유지보수하는 이가 사용자가 표현할 수 있는 것과 어떤 오류가 드러나는지에 영향을 미칩니다. ARC 명령 표는 하드웨어 트레이드오프를 인코딩했습니다. 어떤 연산이 존재하는지, 주소에 몇 비트가 배정되는지, 제어가 어떻게 이동하는지, 중간 값이 어디에 저장되는지가 그것입니다. 친화적인 표면이 기계가 갖지 못한 연산을 만들어낼 수는 없었습니다.

그렇기에 추상화는 곧 거버넌스이기도 합니다. 좋은 추상화는 자신의 경계를 공표합니다. 어떤 변환을 수행하는지, 어떤 가정이 외부에 남는지, 독자가 생성된 결과를 어떻게 검사할 수 있는지입니다. 나쁜 추상화는 성공적인 변환을 폭넓은 정확성 인증서로 바꿔 놓습니다. 그 차이가 연산자가 결정이 실행으로 굳어지기 전에 이의를 제기할 수 있는지를 결정합니다.

캐슬린 부스의 지속적인 공헌은 극대화된 “최초”로 보호하는 것이 아닙니다. 그녀가 공동 저자로서 만들고 이후에도 발전시킨 작업 방법에서 더 명확히 드러납니다. 기계 제어를 판독 가능하게 만들고, 매핑을 정확하게 유지하며, 기계가 받아들일 수 있는 표기법과 세계가 받아들여야 한다는 판단을 혼동하지 않는 것입니다.

출처