Piękny kod Erlanga [zamknięty]

15

Próbuję dowiedzieć się więcej o Erlangu niż projektach zabawek, którymi się bawiłem. W tym celu czytam Programowanie Erlang i niektóre archiwa Armstronga na temat oprogramowania .

Chciałbym również przeczytać przykładowy kod (najlepiej produkcyjny), który pokazuje rodzaje rzeczy, które można zbudować za pomocą Erlanga, które byłyby nieproporcjonalnie trudne w innych językach. Poza (zakładam) Ziewaniem , czy są jakieś publicznie dostępne przykłady pięknego kodu Erlanga, które mógłbym przeczytać, aby lepiej zrozumieć język i / lub zobaczyć idiomatyczne zastosowania różnych konstrukcji językowych?

W szczególności nie szukam kodu, który „wykonuje zadanie”, ale używa wątpliwych praktyk lub przykładów w stylu „oto, jak piszesz factorialw Erlangu”.

Podobnie, czy ktoś może polecić dobrą literaturę do nauki tego języka (inną niż wspomniany „Programowanie Erlang”)? Jeśli chcesz, nauczysz się tego, ale jeśli masz na to jakieś standardowe książki, wrzuć je.

Inaimathi
źródło
Erlang został stworzony przez Ericcson do projektowania i budowy masowo równoległych przełączników do ruchu telefonicznego. Został zaprojektowany przez firmę Ericsson do obsługi rozproszonych, odpornych na uszkodzenia, działających w czasie rzeczywistym aplikacji non-stop. To domena problemowa, w której się wyróżnia. Dla wszystkich innych domen problemowych ... Twój przebieg może się różnić.
Robert Harvey,

Odpowiedzi:

-4

Ponieważ dodałeś znacznik programowanie funkcjonalne, co powiesz na pisanie kompilatora lub interpretera Erlanga w Haskell? Erlang nie jest już tak jak na razie najnowocześniejszy. Polecam nauczyć się języka Erlang w ciągu jednego lub dwóch dni, podobnie jak niektórych innych języków (LISP, Prolog), a następnie zapomnieć o nich; są tylko krokiem do odkrycia imperatywnych języków OOP.

W przypadku mniejszych zadań niż implementacja kompilatora zobacz Project Euler .

[EDYCJA] Aby odpowiedzieć na komentarz:

Z technicznego punktu widzenia: Erlang był dobry w dawnych czasach, kiedy nie było procesorów wielordzeniowych. Ale teraz - biorąc pod uwagę istniejące kompilatory / interpretatory, których się znam - po prostu nie skaluje się już tak, jak powinien. Tłumacz napisany w języku Haskell skalowałby się, kompilowany w języku Haskell przyspieszyłby, ale usunąłby funkcję zastępowania kodu w locie.

Z punktu widzenia programistów: Haskell nie jest najlepszym wyborem dla wszystkich odpowiednich zadań, ale prawdopodobnie bardziej zaawansowane języki są bardzo eksperymentalne, a te niestosowne zadania zwykle mają coś wspólnego z systemami wbudowanymi (takimi jak mikrokontrolery i GPU) lub crunching, gdzie C i Asembler są nadal najlepszym wyborem.

Co dokładnie można zrobić z Erlangiem lepiej niż w innych językach?

comonad
źródło
4
Nie twierdziłem, że się go uczę, ponieważ był to najnowocześniejszy; Wydaje mi się, że wygląda interesująco i mogą istnieć rzeczy, które można zbudować przy pomocy innych języków. Jeśli twoja odpowiedź brzmi: „Haskell jest lepszym wyborem dla wszystkich odpowiednich zadań”, może powiesz mi, dlaczego konkretnie (zamiast tylko niejasno twierdzić), i odpowiesz na pierwsze pytanie dla Haskella zamiast Erlanga?
Inaimathi,
1
Nie wiem, czy ta odpowiedź jest tak zła, choć pasuje do pierwotnego pytania. Jeśli chcesz zobaczyć pięknego Haskella w tym sensie, o którym mówi Comanad, spójrz na en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours Jest to samouczek, który uczy haskell, bibliotekę parsowania parsera i schemat, pisząc parser schematów . Myślę, że kombinatory parsera to jedna z najpiękniejszych rzeczy do zabawy w funkcjonalnych językach. Są też trochę praktyczne; gdy już wiesz, jak pisać parsery, możesz projektować własne języki w celu rozwiązania określonych problemów.
CodexArcanum
1
„Co dokładnie można zrobić z Erlangiem lepiej niż w innych językach?” Nie wiem; dlatego próbuję się tego nauczyć. Moja intuicja mówi mi, że język, którego główną konstrukcją jest proces (w przeciwieństwie do zamknięcia jak w CL, lambda jak w Scheme lub w słowniku jak w Pythonie) miałby coś ciekawego do zaoferowania. Haskell jest również funkcjonalny i ma podobne konstrukcje dopasowywania wzorca, ale nie ma nieustannego skupienia się na współbieżności. W rzeczywistości główny konstrukt w Haskell wydaje się być typem, co sprawia, że ​​uważam, że są to bardzo różne zwierzęta.
Inaimathi,
2
@CodexArcanum - AFAIK, Erlang i OTP są dostępne na podstawie pochodnej Licencji Publicznej Mozilla i są dostępne bezpłatnie w repozytorium Debian. Co miałeś na myśli mówiąc, że „system jest zastrzeżony”?
Inaimathi,
1
@comonad - Miałem na myśli to, że „Haskell jest lepszym wyborem dla wszystkich odpowiednich zadań” brzmiało: „Dla każdego zadania, które mógłbym wykonać z Erlangiem w sposób akceptowalny, Haskell może to zrobić lepiej”. Nie chciałem sugerować, że możesz wykonywać całą pracę programistyczną w jednym języku lub że chciałem używać tylko jednego języka dla wszystkich moich projektów. Wyglądało na to, że pytasz „Po co używać Erlanga, skoro możesz korzystać z Haskell?”, Co sugeruje, że uważasz, że Haskell jest bezpośrednio lepszy. Chciałem, żebyś wyjaśnił i poparł to twierdzenie.
Inaimathi,