C언어 다음은 뭘 공부하는게 좋을까요?

elminster의 이미지

노세노세 대학생 1학년이 오늘에서야 C언어 책을 다 봤습니다.

teach yourself C라는 건데요 제가 게을러서 21일만에 끝낸다는걸 50일은 걸려서 끝내버렸네요...^^;;

그런데 C의 기초문법을 배우고 나니 남은건 절망뿐이군요

오픈 소스 하나 제대로 분석해서 멋대로 뜯어고쳐보는게 C언어 처음배울때 생각이었거든요 그런데 뭐 하나 분석해볼만한게 없네요...

API를 배워볼까도 생각했는데 역시 처음엔 리눅스 프로그래밍부터 해보고 싶어서 말이지요

그래서 말입니다만 실제로 프로그램을 짜보기 위해선 어떤 공부를 해보는게 좋을까요?

가임을 분석해보고 싶어서 네트워크에 대해서 공부해볼까 하는데 여러분의 생각은 어떠세요?

undeadri의 이미지

제가 생각하기에 C언어 문법을 대강 익혔으면
그 다음에는 컴퓨터 구조 관련된 책을 보는게 좋을것 같네요.

제가 봤던 책중에서 컴퓨터 구조 관련된 책은
1. computer systems : a programmer's perspective 하고
2. computer organization & design이라는 책이었는데

다루는 내용은 어느정도 비슷합니다만 c를 더 깊게 공부한다는 측면으로 볼때는
1번이 훨씬 좋았습니다. 2번은 말 그대로 컴퓨터 구조에 대한 책이구요, kbench같은데 있는 하드웨어 칼럼들의 내용과도 어느정도 관련이 있어요

1번 책 얘기를 좀 할게요.
이 책에서는 일단 어셈블리어를 다뤄요. 주로 c코드가 어떻게 어셈으로 바뀌는지 다룹니다. 그런거 공부하다보면 어셈도 어셈이지만 오히려 C에대한 개념을 보다 확실하게 잡을수 있습니다. 함수 호출 구조라던가 포인터라던가 함수포인터라던가 struct라던가 union같은거 말이죠.

이 책에서는 링킹도 좀 다루고 있어요. 제가 처음에 c를 공부했을땐 헤더파일이라던가 소스를 여러개 써서 프로그램을 작성해야 된다던가 extern이라던가 이런내용은 잘 몰랐었는데 저 책에서 링킹에 대해 공부하다보니 이런것에 대한 개념을 잡을수 있었습니다.

그리고 malloc같은것도 c를 처음 공부할땐 잘 몰랐는데 이 책에서 버추얼 메모리에 대해 공부하면서 malloc, free에 대한 개념도 잡을수 있었어요

그 밖에 fork라던거 thread에 대한 내용도 다루고 있어요. 이쪽 내용도 역시 c를 처음 공부할때는 전혀 모르고 있었던 내용인데 이 책으로 공부하면서 개념을 잡게 되었구요. 뭐.. thread에 대해서는 자바에서 스레드 프로그래밍을 하면서 좀더 알게 되었지만 말입니다 :?

그 밖에 이 책에서 네트워크나 IO쪽 프로그래밍도 다루긴 합니다만 그 쪽에 대해서 제가 할 얘기는 없네요.. 네트워크쪽을 공부하려면 제대로 된 네트워크책을 보는게 좋을것 같습니다. 이 책이 제대로되지 않았다는건 아니지만... 네트워크에 대해서는 대략적으로 다루거든요.

쓰다보니 왠지 책광고같기는 합니다만..

아무튼 c를 배우고 바로 다음에 읽기로는 저 책이 괜찮은것 같아서 글을 썼습니다. 저 책에서 요구하는 수준도 높지 않거든요. if, for, while등을 사용할수 있고 함수를 작성할수 있는정도면 됩니다.

아 근데;;
대학교 1학년이시라면 그냥 기다리기만 해도 제가 위에 쓴 내용을 배울거에요
컴퓨터 관련학과라면 말이죠. 저는 컴과 다니는데 저 위의 두 책은 수업 교재였거든요. 1번책은 2학년2학기때, 2번책은 3학년1학기때 다루었던 수업교재였습니다.

