2009-02-08 39 views
10

Tôi cảm thấy hơi mệt khi phải mã hóa rõ ràng cho đa lõi nếu tôi muốn có tốc độ cao hơn, đặc biệt khi tôi chỉ viết một tập lệnh một lần. Hộp dev của tôi đã có 8 lõi và con số đó sẽ tăng nhanh hơn rất nhiều so với tốc độ đồng hồ. Ngôn ngữ chức năng dường như cung cấp một lối thoát hiểm tiềm ẩn, nhưng tôi chưa đặt nỗ lực để làm chủ một trong số chúng.Một số ví dụ ấn tượng về mã chức năng là gì?

Tôi rất muốn xem một số phần mẫu mã thực tế tốt hơn và/hoặc song song hơn các lựa chọn thay thế phi chức năng. Tôi không cầu kỳ về ngôn ngữ - tôi quan tâm nhiều hơn đến các khái niệm.

Cảm ơn!

+0

bạn đang chạy làm hộp dev có 8 lõi? –

+0

Đoán của tôi là lõi tứ kép –

+0

Có - đó là máy chủ Dell lõi tứ kép. – twk

Trả lời

4

(dài, nhưng rất tốt) Video này cung cấp cả một giới thiệu cho F# và một bản demo hấp dẫn như thế nào dễ dàng là để parallelize mã trong ngôn ngữ:

http://channel9.msdn.com/pdc2008/TL11/

+0

Đó là một video tuyệt vời - cảm ơn. – twk

6

Làm thế nào về MapReduce? Nó cực kỳ song song và mặc dù nó không được thực hiện trong các ngôn ngữ chức năng theo như giấy đi, nó lấy cảm hứng từ số mapreduce của Lisp.

+0

Và Hadoop, giải pháp thay thế mã nguồn mở của MapReduce. –

2

Câu hỏi của bạn là yêu cầu quyền vật chất ở trạng thái hiện đại. Tôi nghĩ rằng giới thiệu tốt nhất của bạn cho lĩnh vực này, với các ví dụ, là cuốn sách Implicit Parallel Programming in pH bởi Nikhil và Arvind.

1

Có một ví dụ mở rộng của trình chỉ mục/tìm kiếm văn bản bằng cách sử dụng Mapreduce trong Chương 20 ("Lập trình CPU đa lõi") của Programming Erlang. Tôi không biết nó ấn tượng như thế nào, nhưng có vẻ như những người viết mã có thể viết.

1

LINQ là một ví dụ tốt đẹp của lập trình chức năng trong các ngôn ngữ chính thống. Mã được sửa đổi và monads? Trong MY C#? :) Anyways, w.r.t. luồng, có đề cập đến Parallel LINQ. Bằng cách sử dụng tính bất biến và các hàm bậc cao hơn (và Biểu thức, có lẽ), các thư viện có thể song song với mọi thứ cho chúng ta.

Và một liên kết khác đến F # với async workflows. Điều ấn tượng là khả năng lấy mã đồng bộ và với một vài chú thích nhỏ biến nó thành mã không đồng bộ. Mã này giữ lại rất nhiều phẩm chất bắt buộc mà bạn có thể đang sử dụng. Bạn không phải thay đổi hoàn toàn mọi thứ để tận dụng điều này; trình biên dịch thông qua xử lý tất cả.

0

Một giáo viên của tôi đã từng đùa rằng ví dụ lớn nhất về mã chức năng là mã không được viết.

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