2013-04-11 13 views
14

Pochodzę ze Scala (i Akka), ostatnio zacząłem szukać innych języków, które zostały zaprojektowane z myślą o przetwarzaniu rozproszonym, a mianowicie Erlang (i trochę Oz i Bloom). Zarówno Erlang, jak i Oz są napisane dynamicznie, a jeśli dobrze pamiętam (spróbuję znaleźć link), ludzie próbowali dodać typy do Erlanga i udało im się wpisać dużą jego część, ale nie mogli skutecznie zmusić systemu do dopasowania go do ostatni kawałek?Dynamiczne pisanie i programowanie systemów rozproszonych

Oz, podczas gdy język badawczy, jest z pewnością interesujący dla mnie, ale to jest również wpisane dynamicznie.

Obecna implementacja Blooma jest w języku Ruby i konsekwentnie jest wpisywana dynamicznie.

Według mojej wiedzy, Scala (i przypuszczam, że Haskell, choć uważam, że została zbudowana początkowo bardziej jako eksploracja czystych leniwych języków funkcjonalnych w przeciwieństwie do systemów rozproszonych) to jedyny język, który jest statycznie napisany i oferuje poziom języka abstrakcje (z braku lepszego terminu) w przetwarzaniu rozproszonym.

Zastanawiam się, czy istnieją nieodłączne zalety pisania dynamicznego nad typowaniem statycznym, specjalnie w kontekście zapewniania abstrakcji poziomów językowych do programowania systemów rozproszonych.

+1

Obecna implementacja Akka jest obecnie nietknięta (wykorzystuje Dowolne dla wiadomości). Pojawienie się makr w Scali 2.10 ułatwia implementację wersji pisanej. Zobacz ten film z Nescali 2013: http://nescala.org/#t-14537068 –

Odpowiedz

14

Niezupełnie. Na przykład ta sama grupa, która wymyśliła Oz, później wykonała pracę nad Alice ML, projektem, którego misją było ponowne przemyślenie Oz jako typowego, funkcjonalnego języka. I chociaż pozostał projektem badawczym, twierdziłbym, że to wystarczający dowód na to, aby pokazać, że ta sama podstawowa funkcjonalność może być obsługiwana w takim ustawieniu.

(Pełne ujawnienie. Byłem doktorantem w tej grupie w czasie, a system typu Alice ML była moja teza)

Edit: Problem z dodawaniem typy do Erlang nie jest dystrybucja, jest to po prostu przykład ogólnego problemu, że dodawanie typów do języka po fakcie nigdy nie działa dobrze. Z drugiej strony nadal istnieje Dializer dla Erlang.

Edycja 2: Powinienem wspomnieć, że były inne ciekawe projekty badawcze dla typowanych języków rozproszonych, np. Acute, który miał zakres podobny do Alice ML, lub ML5, który wykorzystywał typy modalne, aby umożliwić dokładniejsze sprawdzanie charakterystyki ruchliwości. Ale przetrwały one tylko w formie gazet.

+0

Alice ML z pewnością wygląda interesująco, choć wydaje się, że nie było na niej żadnej aktywności od 2007 roku? Czy wiesz, czy są jakieś przyszłe prace do wykonania? Wygląda na to, że Oz (konkretnie Mozart) planuje wersję 2 platformy, przynajmniej według aktywności GitHub. – adelbertc

+0

@adelbertc, Alice jest nadal używana w nauczaniu pierwszaków, ale niestety nie jestem świadomy żadnych planów dalszego rozwoju. Re Mozart 2: większość oryginalnego konsorcjum nie jest już zaangażowana i nie jestem pewien, czy istnieje konkretna linia czasu. –

+0

(zwracając się również do drugiej edycji) ah, te wszystkie języki wydają się interesujące, ale niestety wszystkie zdają się być tym samym losem, w jakim widziałem inne projekty badawcze. Być może Bloom będzie następnym rywalem? – adelbertc

10

Nie ma żadnych nieodłącznych zalet dynamicznego pisania na klawiaturze statycznej dla systemów rozproszonych. Oba mają swoje wady i zalety w ogóle.

Erlang (Akka jest inspirowany modelem Erlanga) jest dynamicznie wpisywany. Dynamic typing in Erlang został wybrany historycznie z prostych powodów; ci, którzy zaimplementowali Erlanga na początku, pochodzili głównie z dynamicznie typowanych języków, w szczególności z Prologu i jako takie, posiadanie dynamiki Erlanga było dla nich najbardziej naturalną opcją. Erlang został zbudowany z myślą o awarii.

Pisanie statyczne pomaga w przechwytywaniu wielu błędów w samym czasie kompilacji, a nie w czasie wykonywania, tak jak w przypadku pisania dynamicznego. W Erlang wypróbowano typowanie statyczne i to była awaria. Ale dynamiczne pisanie pomaga w szybszym prototypowaniu. Check this link for reference which talks a lot about the difference.

Subiektywnie wolałbym raczej pomyśleć o rozwiązaniu/algorytmie problemu, zamiast myśleć o typie każdej zmiennej, której używam w algorytmie. Pomaga również w szybkim rozwoju.

Są kilka linków, które mogą pomóc

BenefitsOfDynamicTyping

static-typing-vs-dynamic-typing

BizarroStaticTypingDebate

+1

Czy mógłbyś rozwinąć temat "Erlang został zbudowany z powodu braku pamięci"? –

+4

Erlang opiera się na założeniu, że awaria jednego z komponentów nie powinna mieć wpływu na cały system. Błędy programistyczne, awarie sprzętu lub awarie sieci itp. Są uwzględniane: język zawiera funkcje takie jak drzewo nadzoru, monitorowanie procesów Erlanga itp., Co pozwoli na odzyskanie sprawności po awarii, dystrybucję do różnych węzłów, obsługę nieoczekiwanych błędów i nieprzerwane działanie. Podczas gdy większość języków i systemów typów dąży do tego, aby program był wolny od błędów, Erlang zakłada, że ​​błędy i tak się wyda i upewni się, że te przypadki zostały spełnione.Ref: http: //learnyousomeerlang.com/types-lub-lack-thereof – Vinod

0

Cloud Haskell dojrzewa szybko, statycznie wpisane, a niesamowite. Jedyne, czego nie ma w sobie, to wymienianie na gorąco w stylu Erlanga - to jest prawdziwa "cecha zabójcy" dynamicznie pisanych systemów rozproszonych ("ostatni bit", który spowodował, że Erlang trudno było statycznie napisać).

+0

Kiedy Wygląda na to, że ostatnio nie zawierało też superwizorów, które są jednym z najlepszych pomysłów, które Erlang wnosi do stołu. Czy to się ostatnio zmieniło? Oczywiście, po podniesieniu tego, nie oznacza to, że języki dynamiczne mają przewagę - Akka dostarcza je dla Scali (i Javy), więc wyraźnie nie ma żadnych ograniczeń. –

+1

Nadzór jest zapewniany w chmurze haskell, a nie w bibliotece procesów rozproszonych, ale w super-ustawionej, rozproszonej platformie procesowej. To nie zostało jeszcze udostępnione do hakowania, ale zapewnia wsparcie dla serwerów genów i superwizorów wraz z kilkoma innymi użytecznymi abstrakcjami zapożyczonymi z OTP. Pierwsze publiczne wydanie ma się odbyć tego lata - zaktualizuję ten wątek, kiedy to się stanie. – hyperthunk

+0

@hyperthunk: Wspaniale, dobrze słyszeć! Czytałem niedawno gazetę Cloud Haskell i straciłem nadzór w stylu Erlanga, ciesząc się na letnią premierę. – adelbertc