요즘 키보드 앞에서 멍하니 있는 경우가 많아졌다.

실제로 멍하니 있는 것은 아니다. 머릿속에서는 무엇인가를 끊임없이 생각하고 있다.

간단한 모듈을 작성할 때도 종속성과 인터페이스, 호출 관계 등 수많은 조건과 변수들이 머릿속에서 구성이 된다. 그러면 좋은거 아니냐? 라고 생각할 수도 있겠지만, 그게 그렇지가 않다.

머릿속의 용량이 작은 관계로 아주 빠르게 그 내용을 잃어버린다. 말하자면 설계도를 그리고 있는데, 좀 그리도 보면 앞에 그렸던게 사라져있는 것이다. 그러면 앞부분을 다시 그리다 보면 뒤 부분이 사라져있고...

그래서 계속 뺑뺑이를 돌면서 생각을 하게 된다. 했던 생각 또하고 또하고. 그러다 보면 금방 지쳐버린다.

일단 코드에 싸지르고나서 리팩토링을 하는게 더 좋을 것 같다. TDD가 그런 점에서 조금 도움을 줄 수 있을 것이라고 기대를 했지만, 실천법이 미묘하게 잘 지켜지고 있지 않은 것인지 일단 테스트를 쓰고 통과하는데 집중하기 보다는 테스트 만들때부터 너무 생각이 많이 들어가는 것 같다.


내가 잠이 많은 이유도 평소에 생각이 너무 많아서인 것 같다. 눈 뜨고부터 잠들 때까지 항상 머릿속에서는 무슨 생각인가를 하고 있다. 이런 저런 생각이 계속 나서 잠도 쉽게 들지 않는 편이다. 심지어는 잘 때조차 항상 꿈을 꾼다. 꿈이 기억나지 않아야 깊이 잠든 것이라고 하는데 나는 깊이 잠이 들지 않는 모양이다.

아는 사람 중에는 눕자마자 코를 골면서 자는 사람도 있는데 정말 부럽다 ㅠㅠ

반응형
회사에서 메신저로 친구와 이야기 하다가 친구가 메신저로 웹페이지 링크 하나를 보내줬다.

클릭해보니까, 내용은 어떤 온라인 게임 상에서 남자가 여자인 척 하고 - 일명 넷카마 - 다른 여자와 아주 친해져서 결국 만남을 가지게 되었는데 알고 보니 그 상대도 남자더라는 이야기다. 여기까진 좀 웃기면서도 슬픈 이야기였다.

그런데 다른 링크를 보내줬는데, 아까 글을 썼던 사람이 다시 쓴 글이다. 상대방이 자기보고 사기죄로 고소한다는데 어떻게 해야 하냐고 한다. 참고로 글쓴이는 자신이 이십대 초반이라고 했다.


몇 가지 생각이 떠올랐다. 일단 사기죄는 성립될 수 없다는 생각이었다. 상대방은 '네가 여자인 척 해서 온라인 게임상의 아이템이나 사이버 머니를 받아냈으니 사기다', 또는 '남자인데 여자 행세를 했으니 사기다'라는 주장을 한 것으로 보인다. 

물론 게시물에는 이런 내용이 적혀있지는 않았지만 여케에게 남자가 경제적인 지원을 많이 하는 게 꽤 흔한 것으로 알고 있다. 하지만 이 사람은 악의적으로 속이려고 한 것도 아니고, 여케라는 이유로 남자가 금품을 제공하는 건 남자의 자의에 의한 것으로 볼 수 있으므로 성립이 안 될 것이다.

둘째로 남자가 여자 행세를 했다는 거 자체가 잘못되었다는건... 뭐 그냥 그럴수도 있지. 롤플레잉 게임인데 여케면 당연히 여자 노릇을 해야 맞지 않겠습니까(?!).


