앞날이 불안한 유학생..

회원 전용입니다. 프로그래밍 관련 질문&논의는 금지!

Moderator: 류광

Post Reply
비회원

앞날이 불안한 유학생..

Post by 비회원 »

저는 gpg스터디 포럼게시판을 가끔 들여다보는 유학생입니다.

초등학교 다니던 시절부터 제 꿈은 재미있는 게임을 만들어서 성공하는것이었습니다.

그러나 점점 나이도 먹고 철도 들면서 이게 과연, 내 능력으로 현실에서 가능한 일인가. 이쪽일이 내가 정말로 원하는삶인가에 대한 물음이 커집니다. 과연 취직해서 먹고살수나 있을까라는 생각도 듭니다.

지금 시드니대학교에서 Computer science학과(2학년)를 다니고 있습니다.

프로그래밍 언어는 1학년때 Java를 그냥 낙제안받을 정도밖에 못 익혔고.. 지금 C, Unix, SQL을 배우고 있는데 교육방식이 제게 안맞는건지 내용은 그리 전문적인것 같지도 않은데.. 학교에서 중상위권 유지하기도 벅차네요.

나름 엔진이나 서버프로그래머가 되는것을 목표로 공부하고있는데.. C에서 포인터갖고 헤매는 저를 보면 제자신이 쓰레기 같습니다..

이래저래 겨우겨우 졸업을 한다해도, 요새 호주도 취업이 쉽지 않거든요(한국보다는 훨씬 낫겠지만).. 과연 밥벌이나 제대로 할 수 있을지 의문이고.. 제 꿈은 그냥 말그대로 꿈으로 끝날지도 두렵네요. 호주에서 일하면서 돈좀모아서 미국에서 그래픽스 석사나 따고 게임쪽으로 취직할 계획이었는데..

그냥 불안하고 답답한 마음에 끄적여 봤습니다..
비회원

Post by 비회원 »

연습 밖에 없습니다.

포인터를 아주 힘들게 익히시려면 어셈블리로 간단한 프로그램을 몇개 짜보시도록 하십시오.
비회원

제 경험담..

Post by 비회원 »

처음 C 배울때 모든 사람들이 입모아서 포인터 어렵다 어렵다 라는걸 지겹게 들었는데요
프로그래밍을 시작할때도 제 자신에게 '내가 할수 있을까?' 라는 의문을 수십번 던진 기억이 납니다.

행동은 의외로 간단하더군요. 그저 믿고 꿋꿋히 나아가면 그만입니다.

결국..되던군요. -_-;; 그리고 수 많은 사람들이 이야기 하던 포인터도 실제로 그리 두려운 대상이 아니였어요
너무 쫄지 마세요. ㅎㅎ 생각해보면 별거 없고 쓰다가 기억안나거나 모르겠으면 다시 책 펴서 보면 그만입니다

제일 중요한건 마음가짐인 것 같에요. 어렵다, 힘들다 라고 자기가 규정을 지어버리면 그렇게 결과가 나오는 것 같습니다.

ps.제게는 영어가 너무 흑 ㅠ_ㅠ
luciferan
Posts: 119
Joined: 2006-08-08 17:13

Post by luciferan »

포인터가 아무리 어려워도




영어보단 쉽습니다... ㅠㅠ
포기하면 편해...
sid
Posts: 133
Joined: 2008-09-25 13:06
Location: chzero
Contact:

Post by sid »

운전은 백밀러 보는게 가장 어렵고

C언어는 포인터가 가장 어려운게 아닌가 합니다

공통점은 그걸 능숙하게 하게 되면

어려울게 없다는거죠
좀 쉬자 쉬자 ~~~~
mastercho
Posts: 587
Joined: 2004-05-09 20:37

Post by mastercho »

대학교에서 C언어 공부할때 포인터가 이해가 잘 안가서 몇개월동안

고민한적이 있습니다 , 일단 대충 알고 넘기면서 , 수많은 책들을보면서

지속적으로 포인터 개념을 익혔었죠, 그러던 어느덧 포인터 사용이

너무 우습게 느껴지고 , 포인터가지고 장난치는 코드는 허접한 코드인것을

알게 됩니다 , 그리고 2중을 초과한 포인터는 사용하지 않는다는것도 알게되었죠

