AI 뉴스

현대 코딩 에이전트로 되살린 옛 수학 앱 — Java 1.0 애플릿 24개를 JavaScript로 이식한 기록

노동1호 2026. 7. 13. 23:02

> 1999년에 테리 타오(Terence Tao)와 함께 만든 Java 1.0 수학 애플릿, Allen Knutson의 honeycomb 시각화, 그리고 Besicovitch 집합의 컬러 표시까지. 지지가 끊긴 지 25년이 지난 옛 자바 애플릿 24개를 최신 코딩 에이전트로 JavaScript로 이식하면서 배운 것들을 정리합니다.

mathematics visualizer javascript applet resurface retro modern
  • --

무엇을复活한 건가

이번 프로젝트의 주인공은 1999년 Allen Knutson과 Terence Tao가 만든 Java 1.0 수학 애플릿 모음입니다. 저자는 그중 약 24개를 현대 코딩 에이전트(주로 Claude Code, Codex 계열)를 써서 JavaScript로 이식했고, 이식 과정에서 원래 애플릿에는 없던 시각화 기능(예: Besicovitch 집합의 컬러링 표시)까지 추가했습니다.

1999년 Java 애플릿이 흥했던 이유는 브라우저 안에서 작은 수학 시뮬레이션을 바로 띄울 수 있었기 때문입니다. 하지만 브라우저에서 Java 플러그인이 deprecated된 2017년 이후로는 더 이상 실행할 수 없었고, 그 사이 25년 동안 이 시뮬레이션들은 사실상 죽은 콘텐츠 취급을 받았습니다. 게다가 1999년 당시의 웹페이지는 대부분 아카이브조차 되어 있지 않아, 원본 소스를 구하기 어렵다는 점도 큰 장벽이었습니다.

왜 코딩 에이전트가 필요했는가

단순한 "Java → JavaScript 번역"이 아니었습니다. 이번 작업의 진짜 어려운 점은 다음 세 가지였습니다.

  1. 1999년의 Java 표준 라이브러리 코드를 그대로 옮기기 어려운 경우가 많았습니다. AWT의 더 이상 쓰이지 않는 클래스나, 더 이상 지원되지 않는 패키지를 그대로 쓰는 옛 코드가 많아서, 단순 변환만으로는 의미 있는 결과물이 나오지 않았습니다.
  2. 원본이 동작하려면 원본 워크플로(매개변수 입력, 그래픽 렌더링, 인터랙션)를 그대로 흉내내야 했습니다. 그렇지 않으면 수학적 의미를 잃어버립니다.
  3. 새로운 시각화 기능을 추가해야 했습니다. Besicovitch 집합의 컬러 표시 같이, 1999년 당시에는 구현하기 어려웠던 시각화를 코딩 에이전트가 만드는 데 큰 진가가 있었습니다.

이식 과정에서 발견한 것들

1. 옛 코드는 그대로 옮기지 말고 "다시 이해하고" 쓴다

단순 번역은 거의 항상 실패했습니다. 저자는 "복잡한 옛 코드를 그대로 옮기지 말고, 코딩 에이전트에게 자바스크립트로 같은 일을 하라고 시키되, 옛 코드 자체에 매몰되지 않게 했다"고 적었습니다. 1999년 코드의 의도(예: 어떤 매개변수가 어떤 시각적 효과로 이어지는지)를 자연어로 풀어 설명하면, 코딩 에이전트는 매우 정확한 모던 구현을 만들어냅니다.

2. 매개변수 슬라이더는 시간이 많이 걸렸지만 보람이 있었다

mathematics visualizer javascript applet resurface retro modern

각 애플릿에는 보통 3~5개의 매개변수가 있었는데, 슬라이더를 붙여서 실시간으로 매개변수를 바꿔가며 결과가 어떻게 변하는지 관찰할 수 있게 만들었습니다. 이 부분은 단순히 "옛 동작 재현"이 아니라 새로운 학습 도구를 만드는 단계이기 때문에, 코딩 에이전트와 함께 한 단계 더 추상화하는 작업이 필요했습니다.

3. 모던 시각화는 옛 컬러 팔레트보다 풍부하다

Besicovitch 집합의 컬러링 같은 경우, 1999년 당시에는 256색 팔레트로 비슷한 색을 구별하는 것이 어려웠습니다. 하지만 모던 브라우저에서는 충분히 부드러운 그라데이션을 그릴 수 있으므로, 코딩 에이전트에게 "옛 컬러링을 단순히 흉내내지 말고, 컬러 그라데이션으로 더 풍부하게 표현해달라"고 시킨 결과, 시각적으로 훨씬 의미가 잘 드러나는 그림이 나왔습니다.

어떤 코딩 워크플로가 가장 효과적이었나

저자가 강조한 워크플로는 두 가지였습니다.

  • "기능을 작은 단위로 쪼개서 시키기". 한 번에 큰 애플릿 하나를 통째로 이식시키는 것은 거의 항상 실패했고, 한 함수가 한 가지 일을 하는 작은 단위로 쪼개서 시킬 때 가장 정확도가 높았습니다. 이건 모던 코딩 에이전트의 표준 패턴과도 일치합니다.
  • "원본 링크를 코딩 에이전트에게 함께 넘기기". 데모 페이지의 HTML/JavaScript를 함께 넘기면, 코딩 에이전트는 단순히 "어떤 동작을 해야 하는지"뿐 아니라 "어떻게 사용되는지"까지 알게 되어 더 정확한 추론을 보여줍니다.

수학 교육의 의미

옛 자바 애플릿이 흥했던 때는 대학원생들이 자기 연구의 핵심 동작을 작은 시뮬레이션으로 만들어 동료들에게 공유하던 시대였습니다. 그때 만든 시뮬레이션들이 25년 만에 다시 살아나면서, 이제 두 가지 일이 가능해집니다.

  1. 옛 시뮬레이션의 수학적 의미를 워크숍이나 세미나에서 실시간으로 보여줄 수 있습니다.
  2. 옛 동작을 매개변수를 바꿔가며 탐구할 수 있으므로, 수업에서 직접 시연하기 좋은 도구가 됩니다.

저자는 이 과정을 통해 "옛날 가르침 자료도 코딩 에이전트와 함께 살릴 수 있다"는 결론을 얻었고, 비슷한 시도를 가진 사람이 있다면 시도해볼 만하다고 적었습니다.

정리

  • 옛 코드를 옮길 때는 번역보다 이해 후 재작성이 효과적입니다.
  • 매개변수 슬라이더를 붙이는 것만으로도 학습 도구로서의 가치가 크게 올라갑니다.
  • 모던 브라우저에서 가능한 부드러운 컬러 그라데이션 같은 시각화는 더 이상 256색 팔레트로 표현하지 않습니다.
  • 작은 단위로 쪼개서 시키고, 원본 동작 + 사용 예시를 함께 전달하는 워크플로가 가장 잘 동작합니다.

25년 전에 만든 시뮬레이션을 모던 코딩 에이전트로 다시 살린 사례는, "옛날 자산을 어떻게 활용할 것인가"에 대한 좋은 사례입니다. 옛날 자산을 코딩 에이전트와 함께 모더나이즈하면, 단순히 동작을 복원하는 데서 끝나지 않고 그 시대에는 불가능했던 시각화까지 더해지는 부수 효과가 따라옵니다.

  • --

📰 원본 출처 · https://news.hada.io/topic?id=31374 (#N=31374)

이 글은 GeekNews(긱뉴스)에 게제된 글을 기반으로 작성되었습니다. 원본의 라이선스와 저작권은 원작자에게 있습니다.