Numpilot
손안의 수치해석/5부 제품과 앞으로

개발자가 직접 해석하는 시대

30 / 30
2026-08-22 · 읽는 데 9분

30편을 지나

첫 편에서 프라이팬 손잡이 이야기로 시작했다. 만들어보지 않고 아는 방법에 대해.

그리고 서른 편을 지나며 여러 곳을 돌았다. 격자를 자르는 법, 언어를 설계하는 법, 애매함을 다루는 법, 답을 믿는 법.

마지막 편에서는 이 모든 것이 무엇을 향하고 있었는지 정리한다.

우리가 실제로 다룬 문제

이 연재를 한 문장으로 줄이면 이렇다.

수치해석을 휴대폰으로 옮기는 일은 계산을 줄이는 문제가 아니라, 사람이 물리를 기술하는 언어를 새로 설계하는 문제였다.

처음에는 이걸 몰랐다. 5편에서 세 번 실패하며 알게 되었다.

계산을 폰에 맞추는 것은 오히려 해결 가능한 부분이었다. 문제를 좁히고(9편), 2차원으로 내려가고(19편), 격자를 성기게 하면 된다. 잃는 것이 있지만 방향은 통제할 수 있다.

어려운 것은 입구였다. 사람이 말하는 방식과 계산기가 요구하는 형식 사이의 거리. 한 문장에 스무 개의 결정이 생략되어 있고(7편), 그 결정을 누가 어떻게 하느냐가 도구의 성격을 정한다.

그래서 2부가 이 연재의 중심이 되었다. DSL이라는 중간 언어를 설계하는 이야기.

반복해서 나온 원칙

서른 편을 통틀어 같은 원칙이 세 층위에서 반복됐다.

조건 설계에서 (2부) — 많이 결정하되, 결정한 것을 전부 보여준다.

계산 검증에서 (3부) — 근사를 피할 수 없으니, 근사의 방향을 통제하고 그 사실을 드러낸다.

AI 예측에서 (4부) — 많이 예측하되, 전부 검사하고, 검사가 못 잡는 것을 알린다.

세 줄이 같은 이야기다. 26편에서 이렇게 정리했다.

도구의 가치는 얼마나 정확한지가 아니라, 얼마나 자기 오류를 드러내는지에 있다.

이 원칙이 우리 도구의 성격을 규정한다. 우리는 정밀한 도구를 만들지 않았다. 자기 한계를 아는 거친 도구를 만들었다.

무엇을 아직 못 했나

정직하게 남은 것을 적어둔다.

기술적으로 — 27편의 로드맵에서 단계 1만 진행 중이다. FNO는 실험 수준이고, 3차원과 과도 해석은 없고, 물리 범위는 열전달에 머물러 있다.

검증에서 — 20편의 검증 체계는 설계했지만, 실제 물리 실험과 대조한 사례가 부족하다. 계산이 스스로 일관되는 것과 현실과 맞는 것은 다르다.

사용에서 — 25편의 순환은 아직 돌지 않았다. 사용자가 모여야 시작된다. 그리고 그것이 로드맵 전체의 전제 조건이다.

이 연재의 상당 부분이 계획이다. 되는 것과 되게 하려는 것을 구분해서 적으려 했다. 그 구분이 흐려지면 스스로도 무엇을 달성했는지 모르게 되기 때문이다.

이것이 향하는 곳

그럼에도 방향은 분명하다고 본다. 세 가지 근거가 있다.

첫째, 흐름이 그쪽으로 가고 있다.

13편에서 vibe coding을 이야기했다. 사람이 다루는 표면은 얇아지고 복잡함은 아래로 내려간다. 번역이 그랬고, 검색이 그랬고, 코드 작성이 그랬다.

수치해석이 그 흐름에서 예외일 이유가 없다. 다만 조건이 붙는다. 결과로 검증할 수 없는 영역이므로, 조건 단계에서 검사 가능한 층이 필요하다. 그게 우리가 DSL을 만든 이유다.

둘째, 비어 있는 자리가 실재한다.

3편에서 말한 중간층. 정밀 해석과 아무것도 없음 사이. 이 자리가 비어 있는 것은 도구가 없어서가 아니라, 그 자리에 맞는 도구를 아무도 만들지 않았기 때문이다.

기존 도구는 정밀함을 향해 발전했다. 그 방향에서 우리가 경쟁할 여지는 없다. 다른 방향 — 접근성과 즉시성 — 은 상대적으로 비어 있다.

셋째, 계산 위치의 선택이 구조적 이점을 만든다.

4편의 결정. 계산이 기기에서 일어나므로 사용량이 늘어도 비용이 늘지 않는다. 그래서 “무제한 무료”가 약속이 아니라 구조가 된다.

이건 서버 기반 서비스가 따라 하기 어려운 지점이다. 그리고 3편의 목표 — 부담 없이 열 번 시도 — 를 지탱하는 기반이다.

마지막 이야기

1편에서 이렇게 적었다.

질문을 던진 사람과 답을 계산하는 사람이 분리되어 있다. 이 구조에서는 “이것도 한번 해볼까?” 하는 가벼운 호기심이 살아남지 못한다.

이 연재의 목적은 그 분리를 좁히는 것이었다. 그리고 좁히는 방법이 성능이 아니라 언어였다는 것이 서른 편의 결론이다.

사람이 아는 방식으로 말하면 기계가 알아듣게 하는 것. 그 사이에 검사 가능한 형식을 두어 서로를 감사하게 하는 것.

이게 잘 되면 무엇이 달라지나.

거창한 것은 아니다. 설계하다 문득 떠오른 생각을 그 자리에서 확인할 수 있게 되는 것. 확신이 없어도 물어볼 수 있게 되는 것. 열 번 시도해서 아홉 번 버릴 수 있게 되는 것.

좋은 설계는 대체로 그런 사소한 시도에서 나온다. 3편에서 적었던 문장이다. 그 시도의 비용을 낮추는 것이 이 프로젝트가 하려는 전부다.


이 연재를 마치며

서른 편을 쓰는 동안 설계가 몇 번 바뀌었다. 쓰면서 정리되지 않은 부분이 드러났고, 그 부분을 다시 생각해야 했다.

그중 몇 가지는 이 글에 그대로 남겨두었다. 답을 모르는 문제, 아직 검증되지 않은 가정, 실패한 첫 시도. 지우고 매끄럽게 만들 수 있었지만 그러지 않았다.

만드는 과정의 기록이 완성된 설명보다 쓸모 있을 때가 있다. 특히 같은 문제를 마주한 사람에게는.

이 연재는 책으로 묶일 예정이고, 여기서 다룬 내용 중 DSL 설계와 검증 부분은 논문으로 정리하려 한다. 그 과정에서 이 글들도 다시 손보게 될 것이다.

읽어주신 분들께 감사드린다. 그리고 이 글에서 틀린 부분을 발견하신다면 알려주시기를 바란다. 이 도구의 성격상, 오류를 지적받는 것이 가장 필요한 일이다.


「손안의 수치해석」 완결 · 전 30편