블로그 이미지
레인레테
rainlethe@rainlethe.com

calendar

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
2009/04/23 17:36 RL.C omputer
Bool 논리로 말한다.

이게 뭐냐고?

참 혹은 거짓.

이 둘 중 하나로 말하면 된다.

프로그래머가 하는 일이라는게 뭐라고 생각하는가?

예술? 아름다운 지적활동? 창조행위?

후후훗.

실은 프로그래머는 그냥 '인간 번역기' 다..

사람이 알아들을 수 있는 말을 컴퓨터가 알아들을 수 있는 말로 바꾸는 것.

이게 프로그래머가 하는 일이다.

근데 뭐 다들 알고 있겠지만

컴퓨터가 알아들을 수 있는건 딱 두개밖에 없다.

0, 아니면 1.

이걸 부울 논리로 치환하면 참. 혹은 거짓.

아주 정확하고 반론의 여지가 없는 단 두개의 공리.

프로그래머는 일을 할 때 항상 무의식중에 저 두개의 공리로 생각한다.

그래서 프로그래머는 '명확한 기준' 이 잡혀 있지 않으면

곤란해 하는 거다.

자신이 기계가 알아들을 수 있는 말로  바꿀 수 있는 논리가 안서는 거니까.


프로그래밍의 버그라는게 대부분 어디서 튀어나오나면.

'프로그래머가 미처 논리적으로 생각하지 못해 빼먹어서

이성논리를 부울 논리로 바꾸지 못해서 생겨난 일' 이다.


뭐 쉽게 예를 들어보자면 이런거지.

string[] Foods = Restorant.GetAllFood();

string food = Foods[0];


이 경우에 Food가 반환하는 배열이 빈 배열이라면 food는 a[0]의 값을 참조하지 못해서

멋지게 런타임 에러다.

미처 Foods[0] 이 없을 경우 (false)를 생각하지 못했기 때문에 난 에러라는거다.



이런식으로 빈틈없이 준비를 하고 각종 닥칠만한 상황을 다 예견해서

프로그래머를 설득시키면 , 훗일은 간단하다.

프로그래머는 만족스러운 번역 작업에 들어가는거고.

일을 부탁한 당신은 행복해하고.~


이런일이 허구헌날 비일비재하다 보니, 별별 방법론이 다 나온다.

TDD  , DDD, Design by Contract  니 하는 것들.

그런데 별 게 다 나와도 저것들이 지향하는 바는 매한가지다.

프로그래머가 논리적인 생각을 빼먹거나 할 때 도와주는 것들.


뭐, 컴파일러 최적화니. 옵티마이징이니. 프로파일링이니 하는 건 그 후의 문제고.

결론.
프로그래머를 설득하는 방법은 의외로 간단하다.

반론의 여지 없이 앞뒤가 맞는 말을 준비해 가라. 그럼 끝.



2009.04.23 By RL.C
저작자 표시 비영리 동일 조건 변경 허락
posted by 레인레테