---
title: "Mathematica 이전의 시대 — 20살에 만든 SMP, Caltech IP 분쟁, 그리고 언어 설계의 교훈"
published: 2026-03-06T23:19:28.000Z
canonical: https://jeff.news/article/279
---
# Mathematica 이전의 시대 — 20살에 만든 SMP, Caltech IP 분쟁, 그리고 언어 설계의 교훈

Stephen Wolfram이 Mathematica 25주년을 맞아 쓴 회고록. 전신인 SMP의 설계와 실패, Caltech과의 IP 분쟁 뒷이야기, 그리고 언어 설계에서 배운 교훈을 풀어놓음.

## Mathematica 이전의 시대 — Stephen Wolfram의 회고 (2013)

- Mathematica 25주년(2013년 기준)을 맞아 Stephen Wolfram이 쓴 회고록. Mathematica가 어디서 왔는지, 그 전신인 SMP(Symbolic Manipulation Program)의 탄생과 실패에서 무엇을 배웠는지를 풀어놓음

## 6살의 덧셈 슬라이드 룰에서 시작

- 6살 때 두 자를 이용한 "덧셈 슬라이드 룰"로 산수를 자동화하려 했고, 12살 때 전자 계산기가 나오자 바로 빠져듦. 16살에 물리학 논문을 몇 편 발표하고 고등학교를 나와서 영국 정부 연구소에서 일함
- 물리학에서 파인만 다이어그램의 대수식이 수백~수천 개 항을 가지는데, 이걸 손으로 하면 부호와 인수 2를 쫓다가 인생을 보내게 됨. 컴퓨터로 대수를 시키자는 아이디어에서 Reduce, Ashmedai, Schoonschip 같은 기존 프로그램을 발견함
- 1977년에 ARPANET(당시 호스트 256개)을 통해 MIT의 Macsyma를 발견하고 인터랙티브하게 대수 연산을 하기 시작. 적분의 여러 대수적 형태를 열거한 다음 "실험적으로" 미분해서 맞는지 보는 식으로 작업함. 사람들은 Wolfram이 인간 대수 계산기인 줄 알았다는 거임

## SMP: 20살에 시작한 대규모 프로젝트

- 1979년, 20살에 물리학 박사를 마치고 CERN에서 몇 주를 보내며 "Macsyma보다 나은 걸 직접 만들자"라고 결심. 이게 SMP임
- Rob Pike(Go 언어 만든 그 사람)가 물리학 대학원생이었는데, C가 "미래의 언어"라고 설득해서 C로 구현함
- 본인이 하루에 코드 1,000줄을 쓰면서 1981년 6월에 SMP 1.0 완성. 실행 파일이 1메가바이트도 안 됐음
- SMP의 핵심 아이디어: 모든 것을 심볼릭 표현과 패턴 변환 규칙으로 표현. 나중에 Mathematica의 근간이 됨

## Caltech과의 IP 분쟁 — 뒷이야기가 기상천외함

- SMP를 상용화하려고 Caltech 기술이전 사무소에 갔는데 담당자가 뭘 해야 하는지 몰랐음. "교수들이 그냥 직접 회사 차리고 나가서 우리가 관여할 일이 없었다"는 거임
- 대학이 갑자기 안 된다고 태도를 바꿈. 뒷배경: 1930년대 pH 미터를 발명한 Arnold Beckman이 Caltech 이사회 의장이었는데, 생물학과 교수 Lee Hood가 유전자 시퀀서를 발명하고 Applied Biosystems를 세워서 대성공. Beckman이 "IP가 캠퍼스 밖으로 걸어나간다"고 화를 냈고, 행정부가 때마침 진행 중이던 SMP 프로젝트를 "처리"하라는 지시를 받았다는 거임
- Feynman과 Gell-Mann이 나서서 중재했지만 결국 Wolfram은 Caltech을 떠남. 2013년에 당시 95세가 된 전 부학장을 우연히 만나서 이 이야기를 들었는데, 본인 상상보다 더 기괴했다고 함

## SMP에서 배운 교훈 → Mathematica로

- SMP의 좋은 아이디어는 Mathematica에 다시 쓰고, 나쁜 아이디어는 빼냄. 나쁜 아이디어 예시:
  - **심볼릭 인덱스 리스트**: 함수와 리스트를 통합하려다가 `v[2]:b, v[3]:c` 후에 `v[1]:a`를 정의하면 갑자기 재정렬되는 등 괴상한 동작이 발생
  - **"카멜레온 심볼"**: 사용할 때마다 이름이 바뀌는 심볼. 이름부터 이미 나쁜 아이디어임
  - **시맨틱 패턴 매칭**: `f[$x+$y, $x, $y]`가 `f[7, 3, 4]`에도 매치되게 했는데, 실제론 거의 안 쓰이고 프로그램 동작을 이해 불가능하게 만듦
  - **사용자 정의 구문**: "U"를 중위 연산자로 정의하면 함수 이름에 "U" 들어간 걸 타이핑할 수가 없게 됨
- 1986년 8월, "궁극의 계산 시스템"을 만들겠다고 결심하고 Mathematica를 처음부터 다시 설계. SMP 덕에 뭐가 중요하고 뭐가 아닌지 이미 알고 있었음
- 1988년 6월 23일(앨런 튜링 생일인 걸 당시엔 몰랐다고) Mathematica 1.0 출시. Steve Jobs가 NeXT 컴퓨터에 번들하기로 한 게 첫 계약이었음

> [!NOTE]
> SMP 소스 코드는 암호화된 채로 잠겨 있음. Wolfram이 "소스를 암호화하자"는 "훌륭한" 아이디어를 냈는데 암호 키를 아무도 기억 못 함. 약 1981년판 Unix crypt 유틸리티의 변형이라는데, 글 말미에 암호 해독 챌린지를 걸어둠

## 핵심 포인트

- 20살에 SMP를 만들고 하루 1000줄 코딩 — Mathematica의 근간이 된 심볼릭 표현 패러다임
- Caltech IP 분쟁의 실제 원인은 유전자 시퀀서 회사 성공에 화난 이사회 의장
- SMP 소스 코드가 암호화된 채로 잠겨 있고 키를 아무도 기억 못 함

## 인사이트

언어 설계의 성공과 실패를 1인칭으로 풀어놓은 귀한 회고록. '카멜레온 심볼' 같은 실패 사례들이 현대 API/언어 설계에도 시사점을 줌.
