TECH 으로 돌아가기
TECH HACKER NEWS 오늘 8분 읽기 27 READS

앨런 케이가 말한 스몰토크의 탄생, 객체지향은 왜 '메시지'에서 시작됐나

오늘날 객체지향 프로그래밍(OOP)을 쓰지 않는 실무자는 거의 없다. 그런데 이 패러다임이 어디서, 어떤 문제의식에서 출발했는지는 의외로 잘 알려져 있지 않다. 앨런 케이(Alan Kay)가 1993년 ACM HOPL-II 콘퍼런스를 위해 쓴 '스몰토크의 초기 역사(The Early History of Smalltalk)'는 바로 그 출발점을 당사자의 시선으로 기록한 문헌이다. 케이는 스몰토크를 단순한 언어 발명이 아니라 '개인용 컴퓨팅'이라는 더 큰 흐름의 일부로 설명한다. 그가 애플에서 이 글을 쓰던 1992년, 무릎 위에는 겹쳐지는 창과 비트맵 화면, 포인팅 장치를 갖춘 2.3kg짜리 노트북이 있었고 그 위에서 스몰토크가 돌아가고 있었다. 1960년대 후반에 상상했던 '다이나북(Dynabook)'이 양적으로는 거의, 질적으로는 아직 다 이르지 못한 형태로 실현된 셈이다.

'more than a better old thing'이라는 관점

케이가 거듭 강조하는 핵심은 태도다. 1960년대 ARPA 연구 공동체는 시분할 컴퓨터, 그래픽 화면, 포인팅 장치를 통한 '인간-컴퓨터 공생'이라는 개념을 쏟아냈다. 여기서 두 갈래의 길이 갈린다. 하나는 이 성과들을 '기존 메인프레임 컴퓨팅을 더 잘하는 방법'으로 보는 것이고, 다른 하나는 '거의 새로운 무언가'로 보고 진짜 새로운 것이 무엇인지 찾아 나서는 것이다. 케이는 후자를 택했다. 컴퓨팅 성능이 단가 대비 기하급수적으로 늘어난다는 전망 위에서, 손에 쥐는 컴퓨터는 공유 메인프레임으로는 불가능한 방식으로 작동해야 하고, 수백만 명의 잠재 사용자를 위한 인터페이스는 몬테소리나 브루너식 학습 환경이 되어야 한다고 봤다. 그는 스몰토크가 '더 나은 옛것'이 아니라 쿤이 말한 패러다임 전환, 즉 인쇄술의 발명에 비견할 믿음 구조의 질적 변화를 노린 극단적 입장에서 태어났다고 말한다.

모든 것이 세포처럼 메시지로만 소통한다

스몰토크의 설계 원리는 한 문장으로 압축된다. 우리가 기술할 수 있는 모든 것은, 상태와 처리 과정을 자기 안에 감추고 오직 메시지 교환으로만 다뤄지는 단 한 종류의 행위 단위를 재귀적으로 조합해 표현할 수 있다는 것이다. 케이는 데이터 구조, 프로시저, 함수처럼 전체보다 약한 조각으로 '컴퓨터적인 것'을 나누는 대신, 각 객체를 컴퓨터 전체의 가능성에 대한 재귀로 보았다. 그의 비유에 따르면 스몰토크의 의미론은 수천, 수만 대의 컴퓨터가 아주 빠른 네트워크로 연결된 것과 비슷하다. 이렇게 보면 구체적인 표현 방식에 대한 결정은 거의 무한히 뒤로 미룰 수 있다. 중요한 건 각 객체가 적절히 '행동'하는가이지, 내부를 어떻게 구현했는가가 아니기 때문이다. 오늘날 우리가 당연하게 여기는 캡슐화와 인터페이스 중심 사고가 바로 여기서 명확한 형태를 얻었다.

