← 모든 글

엔지니어링 철학: 앨런 케이, 핵심은 메시징이다

앨런 케이, 객체 지향 프로그래밍과 개인용 컴퓨터의 선구자인 컴퓨터 과학자

핵심 요점

  • 핵심은 객체가 아니라 메시징입니다. 케이는 “객체”라는 용어를 만든 것을 후회했습니다. 그 말이 사람들의 시선을 클래스와 상속이라는, 덜 중요한 개념으로 향하게 하기 때문입니다. 정작 중요한 것은 서로에게 메시지를 보내고, 그 메시지가 무엇을 뜻하는지는 받는 쪽이 결정하도록 하는 독립적인 존재들입니다.
  • 관점의 전환은 IQ 80점의 가치가 있습니다. 잘못된 틀 안에서 어려운 문제를 머리로 이겨낼 수는 없습니다. 그 문제가 쉬워지는 틀을 찾아야 합니다. 소프트웨어에서는 메시징이 바로 그 수였습니다.
  • 다이나북은 컴퓨팅을 작업 도구가 아니라 사고의 매체로 재정의했습니다. 1972년에 스케치한 노트북과 태블릿은, 사람이 이전에는 생각할 수 없던 생각을 할 수 있게 돕기 위한 것이었습니다.
  • 독립성을 사주는 것은 늦은 바인딩입니다. 보내는 쪽은 받는 쪽이 어떻게 응답할지 모르기 때문에, 각 부분이 서로를 망가뜨리지 않으면서 바뀔 수 있습니다. 한 사람의 머릿속에 다 담기지 않을 만큼 시스템이 자라나는 방식이 바로 이것입니다.

원칙

“이 주제에 ‘객체’라는 용어를 오래전에 붙인 것을 사과합니다. 그 말 때문에 많은 사람이 덜 중요한 개념에 집중하게 되었으니까요. 핵심은 ‘메시징’입니다.” – 앨런 케이1

그는 이 용어를 만들었고, 상당 부분 그 공로로 튜링상을 받았으며, 그 후 수십 년 동안 사람들이 그것을 잘못 읽었다고 말해 왔습니다. 객체라는 단어는 엔지니어로 하여금 클래스와 상속, 그리고 자기 데이터 모델 속의 명사들 – 상자 안의 가구 – 을 떠올리게 합니다. 케이의 요점은 그 가구가 덜 중요한 개념이라는 것입니다. 정작 중요한 것은 상자상자들 사이를 오가는 메시지입니다. 각자 자신의 사적인 상태를 지니고, 오직 서로에게 메시지를 보냄으로써만 상호작용하며, 메시지가 무엇을 뜻하는지는 보내는 쪽이 아니라 받는 쪽이 결정하는 독립적인 존재들 말입니다.1 이것이 철학의 경지로 끌어올린 늦은 바인딩입니다. 보내는 쪽은 안으로 손을 뻗어 기계 장치를 직접 조작하지 않습니다. 그저 요청하고, 그 존재가 어떻게 답해야 할지 알고 있으리라 믿습니다.

이것이 핵심 개념인 이유는, 머릿속에 다 담기에는 너무 큰 무언가를 만들어 내는 방법이 바로 이것이기 때문입니다. 케이가 거듭 쓰는 비유는 생물학적입니다. 큰 시스템은 수백만 개의 세포로 이루어진 몸처럼 길러져야 하며, 각 세포는 자신의 상태를 보호하고 오직 메시지를 통해서만 이웃과 대화하는 하나의 완전한 컴퓨터입니다.2 어떤 세포도 다른 세포의 화학 작용 속으로 손을 뻗지 않습니다. 유기체 전체가 견고한 것은 바로 그 부분들이 독립적이고, 유일한 결합이 그들이 주고받는 메시지뿐이기 때문입니다. 케이가 의도한 방식의 객체 지향 프로그래밍은 데이터를 정리하는 방법이 아닙니다. 그것은 협상하는 여러 작은 존재들로 시스템을 만들어, 어떤 한 조각도 전체를 이해할 필요가 없게 하는 방법입니다.

이 모든 것의 밑바탕에 깔린 더 깊은 수는 코드가 아니라 문제를 대하는 태도입니다. 케이는 관점의 전환은 IQ 80점의 가치가 있다고 즐겨 말했습니다.3 잘못된 틀 안에서 더 똑똑해지는 것으로 어려운 문제를 머리로 이겨낼 수는 없습니다. 그 문제가 쉬워지는 틀을 찾아야 합니다. 메시징이 그런 틀 중 하나입니다. 개인용 컴퓨터가 또 다른 하나였습니다. 올바른 관점이 순수한 영리함을 이긴다는 이 확신은, 안목이 주장하는 분위기가 아니라 들여다볼 수 있는 기술적 체계라는 주장 밑에 깔린 확신과 같습니다. 문제를 바라보기 위해 선택하는 구조 자체가 곧 일입니다.

