게임개발자 지망생입니다.C언어 입문시, 어느정도 이해를 해야하나요?

개성만점의 이미지

안녕하세요.

몇달전 C언어 책(열혈:윤성우) 을 구입하고 몇달째 씨름중입니다. 전 문과계열나와서 이쪽 사고방식과 공부법을 잘 모르는데

그래도 포기안하고 아직 버티고있습니다. 사실 예제는 60%이상 이해하고 자꾸보면 되새김질이 되는데 문제를보면 답이 진짜 바로 잘 안떠오릅니다

자꾸 뚫어져라 봐도 모르겠어요..

그래서 제가 생각해낸게, 어짜피 시간만 보낼바에야 예제 이해하고 문제를 풀되, 문제를 고민하는 시간 10~15분 주고나서 머리짜매도 안나오면

답지를 보고 그냥 답지에라도 익숙해지는겁니다. (단, 바로 답지안보고 고민하는시간을 10분이상 줍니다. 바로 답지보는 습관들이니

아무 의미가없어서요 ㅜ.ㅜ ..그리고 제가 연습문제해결을 못했다는 괴로움때문에 자꾸 진도를 못뺍니다.)

이렇게라도 해야 제가 C를 가볍게라도 뗄거같아서요 ㅜ.ㅜ

문과계열만 공부해서 뭐든지 완전히이해하고 빠삭하게 하려는게 습관인데..이렇게라도 한권정도 보는게 도움이 물론 되긴하겠지만

나중에 프로젝트나 뭐 다른공부하면서 깊이 이해해도 될까요? ㅜ_ㅜ 도저히 이거붙잡고 몇달이고 시간보낼 자신이 없어서 약간의 불안감때문에 여쭈어봅니다.

저도 얼른공부하고 씨뿔뿔이나 자료구조 질문도 하고싶고 그렇네요 ㅜ.ㅜ흑

_______의 이미지

저도 문과계열 나와서 개발자 하구 있습니다.

저도 님과 같은 과정을 겪었습니다. 한 달에 한 번씩 포기하고 싶었어요.

전 그냥 책 한 권 이해될 때까지 주구장창 봤습니다.

보면서 챕터가 숙지되면 그 챕터를 기반으로 예제 프로그램을 연습문제에 없는 걸 생각해서 만들어보고 했습니다.

예를 들면 배열이 숙지되면 배열을 기반으로 가계부를 만들어보고 구조체가 숙지되면 그걸 구조체로도 만들어보고 이런 식으로요.

질문하신 것처럼 프로젝트랑 다른 공부하시다가 다시 보시고 하는 것도 나쁘진 않은 것 같아요.

초조해하지 마세요 불안해하지도 마시고요 다만 남들보다는 배로 열심히 하세요. 힘내시길 바랍니다!

개성만점의 이미지

큰 위로가 되었습니다. 제가 조바심이 앞선느낌이 드네요^^

 의 이미지

1. 프로그래밍은 명확함이 생명입니다. 단 한 줄이라도 대충 넘어가서는 안 됩니다.

의미를 제대로 알지 못하는 어휘를 가지고 작문을 할 수 있을까요?
할 수 있지요. 사람은 개떡같이 쓰인 글도 찰떡같이 알아들을 수 있으니까요. 문장에 엉뚱한 단어가 끼어들어가서 그 의미가 애매해지거나 뒤바뀌더라도 주변 문맥을 통해 저자가 뭔 얘기를 하려 했는지 대충 때려맞추는 게 가능합니다. 좋은 글이라고 할 수는 없겠지만 어쨌든 의사 전달은 될 수도 있죠.

