프로그래밍 입문서로 적당한 책은?

Prentice의 이미지

== C ==
C for Yourself, Richard P. Halpern
번역서 제목: C 언어 프로그래밍, 조성환 박재삼 심재환 제갈장 함호종 공역

== Perl ==
Learning Perl

----

A Book on C, K&R2, 터보 C정복, Teach Yourself C in 21 Days를 모두 샀지만 배열과 포인터 arithmetic까지만 배우고 struct 사용에 대해 감을 못잡고 있습니다. 포인터는 그나마 C for Yourself 번역서를 배우고 익혔는데, 책이 꼼꼼하면서도 친절하다는 생각이 들어 마음에 들었습니다.

Learning Perl의 경우 Learning Python을 조금 보다가, 저자가 자꾸 Python 자랑만(?) 하는 것이 낯간지러워서 어쩔 수 없이(?) 보게 되었는데, 꼼꼼한 면에서는 조금 떨어지지만 내용이 탄탄하다는 생각에 마음에 들게 되었습니다.

----

마음에 드시는 프로그래밍 입문서로 어떤 책들이 있으세요..?

ssif의 이미지

저는 'c언어입문' 이란 책을 구입해서 보았습니다.총 3권으로 나누어진 책인데 그중 첫번째권만 구입해서 보았습니다.

학교 교제는 그 유명한(?)"알기쉽게 해설한 c(teach yourself c)" 였습니다.그리고 인터넷에 떠도는 여러 문서들을 보았습니다.
기억에 남는 문서가 있다면 '임의건님의 문서(터보 c 정복 일겁니다.)'였습니다.

작년엔 지금은 개정판이 나올 'c언어 펀더멘탈'을 구입해서 보았습니다.

이정도가 제가 추천해드리고 싶은 입문서입니다.

봄들판에서다

fairycat의 이미지

"논리야 놀자" 같은 논리 시리즈. 또는 "순서도 이렇게 만든다" 정도?

가이: 리여.. 확실히 너는 네지와는 다르다
록리: 위로라면 집어치세요..
가이: 위로같은게 아니다 ! 너는 네지와는 다르게 천재도 아니고 재능도 없다 하지만 너는 노력의 천재다..

- 나루토 <키시모토마사시>

htna의 이미지

제가 학부에 있던당시에...
"안녕하세요 터보 C"란 책이 있었죠...
정말 좋은책입니다.
지금생각해도, 입문서로는 이보다 훌륭한 책은 없을거라는 생각이 지배적이네요...
물론 그당시에 예제로 도스기반에 화면에 그림을 그리는 부분들이 있어서..
이건 지금은 실습을 못해보겠지만..

WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra

ed.netdiver의 이미지

임인건씨 아니었나 싶습니다만...가남사...
거의 borlandc library api 수준의 방대함...^^;;

--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

웃는 남자의 이미지

프로그래밍에 첨 접하는 친구들끼리 얘기하는 거 들었는 데..

프리렉강의가 알아듣기 쉽게 잘 설명해준다고 합니다.
책사면 무료온라인강의 수강 할 수 있고..

----------------------------------------
Nothing left after Nirvana.

ㅡ,.ㅡ;;의 이미지

htna wrote:
제가 학부에 있던당시에...
"안녕하세요 터보 C"란 책이 있었죠...
정말 좋은책입니다.
지금생각해도, 입문서로는 이보다 훌륭한 책은 없을거라는 생각이 지배적이네요...
물론 그당시에 예제로 도스기반에 화면에 그림을 그리는 부분들이 있어서..
이건 지금은 실습을 못해보겠지만..

맞습니다. 이책 입문서로서 정말 좋다고 생각합니다.
이책은 마치 소설책을보듯이 술술넘어가며 머리에
쏙쏙들어옵니다.ㅋㅋ


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

Fe.head의 이미지

국어책이나 일기장 :oops:

농담반 진담반 이구 책은 아니지만 PDL, NS차트가 어떨까 생각 됩니다.

1. 문제
+-+-+-+
|X| |X|
+-+-+-+
| |X| |
+-+-+-+
|X| |X|
+-+-+-+

3x3 배열에 X자 그리기를 PDL로 짜 보시요.

1. 무작정 PDL로

(0,0) 에 'X'를 넣는다.
(0,1) 에 ' '를 넣는다.
(0,2) 에 'X'를 넣는다.
(1,0) 에 ' '를 넣는다.
(1,1) 에 'X'를 넣는다.
(1,2) 에 ' '를 넣는다.
(2,0) 에 'X'를 넣는다.
(2,1) 에 ' '를 넣는다.
(2,2) 에 'X'를 넣는다.

2. 대충 정리된 PDL로

행을 순환한다.(3번)
    열을 순환한다.(3번)
        +행과 열을 더한값이 짝수이면
            (행,열)에 'X'를 넣는다.
        +짝수가 아니면
            (행,열)에 ' '를 넣는다.

3. C언어로

for(row=0; row<3 ; ++row)
{
    for(col=0; col<3 ;++col)
    {
        if((row+col) % 2 == 0)
        {
            matrix[row][col] = 'X';
        }
        else
        {
            matrix[row][col] = ' ';
        }
    }
}

