Cuốn sách Cấu trúc và giải thích các chương trình máy tính có phải là một cuốn sách đáng đọc cho các lập trình viên Java không? [đóng cửa]


14

Điều này có thể chủ quan và có khả năng bị đóng nhưng tôi vẫn muốn biết liệu nó có thực sự hữu ích để đọc Cấu trúc và Giải thích các chương trình Máy tính hay không.

Cấu trúc và giải thích các chương trình máy tính

Cuốn sách không sử dụng Java. Không phải tôi muốn học Java. Tôi chỉ tò mò muốn biết liệu nó có hữu ích để đọc trở thành một lập trình viên tốt hơn không và những điều tôi có thể đạt được từ cuốn sách hoặc những lựa chọn thay thế nào khác của cuốn sách này phù hợp hơn với các lập trình viên Java?


32
Để bắt đầu, hãy cố gắng không định vị mình là một "lập trình viên java". Hoặc là "lập trình viên bất cứ ngôn ngữ nào". Đó là một ngõ cụt. Thay vào đó chỉ là một lập trình viên. Và sau đó, SICP sẽ cực kỳ hữu ích. Có lẽ, đọc hữu ích nhất hiện có.
SK-logic

3
Nó rất khó khăn, đó là lý do tại sao bạn đọc nó.
Jonathan Henson

4
Bắt đầu tại Chương một, đi từng trang, làm việc tất cả các ví dụ, không tiến triển cho đến khi bạn hiểu từng trang và từng ví dụ. Chìa khóa trả lời là trực tuyến.
Jonathan Henson

2
@JonathanHenson và khi bạn đi đến cuối cùng, hãy dừng lại
jk.

3
Vâng, bạn cần phải học Scheme. Tuy nhiên, một trong những lý do cuốn sách sử dụng Đề án là bạn có thể tìm hiểu toàn bộ Đề án trong khoảng một ngày nếu bạn chưa bao giờ lập trình trước hoặc khoảng 10 phút nếu bạn có. Xét cho cùng, SICP là một cuốn sách dành cho người mới bắt đầu hoàn thành, nó giả định hoàn toàn không có kiến ​​thức lập trình nào.
Jörg W Mittag

Câu trả lời:


23

Chà, tôi không biết cuốn sách này có giúp gì cho bạn không, nhưng khi tôi làm việc với cuốn sách đó khoảng 20 năm trước, nó chắc chắn đã cải thiện kỹ năng lập trình của tôi (độc lập với bất kỳ ngôn ngữ lập trình nào). Và tôi đoán đặc biệt là một lập trình viên Java sẽ nhận được một số hiểu biết mới mà anh ấy / cô ấy sẽ không nhận được bằng cách chỉ gắn bó với Java.

Joel Spolsky 2005 đã viết một bài viết hay về Java và SICP có thể khiến bạn quan tâm:

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


+1 Câu trả lời tốt nhất có thể cho những gì gần như tương đương với câu hỏi giới thiệu sách.
Joshua Drake

13

Tôi nghĩ rằng Cấu trúc và Giải thích các Chương trình Máy tính là một cuốn sách tuyệt vời để đọc. Tuy nhiên, có một vài vấn đề với nó.

Vấn đề lớn nhất trong kinh nghiệm của tôi là, trong khi cuốn sách đòi hỏi hoàn toàn không có kiến thức lập trình, và là hướng tới người mới hoàn thành, nó được hướng tới người mới hoàn thành người nghiên cứu tại MIT . Và vì vậy, mặc dù nó không có bất kỳ kiến ​​thức lập trình nào, nhưng nó lại thừa nhận khá nhiều kiến thức về miền , ví dụ như trong các lĩnh vực kỹ thuật điện, vật lý và toán học. Lưu ý: những điều này không liên quan gì đến các khái niệm được dạy, chúng chỉ cần thiết để hiểu các bài tậpví dụ .

Những người lớn hơn tôi đã giải thích nó tốt hơn nhiều, trong một bài báo có tiêu đề thông minh Cấu trúc và diễn giải của chương trình giảng dạy khoa học máy tính . May mắn thay, họ không chỉ là người than vãn, thay vào đó họ đã viết cuốn sách của riêng mình : Cách thiết kế chương trình . Nếu bạn nghĩ về việc đọc SICP, trước tiên bạn có thể muốn đọc HtDP: nó bao gồm nhiều nền tảng giống như SICP, nhưng nó chỉ giả định kiến ​​thức miền trung học cấp trung bình. (Trên thực tế, nó được viết để dạy cho học sinh trung học.)

