메인
투자 노트

코딩에 미신이 깃들 때

@8/12/2024
코드의 동작을 논리적으로 이해할 수 없을 때가 있다.
동일한 조건에서 실행하는데 어떨땐 되고 어떨땐 안되고..
패턴을 찾은것 같다 싶으면 바로 상반되는 결과를 보여준다.
지푸라기라도 붙잡는 심정에 아무런 상관 없는 동작들도 원인으로 의심하면서 파고들기 시작한다.
기여코 없던 신앙도 생기면서 온갖 주술적인 생각이 들지만 프로그램은 여전히 지 멋대로 동작한다.
실제로 이런 경험을 여러번 해봤다. 이것은 코드가 나타내지 못하는 머신 레벨에서 확률적으로 발생하는 오류가 원인이다. 예를 들면 미세한 부동소수점오차, 병렬 스레드간 I/O 시점 중복이 있을 수 있다.
만약 논리적 사고로 이해할 수 없는 문제가 있다면 눈에 보이지 않는 곳에서 확률적으로 오류가 발생하고 있는 것이다. 여기에서 “확률적”이라는게 가장 중요하다. 만약 필연적으로 발생하는 오류라면 눈에 보이지 않더라도 간접적으로 해결할 수 있다. 하지만 확률적으로 발생하는 오류는 그 원인을 원천적으로 차단해야 한다.
앞으로 이런 상황이 닥친다면 이 글을 떠올리자.