<고민>선배님들은 언어 처음 한참 배웠을때 공부를 어떻게 하셨나 궁금합니다.

goidc의 이미지

졸업 하자말자 공군 지원하여 지금은 전역한지 5달 정도 됐고 2010년에 공대에 신 입학 할 계획을 가지고 있는 파릇파릇하고 소심한 20대 초반 입니다.

우선 여태까지의 상황을 선배님들께 말씀드려 보자면
전역하고 5달 동안 C프로그래밍 윤성우 저 열혈강의를 한번 다 본 상태 입니다.
열혈강의에 있는 문제를 다 완벽하게 넘겼다고 말씀드리지는 못하지만 전체 문제에서 70%정도만 제 손으로 풀었습니다.
모르는건 답 보고 그냥 이해한 정도 입니다.
책 한번 다 보고 미로찾기 게임을 한번 구현해볼려고 했었는데요.
공책에 기본적인 간단한 규칙만 적어놓고 막상 구현 해볼려고 했는데 결국 소스 한줄도 못적었습니다.
문법도 갑자기 헷갈리는 통에 뭐를 써야할지도 모르겠구요.

그래서 복습겸 C기초플러스를 구입해 처음부터 두 번째 복습 하고 있습니다.
루프문 파트에서 사용자가 입력하는 만큼 피라미드를 쌓는 문제가 있습니다.
루프만 써서 피라미드를 완성 시키는 건데요.
보기에는 별로 어려워보이지 않았는데 어제부터 이 for문 문제에서 막혀버리는 바람에
어제부터 많이 의기소침해져 있습니다.
정말 견적 내봐도 20줄도 안나올것 같은데 결국은 풀수가 없네요.

그래도 문법 한번은 다 봐서 자신이 있었는데 문제 하나 때문에 너무 위축 되버렸습니다.
할맛도 뚝 끊겨 버렸구요.
겨우 for문 문제에서 막혀버린 상태인데 그렇다고 for문 답 보고 넘어가면 for문 문제도 못푸는데
for+if+point+struct까지 진도 나가봤자 뭐하느냐...
for문만 쓰는 문제도 못푸는 놈이 앞으로는 점점 어려워 질텐데 스스로 문제 하나나 풀수 있겠냐 생각이 들더군요.
정말 제 자신에게 형편 없다고 생각 합니다.

선배님들도 한번은 이런 고민을 해봤으리라 생각 하는데요
선배님들은 어떻게 해쳐 나갔는지 궁금 합니다.

BSK의 이미지

문제를 해결하는 능력을 기르시기 바랍니다. 그러려면 어떻게 해야 될까요?

기본에 충실하시라고 말씀 드리고 싶네요.( 자료구조, 알고리즘, 데이타베이스 등등 )

컴공 학과 시간에 들었던 과목들이 알게 모르게 실전에서 도움이 됩니다.

그리고 영어는 반드시 잘 하시기 바랍니다.

책도 읽고 인터넷 검색도 하고 ... 이런 행위들을 하는게 새로운기술, 아니면 현업에서

막힌 부분을 해결하기 위해서입니다.

정보를 얻으려면 영어 사이트에서 주로 많이 얻겠죠. 세계 공용어니까요. 영어를 능수능란하게 하면

그런 정보들을 유용하게 캐취할 수 있을 겁니다. 그리고 모든 언어는 문법을 잘 알아야 합니다.

문법을 왜 알아야 하냐면 다른 사람 소스를 보고 분석해서 자기것으로 만드려면 문법을 모르면 안 되겠죠.

A, B, C도 모르는데 영어를 해석할 수 없을테니까요. 결론은 문제를 해결하려면 '기본에 충실해야 된다' 입니다.

지금 조그만 프로그램을 못 만들어서 불안해 하지 마시고 하나하나 풀어간다는 마음으로 넓게 보시기 바랍니다.

/* ....맑은 정신, 건강한 육체, 넓은 가슴으로 세상과 타협하자. */

/* ....맑은 정신, 건강한 육체, 넓은 가슴으로 세상과 타협하자. */

ifree의 이미지

엉터리로라도 프로그램을 만들어 보면서,
동시에 이론적 기초를 쌓으세요.

C 계열 언어와 함께 함수형 언어를 함께 공부하는 것도 도움이 됩니다.

항상 시야를 넓게 가지려고 노력하고 이론과 실제의 밸런스를 갖추는데 중점을 두시는게 좋을 것 같습니다.

kkb110의 이미지

새로 짜시는게 힘드시면 작성된 예제 소스를

약간 다르게 '수정'해가면서 익히는것도 나쁘지 않은 것 같습니다.

예를 들어 피라미드 *찍기 소스를 역피라미드로 만든다던가..

winner의 이미지

저는 programming이 수학의 증명과 유사하다고 생각해요.
수학공부를 해도 증명문제 푸는게 쉽지는 않잖아요.
외국어 단어 공부한다고 외국인과 쉽게 대화하지 못하는 거랑 같아요.