Sau khi bạn đã hoàn thành HtDP, bạn vẫn có thể quay lại và đọc SICP, vì bây giờ một số kiến ​​thức tên miền còn thiếu sẽ không còn gây hại nữa vì bạn đã thấy khái niệm này trước đây.

Lưu ý: có một bản nháp cho phiên bản thứ hai của HtDP , mà bạn có thể muốn đọc thay vì phiên bản đầu tiên. Tài liệu về lập trình mệnh lệnh đã bị xóa và sẽ được trình bày trong tập thứ hai chưa được ghi nhận Cách thiết kế các thành phần , nhưng bạn có thể lấy chúng từ phiên bản đầu tiên hoặc từ SICP hoặc cả hai.


Tôi có thể đề xuất một giải pháp thay thế cho SICP: Khái niệm, Kỹ thuật và Mô hình lập trình máy tính
Eden

@Eden: CTM rất tốt, tôi đồng ý. Tuy nhiên, tôi không nghĩ nó là một cuốn sách để dạy lập trình, như SICP, HtDP và Trừu tượng cụ thể. Nhưng nó chắc chắn thuộc về danh sách "những cuốn sách giúp bạn trở thành một lập trình viên tốt hơn"!
Jörg W Mittag

5

Theo hiểu biết của tôi SICP , nó tập trung hơn vào các lĩnh vực lập trình chức năng, bao gồm lập trình đệ quy và giới thiệu mạnh mẽ về CS - một điều hơi khó nắm bắt đối với các lập trình viên mới. Một điểm khác, nó được chuẩn bị và hướng dẫn cho MIT, và một số nguyên tắc cơ bản tốt trong lĩnh vực kỹ thuật, toán học, vật lý cũng cần thiết để thấy cuốn sách này hữu ích.

Tôi sẽ tư vấn cho một bộ sách hay trong đó mỗi cuốn tập trung vào các khía cạnh khác nhau của công nghệ phần mềm:

  • Code Complete 2 - tập trung vào các quy trình kỹ thuật phần mềm.
  • Clean Code - tập trung vào mã hóa nhỏ. Làm thế nào để viết các lớp và chức năng.
  • Lập trình viên thực dụng - tập trung vào làm việc trong một nhóm sản xuất phần mềm.

Mô tả chi tiết hơn về các cuốn sách được đề cập ở trên và một lần khác có thể được tìm thấy từ các tài liệu tham khảo sau:

  1. Cách trở thành lập trình viên với 10 cuốn sách đơn giản
  2. Những cuốn sách hay nhất dành cho những lập trình viên mới bắt đầu

Xin vui lòng, thêm vào danh sách vì nó không phải là lý tưởng :)

Chỉnh sửa: Trong việc lựa chọn các cuốn sách được đề cập ở trên và xác định mức độ ưu tiên của cách đọc chúng, nó thực sự phụ thuộc vào mục đích chính của những gì bạn đang cố gắng làm hoặc học.


7
Tôi đồng ý với các đề xuất trong ngữ cảnh (ngụ ý) - nhưng câu trả lời của bạn sẽ còn tốt hơn nếu nó thực sự đề cập đến những gì bạn không thích (hoặc không thích) về SICP.
Joris Timmermans

4
So sánh táo và cam - tất cả những cuốn sách bạn đề cập đều là những cuốn sách tuyệt vời về công nghệ phần mềm. SICP nói nhiều hơn về khoa học máy tính - những gì lập trình máy tính là khái niệm.
Nate

1
Câu trả lời này cảm thấy quá giống như một câu trả lời cho một câu hỏi danh sách đọc được đề nghị. Điều mà tôi không tin là phù hợp với mục tiêu của các trang web Stack Exchange: meta.stackexchange.com/questions/113678/ Kẻ
Joshua Drake

@Nate, không phải là táo và cam để so sánh, tất cả là về CS. Mặc dù, mặc dù, mỗi cuốn sách chia sẻ một số chủ đề phổ biến.
Yusubov

2
@MadKeithV, tôi đồng ý với ý kiến ​​của bạn. Tôi đã đặt suy nghĩ của mình về SICP ở dòng đầu tiên.
Yusubov

4

Tôi sẽ đi ra ngoài ở đây và nói - có lẽ không phải là một cuốn sách hay cho hầu hết mọi người - bất kể ngôn ngữ nào.