음.. 아무래도 잡답으로 말을 돌린듯 합니다. 죄송 :?

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

htna의 이미지

무슨 내용이죠 ????

fehead wrote:
국어책이나 일기장 :oops:

농담반 진담반 이구 책은 아니지만 PDL, NS차트가 어떨까 생각 됩니다.

1. 문제
+-+-+-+
|X| |X|
+-+-+-+
| |X| |
+-+-+-+
|X| |X|
+-+-+-+

3x3 배열에 X자 그리기를 PDL로 짜 보시요.

1. 무작정 PDL로

(0,0) 에 'X'를 넣는다.
(0,1) 에 ' '를 넣는다.
(0,2) 에 'X'를 넣는다.
(1,0) 에 ' '를 넣는다.
(1,1) 에 'X'를 넣는다.
(1,2) 에 ' '를 넣는다.
(2,0) 에 'X'를 넣는다.
(2,1) 에 ' '를 넣는다.
(2,2) 에 'X'를 넣는다.

2. 대충 정리된 PDL로

행을 순환한다.(3번)
    열을 순환한다.(3번)
        +행과 열을 더한값이 짝수이면
            (행,열)에 'X'를 넣는다.
        +짝수가 아니면
            (행,열)에 ' '를 넣는다.

3. C언어로

for(row=0; row<3 ; ++row)
{
    for(col=0; col<3 ;++col)
    {
        if((row+col) % 2 == 0)
        {
            matrix[row][col] = 'X';
        }
        else
        {
            matrix[row][col] = ' ';
        }
    }
}

음.. 아무래도 잡답으로 말을 돌린듯 합니다. 죄송 :?

WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra

Fe.head의 이미지

htna wrote:
무슨 내용이죠 ????

문제 하나 내놓고 그걸 PDL(자연어 비슷함)로 짜보고

PDL로 짠걸 C언어로 1:1 대응 시켜 본것입니다.

이게 무얼 의미하는건지는... ^^a

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

Prentice의 이미지

원래 프로그래밍 언어 입문서에 대해 질문하고자 했던 것인데 프로그래밍 자체에 대한 추천/말씀도 감사히 읽고 있습니다. :)

ydhoney의 이미지

웃는 남자 wrote:
프로그래밍에 첨 접하는 친구들끼리 얘기하는 거 들었는 데..

프리렉강의가 알아듣기 쉽게 잘 설명해준다고 합니다.
책사면 무료온라인강의 수강 할 수 있고..

후리렉은 강의가 대박입니다. ^^

fibonacci의 이미지

Patrick Henry Winston 의
On To C
추천합니다.

이해하기 쉽고, 책의 크기도 작을 뿐더러 예제도 꼭 필요한 것들만 들어있습니다.

No Pain, No Gain.

차리서의 이미지

이미 C, C++, Java, Python 등등의 절차형 언어에 대해서 아주 조금이라도 맛을 본 적이 있는 사람으로서 이제 본격적으로 어떤 한 언어를 공부해보기 위한 입문서라면, 공부하려는 각 언어에 맞는 좋은 입문서가 있을 것이고 다른 분들께서 많이 추천해주시고 있습니다. 그러나, 만일 대입의 개념조차 없을 정도로 프로그래밍에 완전히 문외한인 사람으로서 최초로 프로그래밍이라는 것을 접해보는 입장이라면, 저는 다음 책을 추천합니다:

  • Richard Bird and Philip Wadler, “Introduction to Functional Programming”, 2nd Ed., Prentice Hall PTR, 1998 PL계에서 몇 손가락 안에 드는 엄청난 대가들이 썼다는 점과 책 자체의 높은 명성에 비해, 의외로 분량도 컴팩트한 편이고 설명도 차근차근 평이하게 진행하고 있어서 입문서로서는 아주 훌륭하다고 생각합니다. (물론, 아무리 어려운 내용이라도 이상하리만치 ― 뭔가 속고있는게 아닌가 싶을 만큼 ― 쉽게 서술하는게 바로 대가들만의 특징이긴 하죠.) 특히, 아래에서 소개할 SICP와는 달리 타입 시스템에 대한 소개까지 곁들이고있기 때문에, 프로그래밍 공부의 첫 단추를 끼울 때부터 ‘안전하고 정형적인 프로그래밍’이라는 개념을 자연스럽게 얻게된다는 장점도 있습니다.
  • Harold Abelson, Gerald Jay Sussman, and Julie Sussman, “Structure and Interpretation of Computer Programs”, 2nd Ed., MIT Press, 1996 통상 SICP라고 불리는 이 책은 제가 학부 때 들었던 PL 강의 교재였습니다. Lazy evaluation이나 concurrency, non-determinism 등 상당히 다양한 개념들을 집대성하여 다루고 있는 데에 비해서 큰 무리 없이 편안하게 읽고 수긍할 수 있는 좋은 책입니다. 예전에는 아직 읽어보지 않았다는 사람들에게 강력 추천하던 책이었으나 지금은 몇 가지 이유로 조금 시들해진 상태입니다:
    • 무엇보다도, 두껍습니다. 두꺼운 값을 분명히 하는 책이고 일단 읽어보면 의외로 술술 잘 읽히는 면이 있지만, 그래도 역시 초심자에게 권하기에는 심리적인 압박이 심합니다.
    • 타입 시스템에 올인하고 있는 요즈음에 다시 이 책을 꺼내보면 뭔가 좀 서운합니다.
    • Scheme이라는 언어 자체가 위 Bird의 책에서 다루는 Haskell에 비해 훨씬 덜 엘레강스합니다. 수학 책에서 매일 보아오던 바로 그 구문들을 프로그램 코드에서 반갑게 재회하게되는 Haskell과는 달리, Scheme 코드에 등장하는 그 수많은 괄호들을 적절한 에디터 없이 다루다보면 소위 ‘지렁이 마디 세기 증후군’이라는 심각한 정신 질환을 유발합니다.