Programming을 너무 쉽게 생각하지 않았으면 좋겠습니다.
노력하시다보면 좋아질 거라고 생각합니다.

prio의 이미지

송나라의 문장가 구양수가 어떻게 글을 잘 쓸 수 있는가 하는 질문에
"다독, 다작, 다상량" 하라고 했다지요.
저는 프로그래밍도 비슷하다고 생각합니다.

문제를 풀어보시되,
혹시 풀지 못하시겠다면 답을 보시고 충분히 이해를 하세요.
다른 사람이 작성한 코드를 읽는 것도 중요한 능력입니다.
사실 요즘에는 자신이 모든 코드를 작성하는 경우는 대단히 드물거든요.

대신 중요한 것은 읽고 그치는 것이 아니라,
kkb110님이 말씀하신 대로 문제를 약간 바꿔서 직접 풀어보는 것을 꼭 해보셔야 합니다.
대개 읽고 이해했다고 생각했어도 정말로 이해한 경우는 그렇게 많지 않습니다.
눈 앞에 답이 펼쳐져 있으니 내가 이해했다고 생각하는 것이지,
막상 아무 것도 없을 때 스스로 생각해 내기는 어려운 경우가 많지요.
문제를 스스로 변형하고 풀어내는 과정에서 관련 내용을 충분히 이해할 수 있게 될 것입니다.
그도 어렵다면 아예 문제와 답을 통채로 외워버리세요.
사람의 뇌란 참 신기해서, 외워두면 언젠가 이해가 되어버리기도 하지요.

그런데 공대에 신입학 하신다고 하시니
어쩌면 더 중요한 것은 본인의 적성을 찾는 것일 수도 있겠습니다.
모든 사람이 프로그래밍을 잘해야 하는 것은 아니지요.

대신 문제에 부딪혔을 때 빨리 포기하지 않고
차근차근 끈기 있게 문제를 해결하는 습관을 익힌다고
생각하시고 프로그래밍 공부를 열심히 해보시는 것이 좋겠다고 생각합니다.

gurugio의 이미지

저는 처음 어셈블리 언어를 배우면서
스터디 모임에서 선배형님이 내주신 연습문제들을 풀었구요
그다음으로 C언어를 배울때는 연습문제를 내줄 사람이 없어서
The c programming language 책에 있는 연습문제를 거의 다 풀어봤었습니다.
그 다음에야 조금 C에 대해 눈을 뜬것 같다는 생각이 들었습니다.

지금은 LISP을 공부하는데
예전에 C로 만들었던 작은 프로그램들을 lisp으로 만들어볼까 합니다.
50~100라인 정도로 작성되는 작은 예제 프로그램들을 많이 만들어보세요.
the c ~~ 책은 연습문제가 좋고 해답도 많이 공개되어 있어서 추천합니다.

----
섬기며 사랑하면 더 행복해집니다.
몸에 좋은 칼슘이 듬뿍담긴 OS 프로젝트 - 칼슘OS http://caoskernel.org

snowall의 이미지

http://projecteuler.net/
여기 가보면 컴퓨터로 풀 수 있는 연습문제가 많이 있습니다.

깊이 생각해 보면서 풀어보세요.
--------------------------
피할 수 있을때 즐겨라!
http://snowall.tistory.com

피할 수 있을때 즐겨라! http://melotopia.net/b

박민권의 이미지

책에서 한단원씩 배워갈때마다 배운것을 토대로 자신의 창의력과 상상력을 이용해 마음대로 프로그램을 만들어보세요.
글쓰는 법을 배웠으면 나만의 일기부터 써야지 국어문제 많이 푼다고 해서 소설을 쓸수는 없습니다.

내 멋대로 엉뚱하고 프로그램을 만들면서 즐거움을 느껴보세요.

input: 1
=>     ^^
 
input: 3
===> ^^
 
input: 5
====T_T=>

주변에 문법 다 알고 책이나 시험 문제는 다풀지만 실제 내가 원하는 프로그램을 못만드는 사람들이 많습니다.
그리고 대부분 문법실력이 부족해서 그런것 같다며 백날 문법만 공부합니다.
언어의 문법을 모르는 것이 아니라 작은 것이라도 자신이 직접 상상해서 만들어 본적이 없기에 그렇습니다.

punxism의 이미지

A Book On C 라는 책을 가지고 연습문제를 A4지에 풀면서(cording하면서) 공부 했더랬죠.

litiblue의 이미지

이런 for문 문제에서 막혀버려서 위축되어 버렸군요. 그리고 그 것 때문에 자신을 형편없다고 생각하기 까지에 이르렀군요. 저도 그랬습니다. for문하나 이해하는데 일주일이 걸렸고, 님 처럼 피라미드 쌓는 문제에 좌절을 해서 통째로 소스코드를 외워 버린적도 있습니다.

