2009년 11월 09일
과제용 프로그래밍을 처음으로 해보면서...

처음으로 프로그래밍이란 녀석을 제대로 배워보고, 프로젝트란 것을 (간략하지만) 경험했습니다.
뭐... 사실 C는 배운적도 없는데 바로 C++을 배우고 더욱이 교수님께선
'님들 1학기에 C마스터한 걸 전제로 수업진행 하겠음~'이란 (저에겐) 폭탄선언을 해둔 수업이라 걱정은 됐지만 일단 제출가능한
'무언가'는 만들어냈군요-_-b
물론 지금도 100%완성이라고 하기는 뭐한 상태이지만, 일단 PL(역할의 선배께서) 프로그램 자체는 이걸로 완성이라고 선언.
(그렇습니다, 제가 제출한 코드는 OK 사인을 받았습니다!)
그리고 전 많은 것을 느꼈고, 또 느끼고 있습니다.
1. 진짜로 버그란 놈은 발견이 중요하다.
모 책에서 버그 찾는데 2주 걸렸는데 찾고나니 3시간만에 잡더군요! 란 말을 보고 그냥 그렇구나- 라고 생각했습니다.
그런데 막상 제가 프로그래밍을 해보니... 진짜더군요! 뼈가 저릴 정도야...
제 경우에는 api에서 리스트 컨트롤에 데이터를 출력하는데 분명 컴파일에서 문제가 없는데 출력이 안되는 문제가 있었습니다.
(그렇습니다, c++이라곤 이제 열혈강의로 클래스 부분 배우고 있는 놈이 api를 했습니다! 나님 만세! OTL;;;)
왜이러는 거야! 라고 머리를 싸매며 어지간한 베게보다 흉악한 api 서적을 뒤적이며 2일을 보냈지요.
그리고 발견했습니다.
...제기랄.
변수 이름이 잘못됐더군요.
아, 컴파일 오류가 안 난 이유는 다른 사람이 작성한 코드에서 선언된 (나에겐) 쓸모없는 변수가 존재하고 있던 탓에...(어흑)
네, 수정하는데 5분도 안걸렸습니다. (먼산)
2. 사람을 이해시키는 것은 너무나도 대단한 일이다.
의사소통은 정말 힘들더군요. 기본적으로 제 본래 전공은 문과입니다. (복수전공입니다)
고등학교 내내 이과였고, 대학도 잠시 이과를 다녔던 것도 같지만 그건 아무래도 상관없어!
그러다보니 (고정관념이긴 하지만) 빙빙돌려말한다던가, 비유 등이 마구 사용되거나, 뭔가 쓸데없이 어려워보이는 말에 익숙한 편입니다. 그러다가 본격 공과100%의 조에서 프로젝트를 하다보니...
...의, 의사소통이 힘들어!
뭐랄까, 사고방식이 다른 부분이 있습니다. 뭐라 콕 찝어서 말하긴 힘들지만, 분명 뭔가 인식이 다르다는 느낌이 있습니다.
어렵더군요. 처음에 기능기획 등을 하면서 인식차이 때문에 (혼자서) 당혹감을 느낀 적도 있고...
하여간 서로의 생각이 제대로 전달되지 않아 일이 삐걱이거나 그럴 뻔한 일이 종종 있었습니다.
(개인적으로 다른 조원들은 그런 일이 문제인지조차 인식하지도 못했을지 모른다는 느낌도 있습니다;;;;;)
깔쌈하게 자신의 생각을 타인에게 이해시키고 일처리를 해내는 능력은 존경받아 마땅하다는 것을 느꼈습니다.
3. 과연 내가 이해한 방식은 틀렸나?
이 부분은 솔직히 굉~장히 당혹감을 느꼈습니다.
전 처음으로 제대로 프로그래밍을 배우는 입장으로서 클래스 등의 객체지향적인 개념은 미리 기능을 분할시키고,
그것을 나중에 재사용하기 편하게하거나 혹은 같은 기능을 여러곳에서 사용할 때 중복되는 기능이 적도록 하는 등의
목적이 있다고 이해하고 있었습니다.
그러니까 미리 클래스를 다 짜두고, 혹은 유연성을 가질 수 있게 구조화해놓고 작업을 한다고 생각했는데...(횡설수설)
...제가 받은 요구는 흠좀무였습니다.
요구조건을 받아들인 결과부터 말하자면, 분명히 C++코드를 짜는 프로젝트인데 헤더1개와 소스1개, 다이얼로그 리소스 3개로 제 코드는 완성되었습니다! 올레!
...이, 이거 이래도 되는거야!?
중복코드는 발에 치일 정도에(리스트 컨트롤 출력소스는 끝없이 반복되는 듯한 느낌마저;), 클래스 따위는 존재조차 안하고!
아무리 비교적 단순한 프로그램 (그저 DB에서 데이터를 받아와 리스트컨트롤에 뿌리고 그것을 통해 데이터의 입력, 수정, 삭제 등을 하는 것)이지만... 이, 이래도 되는 걸까? 정말 괜찮은 건가?
그런데 듣기로는 실제로 제출하는 코드들을 보면 이정도면 아주 괜찮은 코드라고 하더군요...
모, 모르겠어. 내가 틀린건가....
...후, 과제 발표가 끝나고 성적이 발표된 이후에는 코드라도 공개해서 도대체 이래도 되는건지 문의해보고 싶더군요.
결론
일단 이건 대충 마무리됐으니 이제 장기레포트를 처리하자꾸나, 오예!
일단 이건 대충 마무리됐으니 이제 장기레포트를 처리하자꾸나, 오예!

# by | 2009/11/09 09:24 | 잡담평원 | 트랙백 | 덧글(23)




☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
1. 몽몽이 님의 말씀은 정답입니다. (...) 하는 일을 정확하게 써놓는게 좋죠. 간단한 임시변수라도
imsi_for_function_blablabla 이런식으로.
이렇게 코딩을 하면, 코딩하는게 마치 책 읽는것과 비슷한 느낌이 들게 되어 있습니다. 오히려 편해요.
함수이름도 길게 하세요~
2. 객체지향은 음..;; 트랙백을 드릴까나 =_=;;
걍 한줄로 요약해서. 실제 사물을 컴퓨터 안에 표현하기 위한 개념으로 보시면 편합니다. 인캡슐레이션, 모듈화 이딴거 그닥 이해에 도움 안되요.;
가령 저의 노트북을 객체로 표현하면 (사실 제가 객체지향으로 코딩을 안해서 문법은 좀 틀릴겁니다....)
class notebook { // 노트북
var monitor_value // 모니터 상태
var cpu_state // cpu상태
var key_value //
bla bla bla
}
function notebook::keyboard(keyclick) {// 키보드의 메서드
notebook::key_value = keyclick ; // 키보드 클릭할 때 이 값을 노트북에 넘겨주는걸 표현
bla bla bla
}
음. 이해에 도움이 되었는지 확신이 안 가는 답변 (...)
지금 수업중 -_- 인데, 나중에 시간나면(...) 트랙백 드리겠습니다.
걍 assert 도배를 하면 나름대로 버그가 잘 잡히는 편입니다
버그는 진짜 상상도 못한곳에서 터진다니까요?!
만약 visual studio 사용하신다면 디버깅에 관한 도움이 될 만한 링크를 걸어드립니다.^^
http://gall.dcinside.com/list.php?id=programming&no=121240