작년 겨울 복학을 앞두고 있었을 때 학부 홈페이지에 공지사항이 하나 떴습니다.
겨울방학 때 우리 학과 교수님들이 C언어 특강을 하니 많은 참석을 바란다고 합니다.
제가 1학년 때 들었던 C프로그래밍이
지금은 프로그래밍 기초와 실습이라는 이름으로 바뀌었지만,
여하튼 1학년 교양과목으로 C를 배울 수 있습니다.
그리고 정보통신공학부 학생이라면 그것도 컴퓨터공학과를 지원했다면
해당 수업을 듣지 않았다는 것이 이상하다고 생각하였습니다.
따라서 왜 방학 때 특강을 한다는지 알 수 없었습니다.
하지만 C를 배운지 3년이 다 되어가고,
수업을 들은지 오래 되었기에 그 감각을 살리고자 특강을 신청하였습니다.
아쉽게도 그 수업에서 얻은 것은 거의 없었습니다.
이미 배운 것을 다시 배웠기에 기억을 되살리는 정도였습니다.
오히려 그 때 배운 것을 되살리기 위해 구글 검색을 하다가
재미있는 것을 발견한 것이 수업에서 얻은 것이라 할 수 있습니다.
'C에서 가변 배열(Variable-Length Array)'
그 때도 생각했지만, 너무나 시간 낭비라는 느낌이었습니다.
교수님 세 분이 날마다 돌아가면서 얘기를 하시니 서로 중복되는 부분도 있고,
오전에 이론, 오후에 실습이 진행되었지만,
이론은 교수님이 실습은 조교님이 하시니 역시 맞지 않아
어느 쪽을 맞춰 얘기를 들어야 할지 알 수 없었습니다.
즉, 체계적이지 못했다는 것이 단점이었습니다.
하지만 처음 시도였다고 하니 어떻게 보면 당연한 일이겠죠.^^
그러고보면 저는 C 언어를 이렇게 배웠습니다.
처음 한 달동안 컴퓨터에 대한 지식을 쌓았습니다.
특히 CPU와 Memory에 관해 배웠습니다.
따라서 그것을 배울 때는 포인터이니 배열이니 하는 이상한 개념이 들어있는 것이 아닌
컴퓨터에 대한 전반적인 얘기라 생각하고 이를 받아들였습니다.
이후 남은 기간동안 C 공부를 하였습니다.
그리고 포인터를 단 1시간 30분만에 끝냈습니다.;;
그 뒤로 배열과 문자열을 연계해서 포인터를 얘기하였지만,
이것을 이해하는데 큰 어려움이 없었습니다.
왜냐하면 이미 앞에서 CPU와 메모리에 관한 기본 지식을 배웠기에
Memory Map을 그리는데 어려움이 없었습니다.
따라서 pointer와 array, string 등을 그림 그려가며 이해하니 그리 힘들지 않았습니다.
제가 이렇게 배워서 그런지 모르겠지만,
제 생각에는 이런 순서가 매우 좋다고 생각합니다.
즉, C 공부를 하는데 필요한 컴퓨터 배경 지식을 배우고
어렵다고 느껴지는 부분에서 이를 되살려서
왜 그렇게 작동하는지 이해한다면 어렵지 않게 접근하리라 생각합니다.
이번 룸메가 C 언어를 물어보기에 몇 가지 가르쳐주었는데,
그 때 하나를 가르치기 어려웠습니다.
int main(int argc, char *argv[])
main 함수에 인자로 argc와 argv가 나타나서 이를 잘 모르더군요.
그래서 이렇게 얘기했습니다.
"도스에서 파일 압축 해본적 있어?"
그러자 도스는 전혀 써본 적이 없다고 얘기하더군요.
세대 차이인지 잘 모르겠습니다.OTL....
여하튼 제가 해당 내용을 배울 때 떠올렸던 지식이 그에게 없음을 느꼈을 때,
과연 이를 어떻게 설명해야 하는지 상당히 고민하였습니다.
그래서 결국 'argc는 인수의 개수를 argv는 각 인자들의 문자열의 주소를 가리킨다.'라는
이해가 되지 않는 문장을 시험을 위해서 외우도록 하였습니다.
이처럼 배경 지식이라는 것은 상당히 중요하다고 생각합니다.
C에서 알아야 할 배경 지식이라는 것이 무엇인지는 잘 모르겠지만,
제가 배웠던 내용이라면 충분하리라 생각합니다.^^
하지만 아쉽게도 해당 파일은 그 때 가르쳤던 교수님이 저작권을 가지고 계시기에
여기에 공개하는 것이 쉽지 않습니다.
전에 메일 주소를 알아내어 메일을 보냈지만 답장이 없는 것으로 보아
그 메일을 쓰지 않는 듯싶습니다.
(제 기억으로는 학기 말에 박사 학위를 취득한다고 하신 듯....)
이번 방학 때 C 언어 특강.
학교가 학원이 되는 느낌이 들어 조금 오묘한 기분이기는 하지만,
학교가 학생을 위해 노력한다는 시점으로 본다면
거기에 맞춰 학생이 따라주면 좋을 듯싶습니다.^^
(전 회피 스킬을 쓸 생각이지만...;;;)
- 하이패스와 신비함 (2)2008/06/30
- 속여서 억지로 싫은 일을 시키거나 유괴하는 상하... (10)2008/06/24
- 다양한 언어로 적힌 안내문을 읽을 때 글과 그림... (6)2008/06/22
- 하계방학 C언어 특강?! (6)2008/06/18
- 미야자키 츠토무는 애니메이션에서 그 행동을 발... (13)2008/06/17
- 심리학 입문 기말고사를 준비하면서... (6)2008/06/13
- 한국노총, 너마저!...? (6)2008/06/05
글에 잘못된 점, 다른 점, 부족한 점이 있다면 지적해주세요.
댓글, 트랙백, 메일 모두 고맙습니다.







