it-swarm-vi.com

Nghệ thuật lập trình máy tính - Đọc hay không đọc?

Có rất nhiều sách về lập trình ngoài kia, và có vẻ như Code Complete nằm ở đầu danh sách "sách lập trình phải đọc" của hầu hết mọi người, nhưng còn Nghệ thuật lập trình máy tính Donald Knuth? Tôi là một người bận rộn, giữa công việc và một gia đình trẻ, tôi không có nhiều thời gian rảnh, vì vậy tôi phải kén chọn cách sử dụng nó.

Tôi đang tự hỏi - có ai ở đây đọc 'TAOCP' không? Nếu vậy, có đáng để dành thời gian để đọc hoặc một số cuốn sách khác hoặc nhiều chương trình bên lề như dự án thú cưng hoặc đóng góp cho nguồn mở sẽ sử dụng tốt hơn thời gian của tôi về phát triển chuyên nghiệp?

TUYÊN BỐ TỪ CHỐI - Đối với những người chơi áo phông "Knuth là nhà của tôi", đừng hiểu nhầm tôi - Tôi muốn đọc nó, nhưng tôi chỉ tự hỏi liệu nó có nên ở đầu danh sách ưu tiên của tôi hay không nếu cái gì khác nên đến trước.

65
Zann Anderson

TAOCP là một tài liệu tham khảo vô giá để hiểu cách các cấu trúc dữ liệu và thuật toán mà chúng ta sử dụng hàng ngày và tại sao công việc, nhưng việc đọc nó để che đậy sẽ là một khoản đầu tư phi thường của thời gian của bạn.

Là một người đàn ông gia đình khác, dành thời gian với con của bạn.

72
Adam Crossland

Thay thế "bách khoa toàn thư" trong câu hỏi của bạn cho mọi tham chiếu đến TAOCP, và tôi nghĩ rằng câu trả lời nên rõ ràng. Bởi vì trong rất nhiều khía cạnh, đó là những gì TAOCP là.

Có một câu chuyện (có thể là tận thế) về việc Steve Jobs gặp Knuth. Điều đầu tiên Jobs nói với ông là "Rất vui được gặp ông Tiến sĩ Knuth. Tôi đã đọc tất cả các tác phẩm của bạn!". Câu trả lời của Knuth là "Bạn đầy rác rưởi": http: //www.folklore.org/StoryView.py? Project = Macintosh & Story = Close_Encountftimeof_the_Steve_Kind.txt

23
Jason Baker

Không, nó không nên ở đầu danh sách ưu tiên của bạn. Tôi đã có một bộ đầy đủ và tôi KHÔNG đọc toàn bộ. Tôi đã sử dụng nó (cho đến nay) như một tài liệu tham khảo tốt về một số vấn đề nhất định (ví dụ như nó là vô giá đối với sự hiểu biết của tôi về tính ngẫu nhiên và thử nghiệm các trình tạo ngẫu nhiên). Bất cứ khi nào một chủ đề CS xuất hiện mà tôi không thực sự xử lý tốt, tôi có xu hướng lấy một chút TAOCP có liên quan như một bước tốt trong sự hiểu biết của tôi.

Nếu bạn quyết định đọc nó, sẽ tiếp thêm sức mạnh cho bạn và tôi chắc chắn khuyên bạn nên dùng nó trong những phần nhỏ. Đừng ngại bỏ qua và nhìn vào bất cứ điều gì thú vị nhất trước tiên.

22
Michael Kohne

TOACP là một bài đọc thiết yếu - tại một số điểm. Tùy thuộc vào những gì bạn làm hàng ngày, nó có thể không phải là khẩn cấp nhất của bạn.

