2010-07-23 62 views
8

Bất kể bạn thành thạo lập trình C hay Java như thế nào, bạn nên cân nhắc việc thêm lập trình đa luồng vào bộ kỹ năng của mình.Làm thế nào người ta có thể học lập trình song song đa luồng?

Đây KHÔNG phải là điều bạn nên tự mình tìm hiểu. Đó là khó khăn hơn để tìm hiểu hơn lập trình tuần tự. Nếu bạn là Giám đốc kỹ thuật, bạn nên đầu tư đào tạo lại nhân viên chủ chốt của mình trong lập trình đa luồng. Bạn cũng có thể theo dõi các hoạt động nghiên cứu trong các ngôn ngữ lập trình đồng thời (như các ngôn ngữ được liệt kê ở trên). Bạn có thể chắc chắn rằng đối thủ cạnh tranh của bạn sẽ.

Đây là báo giá từ this article. Tôi tưởng tượng hầu hết chúng ta ở đây rất thành thạo trong việc dạy chính mình các ngôn ngữ, cấu trúc dữ liệu, thuật toán, vv, và tôi nhận ra sự thay đổi tinh thần cần phải xảy ra để làm đúng lập trình song song.

Tôi từ chối ý tưởng rằng người ta không thể tự học lập trình song song "đúng". Vì vậy, cách có trách nhiệm nhất để dạy cho mình lập trình song song là gì? Sách và tài nguyên nào khác được khuyến nghị?

Chỉnh sửa: Dưới đây là một số chi tiết khác. Tôi sẽ chủ yếu áp dụng chúng vào máy tính khoa học, nhưng tôi đang tìm kiếm tài liệu/tư vấn về ngôn ngữ bất khả tri về ngôn ngữ. Tôi cũng đang tìm kiếm một liều lượng lý thuyết thực tế. Hãy tưởng tượng bạn có một nhà phát triển xuất sắc yêu thích toán học và khoa học máy tính, nhưng không bao giờ tham gia một khóa học về lập trình song song. Bây giờ hãy tưởng tượng anh ta có một thời hạn cho một vấn đề (nói 1 năm), và bạn phải cho anh ta các tài liệu để tìm ra liệu song song sẽ hữu ích, và làm thế nào để thực hiện nó đúng. Bạn sẽ cung cấp tài nguyên gì cho anh ấy? Đó là cách tôi (và tôi hy vọng các nhà phát triển khác) sẽ quan tâm đến việc học song song/đa luồng.

Trả lời

5

Nếu bạn dốc lên tại nơi làm việc của tôi và hỏi rằng câu hỏi tôi muốn ném một vài cuốn sách với bạn:

Introduction to Parallel ComputingParallel Scientific Computing

phản ứng của bạn cũng có thể là 'đó không phải là những gì tôi muốn học trong khoảng !' vì vậy hãy quay lại và cụ thể hơn một chút trong câu hỏi của bạn và chúng tôi sẽ có thể cụ thể hơn một chút trong câu trả lời của chúng tôi. Tuy nhiên, cách có trách nhiệm nhất để tự dạy cho mình công cụ này cũng giống như cách có trách nhiệm nhất để tự học cho mình bất kỳ công cụ lập trình nào: gặp vấn đề, nhận được túi công cụ, lấy hạn chót và nhận được sự bẻ khóa.

+0

Bạn đã tự mình đọc những cuốn sách đó chưa? Bạn đã đọc đánh giá của những cuốn sách này, đặc biệt là sách thứ hai. Điều quan trọng là phải có cơ sở vững chắc để giới thiệu sách 100USD! – mloskot

+0

Có, tôi đã đọc sách. Tôi cũng đã làm việc thông qua một số vấn đề họ đặt ra, tôi đã suy nghĩ về những gì họ nói và kinh nghiệm của riêng tôi, so sánh và đối chiếu những gì họ nói với các nguồn thông tin khác. Và nếu bạn làm việc ở đây, chúng tôi sẽ cung cấp bản sao của các cuốn sách cho nghiên cứu của bạn và 100 đô la là các nút so với việc gửi cho bạn một khóa học để tìm hiểu những thứ tương tự. NHƯNG, tôi đã viết câu trả lời này 2 năm trước, và tôi không tuyên bố rằng tôi sẽ vẫn đề nghị hai cuốn sách giống nhau. –

