“컴퓨터 프로그램의 구조와 해석”책은 Java 프로그래머에게 잘 읽히는가? [닫은]


14

이것은 주관적이고 폐쇄 될 수 있지만 여전히 컴퓨터 프로그램의 구조 및 해석을 읽는 것이 실제로 도움이되는지 알고 싶었습니다.

컴퓨터 프로그램의 구조와 해석

이 책은 Java를 사용하지 않습니다. Java를 배우고 싶지 않았습니다. 더 나은 프로그래머가되는 것이 유용한 지,이 책에서 얻을 수있는 것 또는이 책에 대한 다른 대안이 Java 프로그래머에게 더 적합한 지 아는 것이 궁금합니다.


32
우선, "자바 프로그래머"로 자신을 배치하지 마십시오. 또는 "어떤 언어 프로그래머" 막 다른 길입니다. 대신 프로그래머가 되십시오. 그리고 SICP는 매우 유용 할 것입니다. 아마도 가장 유용한 정보를 읽었을 것입니다.
SK-logic

3
매우 힘들 기 때문에 그것을 읽는 이유입니다.
Jonathan Henson

4
1 장부터 시작하여 페이지 단위로 이동하고 모든 예제를 작업하고 각 페이지와 예제를 이해할 때까지 진행하지 마십시오. 답변 키는 온라인입니다.
Jonathan Henson

2
@JonathanHenson 그리고 끝날 때
jk.

3
예, 당신은 계획을 배울 필요가 있습니다. 그러나이 책에서 Scheme을 사용하는 이유 중 하나는 프로그래밍을 한 적이 없거나 약 10 분이 지나도 Scheme 전체를 배울 수 있기 때문입니다. 결국, SICP는 초보자를위한 책이며, 프로그래밍 지식이 전혀 없다고 가정합니다.
Jörg W Mittag

답변:


23

글쎄, 나는이 책이 당신에게 도움이 될지 모르겠지만, 약 20 년 전에 그 책을 통해 일했을 때, 그것은 (프로그래밍 언어와 무관하게) 내 프로그래밍 기술을 확실히 향상 시켰습니다. 그리고 특히 Java 프로그래머는 Java에만 집중하여 얻을 수없는 새로운 통찰력을 얻습니다.

Joel Spolsky 2005는 Java 및 SICP에 대한 유용한 기사를 작성했습니다.

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html


+1 도서 추천 질문과 거의 비슷한 내용에 대한 최상의 답변.
Joshua Drake

13

컴퓨터 프로그램의 구조와 해석은 읽을만한 훌륭한 책 이라고 생각 합니다. 그러나 몇 가지 문제가 있습니다.

내 경험에서 가장 큰 문제는 책에 프로그래밍 지식이 전혀 필요하지 않고 초보자를 완성하기 위해 고안되었지만 MIT에서 공부하는 초보자를 완성하기 위해 고안되었다는 것 입니다 . 그것은 어떤 프로그래밍 지식을 가정하지 않는 동안 그래서, 그것은 않습니다 꽤 가정 도메인 전기 공학, 물리학, 수학의 분야에서 예를 들어 지식을. 참고 : 이들은 가르치는 개념 과 아무 관련이 없으며 연습예제 를 이해하기 만하면 됩니다.

저보다 더 많은 사람들이 컴퓨터 과학 커리큘럼의 구조와 해석 이라는 영리한 제목의 논문에서 훨씬 더 잘 설명했습니다 . 고맙게도, 그들은 단지 멍청이가 아니라, 대신 자신의 책 을 썼습니다 : 프로그램을 디자인하는 방법 . SICP를 읽는 것에 대해 생각한다면 먼저 HtDP를 읽으십시오. SICP와 거의 동일한 근거를 다루지 만 평균 고등학교 수준의 도메인 지식 만 가정합니다. (실제로 고등학생에게 가르치기 위해 작성되었습니다.)

HtDP를 마친 후에도 SICP를 계속 읽을 수 있습니다. 이제 일부 개념이 누락되어 도메인 개념이 사라져 더 이상 해를 끼치 지 않을 것입니다.

참고 : HtDP의 두 번째 버전에 대한 초안이 있으며 , 첫 번째 버전 대신 읽을 수 있습니다. 명령형 프로그래밍에 대한 자료는 제거되었으며 아직 작성되지 않은 두 번째 책인 How to Design Components 에서 다룰 예정 이지만 초판이나 SICP 또는 둘 다에서 가져올 수 있습니다.



@ Eden : CTM은 매우 좋습니다. SICP, HtDP 및 Concrete Abstractions와 같은 프로그래밍을 가르치기위한 책으로 생각하지 않습니다. 그러나 그것은 "당신을 더 나은 프로그래머로 만드는 책"목록에 속합니다!
Jörg W Mittag

5

내가 이해하는 SICP 에서는 재귀 프로그래밍 및 CS에 대한 강력한 소개를 포함한 기능적 프로그래밍 영역에 더 중점을 둡니다 . 이는 새로운 프로그래머에게는 이해하기 어렵습니다. 또 다른 요점은 MIT를 위해 준비되고 지시되며이 책을 유용하게 사용하기 위해서는 공학 분야, 수학, 물리학에 대한 몇 가지 좋은 기초가 필요합니다.

소프트웨어 엔지니어링의 각기 다른 측면에 중점을 둔 훌륭한 책을 조언합니다 .

  • Code Complete 2- 소프트웨어 엔지니어링 프로세스에 중점을 둡니다.
  • 클린 코드 -작은 코딩에 중점을 둡니다. 클래스와 함수를 작성하는 방법
  • Pragmatic Programmer- 소프트웨어를 제작하는 팀 내에서 일하는 데 중점을 둡니다.