프로그래밍을 할 때는 얘기가 달라집니다. 이건 컴퓨터의 동작을 기술하기 위한 것이고, 잘 알지 못해서 애매한 표현이나 잘못 해석될 여지가 있는 표현을 사용하는 경우가 절대 있어서는 안 됩니다. 컴퓨터는 개떡같이 써 놓으면 말 그대로 개떡같이 동작하거든요. 그런데 당장 kldp 프로그래밍 질답란만 봐도 본인이 개떡같이 짜 놓고선 컴퓨터가 왜 자기가 바라는 대로 찰떡같이 알아듣지 못하느냐고 탓하는 질문글이 심심찮게 올라옵니다. 얼토당토않은 태도이지요. 그런 태도는 일찌감치 버리거나, 컴퓨터가 자연어를 알아들을 수 있게 될 때까지 기다리시는 것이 좋겠습니다. 요즘 딥러닝 발전하는 거 보면 머지 않을 수도 있겠지 싶은데요.

어쨌든 이게 바로 예제 코드를 라인 단위로 그 동작을 완전히 이해하고 넘어가야만 하는 이유입니다. 제대로 이해하지 못하는 표현은 직접 쓸 수도 없습니다. 만약 이게 안 된다고 생각된다면, hello world급 예제부터 시작해서 다시 연습하셔야 합니다. 그렇게 할 만한 가치가 있는 훈련입니다.

2. 문제당 10~15분은 너무 짧습니다.

어지간히 지적 능력이 뛰어나지 않는 이상 그 정도 시간 가지고는 머리를 제대로 썼다고 할 수도 없을 텐데요.

교재에 연습문제를 수록하는 목적을 대충 요약하자면 두 가지 정도가 있는데
1) 학습자가 미처 이해하지 못한 부분을 잡아내서 그 부분을 제대로 공부하고 넘어갈 수 있도록 유도하거나
2) 기초적인 내용 학습을 바탕으로 더 심화된 문제를 직접 풀어봄으로써 응용력을 기르게 하는 것이지요.

그런 관점에서 볼 때, 문제를 보자마자 10~15분 만에 풀어낸 경우 그 문제는 크게 득이 되지 않은 것입니다. 알던 걸 확인하고 넘어간 셈이지요. 진짜 가치 있는 문제는 그 정도 시간 안에 못 푼 문제인데, 그건 1) 내가 뭔가 이해하지 못한 게 있다는 뜻이거나, 2) 본격적으로 응용력을 훈련할 기회가 되는 겁니다.

수학 공부하는 고등학생들이 정석 연습문제를 풀 때도 그렇습니다. 쉽게 풀리는 문제는 몇 분만에 풀고 넘어갑니다. 어려운 문제는 하루이틀씩 걸리는 경우도 허다합니다. 그렇다고 하루이틀을 내내 그 문제만 붙잡고 있는 건 아니고, 중간중간에 휴식도 하고 그 단원 공부도 다시 해보고 새로운 시각으로 바라보기도 하면서 결국 풀어내는 거죠. 문제가 풀릴 때의 쾌감도 쾌감이지만, 그런 식으로 키운 실력이 진짜 본인 실력이 되는 겁니다.

아니면 다른 예를 들어보죠. 작문 연습을 하는 사람이 토픽을 받을 때마다 10~15분씩만 생각해 보고 안 되겠다 싶으면 스킵한다고 생각해 보세요. 이 사람의 작문 실력이 향상될 거라고 기대할 수 있을까요?

답지를 보는 건 웬만하면 지양하시길 바랍니다. 일단 답지를 보게 되면, 문제 해결을 위한 핵심적인 아이디어가 그냥 뇌리에 박혀 버립니다. 답지 전체를 외우지는 않는다고 하더라도 일단 이렇게 되어 버리면 그 핵심적인 아이디어를 직접 떠올려 낼 기회를 영원히 잃는 것입니다. 다시 말해서 그 문제를 스스로 풀 기회를 영영 잃는다는 얘기죠. 그런 손해를 감수해야만 할 때가 아예 없는 건 아니지만, 가능한 한 줄이는 게 좋습니다. 좋은 연습문제는 상당히 귀합니다. 낭비해서는 안 되지요.

3. 뭐, 인생이 그렇지 않겠습니까.