Đó là một trong những cuốn sách (tốt, bộ sưu tập sách) rất tốt để đọc sớm trong sự nghiệp của bạn bởi vì nó thực sự mang đến cho bạn những hiểu biết tốt mà bạn thường không có được cho đến sau này, nhưng nó không cần thiết để tồn tại cho đến khi bạn tốt nghiệp phần đó về sự nghiệp của bạn, nơi bạn không chỉ viết mã, bạn chọn hộp công cụ. Đây là điểm mà bạn thực sự muốn nghiên cứu các thuật toán, hy vọng đã hiểu thiết kế ngôn ngữ một chút và có hiểu biết rất rộng về những công cụ, ngôn ngữ và hệ thống nào hiện có, và cách mỗi người phù hợp với hệ sinh thái của những thứ bạn có thể vẽ cho một dự án cụ thể.

Nói cách khác: đó là học hình ảnh lớn, vì vậy nếu bạn bị ám ảnh như tôi đọc nó bây giờ, nếu bạn không, bạn có thể tắt nó cho đến khi bạn bắt đầu khao khát bước lên thang và trở thành một anh chàng hình ảnh lớn.

9
HedgeMage

Gần đây đã thực hiện nhiệm vụ này, tôi có thể nói rằng cách anh ấy viết rất thú vị và các vấn đề được dán nhãn (theo độ khó) rất thông minh. Lấy tập đầu tiên và đọc chương 1 và 2 và xem bạn thích nó như thế nào.

6
sova

TAOCP là một công việc tuyệt vời, nhưng đọc nó sẽ là một khoản đầu tư thời gian khủng khiếp cho một nhà phát triển phần mềm thực hành. Nếu bạn làm điều đó, bạn sẽ hy sinh vài năm (đó là mất bao lâu) ngân sách tự cải thiện chuyên nghiệp của bạn để học quá nhiều về quá ít.

Tôi sẽ khuyên bạn nên làm việc thông qua một hoặc một vài cuốn sách "tối thượng" về thuật toán, yêu thích của tôi trong lĩnh vực này là Hướng dẫn thiết kế thuật toán của Steven S. Skiena

Sau đó, nếu bạn cảm thấy rằng bạn cần/muốn di chuyển nhiều hơn đến Knuth.

Đồng thời bạn có thể mua một hoặc một số lượng TAOCP, xem qua để hiểu Knuth bao gồm những khu vực nào và giữ nó trong thư viện của bạn trong trường hợp bạn thực sự sẽ cần một số thông tin từ nó hàng ngày công việc. Dự đoán có giáo dục của tôi là bạn sẽ không và đó là một lý do khác tại sao tôi không khuyên bạn nên đọc. Nhưng nếu bạn sẽ thấy mình tham khảo nó đủ thường xuyên, thì bạn sẽ biết rằng nó cũng đáng để bạn dành thời gian để đọc nó để che.

6
kdubinets

Công việc tinh thần của Knuth là tài liệu tham khảo phổ biến nhất mà các lập trình viên dự định để đọc hoặc đọc xong. Một ngày nào đó.

6
Steven A. Lowe

+10 về nhận xét gia đình/trẻ em. Tôi cố gắng và làm hầu hết việc đọc trong khi chịu đựng trên các chuyến bay mắt đỏ cho khách hàng.

Nhưng ... vâng, rất đáng để đọc. Không có lý do để đọc tuyến tính, thay vào đó đọc lướt qua và chọn một vài chủ đề quan tâm.

3
Jé Queue

Đừng quên rằng lúc đầu, Knuth muốn viết một cái gì đó về cách viết một trình biên dịch.

Bạn có thể nhận được rất nhiều thông tin trên mạng với wikipedia chẳng hạn, nhưng nếu bạn không phải là một nhà nghiên cứu nào đó, chỉ cần đọc tóm tắt, bạn sẽ nhận được sự hài lòng.

Bạn vẫn có thể có được cuốn sách đầu tiên để bạn có thể đọc nó khi bạn cảm thấy buồn chán ...

3
jokoon

Tôi chắc chắn trong trại của những người cảm thấy rằng mọi nhà phát triển nên đầu tư vào việc lấy sách vào một lúc nào đó (và giờ trở nên dễ dàng hơn khi có vẻ như họ đang in lại trong bìa mềm ) nhưng trên cùng một mã thông báo, tôi cũng khó có thể tin rằng ai đó sẽ ngồi xuống và đọc tất cả từ bìa này sang bìa khác.