배경

앨런 커티스 케이는 1940년 5월 17일 매사추세츠주 스프링필드에서 태어났습니다.4 그는 컴퓨팅에 늦게, 그리고 옆길로 들어섰습니다. 재즈 기타리스트였고 닥치는 대로 책을 읽던 아이였으며, 공군에 복무하던 중 적성 검사가 그를 프로그래밍 쪽으로 이끌었고, 그 후 콜로라도에서 수학과 분자생물학 학위를 마쳤습니다.4 생물학이 중요했습니다. 그의 소프트웨어 이론 전체를 떠받치게 될 세포-컴퓨터 비유는 어떤 프로그래밍 전통이 아니라 바로 그곳에서 왔습니다.

그는 1960년대 중반 ARPA 지원을 받던 유타 대학교의 컴퓨터 과학 프로그램에 도착했는데, 그곳에서 그의 박사 지도교수는 데이브 에반스였고 주변 교수진에는 이반 서덜랜드가 있었습니다.4 도착 첫날쯤 에반스는 그에게 서덜랜드의 1963년 스케치패드 학위 논문을 읽으라고 건넸습니다. 스케치패드는 사용자가 라이트 펜으로 화면에 직접 그림을 그릴 수 있게 했고, 결정적으로 마스터인스턴스 개념을 갖추고 있었습니다. 모양을 한 번 정의하면 그것을 상속하는 복사본을 찍어 낼 수 있었던 것입니다. 케이는 이 논문과, 곧이어 접한 Simula 언어를 객체에 관한 자기 사고의 씨앗으로 꼽습니다.4 그는 또한 더글러스 엥겔바트의 1968년 “모든 데모의 어머니” – 마우스, 하이퍼텍스트, 대화형 컴퓨팅의 생생한 시연 – 에도 참석했고, 훗날 이를 인생에서 가장 위대한 경험 중 하나로 꼽았습니다.4 1969년 박사 과정 작업인 FLEX 기계와 언어는 이런 아이디어를 중심으로 개인용 대화형 컴퓨터를 만들려는 초기 시도였습니다.4

1970년 그는 갓 설립된 제록스 팔로알토 연구소(Xerox PARC)에 합류했고 학습 연구 그룹의 운영을 맡았습니다.4 1970년대의 PARC는 연구자가 회사 예산으로 20년짜리 비전을 추구할 수 있는 드문 곳이었습니다. 케이에게는 그런 비전이 있었습니다. 더 빠른 메인프레임도, 더 나은 터미널도 아니라, 아이가 사고의 매체로 사용할 수 있는 개인용 컴퓨터였습니다. 그가 PARC에서 만든 모든 것 – Smalltalk, 창 기반 인터페이스, 노트북이라는 발상 그 자체 – 은 그 하나의 그림을 실현하려는 시도였습니다.

작업

Smalltalk와 메시징: OOP가 진짜로 뜻한 것

PARC에서 케이와 그의 그룹 – 중심에는 기초 구현을 해낸 댄 잉걸스와, 주변 시스템과 문서의 상당 부분을 만든 아델 골드버그가 있었습니다 – 은 Smalltalk를 만들었습니다. 최초의 완전한 객체 지향 동적 프로그래밍 언어 중 하나였습니다.45 Smalltalk에서는 모든 것이 객체이고, 객체가 하는 유일한 일은 서로에게 메시지를 보내는 것입니다. 다른 객체의 상태 안으로 손을 뻗는 연산자는 없으며, 산술 연산조차 어떤 수에 보내는 메시지입니다. 이 시스템은 동적 타입이며 극도로 늦게 바인딩됩니다. 메시지가 무엇을 하는지는 보내는 쪽이 미리 정해 두는 것이 아니라, 메시지가 도착하는 순간 받는 쪽이 결정합니다.5 바로 그 늦은 결정 덕분에, 실행 중인 Smalltalk 이미지를 돌아가는 도중에 편집할 수 있었습니다. 언어와 그 환경이 살아 있는 하나의 같은 존재였던 것입니다.

