Zero and Null Are Different Facts
The decision
KOH 결정면 식각은 모델이 담고 있지 않은 영역이다. 대충 구현해서 숫자를 내보낼 수도 있었다. 실제로 그게 더 쉽다. 근사식 하나 넣고 그럴듯한 값을 뱉으면 화면은 채워진다. 대신 "여기는 모른다"고 경계를 선언했다.
0과 null은 다른 사실이다.
0 이라고 답하면 "안 깎였다"는 뜻이 된다. 모르는 걸 0 으로 내놓으면 학생은 그걸 결과로 읽는다. 같은 실수를 7월에 반디에서 한 번 했다. 아직 만들지도 않은 목표를 0 으로 읽고 학생이 "이탈했다"고 판정했다. 없는 것과 0 을 구분하지 않으면 계산은 도는데 뜻이 뒤집힌다.
A definition, not a calculation
같은 날 습식 마스크 선택비를 정의 표에 한 줄 추가했다. KOH 는 PR 을 마스크로 못 쓴다. 이건 계산해서 나오는 값이 아니다. 화학적으로 안 되는 것이고, 그래서 물리 엔진이 아니라 정의 표에 들어가야 한다. 시뮬레이터를 만들면서 이 구분이 계속 나온다 — 계산해야 하는 것, 정의해야 하는 것, 모른다고 말해야 하는 것.
Continuity as a new axis
같은 날 검증 축을 하나 더 늘렸다 — 연속성. 안 건드린 층은 스텝을 넘어가도 모양이 그대로여야 한다. 이 축을 만들자마자 두 개가 걸렸다. 캐비티 분기에서 마스크가 사발 모양을 잃었고, 안 깎이는 마스크가 처마 아래에서 자기 폭을 못 지켰다. 둘 다 그 스텝의 계산은 맞았다. 틀린 건 건드리지 않기로 한 것을 건드렸다는 사실이다. 스텝 하나만 보면 안 보이고, 이어서 봐야 보인다.
What I keep relearning
검증 축을 하나 늘릴 때마다 버그가 두세 개씩 나온다. 축이 없을 때 그 버그들이 없었던 게 아니다. 볼 방법이 없었을 뿐이다. 다음에 늘릴 축이 무엇일지는 아직 모르겠다. 다만 지금까지 패턴을 보면, 새 축은 항상 "한 스텝 안에서는 안 보이는 것"이었다.