여러 C 고수님들 혹은 개발자 분들 조언 부탁드립니다.

sevp2027의 이미지

안녕하세요.
현재 전자과에 재학중인 대학생입니다.
전자과에서 프로그래밍을 해야 할때마다 google 검색을 통하면 항상 상위에 올라오는 KLDP에서 많은 도움을 받았으며 이번에 이렇게 글을 써봅니다.
현재 졸업을 한학기 남겨둔 상태에서 이번 학기에 휴학을 하였습니다.
졸업후 대학원 진학을 고려중이라 대학원 가기전에 시간을 가지고 싶어서요 ㅎ

전자과에 재학중이다 보니 전산과에 비해서 프로그래밍을 많이 하지는 않지만 이런 저런 기회로 프로그래밍을 접하게 되었습니다.
입학후 필수로 들어야 하는 JAVA를 비롯해서 전자과이다 보니 C를 이용하여 8051등을 사용해 보기도 하고 ATMEGA128 그리고 임베디드시스템(PXA255)까지
간단하게 다루어만 보았습니다. 여기에 추가적으로 일부 하드웨어 구동을 위해서 윈도우 프로그램밍이 필요하여 MFC를 이용하여 흉내를 내보기도 하였습니다.

하지만 프로그래밍이란게 하루 아침에 이루어 지지 않듯이 그 깊이에도 많은 차이를 보이는것 같습니다.
간단히 if, for, while등을 쓰는, 쉽게 말해서 어느 언어에서나 가장 기본적으로 하는 프로그래밍으로 학부생활은 마칠수 있었습니다.뭐랄까 프로그래밍을 수박 겉 핥기 식으로 배웠다고나 할까요. 아직도 C에서 포인터 부분은 막연해보이고 syscall 부분도 어렵기만 하네요.

제가 진학하고자 하는 대학원은 모든 연구를 리눅스 환경에서 작업을 하며 거의 C를 이용하여 연구를 합니다. 대학원을 진학하기 전에 C를 보다 심도 있게 공부를 해야겠다는 생각이 듭니다. 그래서 이리 저리 웹서핑을 해보니 주로 전산과에서 C를 이용하여 System Programming 혹은 OS 쪽을 공부를 하시던데 이런 분야를 독학으로 해보는게 좋을지 혹은 C에 대해서 제가 보다 참고할만한 좋은 사이트를 아시면 추천해 주시면 감사하겠습니다.

현재 Cygwin을 설치하여서 대부분의 C 공부는 Cygwin 환경에서 해볼려고 합니다.

공부를 열심히 해야 좋은 질문을 한다고 제가 쓴 질문이 다소 엉성하고 부족할수 있다고 생각됩니다만 우문현답 기대하겠습니다.

kgcrom의 이미지

http://joinc.co.kr/

밑에 보시면 초보자용 도움 페이지들이라는 공간이 있습니다.

거기에 나온 링크들을 공부하시면 좋을꺼라 생각합니다.

화이팅하세요~~!!

흘러가고있는 지금 이 시간에 충실하자.

sunyzero의 이미지

운영체제와 관련된 분야는 독학하는 것이 매우 위험합니다.

그 이유로는 인터넷 문서중에 내용이 좀 심오한 것들은 이미 OS를 배운 것을 전제하고
풀어나가는 경향이 있기 때문에 OS를 배우지 않은 사람에게는 수박 겉햟기식으로 잘못되고
단편적인 지식으로 남을 수 있기 때문입니다.

따라서 가능하다면 학교에 전산과 수업중에 운영체제 수업을 꼭 청강이라도 해보시기 바랍니다.

========================================
* 부분이 전체를 대변하는 하나의 속성일때 진리이다.
영속적이지 못한 것은 전체가 될 수 없다.

========================================
* The truth will set you free.

yielding의 이미지

C를 잘하기 위해서 C를 계속 공부하는 것은 그리 바람직하지 않습니다. 급한 마음에 열심히만 한다고 단시간에 실력이 느는 것도 아니고요. 지금 sevp2027님의 마음속에 있는 본질적인 두려움은 '난 내가 원하는 만큼 프로그래밍을 잘 못한다'가 아닌가요?

구양수의 3다 (다독, 다작, 다상량)이 프로그래밍에도 해당하는 것 같습니다. 잘 짠 프로그램을 읽는 것, 대가의 글과 그 행간의 생각을 읽는것, 실제로 나한테 필요한 프로그램을 매일 짜보는것, 이렇게 하다보면 어느새 실력이 늘게되고 굳이 C의 깊이 숨어있는 복잡한 문법을 잘 몰라도 깔끔하고 우하게 문제를 해결하는 능력이 생길거에요.
(다시 말씀드리지만, C책은 얇은 것 한권(화이트북)이면 충분합니다.)
그리고 좋은 스승을 한분 두시고 혼자 풀어본 문제를 스승과 함께 다시 풀어보는 것도 좋은 학습방법이 됩니다. 풀어본 문제를 스승과 다시 짝 프로그래밍 하면 스승의 실력을 다 흡수할 수 있을거에요. (스승도 sevp2027님께 베우게 될거고) 아님 짧은 문제를 푸시고 여기 kldp에 함 올려보세요. 구름 때 같이 많은 은둔 고수의 좋은 코드를 볼 수 있을겁니다.

cygwin 환경도 참 좋지만 데스크탑을 리눅스나 경제적으로 여유가 되시면 매킨토시 환경을 써보시는 것도 좋은 시도가 될듯합니다. (재규어부터 스노우 레퍼드 까지 mac은 내부가 유닉스죠)유닉스 커뮤니티가 C로 만는 수많은 개발 도구, 환경들에 익숙해지는게 프로그래밍을 잘 하는 것과 상관관계가 있어보입니다.

사이트 하나를 추천하자면 에자일 컨설팅의 http://agile.egloo.com의 글을 처음부터 오늘까지 읽어 읽어보시는 걸 추천합니다.

Life rushes on, we are distracted

Life rushes on, we are distracted

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.