댓글을 달아 주세요
전 아직도 도스가 윈도우보다 더 편했다는 생각이 듭니다. 마우스가 불편해요~ 어릴적 컴퓨터 학원에서 베이직과 터보 C를 배우던 생각이 나네요. 그런데 C 언어는 왜 A도 아닌 B도 아닌 C 이죠?
전 Mdir의 위력이 기억나요.^^;;;;
저도 마우스보다는 키보드를 좋아하는터라 게임도 마우스보다는 키보드 위주로 되는 것을 좋아합니다.
(그래서 던파를 좋아하죠.;;;)
컴퓨터 학원이라....
전 중학교 때 워드프로세서 자격증을 따기 위해 다녔던터라....
거기서 정보처리기능사를 따기 위해 베이직을 가르쳐달라고 했더니
책으로 공부하라고 하더군요.;;;
그 때 실기 준비하던 사람이 저뿐인지라....
어렸을 때 C를 공부하시다니.. 대단하십니다.ㄷㄷ
왜 C인지는 L_Psyfer님이 설명해주셨네요.^^
그럼 왜 B인가는 Bell 연구소에서 만들어서라는 말이 있습니다.;;;;
그나마, 제가 또래 보다 조금 앞서나간다고 생각하는 점이, 이런 저런 삽질의 경험과 하드웨어 자체의 흥미 덕분에 컴퓨터의 구조, 작동원리를 조금 더 알고 있다는 점이라고 생각합니다. 그래서, 프로그래밍도 조금 더 잘해나갈수 있는것 같구요. 결국 모든 분야에서 기초체력이 중요한듯합니다.
환자 님 // 제가 알기론 ALGOL 언어 기반으로 제작되었고, B언어 이후에 나와서 C언어인것으로 알고 있습니다. 결국 A, B, C...
네.. 기초라는 것이 그래서 중요하다고 생각합니다.
새로운 것을 접하더라도 자신이 알고 있는 것과 접목시켜 확장할 수 있으니까요.
비슷한 얘기로 언어 하나만 잘하면 다른 언어로의 전환은 금방된다는 말인 듯...
C는 아직도 포인터 앞부분에서 허우적거리고 있습니다.
저도 포인터를 아직 잘 모릅니다.
C 언어로 변수를 선언할 때 온갖 표현을 쓰면 해석하는데 오래 걸립니다.OTL....
수업 자료에 나온
int (*(*x[3])())[5]
을 해석하는데 한참이 걸려버린...;;;;
결국 x is array[3] of pointer to functions returning pointer to array[5] of int라는 것을
예전에 공부했던 책을 보고서야 알았습니다.ㅜㅜ