OOP를 밀어붙인 동기는 크게 두 가지였다. 큰 쪽은 복잡한 시스템에서 세부를 숨기는 더 나은 모듈 방식을 찾는 것, 작은 쪽은 할당(assignment)의 더 유연한 형태를 찾고 나아가 그것을 아예 없애는 것이었다. 케이는 새 아이디어가 받아들여지는 단계를 흥미롭게 서술한다. 안에서는 패턴을 '겨우 보다가' 몇 번 알아차리고, 여러 영역에서 실제로 써 보다가, 어느 순간 사고의 중심으로 '대회전'하고, 끝내는 자신이 깨뜨렸던 것과 같은 경직된 종교가 된다. 밖에서는 쇼펜하우어의 말처럼 처음엔 미친 자의 작품으로 매도되다가, 몇 년 뒤 당연하고 평범한 것이 되고, 마지막엔 처음 비난했던 이들이 자기가 발명했다고 주장한다.

언어는 '기능의 응집'이거나 '스타일의 결정'이다

실무자 입장에서 특히 곱씹을 만한 분류가 있다. 케이는 프로그래밍 언어를 '기능의 응집(agglutination of features)'과 '스타일의 결정(crystallization of style)' 두 종류로 나눈다. 코볼, PL/1, 에이다는 전자이고 리스프, APL, 그리고 스몰토크는 후자다. 그는 응집형 언어가 대개 위원회에서 시작되고, 결정형 언어는 한 사람에게서 나온다는 점이 우연이 아닐 것이라고 덧붙인다. 일관된 설계 철학 하나가 수많은 기능 명세보다 언어의 성격을 결정한다는 관찰은, 지금도 사내 프레임워크나 API를 설계하는 사람에게 유효한 기준이다.

다만 이 글을 읽을 때 유념할 한계도 분명하다. 케이 스스로 이것은 '배우들이 무대를 떠난 한참 뒤에 하는 희미한 손짓'이며 역사는 그리 진지하게 믿을 것이 못 된다고 못 박는다. 그의 감정적 무게중심은 언어 설계가 아니라 '인간의 역량을 증폭하는 도구로서의 개인용 컴퓨팅'에 있었고, 그마저 아직 다 도달하지 못했다고 고백한다. 또한 그는 스몰토크가 자신의 발상이지만 실제로 작동하게 만들고 세상에 내보낸 사람들, 특히 댄 잉걸스(Dan Ingalls)와 아델 골드버그(Adele Goldberg)의 것이라고 반복해 강조한다. 프로그래밍은 결국 실제 물건을 만드는 실천적 기예이며, 구현이 존재하지 않는 언어는 아무리 뛰어나도 쓰이지 않는다는 지적이다. 오늘날 수많은 언어가 본질적 장점보다 특정 기계 위에서 실제로 돌아가고 부트스트랩할 수 있다는 이유로 살아남았다는 그의 말은, 아이디어와 실행을 혼동하기 쉬운 현장에 대한 경고로 읽힌다.

케이가 1961년 공군에서 겪은 버로스 220 일화는 이 점을 상징적으로 보여준다. 표준 운영체제도 파일 포맷도 없던 시절, 누군가 파일을 세 부분으로 나눴다. 세 번째는 임의의 크기와 형식을 가진 실제 데이터, 두 번째는 그 데이터를 다루는 방법을 아는 프로시저, 첫 번째는 그 프로시저의 진입점을 가리키는 포인터 배열이었다. 데이터와 그것을 다루는 코드를 함께 묶고 외부에는 표준화된 진입점만 노출한 이 구조는 이후 많은 시스템에 쓰였다. 케이는 이를 객체의 개념을 '겨우 본' 첫 순간으로 꼽는다. 추상적 원리가 아니라 호환성이라는 지극히 현실적인 문제를 풀려던 익명의 설계자에게서 핵심 발상이 나왔다는 사실은, 좋은 추상이 종종 눈앞의 제약과 씨름하는 과정에서 결정화된다는 점을 다시 일깨운다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://worrydream.com/EarlyHistoryOfSmalltalk/
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...