케이는 훗날 객체 지향 프로그래밍에 대한 자신의 진짜 정의를 세 가지 요건으로 압축했습니다. 메시징, 각 객체 안에서 상태-과정을 국소적으로 보유하고 보호하고 숨기는 것, 그리고 모든 것을 극도로 늦게 바인딩하는 것입니다.1 그 목록에 없는 것에 주목하십시오. 클래스, 상속, 타입이 없습니다. 그것들은 구현상의 편의일 뿐입니다. 타협할 수 없는 것은 상태가 사적이라는 것, 그리고 모든 것이 가능한 한 늦게 결정된다는 것입니다. 그가 “객체 지향”이라는 용어를 자신이 만들었으며 “C++를 염두에 둔 것이 아니었다”고 말했을 때 뜻한 바가 바로 이것입니다. 어떤 언어가 클래스와 상속을 갖추고도, 한 객체가 다른 객체의 속을 헤집도록 허용한다면 요점을 완전히 놓칠 수 있다는 것입니다.6

객체가 아니라 메시징이 하중을 떠받치는 개념인 이유는, 독립성을 실재하게 만드는 것이 바로 메시징이기 때문입니다. 보내는 쪽이 받는 쪽의 내부를 안다면 둘은 한 덩어리로 용접되어, 결국 하나의 거대하게 엉킨 프로그램으로 되돌아가게 됩니다. 보내는 쪽이 그저 메시지만 보내고 받는 쪽이 어떻게 응답할지 결정하기 때문에, 보내는 쪽을 건드리지 않고도 받는 쪽을 교체하거나 확장하거나 키울 수 있습니다. 몸이 상처를 아물게 하거나 네트워크가 죽은 노드를 우회해 경로를 찾아내게 하는 것과 같은 성질입니다. 케이는 소프트웨어가 생물학이 확장하는 방식으로 확장되기를 원했고, 생물학은 공유된 내부가 아니라 언제나 보호된 세포들 사이의 메시지를 통해 확장됩니다.

다이나북: 매체로서의 컴퓨팅

다이나북 콘셉트 스케치 / 목업 -- 모든 연령대의 아이들을 위한 개인용 컴퓨터라는 앨런 케이의 비전

1972년 케이는 보스턴에서 열린 ACM 전국 콘퍼런스에서 발표한 “모든 연령대의 아이들을 위한 개인용 컴퓨터”를 썼고, 그 안에서 다이나북을 묘사했습니다. 평면 화면을 갖춘 노트북 크기의 휴대용 개인 컴퓨터로, 아이의 장서 전체와 음악, 그림, 프로그램을 담을 수 있으며, 개인이 소유하여 언제 어디서나 사용하는 것이었습니다.7 그는 그것을 대략 공책만 한 크기의 얇은 판으로 스케치했고, 원리상 당대의 기술로 만들어 저렴하게 팔 수 있다고 주장했습니다.7 그런 기계는 존재하지 않았습니다. 개인용 컴퓨터가 존재하지 않았습니다. 그는 1972년에 노트북과 태블릿을 묘사하고 있었던 것입니다.

하지만 다이나북은 결코 하드웨어에 관한 것이 아니었습니다. 그것은 컴퓨팅이 무엇을 위한 것인가에 관한 것이었습니다. 제롬 브루너의 학습 이론과 시모어 패퍼트의 Logo 작업에서 끌어온 케이의 틀은, 컴퓨터가 글쓰기나 인쇄술과 같은 새로운 매체이며, 매체의 목적은 인간이 이전에는 할 수 없던 생각을 할 수 있게 하는 데 있다는 것이었습니다.47 책은 읽을 수만 있지만, 다이나북에서는 저술하고 시뮬레이션할 수 있습니다. 아이는 어떤 아이디어의 동적 모델을 만들어 그것이 돌아가는 모습을 지켜볼 수 있어야 합니다. 그래서 그것은 개인적이고 휴대 가능하며 소유되는 것이어야 했습니다. 사고의 매체란 공책이 그렇듯 늘 손이 닿는 곳에 있어야 하며, 그렇지 않으면 아예 매체가 아니기 때문입니다. 케이가 만든 모든 것은 컴퓨터를 도구가 아니라 매체로 대하는 데서 흘러나온 것입니다.

PARC의 GUI와 “미래를 발명하라”

강연하는 앨런 케이

다이나북에는 아이가 사용할 수 있는 인터페이스가 필요했고, 그래서 케이의 그룹이 하나를 만들었습니다. 겹쳐지는 창 기반의 그래픽 사용자 인터페이스 – 책상 위의 종이처럼 쌓이는 창들과, 마우스로 가리켜 하나를 맨 앞으로 끌어올리는 방식 – 는 PARC의 학습 연구 그룹에서 개발되어, 그룹이 “임시 다이나북”이라 부르던 기계인 제록스 알토(Xerox Alto)에서 돌아갔습니다.48 여러분이 써 본 모든 데스크톱이 그 작업의 후손입니다. 1979년 12월, 스티브 잡스와 애플 엔지니어 일행이 PARC를 방문해 알토가 Smalltalk를 돌리는 모습을 보았습니다. 비트맵 디스플레이, 마우스, 겹쳐지는 창이었습니다.8 그 아이디어들은 리사로, 그다음 매킨토시로, 거기서 다시 Windows로, 그리고 컴퓨팅의 주류로 들어갔습니다.8 지금 온 세상이 쓰는 인터페이스는 새로운 매체에서 저술하는 아이들이라는 비전에 봉사하기 위해 만들어진 것입니다.