그 이상은 말그대로 장난질일뿐입니다 , 포인터로 장난치면서 실력?을 뽑내는 사람이 있다면

어차피 실무에서는 낙오할 사람이기때문에 , 같이 일하게 될 일도 없거니와 , 결코 쓰게될 일도 없을겁니다

[2중도 거의 안쓰이다가 , 내부의 포인터를 받아올때나 포인터의 포인터를 넘겨 받아옵니다
이것도 드물죠]


문제는 포인터가 우습게 느껴지는 순간 , 포인터는 객체를 사용하는 한 방법일뿐이라는것을 알게됩니다

그리고 포인터정도는 우스워야 , C언어로 설계를 그제서야 조금 해볼수 있는데

설계에 대한 고민이 포인터을 고민하는것보다 수십 수백배 어렵다는것을 알게됩니다

포인터문제에 좌절하기에는 아직 이른겁니다


말나온김에 계속 이야기 하자면.........


설계도 이제 막 스파케티 코드를 짤만하게 되니까 , 버그에 때문에 , 제대로 완성된 프로그램을
짜지 못합니다

여기서 또 고민하게 되죠 , 이제 포인터를 넘으니까 , 버그때문에 , 제대로 된 프로그램을 작성하기
힘들어 "과연 프로그래밍을 잘할수 있을까?"라는 고민에 빠지죠

그 과정을 보자면

먼저 C언어를 이용한 구조적 스파케티 프로그래밍 으로 피를 봅니다.....
구조적 프로그래밍은 역시 후진 방법?이야 하며

C++를 이용한 객체지향을 이용한 스파케티 프로그래밍를 또하게 됩니다
하지만 클래스만 사용했을뿐 여전히 엉망 진창인 스파케티 코드를 짜게 됩니다
오히려 C로짠것보다 , 더 엉망입니다

그후 규모가 있는 프로젝트에서는 , 스파케티 코드로는 아예 디버깅이 불가능하다는걸 알게 됩니다

수백줄에서 수천줄 수만 줄 넘어가기 시작하면
대충 되겠지 하는 코드로는 , 프로젝트를 말아먹는다는걸 절실히 느끼게 되고
철저하게 assert 을 걸게되며 , assert가 너무 중요하기에 릴리즈 모드에서도 release_assert를 걸게 됩니다

또한 모듈의 중요성을 인지하고, 최대한 독립적으로 모듈을 작성하게 됩니다 ,
그렇게 작성하다보면 버그 유발하는 모듈을 분리 혹은 제거할수 있게되어, 디버깅에 매우 유용해집니다

인터페이스 함수를 작성할때 , 인자로 당연히 제대로 된 인자를 넘기겠지 하는 아니한테도는
무조건 버려야 하며 , 버그가 없기를 기도하기보단 , 버그가 발생하면 즉각 인지 할수 있도록
시스템을 구성합니다, 내가 짜는 단순한 함수 모듈인데도 무조건 assert를 걸다보면
예기치 못한 , 메모리 뻑나는 경우는 실제 발생하는 에러중 1% 도 안됩니다
[물론 제가 완전히 컨트롤하는 코드에서는 그렇더군요]

class를 자기가 짜고도 다른 사람이 짰다고 가정하고 , 그 클래스를 사용하는 모든 예외 상황에 대비하는 코드를 작성하다보면 방어적 프로그래밍이 얼마나 중요했는지도 좀 알게되는 시점이 옵니다

이렇게 아예 버그를 쉽게 인지 할수 있는 구조 혹은 , 버그 자체를 발생자체를 적게끔 구조를 설계하기 시작하게 되면 , 슬슬 프로그래밍에 대한 감이 오게 된겁니다 , 여기까지 오는 과정이 솔직히 장난아닙니다

문제는 프로그래밍만 잘하면 되는게 아니라

게임 프로그래밍을 잘하려면 네트웍, 3D API , 수학 , 물리 기타등등.........
까지 잘해야 하는데......

에효....

지금 생각해보면 .......... 포인터의 어려움은 기억조차 안날만큼 , 너무 쉬운일이라 느껴지네요

호주에서 일하면서 돈좀모아서 미국에서 그래픽스 석사나 따고 게임쪽으로 취직할 계획이었는데..
게임 프로그래밍을 업으로 삼으시려면
포인터에서 좌절하시기엔 너무 이른거라 말씀드리고 싶습니다
oranke
Posts: 244
Joined: 2002-05-09 09:00