Giống như Knuth đó là một cuốn sách hay để đọc. Tuy nhiên, ngay cả khi cho rằng bạn là một người xấu của MIT, họ vẫn sẽ dành phần tốt nhất trong một năm để đọc đúng, và đó là nhờ các giảng viên và TA giúp đỡ.

Có những cuốn sách khác về công nghệ phần mềm mà bạn có thể đọc trong thời gian đó sẽ có giá trị hơn không? Có những ngôn ngữ khác bạn có thể học trong thời gian này?

chỉnh sửa Chỉ để mở rộng một chút:
Kỹ thuật phần mềm là kỹ thuật, đó là tất cả về tối ưu hóa. Nhiệm vụ của bạn là tối đa hóa kiến ​​thức của bạn trong một thời gian nhất định + ngân sách chi phí.
SICP là một giới thiệu cấp cao về lập trình thông qua một ngôn ngữ chức năng. Lý do nó sử dụng ngôn ngữ chức năng là vì việc mô tả rất nhiều khái niệm toán học về lập trình bằng ngôn ngữ chức năng dễ dàng hơn so với ngôn ngữ thủ tục và dễ đọc hơn logic chính thức.

Ngoài ra còn có một số lượng nhất định của tư thế tức là. "Bạn không thực sự là một lập trình viên trừ khi bạn đọc SICP", hoặc Knuth, hoặc có thể lập trình trong trình biên dịch Lisp, hoặc C, hoặc x86. Điều đó thường dễ bác bỏ; I E. bạn không thể là một lập trình viên thực sự trừ khi bạn biết công việc của Cantor về lý thuyết tập hợp và phương trình Maxwell và quen thuộc với tính di động của lỗ trong chất bán dẫn.


Có những cuốn sách khác trong danh sách mong muốn của tôi như Code Complete 2, Clean code, lập trình viên thực dụng, Tái cấu trúc, v.v. Nhưng những cuốn này nhiều hơn về java hoặc ít nhất là OOP centric không giống như SICP.
ashishjmeshram

5
Đó là lý do tại sao tôi sẽ đọc chúng trước
Martin Beckett

7
Tôi đã tranh luận về việc hạ thấp câu trả lời này, nhưng quyết định chỉ là một nhận xét là tốt hơn: Tôi đồng ý rằng SICP không phải là một cuốn sách tốt cho hầu hết mọi người, đặc biệt là sớm, nhưng tôi tin rằng một nhà phát triển tuyệt vời sẽ có thể xử lý cuốn sách này và sẽ học rất nhiều từ nó Các nhà phát triển vĩ đại không "hầu hết mọi người". Đó là một cuốn sách lọc tốt.
Joris Timmermans

4
Tôi không đồng ý (đến một điểm) - một nhà phát triển toàn diện có SICP trong vành đai của cô ấy vẫn luôn có thể tìm hiểu về môi trường Unix, v.v. Tôi thà thuê một nhà phát triển không có kinh nghiệm về nền tảng nhưng SICP và đào tạo lại họ, hơn là một người không Tôi không nhận được SICP.
Joris Timmermans

1
@MadKeithV - Có và vì lý do tương tự, tôi thuê Phds toán học / vật lý không có kinh nghiệm mã hóa. Nhưng nếu bạn đang làm việc toàn thời gian với tư cách là một lập trình viên, và đặc biệt là người mới bắt đầu, có những cuốn sách đơn giản hơn có lẽ tốt hơn (giá trị / thời gian) so với Knuth hoặc SICP hoặc đọc các bài báo của Turing.
Martin Beckett

1

Bạn có kế hoạch trở thành một "lập trình viên JAVA" cho đến hết đời không? Sau đó, có lẽ có những cuốn sách tốt hơn để đọc. Nếu bạn muốn trở thành một lập trình viên giỏi nói chung thì đó là một bài đọc tuyệt vời. Đây là lý do tại sao. Có một số công cụ mà mọi lập trình viên giỏi cần có trong hộp công cụ của họ. Một là kiến ​​thức thấu đáo về cấu trúc dữ liệu và thuật toán (nếu bạn không tin tôi, đi phỏng vấn tại Microsoft, Google, Amazon, v.v.), thuật toán đi kèm là phân tích phức tạp, đệ quy và hiểu âm thanh về con trỏ không đau. Khi nói đến phân tích thuật toán, các quy trình đệ quy và mô hình chức năng nói chung, tôi không thể nghĩ ra một cuốn sách hay hơn hay thách thức hơn SICP.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.