- Published on
모던 Smalltalk 2026 완벽 가이드 - Pharo 12 · Squeak · Cuis Smalltalk · Glamorous Toolkit · Amber Smalltalk · VAST · GemStone/S · Seaside 심층 분석
- Authors

- Name
- Youngju Kim
- @fjvbn20031
프롤로그 — 2026년, Smalltalk는 왜 아직 살아 있나
"Smalltalk는 죽었다"는 농담은 25년째 같은 형태로 반복되고 있다. 그리고 25년째 틀리고 있다. 2026년 봄, Pharo 13이 정식 릴리스되었고, Glamorous Toolkit 1.x는 moldable development라는 새로운 패러다임을 끌고 나왔으며, GemStone/S 64 Bit 3.7은 여전히 JPMorgan Chase의 거대한 트랜잭션 엔진을 굴리고 있다. Seaside 3.5는 컨티뉴에이션 기반 웹 프레임워크의 살아 있는 표본으로 학계에서 인용되며, Squeak 6.0은 학교에서 다시 사용되기 시작했다.
Smalltalk는 새 사용자를 폭발적으로 모으는 언어가 아니다. 하지만 한 번 빠진 사람은 좀처럼 떠나지 않는다. 왜인가? 이미지 기반(image-based) 페러다임 — 텍스트 파일 대신 살아 있는 객체의 메모리 스냅샷을 저장하고, 그 스냅샷 안에서 코드를 쓰고 디버깅하고 다시 컴파일한다 — 은 한 번 경험하면 "왜 다들 텍스트 파일을 편집하고 있지?"라는 의문을 멈출 수 없게 만든다.
Smalltalk는 언어가 아니라 시스템이다. 텍스트 파일은 시스템의 부산물일 뿐, 본체는 살아 있는 객체 그래프다. 이걸 이해하면 "왜 아직도 Smalltalk를 쓰지?"가 "왜 이걸 모두가 안 쓰지?"로 바뀐다.
이 글에서 다루는 것:
- Alan Kay와 Adele Goldberg — Xerox PARC와 Smalltalk-72/76/80
- 이미지 기반 패러다임 — Smalltalk가 다른 모든 언어와 다른 점
- Pharo 12 / 13 — 현대 Smalltalk의 깃발
- Squeak 6.x — Smalltalk-80의 직계
- Cuis Smalltalk — 미니멀리스트의 선택
- Glamorous Toolkit (GT) — moldable 개발 환경
- Amber Smalltalk — 브라우저에서 도는 Smalltalk
- Dolphin · VisualWorks · VAST — 상용 진영
- GemStone/S — 분산 OO 데이터베이스 + Smalltalk
- Seaside — 컨티뉴에이션 웹 프레임워크
- Iliad · AIDA/Web · Pier CMS — 다른 웹 프레임워크들
- Roassal3 · Bloc · DataFrame — 모던 Pharo 라이브러리
- Iceberg · Metacello · STON — 패키지·Git·시리얼라이제이션
- 산업 적용 사례 — 금융·물류·교육·연구
- 한국·일본의 Smalltalk
- Self·Newspeak — Smalltalk의 후계자들
- Objective-C·Ruby·Python·JavaScript에 끼친 영향
- 학습 자료와 커뮤니티
- 참고 자료
1장 · Alan Kay와 Adele Goldberg — 1972년 Xerox PARC에서 시작된 모든 것
Smalltalk의 역사는 1972년 Xerox PARC(Palo Alto Research Center)에서 시작된다. Alan Kay는 Dynabook이라는 비전을 갖고 있었다. 어린이부터 어른까지, 모든 사람이 자신의 컴퓨터를 프로그래밍할 수 있어야 한다는 비전. 그 비전을 구현할 언어가 Smalltalk였다.
Smalltalk-72는 메시지 패싱이라는 개념을 1급으로 도입한 첫 번째 언어였다. 모든 것이 객체이고, 객체끼리는 메시지를 주고받는다. Adele Goldberg가 합류하면서 언어는 더 정교해졌고, Smalltalk-76에서 클래스 계층과 메타클래스라는 구조가 잡혔다.
Smalltalk-80 — 이것이 우리가 오늘날 "Smalltalk"라고 부를 때 거의 항상 가리키는 버전이다. 1980년에 공개된 이 버전은 Byte Magazine 1981년 8월호 표지를 장식했고, 객체지향 프로그래밍이라는 패러다임을 세상에 정식 소개한 결정적 순간이었다. Adele Goldberg와 David Robson이 쓴 "Smalltalk-80: The Language and Its Implementation" (1983) — 우리가 흔히 Blue Book이라 부르는 이 책 — 은 지금도 객체지향 설계의 고전이다.
Alan Kay는 나중에 "I made up the term 'object-oriented', and I can tell you I did not have C++ in mind"라는 유명한 말을 남겼다. C++가 정의하는 OOP와 Smalltalk가 정의하는 OOP는 본질이 다르다. Smalltalk의 OOP는 메시지 패싱이 중심이지, 데이터에 메서드를 묶는 것이 중심이 아니다.
2장 · 이미지 기반 패러다임 — Smalltalk가 다른 모든 언어와 다른 점
대부분의 프로그래밍 언어는 소스 파일 기반이다. .py, .js, .java 파일을 텍스트 편집기로 열고, 저장하고, 컴파일러나 인터프리터에 넘긴다. Smalltalk는 이미지 기반이다.
Smalltalk 이미지란 무엇인가? 한마디로 살아 있는 객체 메모리의 스냅샷이다. 클래스, 메서드, 인스턴스, 디버거 상태, 열려 있는 창, 심지어 진행 중인 처리(suspended process)까지 — VM 힙 전체가 디스크에 한 번에 저장된다. 다음에 이미지를 열면 모든 게 정확히 그 자리에서 계속된다.
소스 파일 패러다임과의 차이
| 구분 | 소스 파일 | Smalltalk 이미지 |
|---|---|---|
| 저장 단위 | 텍스트 파일들 | VM 힙 스냅샷 |
| 빌드 | 컴파일·번들링 | 항상 라이브 |
| 디버깅 | 재실행해서 재현 | 그 자리에서 수정·계속 |
| 의존성 | npm/pip/maven | 이미지 안의 객체 그래프 |
| 협업 | Git 텍스트 diff | Monticello/Iceberg가 객체 → 텍스트로 직렬화 |
이 패러다임의 결과는 강렬하다. 디버거에서 예외가 떴다고? Smalltalk는 디버거 안에서 그 메서드를 고치고, 스택을 그 자리에 그대로 두고, 다시 실행하면 그 시점부터 계속 진행한다. 수정-재시작 사이클이 없다. 이게 라이브 코딩이다.
물론 단점도 있다. 객체 그래프를 텍스트로 어떻게 협업하나? Smalltalk 커뮤니티는 이걸 풀기 위해 Monticello, Metacello, Iceberg 같은 도구를 만들어 왔다. 그 이야기는 13장에서 한다.
3장 · Pharo 12 / 13 — 현대 Smalltalk의 깃발
오늘날 "Smalltalk를 배우려면 어디서 시작하지?"라는 질문에 대한 가장 흔한 답은 Pharo다. Pharo는 2008년 Squeak에서 포크되어 시작된, MIT 라이선스의 활발히 개발되는 모던 Smalltalk 구현체다. INRIA의 RMoD 팀과 전 세계 컨트리뷰터들이 매년 한 번 메이저 릴리스를 낸다.
Pharo 12 (2024년 4월)는 다음을 가져왔다:
- Spec UI 프레임워크의 큰 개선
- Bloc 그래픽 프레임워크의 알파/베타 통합
- Threaded FFI 안정화
- Iceberg Git 통합 개선
- Roassal3 시각화
Pharo 13 (2025년 4월)은 다음을 가져왔다:
- 정식 Bloc 그래픽 (Morphic의 후계)
- 메타몰리즘(Metalinks)을 통한 동적 인스트루멘테이션
- 더 빠른 OpenSmalltalk-VM
- Glamorous Toolkit과의 더 깊은 통합
- Iceberg 2.x
Pharo는 Squeak에서 갈라져 나오면서 일종의 결단을 했다 — Smalltalk-80 호환성을 일부 포기하고 현대화에 집중하자. 그 결과 Pharo의 코드 베이스는 다른 어떤 Smalltalk보다 깔끔하고 일관성이 있다. 트레이드오프는 Squeak의 오래된 코드(Etoys 등)는 직접 옮길 수 없다는 점.
학습 자료로는 "Pharo by Example" (Stéphane Ducasse 외, 무료 PDF, books.pharo.org)와 "Deep into Pharo" (Andrew Black 외)가 클래식이다.
4장 · Squeak 6.x — Smalltalk-80의 직계
Pharo가 현대화를 택했다면, Squeak은 Smalltalk-80과의 호환성을 지킨 진영이다. 1996년 Alan Kay·Dan Ingalls·Ted Kaehler가 Apple에 있을 때 만들기 시작한 Squeak은, Smalltalk-80의 원본 이미지에서 출발해 오픈 소스로 풀린 직계 후손이다.
Squeak 6.0 (2022년)부터 64비트가 기본이 되었고, Squeak 6.1 (2024년)에서는 Cairo 기반 렌더링과 더 빠른 Cog VM이 들어왔다. Squeak의 매력은 단순히 언어가 아니라 그 안에 들어 있는 Etoys — Alan Kay가 어린이 프로그래밍 교육을 위해 만든 환경 — 와 Croquet(나중에 Open Cobalt로 분기) 같은 역사적 프로젝트를 그대로 만지고 실행해 볼 수 있다는 점이다.
Squeak은 교육 현장에서 여전히 쓰인다. 일본의 "Squeak EToys"는 한때 OLPC(One Laptop Per Child) 프로젝트의 기본 환경 중 하나였고, 한국에서도 일부 대학에서 객체지향 입문 수업에 사용된다.
Squeak 라이선스는 Apache 2.0과 MIT가 섞인 형태로, 상용 사용에도 자유롭다.
5장 · Cuis Smalltalk — 미니멀리스트의 선택
Cuis Smalltalk은 Juan Vuletich가 만든 Squeak의 미니멀 포크다. "Cuis"는 스페인어로 모르모트(기니피그)를 뜻한다 — 작고 빠르고 깔끔한.
Cuis의 철학은 명확하다: Squeak에서 안 쓰는 걸 다 빼자. Etoys, Morphic의 무거운 부분, 오래된 호환성 레이어 등을 제거하고, 5,000 클래스 → 600 클래스 규모의 미니멀 코어만 남겼다. 이미지 크기가 수 MB 수준이라, 모든 코드를 다 읽고 이해할 수 있다는 게 셀링 포인트다.
Cuis 6.x (2024-2025)는 다음을 강조한다:
- VectorGraphics 기반의 깔끔한 렌더링
- "한 사람이 다 읽을 수 있는" 코드 베이스
- Unicode 지원
- Open VM 호환
Cuis는 Smalltalk가 어떻게 "원래" 의도되었는지를 가장 잘 보여주는 구현체로 평가받는다. 학습자에게는 큰 장점이고, 라이브러리 풍부함이 필요한 사람에게는 단점일 수 있다.
cuis.st — 공식 사이트.
6장 · Glamorous Toolkit — moldable 개발 환경
**Glamorous Toolkit (GT)**은 feenk가 Pharo 위에 만든 새로운 종류의 개발 환경이다. 단순히 IDE가 아니라 moldable development라는 새 패러다임을 들고 나왔다. moldable이란 무엇인가? 자기가 다루는 데이터와 도메인에 맞춰 도구 자체가 변형되는 개발 환경이다.
예를 들어 SQL 쿼리 결과를 보고 싶다면, 보통의 IDE는 텍스트 출력이나 표준 표 위젯을 보여준다. GT에서는 그 결과를 위한 특화된 뷰를 5분 만에 만들 수 있다. 그 뷰는 그 도메인에 대해 가장 잘 알고 있다.
GT 1.x는 다음 컴포넌트로 구성된다:
- GT Inspector — 객체에 도메인별 뷰를 붙일 수 있는 객체 검사기
- GT Playground — Smalltalk 실행 환경, 노트북과 REPL 사이
- GT Documenter — 살아 있는 실행 가능한 문서
- Lepiter — 노트 + 코드 + 실행 결과를 합친 페이지
- Bloc — GT의 그래픽 기반
- Brick — Bloc 위의 UI 위젯
feenk는 2018년 Tudor Girba를 중심으로 시작된 회사로, 모든 GT 코드를 MIT 라이선스로 공개한다. gtoolkit.com 에서 받을 수 있고, 다운로드하면 Pharo와 GT가 한 번에 들어 있는 이미지가 떨어진다.
GT의 야심은 작지 않다 — 이들은 **"개발자는 자기 시스템을 이해하기 위해 도구를 만들어야 한다"**고 주장한다. 매번 새로운 코드베이스를 분석할 때마다 그 코드베이스를 위한 도구를 짜고 버리는 식. 이 주장이 진짜인지, 마케팅인지는 직접 써보고 판단할 일이다.
7장 · Amber Smalltalk — 브라우저에서 도는 Smalltalk
Amber Smalltalk는 Smalltalk-80 코드를 JavaScript로 컴파일해 브라우저에서 실행하는 구현체다. 2010년대 초반 Nicolas Petton 등이 시작한 프로젝트로, 브라우저에서 Smalltalk IDE를 쓰고 그 결과로 JavaScript 앱을 만든다.
Amber의 매력:
- 브라우저만 있으면 Smalltalk를 쓸 수 있다
- JavaScript 라이브러리(jQuery, D3 등)를 Smalltalk에서 직접 부른다
- Smalltalk 클래스 → JavaScript prototype으로 매핑
2026년 현재 Amber는 활발한 개발이 아니라 유지보수 모드에 가깝다. 하지만 "Smalltalk가 웹에서 도는 모습이 궁금하다"는 호기심에는 여전히 답이 된다. amber-lang.net.
Amber의 후계자 격으로 PharoJS가 있다. Pharo에서 코드를 짠 뒤 JavaScript로 트랜스파일하는 프레임워크다.
8장 · Dolphin · VisualWorks · VAST — 상용 진영
오픈 소스가 아닌 상용 Smalltalk도 살아 있다.
Dolphin Smalltalk (Object Arts) — Windows 전용. 2016년 오픈 소스화 후 GitHub에서 커뮤니티 메인테인. Windows 네이티브 UI와 매끄럽게 통합되어 "Windows에서 Smalltalk를 쓰고 싶다"는 요구에 맞는다.
VisualWorks (Cincom) — Smalltalk-80 직계 상용 구현. Cincom Smalltalk라는 이름으로 1990년대부터 산업 현장에서 쓰여 왔다. 크로스 플랫폼, 다국어, 엄청난 양의 엔터프라이즈 라이브러리가 강점. 라이선스는 비싸지만, JPMorgan Chase, Texas Instruments, 보험·물류 회사들이 여전히 쓴다.
VA Smalltalk (VAST) (Instantiations) — IBM이 1990년대 만든 IBM VisualAge for Smalltalk의 후계. 2002년 IBM에서 Instantiations로 라이선스가 넘어왔고, 지금도 IBM CICS·MQ 통합이 강력하다. 메인프레임 환경과 연결하는 엔터프라이즈 Smalltalk 프로젝트의 정답.
Smalltalk/X — 독일에서 개발된 또 다른 상용 구현. Win32·Linux 네이티브.
상용 진영의 공통점: 돈을 내고 살 만한 가치가 있는 회사들(금융·물류·텔코)에 깊게 박혀 있어서 안 사라진다. 하지만 신규 도입은 거의 없다.
9장 · GemStone/S — 분산 OO 데이터베이스 + Smalltalk
GemStone/S 64 Bit은 GemTalk Systems가 만든 분산 객체 데이터베이스다. 일반 RDB가 아니라 Smalltalk 객체를 그대로 영속화하는 OODB. 모든 Smalltalk 객체가 자동으로 디스크에 살고, 트랜잭션 안에서 안전하게 수정된다.
GemStone의 사용처
- JPMorgan Chase — 자산 관리 시스템 일부
- Cargill — 글로벌 곡물 거래 시스템
- Sears — 한때 카탈로그 시스템
- Texas Instruments — 제조 라인
- 보험사 백오피스 다수
GemStone의 매력은 거대한 OO 모델을 트랜잭션 안전하게 관리한다는 것. 수십억 개의 객체를 메모리처럼 다룬다. 그것도 그냥 Smalltalk 문법으로. SQL 같은 별도 쿼리 언어가 없다.
GemTalk Systems는 GemStone 제품군을 유지하는 회사다. GemStone/S 64, Maglev(Ruby + GemStone), 그리고 일부 컨설팅을 한다. 라이선스는 비싸지만 무료 커뮤니티 에디션이 있다.
gemtalksystems.com — 다운로드와 문서.
10장 · Seaside — 컨티뉴에이션 기반 웹 프레임워크
Seaside는 Smalltalk 진영이 만든 웹 프레임워크 중 가장 유명한 것이다. 2002년 Avi Bryant가 시작했고, 컨티뉴에이션(continuation) 기반이라는 점에서 모든 다른 웹 프레임워크와 다르다.
컨티뉴에이션 기반이 무슨 뜻인가? 웹 요청과 응답 사이에 콜백을 안 쓴다는 뜻이다. 사용자가 "다음" 버튼을 누르면, 서버는 그 시점의 호출 스택을 캡처하고 다시 실행한다. 개발자는 마치 데스크탑 GUI를 짜듯 코드를 쓴다.
| name |
name := self request: 'What is your name?'.
self inform: 'Hello, ', name.
이 두 줄은 사용자에게 폼을 보여주고, 응답을 받고, 다시 인사한다. 콜백·라우팅·세션 관리가 다 자동이다.
Seaside 3.5 (2024년)는 다음을 지원한다:
- Pharo 12·13에서 1급 동작
- WebSocket 지원
- REST API 어댑터
- HTML5 컴포넌트
- jQuery·Bootstrap 위젯
Seaside는 컨티뉴에이션 모델의 트레이드오프 — 메모리 사용량과 확장성 — 때문에 거대 트래픽 사이트의 1순위는 아니지만, 복잡한 마법사·폼 흐름이 많은 내부 도구에는 무적이다.
seaside.st — 공식 사이트.
11장 · Iliad · AIDA/Web · Pier CMS — 다른 웹 프레임워크들
Seaside가 유일하지는 않다.
Iliad — Smalltalk 진영의 신세대 웹 프레임워크. 컨티뉴에이션을 안 쓰고 더 RESTful한 라우팅을 채택. Sebastien Audier가 2009년 시작.
AIDA/Web — Igor Stasenko 등이 만든 또 다른 Smalltalk 웹 프레임워크. 컴포넌트 기반이지만 Seaside보다 가볍다. Croatia 출신의 프로젝트.
Pier CMS — Seaside 위에 만든 CMS. 위키, 블로그, 일반 웹사이트를 만들 수 있다. Lukas Renggli가 주도. 2026년 기준으로는 활발한 개발이라기보다는 사용 가능한 상태.
Teapot — Pharo의 Sinatra-스타일 마이크로 프레임워크. REST API에 적합. Attila Magyar가 만들었다.
Zinc HTTP Components — Pharo 표준 HTTP 클라이언트/서버. 거의 모든 모던 Pharo 웹 코드가 Zinc 위에서 돈다. Sven Van Caekenberghe가 메인테인.
12장 · Roassal3 · Bloc · DataFrame — 모던 Pharo 라이브러리
Pharo 13 시대의 핵심 라이브러리들.
Bloc — Pharo의 새 그래픽 프레임워크. Morphic을 대체할 후보로 오랜 시간 개발되어 왔고, Pharo 13에서 1급 시민이 되었다. GPU 가속, 더 빠른 텍스트 렌더링, 합성 기반 레이아웃.
Roassal3 — Pharo의 데이터 시각화 라이브러리. Alexandre Bergel을 중심으로 칠레 대학 그룹이 주도. 동적 그래프, 차트, 트리맵, 산포도, 화음 다이어그램 — Smalltalk 코드로 그린다. GT에서 1급 시각화 도구로 쓰인다.
DataFrame — Pharo의 pandas. Olek Zaytsev가 시작. 행/열 데이터를 통계 분석하고 시각화한다. 데이터 사이언스용.
Polymath — Pharo의 수치 계산 라이브러리. 선형 대수, 통계 분포, 최적화. NumPy의 Smalltalk 사촌. 자료의 깊이는 NumPy에 못 미치지만 충분히 실용적이다.
ML-Smalltalk / Mathemagics — 머신 러닝용. 산업 수준의 ML 라이브러리는 아니고, 교육·연구 목적.
NB / Pharo FFI — Native Boost. C 라이브러리를 Smalltalk에서 부르는 FFI. SQLite, OpenSSL, libsodium 등을 부른다.
13장 · Iceberg · Metacello · STON — 패키지·Git·시리얼라이제이션
이미지 기반 패러다임이 Git과 어떻게 섞이나? 핵심 도구 세 개를 알면 된다.
Iceberg — Pharo의 Git 통합. 이미지 안의 클래스·메서드를 Git 리포지토리의 텍스트 파일과 양방향으로 동기화한다. Pharo 안에서 commit, push, pull, merge, branch 다 가능. UI는 GitHub Desktop을 닮았다.
Metacello — Pharo의 패키지 매니저. ConfigurationOfXxx 또는 BaselineOfXxx 클래스에 의존성을 선언하면 Metacello가 GitHub에서 받아 이미지에 로드한다. npm/pip와 비슷하지만 텍스트 파일 단위가 아닌 클래스 단위.
Metacello new
baseline: 'Roassal3';
repository: 'github://ObjectProfile/Roassal3:master';
load.
STON (Smalltalk Object Notation) — Smalltalk 객체를 JSON 비슷한 텍스트로 직렬화하는 포맷. JSON보다 표현력이 강해서 객체 그래프와 참조를 보존한다. 설정 파일과 데이터 교환에 쓰인다.
Tonel — Pharo의 텍스트 기반 소스 포맷. 한 메서드 = 한 파일 시절(Filetree)에서 한 클래스 = 한 파일(Tonel)로 옮겨가는 추세. Git diff가 훨씬 깔끔해진다.
14장 · 산업 적용 사례 — 금융·물류·교육·연구
Smalltalk가 어디서 실제로 돌고 있나? 의외로 많다.
금융
- JPMorgan Chase — Kapital이라는 자산 관리 시스템을 VisualWorks Smalltalk로 운영. 수십 년 코드 베이스.
- Orient Overseas Container Line (OOCL) — 글로벌 컨테이너 회사. 운영 시스템 일부가 Smalltalk.
- MoneyMarket / 일부 헤지펀드 — 트레이딩 데스크의 백오피스.
물류·제조
- Cargill — GemStone/S 위에 곡물 거래 플랫폼.
- Sears (역사적) — 카탈로그 시스템.
- Texas Instruments — 제조 라인 컨트롤.
- Desjardins (캐나다 금융 그룹) — 보험 백오피스.
교육·연구
- Université de Bern, INRIA Lille, Université de Lille — Pharo의 본거지.
- ETH Zürich, MIT — 일부 OO 강의에서 Smalltalk.
- POSTECH(포항공대) — 과거 객체지향 수업에서 Squeak/Pharo.
- Universidad de Chile — Roassal 개발.
라이브 코딩·예술
- Glamorous Toolkit — feenk가 컨설팅과 함께 시연.
- Sonic Pi 비교 — 음악 라이브 코딩과 결이 비슷.
의료
- 일부 EMR/EHR 시스템이 VAST 기반.
15장 · 한국·일본의 Smalltalk
한국
한국의 Smalltalk 커뮤니티는 작지만 끊긴 적은 없다. **POSTECH(포항공과대학교)**에서 1990년대부터 객체지향 수업에 Smalltalk를 사용한 역사가 있고, 일부 졸업생이 산업 현장에서 Smalltalk 경험을 이어 가고 있다.
KAIST와 서울대학교 일부 강의에서 객체지향 입문에 Squeak이 한때 쓰였다. 한국 Pharo 사용자 모임은 작은 규모이지만 GitHub와 Discord를 통해 연결되어 있다.
한국어 자료는 적은 편이라, 학습자는 보통 영문 "Pharo by Example"이나 "Deep into Pharo"를 본다.
일본
일본의 Smalltalk 커뮤니티는 상대적으로 더 활발하다. Squeak JP 그룹과 Squeakland Japan이 어린이 프로그래밍 교육 맥락에서 Squeak Etoys를 보급했다. 新世界Squeak(니이세이카이 Squeak)이라는 활동 그룹이 도쿄에서 모임을 이어 왔다.
Tokyo Smalltalk Workshop은 정기적으로 열리는 모임이고, ESUG Smalltalk Conference에 일본인 참가자가 꾸준히 있다. 일본 Pharo 커뮤니티는 한국보다 크고, 일본어 번역된 Pharo 자료도 일부 있다.
산업적으로 일본의 일부 보험사·물류 회사가 VAST나 VisualWorks를 유지보수 중이다.
16장 · Self · Newspeak — Smalltalk의 후계자들
Smalltalk만 OO 연구를 이끈 게 아니다. 같은 가족의 다른 언어들.
Self — David Ungar와 Randall Smith가 Sun Microsystems에서 만든 프로토타입 기반 객체 언어. Smalltalk-80의 클래스 개념을 없애고 모든 객체가 프로토타입이라는 모델을 정립했다. JavaScript의 prototype 모델, Hotspot JVM의 JIT 기법(adaptive optimization) — 모두 Self가 원조다.
Newspeak — Gilad Bracha가 만든 Smalltalk 가족의 새 언어. 모듈성과 보안에 강조점. Smalltalk보다 더 정제된 의미론.
Strongtalk — Smalltalk + 옵셔널 정적 타입. 1990년대 Animorphic Systems에서 만들었고, 코드 일부는 나중에 HotSpot JVM에 흡수되었다.
Slate — 멀티 디스패치 Smalltalk 사촌.
Pharo의 미래 분기 — Sista(Speculative Inlining)와 Druid 같은 JIT 컴파일러 연구가 진행 중.
17장 · Objective-C · Ruby · Python · JavaScript에 끼친 영향
Smalltalk는 사용자가 많지 않은데도 영향력은 엄청나다. 거의 모든 모던 OO 언어에 그 흔적이 있다.
Objective-C — Brad Cox와 Tom Love가 만든 언어. C 위에 Smalltalk 메시지 패싱을 올렸다. NeXT가 채택했고, 그 NeXT가 Apple에 인수되면서 macOS와 iOS의 핵심 언어가 되었다. [obj message:arg] 문법이 바로 Smalltalk의 흔적.
Ruby — Yukihiro Matsumoto의 디자인은 Perl과 Smalltalk의 합성. 모든 것이 객체, 블록(클로저), 메서드 미싱(method_missing) — 모두 Smalltalk 기원.
Python — Guido van Rossum의 디자인 결정 일부에 Smalltalk가 영향. 모든 것이 객체, 메타클래스, __getattr__ 같은 hook.
JavaScript — Brendan Eich가 10일 만에 만들 때 Self를 참고. JavaScript의 prototype 기반 객체 모델은 Self의 직계.
Java — Smalltalk-80의 객체 모델을 단순화해서 만든 사촌. 클래스 기반 OO, 가비지 컬렉션, 단일 상속 — Smalltalk가 먼저.
Dart — Google이 만든 언어. Flutter의 기반. Lars Bak이 Strongtalk·HotSpot 경험을 살려 디자인.
Erlang — Joe Armstrong은 액터 모델을 만들 때 Smalltalk의 메시지 패싱에서 영감을 받았다.
Smalltalk를 모르는 모던 프로그래머도 사실 매일 Smalltalk의 후계를 쓰고 있는 셈이다.
18장 · 학습 자료와 커뮤니티
무료 책
- Pharo by Example (books.pharo.org) — Pharo 입문 클래식.
- Deep into Pharo — 중급. 메타 프로그래밍, 도구 만들기.
- Enterprise Pharo: a Web Perspective — 웹 개발용.
- The Pharo MOOC — Stéphane Ducasse 등이 만든 무료 영상 강의.
유료 책
- Smalltalk-80: The Language and Its Implementation (Goldberg & Robson) — Blue Book. 1983.
- Smalltalk Best Practice Patterns (Kent Beck) — Smalltalk로 짠 좋은 코드의 패턴.
- Pharo with Style (Stéphane Ducasse 외) — 모던 스타일 가이드.
- Squeak: Open Personal Computing and Multimedia (Mark Guzdial 외) — Squeak 입문.
컨퍼런스
- ESUG (European Smalltalk User Group) Conference — 매년 8-9월 유럽. 가장 큰 정기 모임.
- Smalltalks Conference — 아르헨티나에서 매년 열림.
- Pharo Days — 프랑스 릴에서 매년. Pharo 코어 팀 참여.
- Camp Smalltalk — 비정기 해킹 모임.
온라인
- Pharo Discord — 가장 활발한 채널.
- Pharo discussion list — 메일링 리스트.
- Smalltalk Reddit (r/smalltalk) — 토론.
- GitHub
pharo-project/pharo— 메인 리포.
19장 · 2026년에 Smalltalk를 새로 시작한다면
만약 2026년에 Smalltalk를 처음 만진다면, 다음 경로를 추천한다.
1단계 — Pharo Launcher 설치 pharo.org/download에서 Pharo Launcher를 받는다. 이 도구로 여러 Pharo 이미지를 관리한다. 최신 Pharo 13 64bit를 받고 연다.
2단계 — Playground에서 첫 코드 이미지가 뜨면 Playground를 연다. 다음을 입력하고 Cmd+P(Print it) 또는 Ctrl+P:
1 to: 10 collect: [ :x | x * x ]
#(1 4 9 16 25 36 49 64 81 100)이 출력된다.
3단계 — System Browser 열기
Cmd+O+B 또는 World 메뉴 → System Browser. 모든 클래스가 여기 있다. Number를 찾아 + 메서드를 열어 본다. 산수 연산자도 그냥 메서드 호출이라는 걸 본다.
4단계 — Object Inspector 어떤 객체든 inspector로 연다. 그 객체의 클래스, 인스턴스 변수, 응답 가능한 메시지가 다 보인다.
5단계 — Iceberg로 Git 리포 만들기 간단한 프로젝트를 Iceberg로 GitHub에 푸시해 본다. 처음에는 어색하지만 익숙해지면 텍스트 파일 편집보다 자연스럽다.
6단계 — GT 다운로드 gtoolkit.com에서 Glamorous Toolkit을 받는다. 단순 IDE가 아닌 moldable 환경을 체험한다.
7단계 — Roassal3 시각화 만들기 숫자 배열을 받아 막대 그래프를 그리는 코드를 짠다. 몇 줄로 끝난다.
8단계 — Seaside로 작은 웹 앱 컨티뉴에이션 기반 웹 프레임워크가 어떤 느낌인지 직접 체험한다.
이 8단계를 한 주말에 다 할 수 있다. 그러고 나면 "왜 텍스트 파일을 편집하지?"라는 의문이 생기기 시작한다.
20장 · 정리 — Smalltalk가 가르치는 것
Smalltalk는 결코 메인스트림이 되지 않을 것이다. 그건 확실하다. 하지만 Smalltalk가 사라지지도 않을 것이다 — 그 안에 있는 아이디어들이 너무 강력하기 때문에.
모든 것은 객체 — 진짜로. 1 + 2도 메시지 패싱. 클래스도 객체. 메서드도 객체.
라이브 시스템 — 멈추지 않는 시스템에서 코드를 고친다. 디버거가 첫 번째 클래스 시민.
meta가 1급 — 클래스의 클래스(메타클래스)를 일관성 있게 모델링한 첫 언어.
환경이 곧 언어 — IDE, 디버거, 인스펙터, 브라우저는 언어와 분리되지 않는다.
이 네 가지가 50년이 지난 지금도 다른 어느 언어에서도 완전히 구현되지 못했다. 그래서 Smalltalk를 한 번 깊게 만져 본 사람은, 다른 언어로 돌아가서도 "내가 Smalltalk에서 했던 그건 어떻게 하지?"를 반복해 묻게 된다.
Alan Kay는 자주 말한다. "The best way to predict the future is to invent it." Smalltalk는 50년 전에 그 미래를 만들었다. 우리는 아직 그 미래에 못 따라잡았다.
2026년, Smalltalk를 한 번 만져 보자. 후회하지 않을 것이다.
21장 · 참고 자료
- Pharo 공식 사이트 — pharo.org
- Pharo by Example (무료 책) — books.pharo.org
- Pharo GitHub — github.com/pharo-project/pharo
- Squeak 공식 사이트 — squeak.org
- Cuis Smalltalk — cuis.st
- Glamorous Toolkit — gtoolkit.com
- feenk (GT 개발사) — feenk.com
- Amber Smalltalk — amber-lang.net
- GemTalk Systems (GemStone/S) — gemtalksystems.com
- Cincom Smalltalk (VisualWorks) — cincomsmalltalk.com
- Instantiations (VAST) — instantiations.com
- Object Arts (Dolphin) — object-arts.com
- Seaside — seaside.st
- Smalltalk Industry Council — smalltalk.org
- ESUG — esug.org
- Pharo MOOC — mooc.pharo.org
- Roassal3 — github.com/pharo-graphics/Roassal3
- DataFrame Pharo — github.com/PolyMathOrg/DataFrame
- PolyMath — github.com/PolyMathOrg/PolyMath
- Iceberg — github.com/pharo-vcs/iceberg
- Metacello — github.com/Metacello/metacello
- Pharo Discord 초대 — discord.gg/QewZMZa
- "Smalltalk-80: The Language and Its Implementation" (Blue Book, 1983) — Adele Goldberg & David Robson
- "Smalltalk Best Practice Patterns" — Kent Beck
- Alan Kay, "The Early History of Smalltalk" (HOPL-II, 1993)
- Squeak JP — swikis.ddo.jp/squeak/
- Wikipedia: Smalltalk — en.wikipedia.org/wiki/Smalltalk