Post by oranke »

luciferan wrote:포인터가 아무리 어려워도




영어보단 쉽습니다... ㅠㅠ
저도 백만 번 동감합니다. ㅠㅠ

그건 그렇고 mastercho님 말씀... 정말 와 닿네요.
오래 전 베개만한 터보씨 책에서 하도 포인터에 대해 겁을 줘서... 저도 사실 배우기도 전에 덜덜덜 그랬었습죠.
그 때 제게 C 를 가르쳐 주던 후배 왈...

"포인터? 쓰기 싫으면 안써도 되여~~ 안쓰고 살다 보면 필요한 날이 와요."

하더군요. 그래서? 안썼습니다. 게다가 전 기계쟁이... 프로그래밍은 그저 취미였으니까요.
실제로 코딩으로 밥먹고 살기 시작해서도 별로 포인터의 필요성을 느껴 본 적이 없었습니다.
제 밥벌이었던 델파이는 포인터를 몰라도 월급을 받을 수 있도록 기가막히게 추상화 된 VCL이라는 프레임워크를
제공 해 주고 있거덩요.

그러던 어느 날... 객체를 정수 리스트에 형변환 해 담아두고 나중에 참조하는 후배의 코드를 보면서
허얼~~ 객체란 게 바로 포인터였어?? ~~ 하며 깨닫게 되었죠.
신기한게 말입니다... 한가지가 풀리면 이전에 막혔던 것들 중에서 별로 관계없다고 생각했던 부분들이 한꺼번에
뚫리게 되더군요. 그래서 함수인자로 넘겨받은 객체를 건드리면 원래 객체도 변경되는구나. 결국 우리는 메모리를
만지작 거리는 거였구나. 그래서 똑같은 4바이트가 어떤 때는 정수로, 어떤 때는 실수로 쓰이는구나. 아~ 구조체와
공용체란 건 그런 거 였구나...
.... ... ...

mastercho wrote:게임 프로그래밍을 업으로 삼으시려면
포인터에서 좌절하시기엔 너무 이른거라 말씀드리고 싶습니다

포인터는 망치나 톱, 삽이나 곡괭이 처럼 우리가 집어들 수 있는 도구 중 하나입니다.
그 이전에 프로그래밍 역시 컴퓨터에게 일을 시키기 위한 도구일 뿐이구요.

컴퓨터에게 일을 시키는 방법이 프로그래밍만 있는 것이 아니듯, 목표를 이루는 도구 역시 포인터만 있는 것은 아니죠.
제가 처음으로 완성했던 프로그램은 한자사전이란 물건이었습니다. 상용한자 4888개를 구조체 배열에 때려박고 for문으로
걸려내는 단순무식한 놈이었죠. 그래도 주위사람들은 신기해하며 사용 해 주시더군요. 나중에 셀빅이라는 PDA로 포팅해
마침 열렸던 공모전 상금도 짭짤히 챙겼구요. 그 인연으로 좋은분들을 만나 많은 가르침을 얻을 수 있었습니다.
그러고보니 당시 그 무식한 코드를 겁도 없이 공개하는 만행도 저질렀었네요... ^^;;

일단 원하시는 바를 어떻게든 구현 해 보세요. 만들어진 코드가 우아하지 않을까봐 시작부터 겁내지는 마시구요.
당장 땅을 파야 하는데 포크레인 면허가 없다고 우울해지실 필요가 뭐가 있겠습니까. 삽도 있고 숟가락도 있는데요.
안되면 손가락 발가락으로 긁어라도 보세요. 그것 만으로도 이미 다른 사람들보다는 한 걸음 나아가신 겁니다. ^^;;
kiburm
Posts: 15
Joined: 2008-11-28 13:59
Contact:

누구나 그런 고민을 대학교 2학년 때 한답니다.

Post by kiburm »

대학교 1학년 때 고등학교 정신이 남아서 공부를 좀 하지만

대학교 2학년 때 과연 내가 여기에 재능이 있는지 고뇌에 싸이다가 휴학하고

대학교 3~4학년 때 취업에 대한 걱정과 실력에 대한 불안감으로

이도 저도 안 하고 학교 성적에만 메달리다가 졸업을 하게 됩니다.

