c++ 중급으로 가기 위해...

운형의 이미지

C++ 중급으로 도약하기 위해 공부해야할 것이 무엇일까요.?

중급이 애매한가.. -_-

C++ 프라임 플러스를 일단 봤습니다. 결국 문법 띠었다는 이야기겠죠.
MFC도 쪼금 합니다.
C는 좀더 합니다.(표현이.. )

유닉스 환경에서 프로그램을 하고 있습니다. 주로 하는 것이 네트워크 프로그램 쪽입니다. 프로세스, 쓰레드를 사용해서 프로그램을 작성합니다.

C로 진행을 하다보면 전에 공부했던 C++을 사용하면 더 낳지 않을까 싶은 생각이 많이 드는데, 일반적인 문법만 공부했던지라 지금 C로 진행하는 것을 C++로 만들기 위해 무엇이 더 필요한지 잘 모르겠기에 글을 올립니다.

책, 관련 사이트... 추천 부탁드릴께요.

윽.. 또.. 마지막에 :wq를 찍는구나..

wafe의 이미지

입문서이기는 하지만 C++로 문제를 해결하는 방법을 배우는데 아주 좋다고
생각되는 Accelerated C++을 추천합니다. 입문서는 입문서인데 C++을 좀 아는
사람이 보아도 얻을 것이 많은 책입니다.

Heejoon Lee

winner의 이미지

일단 Accelerated C++ 는 저도 추천합니다.
C++ 로 Programming 을 한다는 것이 어떤 것인지 보여줍니다.

Scott Meyers 의 Effective C++, More Effective C++ 를 추천합니다.
C++ Primer Plus 에서도 마지막의 추천서적에 들어가죠.

Network Programming 을 하신다면 아마도 마지막에는 ACE 를 공부하게 되지 않을까 싶습니다.

관련서적으로는
C++ Network Programming Vol.1, Vol.2 가 번역되었고,
ACE Programmer's Guide 가 있는데

저는 C++ Network Programming 을 볼려다가 포기했었죠... -_-

들은 바에 의하면 C++ 로 thread, process 와 함께 사용되는 Network Programming 을 하는데 완성하는데에는 ACE 가 적절한 것 같습니다만 Design Pattern 이 마구 적용되는고로 Design Pattern 에 대해서 좀 공부하시고 공부하는 것이 좋을 것 같습니다.

ACE 는 Framework 로 거의 .NET, CORBA 수준의 middleware 라서 상당히 방대하죠.

C++ 로 Network Programming 을 하는데 견습정도의 수준을 바란다면 적절치 않을 수 있는데 사실 Network Programming 을 thread, process 과 함께 작업하는데 OS 에 종속되지 않는 것은 ACE 외에는 대안이 없지 않나 싶습니다.

전 예전에 숙제할려고 '한글'을 실행시키고는 무심코 # 을 쳤습니다.. -_-

운형의 이미지

소켓 프로그램을 하는데, OS에 종속 적이지 않을 수 있나요..??

일반적인 어플리 케이션 레벨에서의 프로그래밍은 TCP 나 UDP를 사용하는데... 일을 하다보면, 제경우는 그렇게 큰 비중을 차지 하진 못하는편입니다. 라우팅 관련된 부분을 주로 다뤄서 그런지 몰라도...

윈속에서 사용하는 API들이 리눅스의 것과 유사하지만 분명, 많은 차이를 가졌던 것으로 기억하는데요... 심지어 스레드를 자동으로 생성하던 select도 있었던것 같던데...

C++에 대한 도움 말은 두분께 감사드립니다. (__)

Do you think that's the air you are breathing now?

dudungsil의 이미지

"중급"이 딱 뭐다라고 정해지지 않아서 정석은 없을듯 하군요.

primer plus를 보셨어도 아직 문법의 완성을 논하기에는 많이 이른것 같네요. class가 뒤로 하는 일이 하도 많아서 그 뻘짓을 다 이해하기 위해서는 갈길이 좀 멉니다.

그를 위해서 위에분들도 추천하셨던 effective c++, more effective c++이 필요합니다. 근데 사실 이책이 좀 재미가 없어요. 바로 이것부터 보세요라고 말하기가 좀 그렇네요. 반드시 필요한 책이니 일단 구입을 하시고 좀 봐보세요. 볼만하다 싶으면 계속 보시고, 아니라면 다음걸 먼저 보시길 권합니다.

the C++ standard library: a tutorial and reference, 저자 이름이 Josuttis인가 그럴겁니다. 번역본도 있구요. 수많은 STL 책중 최고라고 생각합니다.

이제 기본 준비는 된거 같네요. 일을 하신다고 하셨으니 작업에 위의 내용을 조금씩 적용 시켜보세요. 기존의 코드를 조금씩 class로 바꿔보기도 하고 자료구조에 stl을 도입해보면서 직접 연습을 해보면 될겁니다. 책만 보기보다는 직접 만들어 보는게 더 나으니까요.

코드를 좀 만들어보시고 그다음에 마티 파울러의 "리펙토링"을 보셔야 할겁니다. C++로 씌여진 책은 아니지만 꼭 필요한 책이라고 생각하네요. 그리고 이쯤해서 그 유명한 GoF의 Disign Patterns을 한권쯤 가지고 있을 필요가 있습니다. 이 두권은 한번에 다 정독해야하는 책들은 아니니 필요한 부분들을 찾아서 보시면 될겁니다.

코드도 왠만큼 작성해봤고 필요한 기본 내용들도 다 익혔습니다. 이제 남들이 만든 코드가 궁금해지죠. 과연 내가 c++을 제대로 이용해서 프로그래밍을 하고 있는걸까 하는 의문이 들거든요. Applied C++을 빌려서 한번 보세요. 사실 필요는 없을것 같네요. 주변에 가진 사람이 한명쯤 있을거에요 :)

이쯤되면 어느정도의 수준일지는 모르겠지만, 뭐가 부족한지는 알게 될겁니다. 그때부터는 스스로 앞길을 헤쳐 나가야죠. pattern에도 시간을 투자해야하고, template에도 보다 많은 투자가 필요하겠죠.

험난한 c++의 바다를 슬기롭게 헤쳐나가시길 빌겠습니다.

ps. ACE가 필수 일것 같지는 않습니다. 네트웍을 하지 않는 사람이라면 유용하겠지만 네트웍 프로그램이 주인 사람에게는 그다지 도움이 되지 않는다고 생각합니다. 물론 그 방대한 소스에서 분명히 도움이 되는 부분이 있기는 하지만 너무나 범용적입니다. 대부분의 네트웍 프로그래머에게는 보다 가볍고 특정상황에 적합한 자신만의 코드가 필요합니다.

산넘어 산

albertyun의 이미지

accleated C++ 책 추천합니다..

여력이 되시면.. in-depth 씨리즈 전부다..

effectif C++시리즈 (more effective C++, effective stl..)

gof 의 디자인패턴

xp , 리팩토링 관련서적

그리고 뱐 아자씨..의 TCPL 은 꼭 읽으셔야 합니다.....

Think..

댓글 달기

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