위 책들은 scientist 성향의 전산학도라면 (PL 전공이 아니더라도) 한 번은 꼭 보아야만하는 책들이라고 생각하며, engineer 성향이라고 하더라도 전산학을 계속 공부할 사람이라면 시야와 사고의 폭을 넓히는 데에 상당히 도움이 될겁니다. 솔직히 말해서, 전산학을 깊게 연구하는 것보다는 얼른 현장에 뛰어들어서 널리 통용될만한 물건을 현실적인 조건 하에서 개발하는 데에 더 관심이 있는 분들에게는 위 책들이 얼마나 도움이 될지 잘 모르겠습니다만, 최소한 읽어서 손해는 보지 않으리라 생각합니다.

절차형 언어에 익숙한 사람일수록 이런 함수형 프로그래밍에는 거부감을 느끼거나 어려워하는 경향이 있는 듯합니다만, 이는 단지 C 등을 공부하면서 자기도 모르는 사이에 절차형 계산 모델에만 너무 익숙해져버렸기 때문일 뿐이지 함수형 프로그래밍 자체가 뭔가 기괴하거나 난해해서가 아닙니다. 오히려, 우리가 최소한 초중고등학교 수학 과목에서 12년 이상 공부하고 훈련해온 방식이 바로 함수형 계산 모델이었기 때문에, 프로그래밍에 대해서 전혀 아무것도 모르는 (대입의 개념조차 없는) 사람들에게 함수형 프로그래밍을 가르쳐보면 거꾸로 절차형 프로그래밍보다 훨씬 더 쉽고 편안하게 받아들인다고 합니다. 실제로, 우리나라 대부분의 대학에서 (전산과든 아니든) 1,2학년 교양 PL로서 주로 C나 Java 등을 강의하는 것과는 달리, MIT에서는 오래전부터 (그리고 지금도) 학부 교양 PL로서 Scheme을 먼저 가르친다고 들었습니다.

끝으로, 초기 입문서는 작고 핵심적이고 평이할수록 좋다고 생각합니다. 일단 어느정도 시동이 걸리고 궤도에 오른 사람의 학습 패턴과는 달리, 새까만 어둠속에서 성냥불 하나에 의지해 한 발씩 내딛어보는 입문자에게 있어 최대의 학습 장애 요인이 바로 ‘공포감’이 아닐까합니다. 초심자에게 괜시리 두껍고 심도있는 책부터 내밀어서 불필요한 공포감을 심어주는건 별로 좋지 않다는 뜻이죠. 예를 들어 C 언어에 관한 책들 중에서 임인건 님의 “터보C정복”(달리만듦 기획, 가남사)은 전무후무한 명작임이 분명하지만, 입문서로서는 별로 추천하고싶지 않습니다.

[/][/]

--
자본주의, 자유민주주의 사회에서는 결국 자유마저 돈으로 사야하나보다.
사줄테니 제발 팔기나 해다오. 아직 내가 "사겠다"고 말하는 동안에 말이다!

죠커의 이미지

차리서 wrote:
끝으로, 초기 입문서는 작고 핵심적이고 평이할수록 좋다고 생각합니다. 일단 어느정도 시동이 걸리고 궤도에 오른 사람의 학습 패턴과는 달리, 새까만 어둠속에서 성냥불 하나에 의지해 한 발씩 내딛어보는 입문자에게 있어 최대의 학습 장애 요인이 바로 ‘공포감’이 아닐까합니다. 초심자에게 괜시리 두껍고 심도있는 책부터 내밀어서 불필요한 공포감을 심어주는건 별로 좋지 않다는 뜻이죠. 예를 들어 C 언어에 관한 책들 중에서 임인건 님의 “터보C정복”(달리만듦 기획, 가남사)은 전무후무한 명작임이 분명하지만, 입문서로서는 별로 추천하고싶지 않습니다.

전체적으로 동의합니다. C/C++ Primer Plus 같은 책이 초급서로 다뤄지는게 컴퓨터 공학/과학 전체의 문제점이라고 생각이 드네요. (중급서로도 썩 좋다고 생각하지 않습니다만)