이게 얼마나 걸릴지도 모르겠고 어느 정도 노력이 필요한 건지도 모르겠으며 그러고도 과연 성공할지 아닐지 확신할 수도 없는 상태에서 뛰어드는 것만큼 답답하고 불안한 게 없죠. 근데 뭐 저도 오래 산 사람은 아닙니다만 인생이란 게 원래 그런 선택의 연속인 게 아닌가 싶고 뭐 그렇습니다. 익숙해지는 수밖에 없을 것 같아요.

물론 그렇다고 일부러 어려운 길을 골라 갈 필요는 없지요. 프로그래밍 공부하려는 사람이 질문자님 혼자뿐인 게 아니잖아요. 선배들이 삽질해가며 얻은 교훈들이 잔뜩 있습니다. 그런 의미에서 좋은 선생님을 구해서 피드백을 받으면 좀 더 수월해질 겁니다. 질문자님의 현재 수준을 정확히 파악하고 효율적인 공부 방향을 제시해 줄 수 있는 사람 말이죠. 온라인으로 이렇게 질답을 주고받는 데에는 한계가 있을 수밖에 없어요.

개성만점의 이미지

제가 너무 씨언어를 얕잡아보고 덤빈거같단 생각을 하였습니다 . ㅠㅠ 시간이 좀 걸리더라도 탄탄하게 마무리하고 새로운걸 공부해야겠단 생각이 듭니다.

기반지식이 너무없어서 오늘은 교보가서 읽어내리기에 부담없는 컴퓨터관련 책도 하나 구입했습니다 (제목은 'c를 배우기 전에 반드시 알아야할것들')

이제 좀 여유를 가지고 차근차근 확!실하게 알아가는 욕심을 가져야겠습니다. 정말 감사합니다

ㅇ의 이미지

한문제당 10~15분 정도면 간단한 수준의 문제인듯합니다.
될 수 있으면 이해를 깊게 하실수 있게 배우시는게 좋을듯 하네요.
그런데 언어가 C다 보니 그냥 C#, C++/CLI 바로 넘어가시는게 더 편하실겁니다.

개성만점의 이미지

음.. 아닙니다. 사실 어려운책인데 제가 그걸 피하려고 듬성듬성 하려는 마음이었습니다 .
ㅠㅜ 꼭 씨언어 잘 마무리하고 다음파트로 가야겠습니다 ^^ 가치있는 괴로움이라 여겨져서 아직까지 씨샵으로 가고싶은 마음은 없어요 ㅜㅜ
왠지 씨샵가서 또 좌절하면 그땐 돌아갈 곳이 없을거같아서요 ㅠㅜ

chocokeki의 이미지

근데 왜 게임 개발자인데 c를 하세요??
뭔가 시작부터 잘못가고 있는거 같은데
혹시나 해서 말씀드리는건데 C랑 C# 이런거랑 다릅니다
알파벳만 같아요
지금 하는 행동은 마치 라틴어 공부한다음 그 다음 영어 제대로 해야지~ 이런 느낌인데요

개성만점의 이미지

2학기에 방통대 컴퓨터 과학과에 편입예정이라 선행으로 하고있습니다.

그런데 게임개발자가 되려면 c는 할 필요가 없는건가요 ? 집에 씨샵책이 있긴하고 살짝 보긴했는데 ..

그럼 다른 언어를 해야한단 말씀이신가요? c언어를 배워놓으면 다른 언어배우기가 쉽다고 알고있어서 한 선택인데..ㅜ_ㅜ

wtwon의 이미지

나쁘지 않은 선택입니다.
C언어에서 파생되거나 문법을 많이 가져다 쓴 것들이 있기 때문에 C언어 선행을 하면 다른 언어를 배우기 쉬운 것은 맞습니다.
어떤 게임을 만드실지는 모르겠으나 지금 페이스를 유지하고 싶으시다면 C언어 하신 다음에 C++하셔서 게임개발을 진행하시면 됩니다.
우선, 본인이 어떤 게임 개발을 원하며 그러한 게임개발에 주로 쓰이는 언어들에는 무엇이 있는지 알아보는 과정이 필요할 것 같습니다.

C언어를 배워두시면 직접적이든 간접적이든 도움이 됩니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.