그 작업에 생기를 불어넣은 좌우명은 케이의 가장 많이 인용된 문장입니다. “미래를 예측하는 가장 좋은 방법은 그것을 발명하는 것이다.” 그는 이 말이 1971년 초 연구자들과 제록스 기획자들 사이의 PARC 회의에서 나왔다고 했습니다. 기획자들이 예측을 원할 때 – “격정에 사로잡혀 그 말을 내뱉었다” – 케이의 답은, 당신이 만들 작정인 미래는 예측하는 것이 아니라는 것이었습니다.9 PARC는 그 문장을 실행에 옮긴 곳이었습니다. 컴퓨터가 무엇이 될 것인가를 묻는 대신, 케이의 그룹은 컴퓨터가 무엇이 되어야 하는가를 정하고 10년에 걸쳐 그것을 만들었습니다. 개인용 컴퓨팅의 미래는 PARC에서 예측된 것이 아닙니다. 그곳에서, 의도적으로 발명된 것입니다.

컴퓨터 혁명은 아직 일어나지 않았다

1997년 케이는 “컴퓨터 혁명은 아직 일어나지 않았다”라는 제목의 OOPSLA 기조연설을 했고, 이는 그 의기양양한 이야기에 꼭 필요한 균형추입니다.10 그의 주장은, 업계가 PARC 비전의 산물 – 창, 마우스, 개인용 기계 – 만 가져가고 그 아이디어는 놓쳤다는 것이었습니다. 개인용 컴퓨팅은 대부분 종이의 자동화가 되어 버렸다고 그는 말했습니다. 디지털 문서, 디지털 우편, 디지털 서류함 – 진정으로 새로운 매체가 되는 대신 옛 매체를 흉내 낸 것입니다. 그가 뜻한 혁명 – 인간의 사고를 증폭하는 매체로서의 컴퓨터, 평범한 사람들이 글을 쓰듯 프로그래밍하는 컴퓨터 – 은 도착하지 않았습니다. 데스크톱 비유가 이겼고, 다이나북의 아이디어는 그러지 못했습니다.

산물과 아이디어 사이의 간극은 그의 말년의 비판이 되었습니다. 2001년 그가 설립한 뷰포인츠 연구소(Viewpoints Research Institute)를 통해, 케이는 현대 소프트웨어의 비대함에 강하게 맞섰습니다. 아무도 온전히 이해하지 못하는 라이브러리들을 쌓아 올리는 대신, 깔끔하게 메시지를 주고받는 부분들로부터 시스템을 길러 낸다면, 자신이 보기에 극히 일부분으로 해낼 수 있는 일을 수천만 줄의 코드로 하고 있다는 것이었습니다.411 그의 “STEPS” 프로젝트는 운영 체제, 애플리케이션을 비롯한 개인용 컴퓨팅 시스템 전체를 약 2만 줄로 다시 만들려 했습니다. 비대함이 필연이 아니라 선택이라는 것을 보여 주는 존재 증명이었습니다.11 메시징의 확신은 그 불만으로까지 곧장 이어집니다. 이해할 수 없는 시스템이란, 그 부분들이 제대로 독립적이지 않았던 시스템입니다. 비대함은 경계가 새어 나갈 때 생기는 일입니다.

방법론

그 방법론은 50년에 걸쳐 일관됩니다 – 하나의 언어, 하나의 기계, 하나의 인터페이스, 그리고 하나의 비판.

문제를 쉽게 만드는 관점을 찾으십시오. 케이의 첫 수는 결코 문제를 정면으로 공격하는 것이 아니라, 문제가 놓인 틀을 바꾸는 것입니다. 절차 대신 메시징, 도구 대신 매체, 코드 대신 세포. IQ 80점 문장은 그 방법론을 구호로 표현한 것입니다. 지렛대는 노력이 아니라 관점에 있습니다.3

호출하는 절차가 아니라, 메시지를 주고받는 독립적인 존재로부터 만드십시오. 구축의 단위는 자신의 상태를 보호하고 오직 메시지만 노출하는 객체입니다. 큰 시스템은 생물학이 유기체를 키우는 방식 – 작고 독립적이며 메시지를 주고받는 부분들을 조합하는 방식 – 으로 길러, 어떤 조각도 다른 조각의 내부에 의존하지 않게 합니다.12

