모두의 코드
초보자를 위한 C 언어 강좌 - 씹어먹는 C 언어 (완결)

작성일 : 2011-01-20 이 글은 139099 번 읽혔습니다.

씹어먹는 C 언어

마침내 끝났습니다.

마침내 길고 길었던 항해가 끝났습니다. 아마도 이 글을 읽는 분들 중 저의 첫번째 강의부터 열심이 보셨던 분들이 여럿 계셨으면 하는 바램이 간절합니다^^ 제가 첫번째 강좌를 야심차게 시작했을 때가 2009 년 4월 16일 입니다.(사실 1 월 경에 시범적으로 C 언어 강좌 두 편을 올린 적이 있었는데 너무 어렵게 쓰는 바람에 반응이 없어서 다시 쓴 것입니다 ㅎ)

그리고 제가 마지막 강좌를 업로드 한 날짜가 2011 년 1 월 18일 이지요. 무려 2 년 간의 엄청난 격차가 있습니다. 평균적으로 따지면 1 달에 강좌 한 편도 올린 것이 아닌 셈인데, 제 블로그를 꾸준히 방문해 주신 여러분 덕분에 이렇게 강좌가 완성될 수 있었습니다.

감사의 말

아래 분들은 제 블로그에 (특히 더 많이) 기여를 해주신 분들입니다. 아래 여러분들께 저의 특별한 감사의 말을 전하고 싶습니다.

  • 코이치 (39)

  • 곰돌 (22)

  • song (14)

  • 감사합니다 (14)

  • 희망 (11)

  • 스프 (10)

  • 프로그래머가 되고싶은 1인. (8)

  • 괴도 (7)

  • ore (7)

  • 두루뭉술 (7)

  • 질무이있으요. (6)

  • 모르겠어요 (6)

  • 배움의장터 (6)

  • winape (6)

  • 질문 (6)

  • eager (5)

  • 행인 (5)

  • 궁금 (5)

  • sweetick (5)

  • Stephanos (5)

  • 울림 (5)

  • 공부중 (5)

그 외에 제 블로그를 방문해 주신 여러분!

감사합니다:)

씹어먹는 C 언어 칭찬

인터넷을 보다보면 수 많은 C 언어 강좌들이 있습니다. 하지만 안타까운 사실은 제가 본 대다수의 C 언어 강좌들은 대개 중간에 끝나는 경우가 엄청 많았습니다. 그 분들의 문제가 과연 무엇이였을까요? 개인적으로 생각했을 때 두 가지 문제가 있었다고 생각합니다. 먼저 강좌를 쓰는 일은 엄청난 끈기가 필요한 작업 입니다. 왜냐하면 자신이 완벽히 알고 있지 않는 한 남한테 가르쳐 주는 일은 매우 어려운 일이기 때문이지요. 예를 들면 포인터 하나를 가르치려고 해도, '포인터가 왜 필요한지' 부터 시작해서 '포인터의 타입은 왜 있는 것인지', 등등 모든 내용을 꿰뚤고 있어야 합니다. 그 만큼 가르치는 것은 엄청난 일이지요. 더군다나 얼굴 보고 맞대고 설명 하는 것도 힘든데 인터넷 상에서 글 만드로 이야기 할려니 얼마나 힘들겠습니까.

이를 이겨내더라도 문제가 한 가지 더 있습니다. 바로 읽는이와의 '소통' 이 불가능 하다라는 점 입니다. 아무리 가르쳐 주는 사람이 훌륭하다고 해도 읽는 사람의 모든 부분을 이해시켜 줄 수 없는 것이 아닙니다. 한 마디로 한개의 강좌로 독자의 가려운 곳을 정확하게 긁어줄 수 없는 셈이지요. 이를 위해서는 확실한 '애프터 서비스' 가 필요한데 이것이 바로 독자와 '댓글' 을 통해 소통하는 것이였습니다. 제 강좌에서 가장 강조 했던 부분이 바로 이 부분이였습니다. 강좌에서 궁금한 점이나 이해가 안가는 점이 있다면 무조건 '댓글을 남겨라' 이지요. 이렇게 댓글을 남겨서 이를 해결해 주는 방법을 통해서 저는 제 글을 읽는 여러분 모두와 확실하게 소통을 할 수 있었다고 생각합니다. 바로 이 것이 1 달에 강좌를 평균적으로 1 편 씩만을 써도 끝까지 완결할 수 있는 방법이지요 :)