위에서 언급 한 한 권의 책에 대한 자세한 설명은 다음 참조에서 찾을 수 있습니다.

  1. 10 권의 간단한 책으로 프로그래머가되는 방법
  2. 초보자를위한 최고의 책

이상적이지 않으므로 목록에 자유롭게 추가하십시오. :)

편집 : 위에서 언급 한 책을 선택하고 읽는 방법의 우선 순위를 결정할 때 실제로 수행 하거나 배우려 는 일의 목적에 달려 있습니다 .


7
나는 (암시적인) 맥락에서의 제안에 동의하지만 SICP에 대해 당신이 싫어하거나 싫어하는 것을 실제로 언급하면 ​​대답이 훨씬 나을 것입니다.
Joris Timmermans

4
사과와 오렌지 비교-언급 한 모든 책은 소프트웨어 공학에 관한 훌륭한 책입니다. SICP는 컴퓨터 과학에 관한 것입니다-컴퓨터 프로그래밍의 개념은 무엇입니까?
Nate

1
이 답변은 권장 독서 목록 질문에 대한 답변과 너무 흡사합니다. 내가 스택 교환 사이트의 목표에 잘 맞지 않는다고 생각하는 것 : meta.stackexchange.com/questions/113678/…
Joshua Drake

@Nate, 비교할 사과와 오렌지가 아니라 CS에 관한 것입니다. 그럼에도 불구하고, 각 책은 몇 가지 일반적인 주제를 공유합니다.
Yusubov

2
@ MadKeithV, 나는 당신의 의견에 동의합니다. SICP에 대한 생각을 첫 줄에 올렸습니다.
Yusubov

4

나는 여기서 사지로 나가서 아마도 대부분의 사람들에게 잘 읽히지 않을 것입니다-언어에 관계없이 말하겠습니다.

크 누스처럼 읽을만한 좋은 책입니다. 그러나 당신이 인기있는 MIT 우 그라드라고 가정하더라도, 제대로 읽는 데는 여전히 1 년의 가장 좋은 시간이 걸리며, 강사와 TA가 도움을줍니다.

그 당시에 읽을 수있는 소프트웨어 엔지니어링에 대한 다른 책이 더 가치있는 것입니까? 당시에 배울 수있는 다른 언어가 있습니까?

편집 조금만 확장하면 :
소프트웨어 엔지니어링은 엔지니어링이며 최적화에 관한 것입니다. 당신의 임무는 주어진 시간 + 비용 예산에 대한 지식을 극대화하는 것입니다.
SICP는 기능적 언어를 통한 프로그래밍에 대한 고급 소개입니다. 함수형 언어를 사용하는 이유는 절차 형 언어보다 함수형 언어로 프로그래밍하는 많은 수학적 개념을 설명하는 것이 더 쉽고 형식 논리보다 읽기 쉽다는 것입니다.

또한 일정 정도의 자세가 있습니다. "SICP를 읽지 않으면 실제로 프로그래머가 아닙니다"또는 Knuth 또는 Lisp, C 또는 x86 어셈블러에서 프로그래밍 할 수 있습니다. 그것은 일반적으로 반박하기 쉽다. 즉. 셋 이론과 Maxwell 방정식에 대한 Cantor의 연구를 알고 반도체의 정공 이동성에 익숙하지 않으면 실제 프로그래머가 될 수 없습니다.


Code Complete 2, Clean code, Pragamatic programmers, Refactoring 등과 같은 위시리스트에 다른 책이 있었지만 SICP와 달리 Java 또는 OOP 중심에 관한 책이 더 많았습니다.
ashishjmeshram

5
그래서 내가 먼저 읽을 것입니다
Martin Beckett

7
나는이 답변을 내려 놓고 토론했지만 의견이 더 낫다고 결정했다. SICP는 대부분의 사람들, 특히 초기에 잘 읽지 못한다는 데 동의하지만, 훌륭한 개발자가이 책을 다룰 수 있어야하고 배우게 될 것이라고 믿는다 그것으로부터 많은. 훌륭한 개발자는 "대부분의 사람들"이 아닙니다. 좋은 필터 북입니다.
Joris Timmermans

4
SICP가 자신의 벨트 아래에있는 다재다능한 개발자는 항상 유닉스 환경 등에 대해 배울 수 있습니다. SICP 이외의 플랫폼 경험이없는 개발자를 고용하고 그렇지 않은 사람보다 재교육을 받고 싶습니다. SICP를 얻지 못했습니다.
Joris Timmermans

1
@MadKeithV-예, 같은 이유로 코딩 경험이없는 수학 / 물리학 박사를 고용합니다. 그러나 프로그래머, 특히 초보자로 풀 타임으로 일하는 경우 Knuth 나 SICP보다 더 나은 (가치 / 시간) 책을 읽거나 Turing의 논문을 읽는 간단한 책이 있습니다.
Martin Beckett

1

당신은 평생 동안 "JAVA 프로그래머"가 될 계획입니까? 그렇다면 더 나은 책을 읽을 수있을 것입니다. 일반적으로 좋은 프로그래머가 되려면 훌륭한 독서입니다. 이유는 다음과 같습니다. 도구 상자에는 모든 훌륭한 프로그래머가 필요로하는 특정 도구가 있습니다. 하나는 데이터 구조와 알고리즘에 대한 철저한 지식이며 (내가 믿지 않으면 Microsoft, Google, Amazon 등의 인터뷰를 진행하십시오.) 동반 알고리즘은 복잡성 분석, 재귀 및 포인터에 대한 건전한 이해가 아닙니다. 상처. 알고리즘 분석, 재귀 프로세스 및 기능적 패러다임에 관해서는 SICP보다 더 나쁘거나 어려운 책을 생각할 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.