<소개 글>


두 달에 걸쳐서 Biginteger 클래스를 c++로 구현했습니다.
여기서는 그 두 달을 시간 순으로 배열해보며 어떤 순서로 만들었는지 회고해보겠습니다.

약 한달간을 자료조사에 투자했습니다.
큰 정수를 표현해보고 싶다는 생각이 들었지만, 어떻게 표현해야할지 몰랐습니다.
매우 큰수는 기존의 정수형으로 표현할 수 없었기 때문에, 지금까지 공부한 것을 바탕으로 새로운
클래스를 만들어야만 했습니다.
그래서 자료조사를 시작했고, 3가지 괜찮은 BigInteger 자료를 찾게 되었습니다.
우선 자바로 만들어진 BigInteger를 찾았습니다.
(자바에서는 기본적으로 BigInteger형을 지원한다는 것을 알고 참.. 부러웠습니다.)
저는 현재 C/C++를 공부하는 중이여서 자바의 J도 알지 못합니다.
자바도 같은 C 계열이기 때문에, 약간의 코드는 이해할 수 있었으나 한계가 있었습니다.
그래서 그 다음으로 찾은 자료가  Matt McCutchen이라는 외국인이 만든 것을 찾았습니다.

C++ Big Integer Library - Matt McCutchen's Web Site

C++로 구현되었기 때문에 소스 코드 읽기가 매우 편했습니다!
많은 기능이 구현되어있었고, 고맙게도 비록 영어지만 주석을 많이 달아주어서 이해하기 쉬웠습니다....
그래서 모든 소스 코드를 인쇄하여.. -0-.. 보기 시작했습니다.
정확히는 모르겠지만, 한 5000줄(?) 되는거 같았습니다.. 후..
처음 쭉.. 읽으니.. 무슨 말인지 모르겠습니다.
잘 읽다가 어느 순간 '어 뭐지?', 이 상태의 연속이였습니다.
책 말고, 처음으로 다른사람이 만든 소스를 읽어보는거라 적응이 안됬습니다.
'아 왜 대문자를 여따 쓰지..', '아 변수명이 왜 이따구야..' 이런 사소한거부터,
'아놔.. 먼 함수가 이리 왔다갔다허냐..' 하는 것까지 불만 한 가득이였습니다...
아마 제가 만든것을 보시는 분들도 같은 생각이시겠죠.. ㅠㅠ
최대한 정리정돈 잘 해서 만들었습니다.. ㅜㅠ
(무슨 말인지 모르겠다면 댓글로 막 물어보셔도 됩니다.. ^^)
Matt씨가 만든걸 몇번 반복해서 읽고 이해하는데만 약 3주정도의 시간을 보냈습니다.
사칙연산 부분이 가장 난해했습니다. 그 중에서도 나눗셈이 어려웠습니다.
음.. 도저히 이건 무슨 말인지 몰라서.. 세번째로 다른 자료를 찾았습니다.
이것은 오.. 지져스... 우리나람사람이 만든것이라 이해하기 100만배는 쉬웠습니다. !!

우리 나라 사람이 만든 C++ BigInteger class

사칙연산 부분, 출력과 입력 부분을 보기 위해 참고하였고
Matt씨가 사용한것과는 다른 알고리즘을 사용하였고
알고리즘이 이해하기 쉬워서 많은 도움이 됬습니다.

위 세가지를 보면서, 어느정도 감이 왔습니다.
우선 Matt씨가 만든것을 약간 개조하는 식으로 할려고 했습니다.
그런데, 사람심리가 무서운 것이, 자꾸 Matt씨가 만들었던게 신경이 쓰였습니다.
조금만 막혀도 Matt씨의 코드를 보려고 하고, 제 스스로는 생각하려고 하지 않았습니다.
1주일정도를 그렇게 날렸습니다.
그리고는 처음부터 제가 만들기로 했습니다.
그렇게 해서 약 2~3주 정도의 시간을 들여서 제 스스로가 만족할만한 클래스를 완성하게 되었습니다.
그리고 약 1주일가량 동안 테스트 코드를 작성하였습니다.
작성할때는 그렇게 완벽해 보이던 코드가 여러군데에서 헛점을 들어냈습니다..
수정한 곳도 많았고 첨가한 부분도 많았습니다.
이제 마지막 자가 테스트를 하려고 합니다.
이 글을 쓰면서 코드 한줄 한줄, 단어 한글자 한글자씩 점검해보려고 합니다.
그럼 시작하겠습니다 !! 
Posted by 투명테잎