가능한 한 늦게 바인딩하십시오. 책임 있게 미룰 수 있는 마지막 순간에 결정하십시오. 늦은 바인딩이야말로 시스템을 돌아가는 도중에도 바꿀 수 있을 만큼 유연하게 유지하고, 보내는 쪽이 받는 쪽의 내부를 모르게 합니다. 이른 바인딩은 속도를 사들이지만, 시스템이 자라나게 하는 독립성을 내놓습니다.1

컴퓨터를 인간 사고의 매체로 대하십시오. 다이나북의 기준은 “이 도구가 어떤 작업을 해 줄 수 있는가?”가 아니라 “한 사람이 이제 이전에는 할 수 없던 무엇을 생각하고, 만들고, 시뮬레이션할 수 있는가?”입니다. 그 질문은 사업 전체를 자동화에서 증폭으로 재구성합니다.7

미래를 예측하지 말고 발명하십시오. 예측을 요청받으면, 대신 결정하십시오. PARC의 규율은 원하는 세상을 골라 그것을 만드는 것이었습니다. 10년에 걸쳐 추구한 비전이 어떤 예측보다 낫다는 확신 위에서였습니다.9

영향의 사슬

그를 빚어낸 사람들

이반 서덜랜드와 스케치패드. 데이브 에반스가 도착하던 케이에게 건넨 1963년 논문은 – 마스터와 인스턴스, 화면 위에서의 직접 조작을 갖추고 – 객체와 대화형 그래픽에 관한 그의 사고의 기록된 씨앗입니다.4 (직접적 영향)

Simula와 객체 개념. Simula 언어는 케이에게 상태와 동작을 한데 묶는 객체라는 구체적인 개념을 주었고, 그는 이를 “모든 것이 객체이며 메시지로 대화한다”로 급진화했습니다.4 (직접적 영향)

피아제를 거쳐 시모어 패퍼트와 Logo. 아이들이 프로그래밍하는 것에 관한 패퍼트의 작업 – 그리고 그 뒤에 있는 피아제와 브루너의 발달 심리학 – 은 케이에게 컴퓨팅의 진짜 청중은 학습자이며, 그 진짜 목적은 데이터 처리가 아니라 사고의 매체라는 확신을 주었습니다. 다이나북은 휴대 가능한 형태로 구현된 Logo의 야심입니다.47 (형성적 영향)

생물학. 분자생물학에서 받은 케이의 훈련은 핵심 비유를 공급했습니다. 완전하고 자기 보호적인 컴퓨터로서의 세포, 그리고 메시지를 주고받는 수백만 개의 세포로 이루어진 유기체. 그에게 객체 지향이란 생물학이 되려는 소프트웨어입니다.2 (형성적 영향)

그가 빚어낸 것들

모든 객체 지향 언어. Smalltalk의 모델 – 객체, 메시지 전송, 동적 디스패치 – 은 Objective-C, Ruby, Java로 곧장 이어지며, 그 어휘는 이제 프로그래밍의 기본 가구가 되었습니다. 메시징에 관한 그의 경고를 무시한 언어들조차 그가 만든 용어를 물려받았습니다.56

그래픽 사용자 인터페이스, 그리고 그것을 통한 Mac과 Windows. PARC의 그의 그룹에서 나온 겹쳐지는 창 기반 GUI는 1979년 알토에서 잡스에게 보여졌고, 리사, 매킨토시, 그리고 그 이후 사실상 모든 개인용 컴퓨터의 인터페이스가 되었습니다.8

노트북과 태블릿. 다이나북은 1972년에 온 세상이 지금 들고 다니는 휴대용 개인 컴퓨터를 묘사했습니다. 당신 책상 위의 기계와 가방 속의 판은, 윤곽으로 보면 둘 다 케이가 스케치한 그것입니다.7

관통선

