이것은 주관적이고 폐쇄 될 수 있지만 여전히 컴퓨터 프로그램의 구조 및 해석을 읽는 것이 실제로 도움이되는지 알고 싶었습니다.
이 책은 Java를 사용하지 않습니다. Java를 배우고 싶지 않았습니다. 더 나은 프로그래머가되는 것이 유용한 지,이 책에서 얻을 수있는 것 또는이 책에 대한 다른 대안이 Java 프로그래머에게 더 적합한 지 아는 것이 궁금합니다.
이것은 주관적이고 폐쇄 될 수 있지만 여전히 컴퓨터 프로그램의 구조 및 해석을 읽는 것이 실제로 도움이되는지 알고 싶었습니다.
이 책은 Java를 사용하지 않습니다. Java를 배우고 싶지 않았습니다. 더 나은 프로그래머가되는 것이 유용한 지,이 책에서 얻을 수있는 것 또는이 책에 대한 다른 대안이 Java 프로그래머에게 더 적합한 지 아는 것이 궁금합니다.
답변:
글쎄, 나는이 책이 당신에게 도움이 될지 모르겠지만, 약 20 년 전에 그 책을 통해 일했을 때, 그것은 (프로그래밍 언어와 무관하게) 내 프로그래밍 기술을 확실히 향상 시켰습니다. 그리고 특히 Java 프로그래머는 Java에만 집중하여 얻을 수없는 새로운 통찰력을 얻습니다.
Joel Spolsky 2005는 Java 및 SICP에 대한 유용한 기사를 작성했습니다.
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
컴퓨터 프로그램의 구조와 해석은 읽을만한 훌륭한 책 이라고 생각 합니다. 그러나 몇 가지 문제가 있습니다.
내 경험에서 가장 큰 문제는 책에 프로그래밍 지식이 전혀 필요하지 않고 초보자를 완성하기 위해 고안되었지만 MIT에서 공부하는 초보자를 완성하기 위해 고안되었다는 것 입니다 . 그것은 어떤 프로그래밍 지식을 가정하지 않는 동안 그래서, 그것은 않습니다 꽤 가정 도메인 전기 공학, 물리학, 수학의 분야에서 예를 들어 지식을. 참고 : 이들은 가르치는 개념 과 아무 관련이 없으며 연습 과 예제 를 이해하기 만하면 됩니다.
저보다 더 많은 사람들이 컴퓨터 과학 커리큘럼의 구조와 해석 이라는 영리한 제목의 논문에서 훨씬 더 잘 설명했습니다 . 고맙게도, 그들은 단지 멍청이가 아니라, 대신 자신의 책 을 썼습니다 : 프로그램을 디자인하는 방법 . SICP를 읽는 것에 대해 생각한다면 먼저 HtDP를 읽으십시오. SICP와 거의 동일한 근거를 다루지 만 평균 고등학교 수준의 도메인 지식 만 가정합니다. (실제로 고등학생에게 가르치기 위해 작성되었습니다.)
HtDP를 마친 후에도 SICP를 계속 읽을 수 있습니다. 이제 일부 개념이 누락되어 도메인 개념이 사라져 더 이상 해를 끼치 지 않을 것입니다.
참고 : HtDP의 두 번째 버전에 대한 초안이 있으며 , 첫 번째 버전 대신 읽을 수 있습니다. 명령형 프로그래밍에 대한 자료는 제거되었으며 아직 작성되지 않은 두 번째 책인 How to Design Components 에서 다룰 예정 이지만 초판이나 SICP 또는 둘 다에서 가져올 수 있습니다.
내가 이해하는 SICP 에서는 재귀 프로그래밍 및 CS에 대한 강력한 소개를 포함한 기능적 프로그래밍 영역에 더 중점을 둡니다 . 이는 새로운 프로그래머에게는 이해하기 어렵습니다. 또 다른 요점은 MIT를 위해 준비되고 지시되며이 책을 유용하게 사용하기 위해서는 공학 분야, 수학, 물리학에 대한 몇 가지 좋은 기초가 필요합니다.
소프트웨어 엔지니어링의 각기 다른 측면에 중점을 둔 훌륭한 책을 조언합니다 .
위에서 언급 한 한 권의 책에 대한 자세한 설명은 다음 참조에서 찾을 수 있습니다.
이상적이지 않으므로 목록에 자유롭게 추가하십시오. :)
편집 : 위에서 언급 한 책을 선택하고 읽는 방법의 우선 순위를 결정할 때 실제로 수행 하거나 배우려 는 일의 목적에 달려 있습니다 .
나는 여기서 사지로 나가서 아마도 대부분의 사람들에게 잘 읽히지 않을 것입니다-언어에 관계없이 말하겠습니다.
크 누스처럼 읽을만한 좋은 책입니다. 그러나 당신이 인기있는 MIT 우 그라드라고 가정하더라도, 제대로 읽는 데는 여전히 1 년의 가장 좋은 시간이 걸리며, 강사와 TA가 도움을줍니다.
그 당시에 읽을 수있는 소프트웨어 엔지니어링에 대한 다른 책이 더 가치있는 것입니까? 당시에 배울 수있는 다른 언어가 있습니까?
편집 조금만 확장하면 :
소프트웨어 엔지니어링은 엔지니어링이며 최적화에 관한 것입니다. 당신의 임무는 주어진 시간 + 비용 예산에 대한 지식을 극대화하는 것입니다.
SICP는 기능적 언어를 통한 프로그래밍에 대한 고급 소개입니다. 함수형 언어를 사용하는 이유는 절차 형 언어보다 함수형 언어로 프로그래밍하는 많은 수학적 개념을 설명하는 것이 더 쉽고 형식 논리보다 읽기 쉽다는 것입니다.
또한 일정 정도의 자세가 있습니다. "SICP를 읽지 않으면 실제로 프로그래머가 아닙니다"또는 Knuth 또는 Lisp, C 또는 x86 어셈블러에서 프로그래밍 할 수 있습니다. 그것은 일반적으로 반박하기 쉽다. 즉. 셋 이론과 Maxwell 방정식에 대한 Cantor의 연구를 알고 반도체의 정공 이동성에 익숙하지 않으면 실제 프로그래머가 될 수 없습니다.
당신은 평생 동안 "JAVA 프로그래머"가 될 계획입니까? 그렇다면 더 나은 책을 읽을 수있을 것입니다. 일반적으로 좋은 프로그래머가 되려면 훌륭한 독서입니다. 이유는 다음과 같습니다. 도구 상자에는 모든 훌륭한 프로그래머가 필요로하는 특정 도구가 있습니다. 하나는 데이터 구조와 알고리즘에 대한 철저한 지식이며 (내가 믿지 않으면 Microsoft, Google, Amazon 등의 인터뷰를 진행하십시오.) 동반 알고리즘은 복잡성 분석, 재귀 및 포인터에 대한 건전한 이해가 아닙니다. 상처. 알고리즘 분석, 재귀 프로세스 및 기능적 패러다임에 관해서는 SICP보다 더 나쁘거나 어려운 책을 생각할 수 없습니다.