이것이 대한민국 컴퓨터 공학과 학생 대부분이 겪는 비슷한 과정입니다.

혼자만 그런 생각을 갖는게 아니라는데 일단 위안을 삼으시고

하지만 단언컨데 딱 세 가지만 명심하시면 학교생활도 즐거울 분더러

매일매일 실력이 늘 수가 있습니다.

1. 나는 매일 발전하고 있다. 그렇게 되뇌이고 믿으세요.

공부라는건 헬스랑 달라서 자신이 발전한 양을 측정할 수가 없어요.

그러니까 내가 시간이 지나도 발전하지 않는다는 불안감 때문에 모든 고민병이 생기게 되죠.

그런데 제가 확실히 보증하건데 지금 머리속에서 자리가 잡히고

이해가 되는 중이라 조금만 더 기달리면 된다고 편히 생각하면 실제로 그렇게 됩니다

2 . 그리고 배운 내용들은 강의노트를 만들거나 실제로 강의를 해서 남한테 설명을 해보세요.

남한테 설명을 할 수 있다면 그걸 이해한 것이고 그렇지 못한다면 이해 못한 겁니다.

중요한 건 남에게 설명하려고 노력하면 그것이 더 쉽게 이해된다는 것입니다.

3. 학점에 대한 집착을 버리고 하고 싶은 것을 해보세요.

일단 문법은 익어야 하니까 학교 전공 숙제들은 손을 놓지 마시고요. 방학을 이용해서

자기가 만들고 싶은 프로그램과 관련된 오픈소스를 들여다 보세요.

그러면 두 가지 깨닫는게 있습니다.

1. 겁나게 어렵다.
2. 이 프로그램 만들려면 A 과목 B 과목을 공부해야 하는 구나.

그러면 마음속에서 A,B과목을 공부해야 겠다는 불같은 의지가 올라옵니다.

학점은 따라오기 마련이구요.

단 주의점.

저 같은 경우에는 리눅스 OS를 처음 보고 OS관련 자료,사이트 책 찾고 만들어 보려고 했으나

CPU 인터럽트라는 것을 이해 못해서 GG친 경험이 있는데 나중에 회사에서 AVR 이라는 임베디드용

8BIT CPU로 된 보드를 만들어서 프로그램 심다가 그제서야 OS 코드를 이해했습니다.

위의 2번 항목이 학교에서는 채워 줄 수가 없는 경우가 있어요. 외국에는 자체 개발한 소형 os를

수업자료로 쓴다는데 우리나라는 그런 학교가 있는지 모르겠습니다. 그러니까 당연 위의 2번 항목을

진행할 수 없죠. 그러나 그 다음 타겟으로 잡은게 물리엔진이었는데

코드를 공부하다 보니 물리하고 선형대수, 수치해석을 들어야 겠더군요.

학교에 이과 계열은 잘 되어 있어서 공부할 수 있었죠,.

즉 자신의 환경을 잘 이용해야 한다는 거에요.. 환경이 아직 미숙한데 내가 천재라 독보적으로

결과를 내기는 힘들거늗요.


제가 장담컨데 의의 세가지만 지키면

불안감과 걱정은 사라지고 그 자리에 호기심과 자신감이라는 녀석 둘이 들어와 있을 겁니다.
비회원

글올린 학생입니다.

Post by 비회원 »

답변 정말 감사합니다.

이런 경험에서 우러나온 말씀들, 정말 약이되는것 같습니다.

포인터도 강의노트 다시보면서 간단한 프로그램도 만들어보니까 아직도 많이 부족하지만 그래도 조금 나아진 느낌이네요.

프로그래밍도 어려운데.. 물리 수학까지 하시는거.. 게임프로그래밍에 대해서 알면 알수록 선배님들이 정말 존경스럽습니다.

감사합니다. 근성으로 열심히하겠습니다.
kiburm
Posts: 15
Joined: 2008-11-28 13:59
Contact:

Post by kiburm »

에밀쿠에의 자기암시라는 책 한번 보시기를 추천드릴께요. 저같은 경우는 제 인생이 바뀔 정도의 임팩트가 있었는데. 다른 분도 똑같으실 수는 없지만.. 잘할려고 노력하거나 의지를 다지지 말라는게 핵심인에요.. 왜그런지는 책을 한번 보시기를~~
Post Reply