바버라 리스코프는 데이터 추상화를 프로그래밍의 기본 요소로 만들었습니다 – 타입이란 그것이 지키는 계약이며, 하위 타입은 상위 타입이 하는 모든 약속을 지켜야 합니다. 이것은 타입 이론으로 진술된 케이의 메시징 확신입니다. 중요한 것은 객체의 내부가 아니라 객체들 사이의 계약이며, 호출하는 쪽은 응답이 어떻게 만들어지는지 전혀 읽지 않고도 메시지를 보내고 그 응답을 믿을 수 있어야 합니다. 톰슨과 리치가 “한 가지를 잘하는” 작은 프로그램들로 Unix를 만들어 깔끔한 파이프를 통해 조합했다면, 케이는 한 가지를 하는 작은 객체들로 시스템을 만들어 깔끔한 메시지를 통해 조합했습니다 – 큰 시스템이란 오직 인터페이스에서만 결합된, 많은 독립적인 작은 존재들이어야 한다는 같은 베팅이었습니다. 그리고 그레이스 호퍼는 컴퓨터가 인간을 그들 자신의 언어로 만나야 한다고 고집하며, 사람이 자기 자신의 용어로 사고할 수 있도록 번역을 기계 안으로 옮겼습니다. 케이는 이를 다이나북으로 극한까지 밀고 갔습니다 – 컴퓨터가 단지 인간의 언어를 말하는 것을 넘어, 인간이 그 안에서 사고하는 매체가 되도록 한 것입니다. 그 선은 이어 스티브 잡스로 뻗어 나갑니다. 그는 1979년 PARC로 걸어 들어와 케이의 인터페이스를 보았고, 그것을 세상으로 가져갔습니다. (시리즈 연결)

내가 여기서 얻는 것

내가 간직하는 교훈은, 어떤 시스템에서든 가장 어려운 부분은 틀을 고르는 것이며, 그 틀이 그 안의 영리함보다 더 값지다는 것입니다. 케이의 IQ 80점 문장은 이 시리즈 전체에서 가장 쓸모 있는 문장입니다. 어디에 노력을 쏟아야 하는지를 알려 주기 때문입니다. 나쁜 모델 안에서 더 힘껏 갈아 넣는 데가 아니라, 문제가 녹아 사라지는 모델을 찾는 데에 말입니다. 소프트웨어에서는 메시징이 그 수였습니다. 개인용 컴퓨팅에서는 컴퓨터를 매체로 대하는 것이 그 수였습니다. 그 규율은 한 줄을 쓰기 전에 어떤 관점이 이것을 쉽게 만드는가?를 계속 묻는 것입니다. 이것은 품질이 유일한 변수라는 기준과 같습니다 – 질문은 결코 “잘못된 설계를 더 힘껏 굴려 작동시킬 수 있는가?”가 아니라 “옳은 설계를 찾았는가?”입니다.

지금 내가 만드는 세계 – 에이전트, 도구 루프, AI 시스템 – 에서 객체 지향에 대한 케이의 진짜 정의는 이 사이트에서 가장 하중을 떠받치는 개념이며, 거의 아무도 그것을 호명하지 않습니다. 에이전트는 케이의 객체입니다. 그것은 사적인 상태를 지니고, 당신은 그 내부를 읽을 수 없으며, 오직 메시지를 보내고 그것이 어떻게 응답할지 결정하리라 믿음으로써만 상호작용합니다. 멀티 에이전트 시스템은 정확히 케이의 생물학적 비전입니다 – 각자 자신의 맥락을 보호하는 많은 독립적인 컴퓨터들이, 서로의 메모리 속으로 손을 뻗는 것이 결코 아니라 메시지를 주고받음으로써 더 큰 무언가로 자라나는 것입니다. 그것이 작동할 때 작동하는 이유는 전적으로 늦은 바인딩 때문입니다. 보내는 쪽은 받는 쪽이 어떻게 답할지 모르고, 그 모름이 곧 기능입니다. 바로 그것이 각 부분을 독립적으로 바뀔 수 있게 하기 때문입니다. 에이전트를 잘 만드는 것은 케이의 세포를 만드는 것이며 – 실패는 언제나 같은 실패, 새어 나간 경계입니다. 시스템이란 서로의 속으로 손을 뻗는 부품들로 조립되는 것이 아니라 메시지를 주고받는 작은 존재들로부터 길러져야 한다는 그 확신은, 1972년 다이나북 스케치에서 2026년 에이전트 하네스로 이어지는 관통선이며, 정확히 그래서 증거 관문은 어떤 구성 요소의 속이 아니라 그것의 응답을 점검합니다.

자주 묻는 질문

앨런 케이의 엔지니어링 철학은 무엇입니까?

케이의 핵심 확신은, 머릿속에 다 담기에는 너무 큰 시스템은 자신의 사적인 상태를 보호하고 오직 메시지를 보냄으로써만 소통하는 독립적인 객체들로부터 만들어져야 한다는 것입니다. 서로의 속으로 손을 뻗는 부품들로 조립되는 것이 아니라, 많은 작은 세포들로 이루어진 생물학적 유기체처럼 길러지는 것입니다. 그 밑에는 문제를 대하는 태도가 깔려 있습니다. 관점의 전환은 순수한 영리함보다 더 값지므로, 할 일은 어려운 문제가 쉬워지는 틀을 찾는 것입니다. 그는 이를 프로그래밍(Smalltalk)에도, 컴퓨터 자체(다이나북, 사고의 매체로서의 컴퓨터)에도, 그리고 업계(진짜 컴퓨터 혁명은 아직 일어나지 않았다는 그의 비판)에도 적용했습니다.13710