아무튼 이제 여러분은 'C 언어' 라는 하나의 산을 정ㅋ벅ㅋ 하셨습니다.

그럼 여러분은 이제 무얼 해야 될까요?

일단 여러가지를 하실 수 있습니다. 만일 C 언어를 다른 곳에서 이미 배우시고 제 강좌를 '복습' 차원에서 읽으신 분들이라면 제 강좌를 다시 볼 필요가 없겠지요. 하지만 C 언어를 제 강좌를 통해 처음 접했던 분들이라면 복습이 최고라고 말씀드리고 싶습니다. 물론 여기서 복습이란 말은 다시 꼼꼼히 정독 하라는 것이 아니라 대충 필요한 강좌만 다시 보는게 좋을 것이라는 거지요.

아래는 저의 전체 강좌 리스트 입니다.

  1. 2009/04/16 씹어먹는 C 언어 - <1. C 언어가 뭐야?>

  2. 2009/04/17 씹어먹는 C 언어 - <2 - 1. C 언어 본격 맛보기>

  3. 2009/09/24 씹어먹는 C 언어 - <2 - 2. 주석(Comment)에 대한 이해>

  4. 2009/10/12 씹어먹는 C 언어 - <2 - 3. 수를 표현하는 방법(기수법)>

  5. 2009/04/22 씹어먹는 C 언어 - <3. 변수가 뭐지? >

  6. 2009/04/24 씹어먹는 C 언어 - <4. 계산하리 >

  7. 2009/04/27 씹어먹는 C 언어 - <5. 문자 입력 받기>

  8. 2009/04/28 씹어먹는 C 언어 - <6. 만약에...(if 문)>

  9. 2009/08/06 씹어먹는 C 언어 - <7. 뱅글 뱅글 (for, while) >

    10. 2009/08/06 씹어먹는 C 언어 - <8. 우분투 리눅스에서 C 프로그래밍 하기>

    11. 2009/08/15 씹어먹는 C 언어 - <9. 만약에... 2탄 (switch 문)>

    12. 2009/08/15 씹어먹는 C 언어 - <10. 연예인 캐스팅(?) (C 언어에서의 형 변환)>

    13. 2009/11/14 씹어먹는 C 언어 - <11 - 1. C 언어의 아파트 (배열), 상수>

    14. 2009/10/29 씹어먹는 C 언어 - <11 - 2. C 언어의 아파트2 (고차원의 배열)>

    15. 2009/11/09 씹어먹는 C 언어 - <12 - 1. 포인터는 영희이다! (포인터)>

    16. 2009/11/14 씹어먹는 C 언어 - <12 - 2. 포인터는 영희이다! (포인터)>

    17. 2009/11/26 씹어먹는 C 언어 - <12 - 3. 포인터는 영희이다! (포인터)>

    18. 2009/12/14 씹어먹는 C 언어 - <13 - 1. 마술 상자 함수(function)>

    19. 2009/12/19 씹어먹는 C 언어 - <13 - 2. 마술 상자 함수 2 (function)>

    20. 2009/12/22 씹어먹는 C 언어 - <13 - 3. 마술 상자 함수 3 (function)>

    21. 2009/12/27 씹어먹는 C 언어 - <13 - 4. 마술 상자 함수 (생각해볼 문제에 대한 아이디어)>

    22. 2009/12/29 씹어먹는 C 언어 - <14. 컴퓨터의 머리로 따라가보자 - 디버깅(debugging)>

    23. 2009/12/29 씹어먹는 C 언어 - <15 - 1. 일로와봐, 문자열(string)>

    24. 2010/01/25 씹어먹는 C 언어 - <15 - 2. 일로와봐, 문자열(string) - 버퍼에 관한 이해>

    25. 2010/02/01 씹어먹는 C 언어 - <15 - 3. 일로와봐, 문자열(string) - 문자열 지지고 볶기/리터럴>

    26. 2010/02/08 씹어먹는 C 언어 - <15 - 4. 일로와봐, 문자열(string) - 도서 관리 프로젝트>

    27. 2010/02/14 씹어먹는 C 언어 - <16 - 1. 모아 모아 구조체(struct)>

    28. 2010/04/11 씹어먹는 C 언어 - <16 - 2. 모아 모아 구조체(struct) - 구조체 인자로 가진 함수>

    29. 2010/06/13 씹어먹는 C 언어 - <16 - 3. 구조체와 친구들(공용체(union), 열거형(enum))>

  10. 2010/06/19 씹어먹는 C 언어 - <17. 변수의 생존 조건 및 데이터 세그먼트의 구조>

  11. 2010/07/16 씹어먹는 C 언어 - <18 - 1. 파일 뽀개기 (헤더파일과 #include) >

  12. 2010/07/20 씹어먹는 C 언어 - <18 - 2. 파일 뽀개기 (# 친구들, 라이브러리)>

  13. 2010/08/02 씹어먹는 C 언어 - <19. main 함수의 인자, 텅 빈 void 형>

  14. 2010/08/03 씹어먹는 C 언어 - <20 - 1. 동동동 메모리 동적할당(Dynamic Memory Allocation)>

  15. 2010/09/13 씹어먹는 C 언어 - <20 - 2. 메모리 동적할당 + 메모리 갖고 놀기>

  16. 2010/11/21 씹어먹는 C 언어 - <21. 매크로 함수, 인라인 함수>

  17. 2010/12/25 씹어먹는 C 언어 - <22. C 언어의 잡다한 키워드들 (typedef, volatile, #pragma)>

  18. 2010/12/28 씹어먹는 C 언어 - <23 - 1. 파일 하고 이야기 하기 (파일 입출력의 기본적 이해)>

  19. 2011/01/10 씹어먹는 C 언어 - <23 - 2. 파일 하고 이야기 하기 (파일 입출력)>

  20. 2011/01/17 씹어먹는 C 언어 - <23 - 3. 파일 하고 이야기 하기 (파일 입출력 - 마무리)>

  21. 2011/01/18 씹어먹는 C 언어 - <24. 더 빠르게 실행되는 코드를 위하여 (C 코드 최적화)>

위 많은 강좌들 중에서 여러분들이 한 번 더 보면 좋을 것이라 생각되는 강좌들은

이 9 개의 강좌들 입니다. 왜냐하면 위 9 개의 강좌들에서는 여러분이 다른 곳에서 접하기 쉽지 않은 내용들이 많이 들어가 있기 때문에 제 강좌를 졸업 하기 전에 다시 한 번 읽어 두는 것이 많이 도움이 될 듯 합니다. 또한 C 언어를 보다 잘하기 위해서는 여러가지 표준 라이브러리 함수들과 친해지는 것이 중요한데, 제 블로그의 오른쪽 카테고리에 보면 C 언어 레퍼런스 라는 부분이 있습니다. 각 카테고리에 들어가셔서 나오는 여러가지 함수들과 친숙해 지는 것도 좋을 법 합니다.

자 그럼 위 강좌들도 다 읽고 C 언어로 왠만한 프로그램은 다 만들 수 있게 되었다면 어떻게 할까요. 그럼 이제 여러분들에게는 엄청나게 많은 선택권이 주어집니다. 일단 많은 사람들의 경우 다른 언어를 한 가지씩 더 배우게 됩니다. 대부분 C++ 아니면 Java 와 같은 객체 지향 언어(Object Oriented Programming Language) 를 배우거나 파이썬(Python) 과 같은 인터프리팅 형식의 언어들을 배울 수 도 있습니다.

저는 개인적으로 C++ 을 먼저 배우기를 추천합니다 :)

최근 들어서 아이폰 개발이나 안드로이드 개발에 붐이 일면서 Objective-C (아이폰), Java(안드로이드) 언어들을 배우는 사람들도 늘고 있습니다. 물론 이들을 배우는 것도 좋지만 개인적으로 생각해 볼 때 아무래도 C 를 배웠다면 'C 의 거의 대부분의 문법 요소들을 받아들인' C++ 을 배우는 것이 더 좋을 것 같네요.

그래서 저는 씹어먹는 C 언어를 끝내고 '씹어먹는 C++' 을 연재할 생각입니다. 더 다른 강좌 이름이 생각나신다면 댓글로 달아주시고요 ㅎㅎ 여러분들도 C 언어를 다 배웠다고 제 사이트를 잊지 말고 저의 두 번째 작품인 씹어먹는 C++ 에 관심을 가져 주시기 바랍니다.

저의 씹어먹는 C 언어 강좌를 TEX 형식 파일로 만들어주실 분 안계시나요 ??

씹어먹는 C 언어의 PDF 버전이 드디어 나왔습니다. 이제 모바일에서도 편하게 보실 수 있습니다. 여기를 클릭해서 확인하세요!

댓글이 182 개 있습니다!
프로필 사진 없음
강좌에 관련 없이 궁금한 내용은 여기를 사용해주세요

    댓글을 불러오는 중입니다..