그랬던 제가 어느 순간에는 대학생 프로그래밍 경진대회 문제 같은 것들도 시간만 많이주면 대충 어느정도 풀 수 있을 정도의 실력이 되더군요. for문 if문은 말 할 것도 없고, 비트단위 연산과 자료구조, 알고리즘 까지도 자유자재로 응용하면서요.

프로그래밍 공부를 어떻게 할 것인가에 대해서는 가장 처음에 답변해주신 분 처럼 기본이 가장 중요하다는 생각을 갖고 있습니다. 자료구조, 알고리즘, 문법을 아주 탄탄하게 다져야 합니다. 그런데 님의 문제는 그게 아닌것 같군요. 지금 당장 for문 쓰는 문제 하나 못 풀겠는데 자료구조, 알고리즘이 왠말 입니까. 그쵸?

제가 보기에 님의 문제는 프로그래밍의 가장 기초라 할 수 있는 c언어 문법을 공부하고 있는데, 정말인지 너무너무 어렵고 막막해서 앞으로 어덯게 해야될지 감이 오지 않는다는 것입니다. 이 문제에 대해 조언을 해드릴까 합니다.

그 for문 문제라는거 스스로 풀려고 해서 문제가 되는거 맞죠? 답이 있다면 답을 보고 이해하는 쪽으로 공부 방법을 바꿔보세요. 혼자서 억지로 풀려고 하지 마시구요. 그렇게 하지 않아도 나중에는 그런 문제 껌으로 풀 수 있게 됩니다. 그런데 이해만 하고 넘어가면 왠지 찝집하죠? 좋은 방법이 있습니다. 이해를 확실히 한다음에 답을 가리고 직접 코딩해 보는겁니다. 그런 식으로 for문 문제 10개만 풀면 그 다음부턴 for문은 껌입니다. 다음은 if문이 껌이되고, pointer, struct도 껌이되고 재귀호출에 기초 알고리즘에 다 껌이 됩니다. 가끔 이해가 도저히 안되는 문제가 있죠? 그냥 넘어가세요. 결국은 껌이 될테니.

그런데 왠지 그렇게 백날 해봐야 응용문제는 못 풀것 같죠? 절대 그렇지 않습니다. 확실하게 이해하고 나가면 응용문제들 조차도 껌으로 다가옵니다. 그러니 마음 편히 먹으시고 한 번에 한 걸음씩 천천히 걸어가세요.

또 하나의 조언은 고등학교때 수학공부를 어떻게 하셨는지 한 번 생각해보세요. 그럼 프로그래밍 공부도 어떻게 해야될지 감이 올겁니다. 비슷하거든요. 정석책을 반복해서 보는게 문법공부라면 수능은 실전 프로그래밍이죠. 제가 조언을 해드리긴 했지만 그 때의 경험을 살려서 자신만의 방법을 한 번 찾아보세요.

아참 그리고 이제 곧 학교를 다니시게 될텐데 따로 혼자 무엇을 공부할 생각하지 마시고 학교 수업에 충실하세요. 피가되고 살이 되는 거랍니다. c언어만 해도 혼자서 집에서 낑낑대며 하는 것과는 다른 차원의 뭔가를 얻으실 수 있을 겁니다.

그럼 화이팅! 군대도 일찍 다녀오신 것 같고, 학교 들어가기도 전에 이렇게 열심히 공부하시는 모습을 보니 장래가 촉망되네요. ^^

^^

pensaku의 이미지

문제를 푸는 능력도 중요하지만 소스코드 자체에 익숙해지는 것도 중요합니다.

한글을 사용하려면 가나다라에 익숙해져야 하는 것처럼 그냥 남의 소스코드를 그대로 보고 따라치는 연습을 하시거나 하는 것도 중요합니다. 전 처음에 그렇게 배운 것 같네요...

소타의 이미지

C언어 처음 배울 때 thttpd 소스를 출력해서 한달동안 출퇴근 길에 외웠던 기억이 납니다.
문법이고 뭐고 잘 모를때였는데 모르는 부분은 체크했다가 man 보면서 장님 더듬는 식으로 이해했었습니다.

.... 한달동안 몇번을 봐도 외워지지는 않더군요;;

johan의 이미지

급하게 생각하지 말고, 좀 크기가 되면서 자신에게 매우 흥미로운 것을 만들어 보세요. 6개월 이상 그것에 매달리면서 큰문제를 작은 문제로 나누어서 해결하다 보면 어느 정도 실력이 될 겁니다. 조금이라도 어렵거나 복잡하다고 느껴지면 주어진 문제가 크다고 생각한 후, 작게 잘라서 만들어 보세요. 이름 짓기도 무의미하게 하지 말고 자신이 나눈 작은 문제가 무엇을 하는 지 잘 알려주는 이름으로 지어주세요. 꼭 키보드를 치지 않고 종이에 쓰더라도 위와같이 하면 빠른 시간에 실력이 늘겁니다.

nthroot의 이미지

다른 저자의 C책 3권 사서 정독.... 뭔말인진 하나도 모르겠고...그냥 읽었던거 같..
중학교 2학년때니까...15년이 다되가네요.

------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.