앨런 케이가 말한 “객체 지향 프로그래밍”과 “메시징”은 무슨 뜻입니까?

케이는 “객체 지향”이라는 용어를 만들었지만, 훗날 그것을 후회한다고 말했습니다. 그 말이 사람들로 하여금 객체, 클래스, 상속 – “덜 중요한 개념” – 에 집중하게 하기 때문입니다. 그의 진짜 정의는 세 부분으로 이루어집니다. 메시징, 각 객체의 상태를 국소적으로 보유하고 보호하고 숨기는 것, 그리고 모든 것을 극도로 늦게 바인딩하는 것입니다.1 핵심은 메시징입니다. 객체는 결코 서로의 내부로 손을 뻗지 않으며, 보내는 쪽이 메시지를 보내면 그것이 무엇을 뜻하는지는 받는 쪽이 메시지가 도착하는 순간 결정합니다. 클래스와 상속이 그 목록에 없다는 점에 주목하십시오 – 어떤 언어가 둘 다 갖추고도, 한 객체가 다른 객체의 사적인 상태를 조작하도록 허용한다면 여전히 요점을 놓칩니다. 메시징이야말로 부분들을 진정으로 독립적으로 만들고, 그것이 바로 큰 시스템이 엉킨 덩어리가 되지 않으면서 자라나고 바뀔 수 있게 하는 것입니다.16

다이나북은 무엇이었습니까?

다이나북은 케이가 1972년 논문 “모든 연령대의 아이들을 위한 개인용 컴퓨터”에서 ACM 전국 콘퍼런스에서 발표하며 묘사한 휴대용 개인 컴퓨터였습니다. 공책만 한 크기의 평면 화면 기계로, 개인이 소유하여 어디서나 사용하며, 자신의 장서와 음악, 그림, 프로그램을 담는 것이었습니다.7 그런 기계는 존재하지 않았습니다. 그는 노트북과 태블릿을 수십 년 앞서 묘사하고 있었습니다. 하지만 그것의 진짜 요점은 개념적이었습니다 – 글쓰기나 인쇄처럼 인간 사고를 위한 새로운 매체로서의 컴퓨터, 그 안에서 한 사람(특히 아이)이 콘텐츠를 소비하기만 하는 것이 아니라 아이디어의 동적 모델을 만들고 돌려 볼 수 있는 것입니다. 제록스 알토는 “임시 다이나북”으로 만들어졌고, 오늘날 우리가 들고 다니는 노트북과 태블릿은 하드웨어로 실현된 그 비전입니다.47

앨런 케이는 왜 튜링상을 받았습니까?

ACM은 케이에게 2003년 A.M. 튜링상을 수여하며 “현대 객체 지향 프로그래밍 언어의 뿌리에 있는 많은 아이디어를 개척하고, Smalltalk를 개발한 팀을 이끌었으며, 개인용 컴퓨팅에 근본적으로 기여한 공로”를 들었습니다.12 그 표창은 그의 작업의 두 측면을 모두 담아냅니다. 소프트웨어가 만들어지는 방식을 빚어낸 언어와 메시지 전송 모델, 그리고 개인용 컴퓨터가 무엇인지를 빚어낸 다이나북과 PARC의 그래픽 인터페이스 작업입니다. 그는 Smalltalk, 1979년 잡스가 PARC에서 보고 매킨토시로 가져간 겹쳐지는 창 기반 GUI, 그리고 사고의 매체로서의 개인용 휴대 컴퓨터라는 발상 그 자체의 배후에 있는 핵심 인물이었습니다.48


