과제용 프로그래밍을 처음으로 해보면서...



처음으로 프로그래밍이란 녀석을 제대로 배워보고, 프로젝트란 것을 (간략하지만) 경험했습니다.

뭐... 사실 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)

트랙백 주소 : http://leafruit.egloos.com/tb/2743040
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 아키라 at 2009/11/09 10:23
오 API 시작하셨군요. ' ㅂ' API가 어려운게 아닌데 명령어가 쓸데없이 길어서 짜증나더군요 핫하-[야]
Commented by 풀잎열매 at 2009/11/11 23:47
아키라 님// 이래저래 머리아프더군요^^;
Commented by 작은소망의아스카 at 2009/11/09 10:24
글자 한자 잘못쳐서 몇일 해메는 경우도 있죠.. 프로그래밍이란건..... OTL
Commented by 풀잎열매 at 2009/11/11 23:48
작은소망의아스카 님// 그렇지요... 한글자...OTL;
Commented by 몽몽이 at 2009/11/09 10:48
변수 이름은 충분히 길게 쓰는 것이 오히려 문제가 줄어듭니다요. 아무쪼록 건승하시길.
Commented by 풀잎열매 at 2009/11/11 23:48
몽몽이 님// 네, 정말 사소한 변수도 충분한 이름을 주는게 좋겠더군요. 감사합니다 :)
Commented by draco21 at 2009/11/09 11:31
이쪽이 적성에 맞으신가봐요. ^^: 남은 과제.... 도 잘 해결하시길. ^^:
Commented by 풀잎열매 at 2009/11/11 23:48
draco21 님// 적성보다도... 목에 칼이 들어오면 다 합니다...(어?)
Commented by 긁적 at 2009/11/09 11:32
0. 코딩의 세계에 들어오시다니. 애도를.

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
}

음. 이해에 도움이 되었는지 확신이 안 가는 답변 (...)
지금 수업중 -_- 인데, 나중에 시간나면(...) 트랙백 드리겠습니다.
Commented by 풀잎열매 at 2009/11/11 23:49
긁적 님// 감사합니다. 알고있던 것과는 아무래도 꽤 다른 것 같군요....헛헛;;
Commented by Hide_D at 2009/11/09 12:15
버그 잡는데는
걍 assert 도배를 하면 나름대로 버그가 잘 잡히는 편입니다

버그는 진짜 상상도 못한곳에서 터진다니까요?!
Commented by 지나가다 at 2009/11/09 14:43
더 놀라운건 assert 때문에 버그가 터지는 경우도...
Commented by 풀잎열매 at 2009/11/11 23:49
Hide_D 님// 으음... 아직 배운적이 없는 것이군요. assert라;;
Commented by SiroTan at 2009/11/09 12:54
디버깅으로 버그 찾는 법을 우선 배우시길.. 그럼~~ 휘리릭..
Commented by 풀잎열매 at 2009/11/11 23:49
SiroTan 님// 넵... 배워야겠더군요...;;
Commented by 이주형 at 2009/11/09 15:57
툴을 어떤 것을 사용하시는지는 모르겠습니다만,
만약 visual studio 사용하신다면 디버깅에 관한 도움이 될 만한 링크를 걸어드립니다.^^
http://gall.dcinside.com/list.php?id=programming&no=121240
Commented by 풀잎열매 at 2009/11/11 23:50
이주형 님// VS입니다. 도움되는 링크 감사드립니다^^
Commented by 시아초련 at 2009/11/09 17:11
역시 이쪽은 에러와의 싸움 ; ㅇ;) ㄷㄷㄷㄷ
Commented by 풀잎열매 at 2009/11/11 23:50
시아초련 님// 무한의 버그와 싸우는 전사지요....(털썩)
Commented by 악몽의현 at 2009/11/09 19:45
뭐, 저희도 현재 정비 중인데...... 고장난 곳은 쉽게 찾는데... 어디를 손대야 할지 전혀 모르겠습니다. 그래서 전부 뜯어버리죠.[먼산]
Commented by 풀잎열매 at 2009/11/11 23:50
악몽의현 님// 결국 해체입니까! 쿨럭;;
Commented by 앤써니 at 2009/11/12 00:00
그래픽은 폴리곤과의 싸움...ㄱ-;;
Commented by 풀잎열매 at 2009/11/12 23:40
앤써니 님// 3D는 결국 폴리곤인가 보군요;;;;

:         :

:

비공개 덧글

<< 이전 페이지     다음 페이지 >>