위는 아주 잠시의 순간에 생각한 것이고, 그 다음으로 생각한 것은 그렇게 벌벌 떨지 말고 법전을 보면 되지 않을까 하는 생각이었다. 그런데 이십대 초반의 남자가 이 정도 협박에 떨어서야... 아무튼 대법원 홈페이지에 들어가서 이곳 저것 뒤지기 시작했는데... 아무리 봐도 법전은 어디서 보는지 모르겠다. 뒤지다 보니 판례랑 법령이라는 것을 조회할 수 있는 곳은 찾았는데 법전이랑은 다른지 사기죄같은건 검색이 안된다.

에라이~

그런데 네이버에서 법전을 검색하다보니...

법전 [法典, code]


법전을 편찬하다

compile law books


법전을 제정하다

establish a code

출처: 네이버 사전


오오 이럴수가! 법전이 영어로 '코드'였다. 게다가 컴파일이라는 단어까지 보인다. 그렇다면 우리는 말하자면 국회의원인가? 아니면 법관 정도 되려나.


사실 법전이 실제 소스 코드와 비슷한 점이 많다고 평소에 생각하긴 했다. 그래서 애매한 법 때문에 말도 안되는 판결이 나오는 것을 보면서 버그와 비슷하다고 생각하기도 했고 - 정확히 말하면 요구사항이 애매한 것 때문에 코드가 의도와 다르게 나오는 것과 같다 -, 숙련된 프로그래머가 법을 작성하면 훨씬 더 잘 할수 있을 것 같다는 생각도 해봤었다.

한편으로는 국회의원이라고 해도 4천만 국민의 모든 상황에 맞게 법을 만드는 것도 참 힘들 것 같다는 생각도 들고, 코드가 늘어나니 버그도 생기고 복잡도도 늘어나는 것은 당연하다는 생각도 든다.


이것도 전공 강박증인가?

반응형

'일기' 카테고리의 다른 글

위키 찾다가 스프링노트를 찾았다  (0) 2011.02.15
코딩 슬럼프  (0) 2010.11.02
Test Driven Development, 첫 걸음부터 세미나를 하기까지  (0) 2010.10.10
레거시 코드와 씨름 중  (0) 2010.10.10
프로그래밍 심리학  (0) 2010.09.15
아래 코드를 보자.

typedef unsigned int UINT32;

std::string text = GetText();
for(UINT32 i = text.size() - 1; i >= 0; --i)
{
    // 텍스트를 뒤에서부터 읽어서 처리
    DoSomething(text[i]);
}
주석처럼 스트링을 뒤에서부터 읽어가면서 뭔가 처리를 하려고 한다. 그런데 프로그램이 뻗어버린다.

이유는 unsigned 때문이다. i가 0까지는 잘 내려오지만, 그 직후에 언더플로우가 발생해버린다. 그러면 약 42억의 수를 가지게 될 테고... 결과는? 쾅~


int를 사용하면 되겠지만, 저기 std::string::size() 라는 녀석은 리턴값이 size_t이다. 즉 unsigned int와 같다. unsigned와 int를 섞게 되면 컴파일러가 경고를 하게 된다. 경고는 당연히 피해야 하는 것이고 따라서 위와 같이 unsigned를 사용했던 것이다.



위 코드에서는 STL 자료구조가 사용된 관계로, 그냥 reverse_iterator를 사용하면 해결된다. 하지만 index를 알아야 하는 경우가 있다면... 어떻게 해야 할까?

내 생각엔 int i = static_cast<int>(text.size() - 1) 처럼 사용하는게 낫지 않나 싶다. 가독성이 좀 떨어지는 단점이 있지만 딱히 방법이 없다.

이럴 땐 Java처럼 unsigned를 안쓰는 정책을 사용하거나, C#처럼 웬만하면 기본 라이브러리는 int형을 최대한 사용하고 signed와 unsigned가 같이 쓰이는 경우 컴파일 에러(심지어 케스팅을 해도)를 발생시켜주는 언어가 약간 부럽다.


반응형

+ Recent posts