출처


  1. Alan Kay, email to the Squeak developers’ mailing list, October 10, 1998, archived and widely quoted at picostitch, “Alan Kay On Messaging.” “I’m sorry that I long ago coined the term ‘objects’ for this topic because it gets many people to focus on the lesser idea. The big idea is ‘messaging’…” Kay’s three-part definition of OOP – “messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things” – appears in a later (2003) reply on the same theme, archived at Stefan Ram, “Dr. Alan Kay on the Meaning of ‘Object-Oriented Programming.’” Discussion: Hacker News. 

  2. Alan Kay, on the biological/cell metaphor for objects and scaling software like an organism; see his recollections in “The Early History of Smalltalk,” ACM SIGPLAN History of Programming Languages II (1993), and the “millions of cells, each a whole computer” framing summarized in his “Alan Kay” Wikipedia entry. 

  3. “Quote Origin: Point of View Is Worth 80 IQ Points,” Quote Investigator. Attributed to Kay; earliest documented delivery in his Creative Think seminar talk, July 20, 1982 (recorded by Andy Hertzfeld), with published appearances in 1984–1985. Variants: “Point of view is worth 80 IQ points,” “A change in perspective is worth 80 IQ points.” Also collected at Wikiquote. 

  4. “Alan Kay,” Wikipedia. Born May 17, 1940, Springfield, Massachusetts; PhD, University of Utah, 1969, advisor David C. Evans (dissertation FLEX); Ivan Sutherland’s Sketchpad and Simula as influences on his object thinking; attended Engelbart’s 1968 “Mother of All Demos”; joined Xerox PARC in 1970 leading the Learning Research Group; Smalltalk with Dan Ingalls and Adele Goldberg; the Dynabook; the overlapping-window GUI and the Alto as “the interim Dynabook”; coined “object-oriented”; founded Viewpoints Research Institute (2001). See also Britannica, “Alan Kay.” 

  5. “Smalltalk,” Wikipedia. Designed at Xerox PARC; one of the first fully object-oriented, dynamically typed languages; everything is an object, all computation by message passing; dynamic, late-bound, live image. Implementation led by Dan Ingalls; documentation and system work by Adele Goldberg. 

  6. Alan Kay, OOPSLA 1997 keynote remarks, “When I made up the term object-oriented, I did not have C++ in mind”; see “The Computer Revolution Hasn’t Happened Yet,” archived video and transcript, Internet Archive. 

  7. Alan C. Kay, “A Personal Computer for Children of All Ages,” originally published in the Proceedings of the ACM National Conference, Boston, August 1972 (republished by Viewpoints Research Institute). Describes the Dynabook – a portable, notebook-sized personal computer as a medium for learning – and draws on Bruner and Papert/Logo. Overview and the “interim Dynabook” lineage to the Alto: “Dynabook,” Wikipedia. 

  8. “History of the graphical user interface,” Wikipedia, and “Xerox Alto,” Wikipedia. The overlapping-window GUI developed in Kay’s Learning Research Group at PARC; Steve Jobs and Apple engineers were shown the Alto running Smalltalk-76 – bitmapped display, mouse, overlapping windows – in December 1979; the ideas flowed into the Apple Lisa and Macintosh. 

  9. “Quote Origin: We Cannot Predict the Future, But We Can Invent It,” Quote Investigator. Kay’s own account (1998 email) traces “The best way to predict the future is to invent it” to an early 1971 meeting of PARC researchers and Xerox planners – “In a fit of passion I uttered the quote!” Earliest published attribution: InfoWorld, April 1982. 

  10. Alan Kay, “The Computer Revolution Hasn’t Happened Yet,” OOPSLA 1997 keynote (Internet Archive). Argument that the industry adopted the artifacts of personal computing while missing the idea – “automating paper” rather than building a genuinely new medium. 

  11. Viewpoints Research Institute, STEPS Toward Expressive Programming Systems – the project to rebuild an entire personal-computing system (OS, apps, and all) in roughly 20,000 lines of code as a critique of software bloat. NSF final report archived at VPRI / Internet Archive (worrydream mirror). Context: Wikipedia, “Viewpoints Research Institute.” 

  12. “A.M. Turing Award Laureates – Alan Kay,” Wikipedia (2003 citation). “For pioneering many of the ideas at the root of contemporary object-oriented programming languages, leading the team that developed Smalltalk, and for fundamental contributions to personal computing.” ACM laureate page: amturing.acm.org/award_winners/kay_3972189.cfm. 

관련 게시물

엔지니어링 철학: 레슬리 램포트, 코딩 전에 생각하라

레슬리 램포트는 분산 시스템을 과학으로 만들었습니다. 시간은 전역적이지 않고, 실재하는 것은 인과이며, 코드를 쓰기 전에 설계를 명세합니다.

12 분 소요

엔지니어링 철학: 그레이스 호퍼, 컴퓨터가 인간의 언어를 말하게 하다

그레이스 호퍼는 프로그램을 인간의 언어로 작성할 수 있도록 최초의 컴파일러를 만들었고, 1나노초 길이의 전선으로 지연 시간을 손에 잡히는 물건으로 바꿔놓았으며, 낡은 통념과 싸웠습니다.

13 분 소요

The Shader Gallery That Lied: Debugging 216 WebGL Presets

A user said the shader playground looked broken. Pixel-readback testing found 30 dead presets, 11 that never compiled, a…

11 분 소요