프로그래밍 공부 어떤 것을 어떻게 공부해야하나요?

bigsun의 이미지

안녕하세요.
저는 컴공 4학년생입니다.
이제 한 학기만 있으면 졸업이고 취업 준비를 해야될 것 같습니다.
그런데, 프로그래밍 실력이 부족한 것 같습니다.

제 프로그래밍 실력은...

학기 중에 수업시간에 배운 것은 C, C++, Java이고,
큰 프로젝트는 해보지 않았으니
C언어의 기본은 어느정도 갖추고 있어서 리포트 같은 것은 빠지지 않고 제출한 편입니다.
그런데 수업시간에 하라는 것만 해봤지, 직접 새로운 프로그램을 짜보지는 않았습니다.
말그대로 수업 시간에 가르쳐주는 것을 배웠을 뿐,
언어를 이용해 새로운 문제를 해결하는 능력은 부족합니다.

이번 겨울 방학 때 나름대로 프로그래밍 공부를 열심히 해서
취업 준비도 하면서, 프로그래밍 실력을 늘리고 싶습니다.

제가 생각하고 있는 학습 방법은
1.객체지향프로그래밍에 약하기 때문에, C++기초플러스란 책을 다시 복습하는 것
2.윈도우 프로그래밍을 해보지 않았기 때문에, API와 MFC를 공부하는 것
3.프로젝트를 하나 선정해서 직접 해보는 것.(혼자서 어떤 프로젝트를 해야하나?)
4.이론적인 알고리즘 도서를 학습하는 것
이 정도로 생각하고 있습니다.

경험이 많으신 선배나 동료분들께 질문드립니다.
현재 졸업과 취업을 앞두고, 프로그래밍 실력을 늘리기 위해서
겨울 방학 기간 동안에 어떤 것을 어떻게 공부하면
최선의 방법이 될지 조언해주시면 감사하겠습니다.
그리고 관련된 추천 서적이 있으면 알려주십시오.

이번 겨울 방학 때, 제 전공 분야의 실력을 늘리고 싶습니다.

M.W.Park의 이미지

lisp이나 scheme을 진지하게 공부해본 적이 없다면 꼭 한번 해보시길 권합니다.

-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

bigsun의 이미지

lisp이나 scheme는 프로그래밍 언어론 시간의 말미에 조금 들었던 언어들인데,
조금 난해할 것 같은데요...
ML이란 functional language는 조금 다뤄봤는데요.

gamdora의 이미지

전산과 전혀 상관이 없는 사람이라면 모를까

컴공과 4학년이시라면 Lisp나 Scheme을 다루는 데

별 문제가 없을 거라고 생각합니다.

PL을 들으셨다면 더욱 그렇죠.

나는오리의 이미지

프로필 이미지 학교의 과제를 혼자서 따라갈 정도면 기본 문법은 떼셨을 것 같으니

C++ 기초플러스 같은 기초책은 안보셔도 됩니다.

그냥 가끔 필요한게 있다면 찾아서 보시고요.

윈도우 프로그래밍은 winapi책 한권사서 보세요.

그리고 지금부터는 결과물을 만드는데 신경쓰셔야 할 것 같습니다.

윈도 어플에서 보여주는쪽에 관심있으시다면 게임같은거 하나 만들어보시고요.

통신쪽이라면 간단한 시리얼/소켓 통신 프로그램 만들어보세요.

두개 합쳐서 네트워크 대전되는 게임하나 만드시면 되겠네요 :)

프로젝트도 관심있는 쪽으로 선택해서 하나하나 작은 것부터 해보세요.

bigsun의 이미지

"두개 합쳐서 네트워크 대전되는 게임하나 만드시면 되겠네요"
게임하나 어떻게 만들어보지 않은 저로서는 어렵게만 생각되네요.
직접 해보는것이 중요하겠죠.

sharefeel의 이미지

지금은 고인이 되신 Richard Stevens 의 저서가 기본이지요.

