2009/04/23 17:36
RL.C omputer
Bool 논리로 말한다.
이게 뭐냐고?
참 혹은 거짓.
이 둘 중 하나로 말하면 된다.
프로그래머가 하는 일이라는게 뭐라고 생각하는가?
예술? 아름다운 지적활동? 창조행위?
후후훗.
실은 프로그래머는 그냥 '인간 번역기' 다..
사람이 알아들을 수 있는 말을 컴퓨터가 알아들을 수 있는 말로 바꾸는 것.
이게 프로그래머가 하는 일이다.
근데 뭐 다들 알고 있겠지만
컴퓨터가 알아들을 수 있는건 딱 두개밖에 없다.
0, 아니면 1.
이걸 부울 논리로 치환하면 참. 혹은 거짓.
아주 정확하고 반론의 여지가 없는 단 두개의 공리.
프로그래머는 일을 할 때 항상 무의식중에 저 두개의 공리로 생각한다.
그래서 프로그래머는 '명확한 기준' 이 잡혀 있지 않으면
곤란해 하는 거다.
자신이 기계가 알아들을 수 있는 말로 바꿀 수 있는 논리가 안서는 거니까.
프로그래밍의 버그라는게 대부분 어디서 튀어나오나면.
'프로그래머가 미처 논리적으로 생각하지 못해 빼먹어서
이성논리를 부울 논리로 바꾸지 못해서 생겨난 일' 이다.
뭐 쉽게 예를 들어보자면 이런거지.
이 경우에 Food가 반환하는 배열이 빈 배열이라면 food는 a[0]의 값을 참조하지 못해서
멋지게 런타임 에러다.
미처 Foods[0] 이 없을 경우 (false)를 생각하지 못했기 때문에 난 에러라는거다.
이런식으로 빈틈없이 준비를 하고 각종 닥칠만한 상황을 다 예견해서
프로그래머를 설득시키면 , 훗일은 간단하다.
프로그래머는 만족스러운 번역 작업에 들어가는거고.
일을 부탁한 당신은 행복해하고.~
이런일이 허구헌날 비일비재하다 보니, 별별 방법론이 다 나온다.
TDD , DDD, Design by Contract 니 하는 것들.
그런데 별 게 다 나와도 저것들이 지향하는 바는 매한가지다.
프로그래머가 논리적인 생각을 빼먹거나 할 때 도와주는 것들.
뭐, 컴파일러 최적화니. 옵티마이징이니. 프로파일링이니 하는 건 그 후의 문제고.
결론.
프로그래머를 설득하는 방법은 의외로 간단하다.
반론의 여지 없이 앞뒤가 맞는 말을 준비해 가라. 그럼 끝.
이게 뭐냐고?
참 혹은 거짓.
이 둘 중 하나로 말하면 된다.
프로그래머가 하는 일이라는게 뭐라고 생각하는가?
예술? 아름다운 지적활동? 창조행위?
후후훗.
실은 프로그래머는 그냥 '인간 번역기' 다..
사람이 알아들을 수 있는 말을 컴퓨터가 알아들을 수 있는 말로 바꾸는 것.
이게 프로그래머가 하는 일이다.
근데 뭐 다들 알고 있겠지만
컴퓨터가 알아들을 수 있는건 딱 두개밖에 없다.
0, 아니면 1.
이걸 부울 논리로 치환하면 참. 혹은 거짓.
아주 정확하고 반론의 여지가 없는 단 두개의 공리.
프로그래머는 일을 할 때 항상 무의식중에 저 두개의 공리로 생각한다.
그래서 프로그래머는 '명확한 기준' 이 잡혀 있지 않으면
곤란해 하는 거다.
자신이 기계가 알아들을 수 있는 말로 바꿀 수 있는 논리가 안서는 거니까.
프로그래밍의 버그라는게 대부분 어디서 튀어나오나면.
'프로그래머가 미처 논리적으로 생각하지 못해 빼먹어서
이성논리를 부울 논리로 바꾸지 못해서 생겨난 일' 이다.
뭐 쉽게 예를 들어보자면 이런거지.
string[] Foods = Restorant.GetAllFood();
string food = Foods[0];
string food = Foods[0];
이 경우에 Food가 반환하는 배열이 빈 배열이라면 food는 a[0]의 값을 참조하지 못해서
멋지게 런타임 에러다.
미처 Foods[0] 이 없을 경우 (false)를 생각하지 못했기 때문에 난 에러라는거다.
이런식으로 빈틈없이 준비를 하고 각종 닥칠만한 상황을 다 예견해서
프로그래머를 설득시키면 , 훗일은 간단하다.
프로그래머는 만족스러운 번역 작업에 들어가는거고.
일을 부탁한 당신은 행복해하고.~
이런일이 허구헌날 비일비재하다 보니, 별별 방법론이 다 나온다.
TDD , DDD, Design by Contract 니 하는 것들.
그런데 별 게 다 나와도 저것들이 지향하는 바는 매한가지다.
프로그래머가 논리적인 생각을 빼먹거나 할 때 도와주는 것들.
뭐, 컴파일러 최적화니. 옵티마이징이니. 프로파일링이니 하는 건 그 후의 문제고.
결론.
프로그래머를 설득하는 방법은 의외로 간단하다.
반론의 여지 없이 앞뒤가 맞는 말을 준비해 가라. 그럼 끝.
2009.04.23 By RL.C