Cách tiếp cận tốt nhất với họ - nếu bạn không đi làm nơi bạn có thời gian rảnh để ngồi và đọc - là đọc đủ để biết nơi tìm thấy những thứ trong đó và sau đó đọc một chương đầy đủ khi bạn thấy mình sử dụng chúng làm sách tham khảo cho một vấn đề nhất định. Với Google và Stack Overflow, việc tiếp cận với sách tham khảo là không phổ biến, nhưng trong một số trường hợp, bạn có thể thấy rằng các cuốn sách cung cấp một số thông tin chi tiết mà bạn sẽ phải gửi thêm thời gian tìm kiếm trên internet.

3
rjzii

Có lẽ điều quan trọng hơn là bạn làm những vấn đề đó trong cuốn sách hơn là bạn chỉ đọc nó. Điều đó sẽ đòi hỏi rất nhiều thời gian.

Anh ấy có tới 4 tập và 5 cuốn sách (dù đó là gì) vì vậy hoàn thành những cuốn sách có lẽ tốt hơn một khóa học đại học về các nguyên tắc cơ bản của khoa học máy tính và khiến bạn trở thành lập trình viên giỏi nhất từ ​​trước đến nay.

Vì bạn đã có một gia đình trẻ, như tôi, bạn đã cho tôi một ý tưởng hay ho. Tôi sẽ mua từng cuốn sách một lần và dạy cho trẻ em của bạn.

2
Peter Turner

Nếu bạn muốn thay đổi thế giới, thì hãy đọc nó. Nếu bạn muốn tìm hiểu các bản hack mới, thì đừng đọc nó.

1
veryfoolish

Nếu bạn tò mò, sau đó làm điều đó, nhưng nó mất khá nhiều thời gian để tiêu hóa vì vậy bạn cần phải dành thời gian của bạn.

Bạn có đi lại nơi bạn có thể đọc - điều đó sẽ hoàn hảo.


EDIT: Bạn có thể thấy phần xem trước này của một phần nhỏ của Tập 4 thú vị: http://www-cs-facemony.stanford.edu/~uno/fasc1a.ps.gz

(lưu ý: phần tái bút nén)

1
user1249

Đó không phải là điều mà hầu hết mọi người sẽ muốn ngồi xuống và đọc trang bìa, không. Đây là một tài liệu tham khảo vô giá, và chắc chắn sẽ rất tốt để chọn nó, chọn một phần thú vị, đọc qua nó và làm một số bài tập. Nhưng các so sánh bách khoa toàn thư được thực hiện ở trên khá thích hợp ... nó lớn, bao quát và chi tiết. Và một số "bài tập" là những vấn đề nghiên cứu có thể mất nhiều năm để giải quyết.

Nếu bạn chỉ muốn có kiến ​​thức tốt hơn về các thuật toán cấp thấp, có thể tốt hơn là bắt đầu với các cuốn sách của Robert Sedgewick (ví dụ: "Thuật toán trong C", "Thuật toán trong Java", v.v.).

1
mindcrime

Knuth's TAOCP là một kiệt tác. Nhưng, giống như bất kỳ kiệt tác nào (như "Illiad", "Chiến tranh và Hòa bình" hay "Tìm kiếm thời gian đã mất" của Proust), nó không dành cho tất cả mọi người hay giờ.

Cuốn sách được viết rất tốt và nghiên cứu rất tốt. Các vấn đề rất lớn và giải thích về các thuật toán được thực hiện tốt.

Vấn đề lớn của cuốn sách là việc Knuth hiển thị mã cho ngôn ngữ hội giả tưởng cho một máy tính hư cấu. Tôi hiểu lý do tại sao anh ấy làm điều đó, nhưng thực tế là nó hút.

Tôi khuyên bạn nên sử dụng cuốn sách này như một cuốn kinh thánh. Khi cần, hãy tìm nó. Bạn sẽ tìm thấy câu trả lời. Nó đã xảy ra với tôi hơn một lần!

1
Eduardo