Advanced Programming in the Unix Environment (apue)
Unix Network Programming (unp) volume 1

다른 책들도 있지만 위의 두권을 추천드려요.
그리고 모두 하드커버의 Prentice Hall이라서 책장에 두시면 포스 좀 발휘해줍니다.
전 읽지도 않을거 알면서 다른 책도 다 샀습니다..;;

그리고 많은 분들이 공감하시겠지만..
절대로!!! 번역서 사지 마세요!!!
읽는데 오래 걸려도 책값이 비싸도 무조건 원서 사세요.
저처럼 돈 낭비하지 마시구요..

===============
Vas Rel Por

===============
Vas Rel Por

bigsun의 이미지

포스?

유닉스 프로그램이네요... 많고 많은 좋은 책 들 중 이것도 좋은 책인 것은 같은데...

semmal의 이미지

정석으로 살펴보자면

1. 프로그래밍 기초 : How To Design Programs
2. 프로그래밍 개념 : Structure and Interpretation of Computer Programs
3. GUI 프로그래밍 : GTK 또는 QT
4. 시스템 프로그래밍 : Advanced Programming in the Unix Environment
5. 네트웍 프로그래밍 : UNIX Network Programming
6. 알고리즘 : The Art of Computer Programming

1번을 제외하고 그 다음에 소개한 다섯가지 책만 다 읽으면 최소한 중수는 되지 아닐까 싶네요. 그냥 "읽기만"해도 말이죠.

3번의 경우 MFC를 보는 것은 현재 GUI를 공부하는 입장이라면 추천하고 싶지 않습니다. 잘못된 개념을 익히는데다가 노가다로 시간낭비할 가능성이 농후합니다. 밥벌어 먹는 목적이라고 하더라도 차라리 Delphi, C#이나 Java SWT가 더 좋다고 봅니다.

6번의 경우 다른 알고리즘 책을 보는 것이 더 재미는 있을 것 같습니다. 학교에서 추천하는 책이 기본적으로는 가장 무난하지 않을까 싶네요.

2,4,5번은 다른 대안이라고 할 게 별로 없네요.
------------------------------
How many legs does a dog have?

------------------------------
How many legs does a dog have?

bigsun의 이미지

우선 답변 감사드립니다.

그런데 MFC보다는 Delphi, C#이나 Java SWT이 더 좋다고 하셨는데요,

제가 귀로 들은 것이 MFC 밖에 없어서 우선 MFC공부한다고 했는데요,
Delphi, C#이나 Java SWT 이런 것이 더 좋다는 말씀이 무슨 뜻인가요?
어떻게 어느 것이 더 좋고,
어떤 것을 배우는 게 좋고, 관련된 추천 책이 있으면 알려주시면 감사하겠습니다.

semmal의 이미지

GTK나 QT를 추천해드린 이유는 제가 본 바로는 이것만큼 훌륭한 구조를 가지면서 널리 쓰이는 라이브러리를 본 적이 없어서 입니다. 물론 개념상으로는 Squeak같은 Smalltalk를 쓰는 것이 정말 정석이겠지만, 현재 쓰는 기술과는 차이가 많이 나므로, GTK나 QT가 적당하다 생각합니다. 윈도우즈라면 QT가 더 좋겠네요.

MFC는 기본적인 MVC도 지원하지 않고, 구조는 엉망이고, 코드는 지저분한데다, 생산성이 떨어져서, 소프트웨어 자체에 별 관심이 없는 회사가 아니면 잘 쓰지도 않습니다. 회사입장에서도 일하는 사원입장에서도 그리 좋은 툴이 아니라 생각합니다. 그나마 다른 툴에 비해서 좋은 점은 다른 툴보다는 동작하는 것이 빠르다는 정도일 겁니다.

Delphi는 요즘은 좀 안쓰이는 추세지만 그래도 MFC보다는 생산성이 좋고 깔끔합니다. C#이나 Java Swing/SWT는 서로 약간 길이 다르기는 하지만 생산성은 MFC보다 훨씬 높습니다. 구조도 나름대로 훌륭하구요. 앞으로 발전할 여지도 많습니다.