+0

Tôi chỉ đơn giản hỏi xem bạn có đề xuất nó dựa trên kinh nghiệm của riêng bạn vì bạn chưa chỉ định điều đó trong câu trả lời hay không. Tôi không hỏi gì cả. – mloskot

0

Đối với công nghệ của Microsoft, có rất nhiều thông tin tại cổng thông tin Máy tính song song MSDN here. Bạn có thể bắt đầu với các liên kết Bắt đầu.

0

Bài viết đó về cơ bản là quảng cáo cho các dịch vụ đào tạo. Bạn nên đối xử với ý kiến ​​của một nhân viên bán hàng về giá trị của các sản phẩm của riêng mình với một mức độ của circumspection.

Tôi không biết làm thế nào bạn học được mọi thứ khác mà bạn đã biết về máy tính, nhưng nếu điều đó làm việc cho bạn, tôi sẽ gắn bó với cách tiếp cận tương tự cho điều tiếp theo bạn muốn học.

Tôi không thể đề xuất bất kỳ cuốn sách bất khả tri về ngôn ngữ/nền tảng nào - tôi cho rằng chúng sẽ rất học thuật. Nếu bạn đang thực sự trên .NET, sau đó Jeff Richter viết rất nhiều thứ tốt về luồng, và tôi tin rằng phiên bản thứ 3 của cuốn sách C#/CLR của anh ấy (các phiên bản trước là tuyệt vời) có rất nhiều thứ về lập trình song song.

+0

Tôi thực sự nghĩ rằng học lập trình song song "từ các ví dụ", bắt đầu với một ngôn ngữ/OS/lib/API cụ thể, là một cách xấu. Đây không phải là để nói rằng nó không thể làm việc, nhưng sự hiểu biết lý thuyết của vấn đề là phải. Nếu không, bạn sẽ khó chuẩn bị cho các vấn đề về bộ nhớ yếu hoặc hiểu tại sao các thuật toán không có khóa là quan trọng hoặc đảo ngược ưu tiên là gì. –

+0

Tôi nghi ngờ đó là sở thích cá nhân chủ yếu. Cá nhân tôi không nghĩ rằng bất kỳ khái niệm nào phức tạp - thực tế toàn bộ vấn đề với lập trình song song là các vấn đề cá nhân là không quan trọng để mô tả, đó là lý do tại sao một lỗi lớn thường dẫn đến khi bạn thực sự chạy những thứ song song thật bất ngờ cho người mới đến. Nhưng tôi đã đọc Dijkstra từ rất lâu rồi, nên có lẽ tôi đã ở trong trại của bạn mà không biết. –

0

nếu bạn đọc mọi thứ mà Google tìm thấy cho nội dung bên dưới, bạn sẽ có một khởi đầu khá tốt. Giả sử nền CNTT nói chung, vv Đây không phải là ngôn ngữ hoặc hệ điều hành cụ thể:

Peterson của thuật toán nguyên tử thử nghiệm-và-set quan trọng phần hẹn rào cản bộ nhớ thuật toán lock-free

Nền toán học này có lẽ là Petri net.

Đọc Dijkstra.

+1

Hmmm ... Dijkstra? Trong "Ghi chú về lập trình có cấu trúc" của mình, ông thậm chí còn nhấn mạnh rằng ông sẽ hạn chế bản thân với các chương trình được viết cho một máy tuần tự. Và hạn chế này ở khắp mọi nơi trong hầu hết các cuốn sách trong độ tuổi đó. Dijkstra, Wirth, vv Tôi đã bỏ lỡ điều gì đó? – Wildcat

+0

không, bạn đã không làm vậy. Đó chỉ là một sai lầm về phía tôi, anh ta dường như không viết gì về chủ đề này –

Các vấn đề liên quan