2009-02-08 15 views
10

Trochę się męczy fakt, że muszę kodować jawnie dla wielordzeniowych, jeśli chcę więcej prędkości, szczególnie gdy piszę jednorazowy skrypt. Moja skrzynka dev ma już 8 rdzeni i liczba ta rośnie o wiele szybciej niż prędkość zegara. Języki funkcjonalne zdają się oferować potencjalny właz ucieczkowy, ale nie włożyłem jeszcze wysiłku w opanowanie jednego z nich.Jakie są imponujące przykłady kodu funkcjonalnego?

Chciałbym zobaczyć kilka przykładowych fragmentów kodu realnego świata, które są znacznie lepsze i/lub bardziej równoległe niż niefunkcjonalne alternatywy. Nie jestem wybredna w kwestii tego języka - bardziej interesują mnie koncepcje.

Dzięki!

+0

co pracujesz jako dev box, który ma 8 rdzeni? –

+0

Przypuszczam, że jest to dual quad core –

+0

Tak - jest to podwójny, czterordzeniowy serwer Dell. – twk

Odpowiedz

6

Co powiecie na MapReduce? Jest niewiarygodnie równoległy i mimo że nie jest zaimplementowany w językach funkcjonalnych w odniesieniu do papieru, jest inspirowany wersjami Lisp: map i reduce.

+0

I Hadoop, alternatywa Open Source dla MapReduce. –

2

Twoje pytanie dotyczy materiału zgodnego z najnowszym stanem techniki. Myślę, że twoim najlepszym wprowadzeniem do tej dziedziny, z przykładami, jest książka Implicit Parallel Programming in pH autorstwa Nikhila i Arvinda.

1

Istnieje rozszerzony przykład indeksowania/wyszukiwania tekstu za pomocą polecenia mapreduce w Rozdziale 20 ("Programowanie wielordzeniowych procesorów") z Programming Erlang. Nie wiem, jak imponujące, ale wygląda na to, że śmiertelnicy kodu mogą pisać.

1

LINQ jest pięknym przykładem funkcjonalne programowanie w popularnych językach. Skodyfikowany kod i monady? W MOIM C#? :) Anyways, w.r.t. wątku, jest wzmianka o Parallel LINQ. Korzystając z niezmienności i funkcji wyższego rzędu (a może z Expression), biblioteki mogą zrównoleglować rzeczy dla nas.

I inny link do F # z async workflows. Imponująca jest możliwość pobrania kodu synchronizacji, a dzięki kilku niewielkim adnotacjom przekształcenie go w kod asynchroniczny. Kod zachowuje wiele imperatywnych właściwości, których możesz używać. Nie musisz całkowicie zmieniać rzeczy, aby to wykorzystać; kompilator obsługuje wszystko.

0

Mój nauczyciel żartował sobie, że najlepszym przykładem kodu funkcjonalnego jest kod, który nie został napisany.

Powiązane problemy