논리적인 프로그래밍
어제 직장 동료가 스크립트에서 자꾸 에러가 나는데 무슨 일인지 모르겠다고 물어봤다. 가보니 내가 얼마전에 당한 것과 유사한 경우였다.
Tcl 스크립트에서 exec 명령어를 사용했을 때, 불린 프로세스에서 오류가 발생하면 에러 메시지를 출력하고 스크립트 실행을 중단한다. 이건 Tcl 스크립트의 특징이니 별 문제 아니다. 진짜 문제는 불린 프로세스에서 오류가 발생한 원인.
프로그램이 정상적인 출력 메시지를 stderr로 내보낸 것이다. 도대체 누가? 어떠한 이유로? 정상적인 출력 메시지를 stderr로 내보내는 걸까? 보통 stdout과 stderr은 같은 터미널로 출력되므로 굳이 구분하려들지 않기도 하고, 섞어 쓰더라도 큰 문제를 발생시키지 않는다. 그래서 오류 메시지를 stdout으로 출력하는 경우는 사실 종종 볼 수 있다. (그리고 종종 하기도 한다. ㅡ_ㅡ; ) stderr를 쓰는 게 좀 더 번거롭기 때문에, 정상적인 출력을 stderr로 내보내는 경우는 오히려 드문 편이다. 어찌됐든 원 프로그램 제작자의 실수로 문제가 발생했고, 그가 실수를 한 이유는 논리적으로 프로그래밍하지 않았기 때문이다.
논리적인 프로그래밍은 중요하다. 잘 작동하는 프로그램을 만드는 걸로는 충분치 않다. 논리적으로 옳지 않은 프로그램은 어느 순간엔가 자기 내부의 한계를 드러내게 된다. 스스로의 무게를 이기지 못하고 붕괴한다. 논리적인 프로그래밍은 당신이 혼란의 늪에 빠져 허우적대며 점점 늪 속 더 깊은 곳으로 빠져드는 것을 막아줄 것이다.

0 개의 댓글:
댓글 쓰기