컴퓨터 관련학과 다니시면 뭐 따로 공부안하고 그냥 기다리시기만 해도 위에 제가 쓴 내용말고도 c문법을 대강 공부한다음에 배워야될것을 배울수 있습니다.
아니라면 다음학기에 컴과 수업을 들어보는것도 괜찮을듯 싶네요.

그리고 어디선가 이런글도 본적이 있네요
Teach Yourself Programming in 10 years
http://www.norvig.com/21-days.html
c를 21일만에 못끝내는것이 자연스럽죠..

jachin의 이미지

음. 전 자료구조를 한 번 해보셔야 할 듯 한데요.

메모리 사용에 대해서도 조금 더 유연하게 하시고,

파일 처리도 문제없이 하실 수 있게 된다면,

그 다음은 원하시는 분야의 프로그래밍으로 빠지셔도 괜찮을 듯 합니다.

ㅡ,.ㅡ;;의 이미지

책을봤으면 짜보기도 해야지요..


----------------------------------------------------------------------------

luscent의 이미지

자료구조론.. 필독 자료구조론을 이해한후.

다시 파일처리.. 파일처리 이해가 된다면

Network프로그래밍을 시작 즉 unix계열의 device I/O를 이해하고

다시 C책을 봅니다.

이번엔 배열부터.. 쭈욱 봅니다.

마지막으로 함수포인터에 대해 이해한후.. 커널 소스를 한번 유심히 봅니다.

구조체의 응용, 포인터 도배에 대해 한번 째려보면 될거 같은데요?

이제 귀찮아짐을 느끼게 됩니다.

script를 배웁니다. awk를 배웁니다.

shell programming의 도사가 되어. 다시 tarball의 아무거나. 압축을

풀어 Configure스크립트를 이해하고.. 다시 반복합니다.

할 건 끝이 없습니다. 이렇게 하다가 슬럼프가 오면..

만화책도 보고 소설책도 열심히 보고 영화도 보고, 여자친구도 사귀거나

만납니다.

다시 반복합니다.

alsong의 이미지

linked list 하나 짜보세요....

addlinkedlist
dellinkedlist
insertlinkedlist

pointer개념을 숙지하는데 도움이 될거예요. :)

그나저나 백수 언제 탈출하냐... ㅡㅡ; 배고파라.

madhatter의 이미지

실제로 프로그램을 짜보기 위해선 실제로 짜보는 게 제일 좋습니다.
가령 어떤 결과를 내기 위한 오픈 소스가 있다고 하면 처음부터 뒤집어서 살펴보지 말고 자기 힘으로 구현해본 다음 비교를 한다던지 하면 금방 부족한 점을 채울 수 있을 겁니다.
반복하다 보면 무엇이 부족한지 알게 되고 그러면 자연스럽게 알고리즘, 자료 구조, 컴퓨터 구조 등에 손이 가게 됩니다.

k2hyun의 이미지

자료구조 한표!!

단, 공부하면서 C로 직접 구현해 보실것!!

더 이상 없다.

이한길의 이미지

저는 짜보기에 한표입니다..
왜냐면.... 제가 그렇게 배웠거든요...

저는 게시판을 추천합니다.
아마 이거 만들려면 알고리즘하고 자료구조 파일처리가 절로 공부가 될꺼에요..
물론 만들고자하는 동기가 있어야 어려움을 이겨낼 수 있지요..

----
먼저 알게 된 것을 알려주는 것은 즐거운 일이다!
http://hangulee.springnote.com
http://hangulee.egloos.com

initiative의 이미지

자료구조 및 알고리즘.

이거 특히 C나 C++로.

제가 초기에 못하여 지금도 고생이랍니다.

With Everlasting Passion about new Tech. and Information!

elminster의 이미지

친절한 답변 감사들입니다.
자료구조를 한번 공부해보는게 좋겟네요

어떤 책이 좋을까요?

검색해보니 C로 배우는 알고리즘 이 좋다는 글이 있던데 어떻게 생각하세요?

나를 봐, 나를 봐, 내 안의 괴물이 이렇게 크게 자랐어

ashuaria의 이미지

짜보기 한표.

<FONT face="Times New Roman" size=4>שלום צליכם מאת ארוננו ישוצ המשיח</FONT>