본문 바로가기
연구관련/연구생활

에러 error

by adnoctum 2011. 9. 14.


   왜 과학하는 사람들이 작성한 프로그램은 툭하면 에러가 나는 것일까? 런타임 오류에서부터, 별 문제 없어 보이는 결과지만 따지고 들어가 보면 논리적 에러가 살포시 들어 앉아 있는 것 등등을 포함해서 말이다. 심지어, 매우 새로운 발견이라 생각해서 들떠 있었지만, 흥분을 가라앉히고 찬찬히 뒤돌아 보면 중간에 데이터를 잘못 처리했다는 사실을 발견할 때도 있다. ㅋㅋㅋ, 나도 얼마 전 이와 비슷한 경험을 했었드랬지. 그래프가 멋지게 나와서 좋아했는데, 좀 더 많은 데이터를 처리해 보니 그 모양새가 사라지고, 남은 것은 그냥 전형적인 그래프. 왜 그런가 해서 따지고 따져서 들어가 보니, proof-of-concept 을 확인해 보기 위해 엑셀로 처리했던 부분이 잘못 되었던 것. C++ 로 다시 구현해서 얻은 데이터가 맞는 것이었고, 그것은 뭐 그냥저냥, ㅋ. 나비 모양의 멋진 그래프 였는데... 그 당시즈음 내 나비가 날아가 버렸다고 투덜거리면서 다녔었지, ㅋㅋㅋ. 엑셀로 데이터를 처리한 방법으로부터 식을 뽑아 보니 이건 뭐 아무런 의미가 없는 식이다. 혹시나 해서 그 식을 어떻게든 정당화시켜보려 했지만 밑도끝도 없이, 족보도 근본도 없이 나타난 식을 정당화시키기에는 무리가 따랐다. 에잇, ㅋ. 머릿 속에 있는 수식과 손으로 엑셀에 입력했던 수식이 달랐던 것 (단순한 입력은 아니었고 몇 단계 걸치는 과정이 포함되어 있긴 했지만). 이 쯤에서, 학과 교수님의 명언,

"니가 뭔가 굉장히 새로운 걸 발견했다, 하면, 제일 먼저 생각해 봐야 할 것은 잘못 했다는 거야."

ㅋㅋㅋ, 아 놔.

지금도 약간 시껍한 것이, 0과 1 사이에서 나와야 하는 값이 갑자기 엄청나게 크게 나온다. 그런 값이 중간중간 끼여 있다. 보는 순간, 논리적 오류일 것이라는 느낌이 팍. 헐, 이 코드로 처리해 놓은 데이터를 전부 다시 처리해야 하는 건가, 하는 불안감을 갖고 원인을 찾아 들어갔다. 결론은, ㅋ, 입력으로 준 데이터 파일이 잘못된 것이었어. 다행이다, 처리하는 코드는 정상이었다. 잘못된 파일들을 find 와 rm 을 묶어서 한 줄로 간단히 지워버리고 다시 실행시키고 있는데, 잘 나온다.

   나는 내가 워낙에 혼자 코딩을 오랜동안 해와서 이런 문제는 나만의 문제일 것이라 생각해 왔었는데..., ㅎㅎㅎ, 작년 어느 날, 다음과 같은 글이 네이처에 올라 왔다.




Computational science: ...Error
Nature 467, 775-777 (2010)



ㅎㅎㅎ, 저 글에서도 역시나, 새로운 사실이 사실은 중간에 데이터를 잘못 처리했기 때문에 생긴 일이었던 얘기가 나오는데, 하여튼.

이러한 문제를 조금이나마 줄이기 위한 방법 중 저 글에서 제안한 것은, 일반 소프트웨어 개발자들이 따르는 방식을 과학하는 사람들도 코딩을 할 때는 따라야 한다, 라는 것. 버전 관리 같은 것도 그렇고, TDD나 그런 기법들이 유용할 것 같다. 그런데 내 경험상 코드 상의 문제는 같은 데이터를 서로 다르게 처리한 후 비교하거나, 나온 결과가 맞는지를 확인할 수 있는 기준(흔히 gold standard 라 하는) 을 갖고 확인하는 것이나, 이런 방법이 좀 더 좋아 보인다. 코드 상의 문제는 논리적 오류인 경우 그것이 오류임을 알 수 있는 방법은 결국 결과가 얼마나 합당하냐로 판단할 수밖에 없거든.









'연구관련 > 연구생활' 카테고리의 다른 글

1시필침은 작심삼일인가?  (0) 2011.09.27
그러니까, 4.5GB  (0) 2011.09.16
에잇, 그냥 할 껄,  (0) 2011.09.14
역시나 1픽셀인가  (4) 2011.08.09
컴퓨터 접붙이기?  (0) 2011.08.02