GUI 프로그래밍은 프로그램을 그냥 예쁘게 꾸미는 것이 아니라, 사용자와 상호소통을 위한 인터페이스를 프로그래밍 하는 분야입니다. GUI를 만져보신 적이 없다면, GTK나 QT를 만져서 일단 GUI의 흐름이나 개념이나마 알고 넘어가야 한다 생각합니다.

개념이 잡혀있다면, MFC가 얼마나 엉터리인지 알 수 있게되고, C#이나 Java Swing/SWT 등을 쓰더라도 올바르게 쓰는 방법을 알게되리라 생각합니다. 그리고 스스로의 미래를 생각하더라도 MS에서도 포기한 MFC에 매달리기보다는, 현재 많이 쓰고 있고 발전할 여지가 많은 C#이나 Java Swing/SWT를 하는 것이 더 좋지 않을까하고 말씀드린겁니다.

물론 앞으로 들어가고 싶은 회사가 MFC를 한다면 당연히 배우기는 배워야겠죠. 하지만 개념을 제대로 익히고 들어가는 것이, 설령 나중에 MFC를 쓰게되더라도 잘못된 방법으로 GUI를 프로그래밍을 하게되는 사태를 방지할 수 있을겁니다.
------------------------------
How many legs does a dog have?

------------------------------
How many legs does a dog have?

bigsun의 이미지

아, 그런거군요.
GTK, QT...

freestyle의 이미지

한 학기...라고 해도 이것저것 빼면 4~5개월 정도겠죠.
책만 공부하는 것보다 프로젝트를 해보시는 것이 짧은 시간을
효율적으로 사용하는 방법일 것입니다.

윈도우 응용쪽은 안 해보셨으니 콘솔 프로그램을 작성해 보세요..

하드웨어나 알고리즘이나 네트워킹 등 비교적 많이 알고 계시는
분야를 선택해서 프로젝트 하시면 좋으실 듯 합니다.

그 외 특별히 하는 것이 없다면
평소 관심이 있었던 분야를 선택해서 프로젝트를 해보세요.

참신한 프로젝트를 위해서는 교수님께 상담을 해보는 것이 좋을 것이고,
그렇지 않다면 그냥 남들이 가장 많이 하는 것들을 골라서 직접 하는 것에
의의를 두는 것이 좋을 것입니다.

----------------------------------------------------------------------------------------
Don't Feed the Trolls!
----------------------------------------------------------------------------------------

bigsun의 이미지

프로젝트, 명심하겠습니다.

cppig1995의 이미지

Microsoft Windows* 환경에서의 GUI 프로그래밍에 관심이 많으시다면,
1. .NET 3.0 이상에서의 WPF(Windows Presentation Foundation)
2. Silverlight(WPF/e)를 이용한 웹 프로그래밍
3. ATL 기반의 라이브러리인 WTL(Windows Template Library)
중의 하나를 익혀보세요. WTL은 MFC보다 잘 짜인 라이브러리라서 말씀드려보는거구요.
DevDays 같은 행사를 찾아보시면 더 좋은 정보를 얻으실 수 있구요.
MSDN PopCon 같은 것도 도움이 되실 것 같습니다.



revision2008, formally known as cppig1995

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

shint의 이미지

취업이 우선이라면 프로젝트를 성공하는게 중요하다고 생각됩니다.
배움이 우선이라면 기본에 충실하는게 좋겠다고 생각됩니다.

뭐가 어떻게 하면 좋다는건 많지만
정작 내가 뭐가 필요하고 내가 뭘하고 싶은지를 알아야
내가 뭘 해야할지를 알게 되니까요

충분히 고민하고 원하는곳을 찾으신후에 그곳에 갈 능력을 키우시는게 좋겠다는 생각입니다.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

댓글 달기

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