Czy są rzeczy, które Elixir może zrobić, czego Erlang nie może, lub odwrotnie?

103

To pytanie dotyczy Beam VM i możliwości, które zapewnia, a nie ogólnego kontekstu tego, co może zrobić pełny język Turing. Chcę poświęcić trochę czasu na naukę czystego Erlanga lub Elixiru. Dostaję podstawowe różnice między nimi i skłaniam się ku Elixirowi ze względu na makra, lepszą składnię i szybszy rozwój języka w tym dniu.

Moje pytanie brzmi: jeśli wybiorę Elixir, czy natknę się na coś, czego nie mogę w nim zrobić, ale mogę zrobić w Erlangu? Czy mogę używać wszystkich rzeczy OTP, wszystkich bibliotek Erlang, przeładowania kodu itp. Z Elixir?

Nie proszę o czyjąś preferencję między tymi dwoma; tylko fakty o możliwościach języków. Najlepiej od kogoś, kto użył obu w produkcji.

Saša Šijak
źródło
20
@hedgehog to nie opinia, fakt. pytanie brzmi: „Moje pytanie brzmi: jeśli wybiorę Elixir, czy natknę się na coś, czego nie mogę zrobić, ale mogę zrobić w Erlangu? Czy mogę używać wszystkich rzeczy OTP, wszystkich bibliotek Erlanga, przeładowania kodu itp. a odpowiedź opiera się na faktach, a nie opinii.
Saša Šijak
4
Na to pytanie odpowiedź brzmi: wszystko, co możesz zrobić w Erlang, jest możliwe w Elixirze. Ale tytuł sugeruje, że pytanie brzmi, w co warto inwestować, a tutaj odpowiedź brzmi: „to zależy”. Co chcesz robić? Dla aplikacji webowych Elixir jest dużo przyjemniejszy, ponieważ został stworzony, aby rozwiązać ten problem. W przypadku niektórych systemów rozproszonych prostota Erlanga jest lepsza. Brak funkcji jest często dobrą rzeczą. Nauka tylko Erlanga pomoże Ci skupić się na najważniejszym elemencie: OTP.
tkowal
2
@ SašaŠijak Zmieniłem tytuł pytania, aby IMO lepiej odzwierciedlało to, o co chodzi - cofnij, jeśli się nie zgadzasz.
Paweł Obrok 22.06.2016
2
@ PawełObrok świetna edycja, słusznie podsumowuje to, co mnie interesowało
Saša Šijak
3
za każdym razem, gdy
zadaję

Odpowiedzi:

37

Przedmowa - w produkcji używałem tylko Elixiru, a nie Erlanga.

Szczerze polecam Elixir. To jest moja opinia i niekoniecznie właściwa dla Ciebie, ale poniżej wymienię moje powody.

  1. Produktywność: Wywodzę się z Ruby / Rails, więc składnia i styl Elixir są mi bardzo znane. Jednym z głównych czynników, który pomaga mi określić, czy mam się uczyć języka, czy nie, jest to, jak bardzo potrafię się nim posługiwać - głównie dlatego, że wybrałem Rubiego. Eliksir jest taki sam. Mogę pracować w nim równie szybko, jak Ruby, z wszystkimi dodatkowymi zaletami współbieżności i dopasowywania wzorców.
  2. Erlang: Ponieważ Elixir jest zbudowany na Erlangu i kompiluje się do erlang i beam vm, masz dostęp do każdego modułu i pakietu erlang. Więc jeśli martwisz się używaniem eliksiru i przegapisz wszystkie funkcje Erlanga, nie powinieneś. Elixir ma nawet własne implementacje większości większych funkcji Erlang / OTP, takich jak GenServer, GenEvent itp.
  3. Społeczność / Zasoby: Społeczność Elixir jest naprawdę świetna. Kanał Slack jest bardzo popularny i jest świetnym sposobem na uzyskanie odpowiedzi na pytania dla początkujących. Istnieje już kilka naprawdę dobrych książek na temat tego języka (Programming Elixir 1.2 - Dave Thomas, autor Ruby Pickaxe), które również ułatwiają przyswojenie języka.

Naprawdę, jeśli masz bałagan z tymi dwoma, prawdopodobnie dojdziesz do tej samej decyzji, że Elixir jest o wiele ładniejszym językiem ze wszystkimi funkcjami Erlang + More. To również rośnie, nie pamiętam dokładnych liczb, ale pamiętam, że przeczytałem coś ze strony internetowej Hex (menedżera pakietów) o znacznym wzroście liczby pobieranych pakietów.

Harrison Lucas
źródło
14
Elixir nie kompiluje się do Erlanga, tylko do kodu BEAM. Elixir NIE JEST podobny do Coffeescript, et. glin. którzy po prostu piszą JS.
Peter R
64

Nie powinieneś natknąć się na nic, co możesz zrobić w jednym, czego nie możesz w drugim, ponieważ możesz swobodnie wywoływać kod Elixir z Erlang i odwrotnie. Możesz nawet łatwo mieszać pliki Erlang i Elixir w jednym projekcie.

W Elixirze:

:erlang_module.erlang_function(args)

w Erlang:

'Elixir.ElixirModule':elixir_function(args)
Paweł Obrok
źródło
2
Czasami może być to trochę skomplikowane podczas budowania wersji z zagnieżdżonymi zależnościami lub w innych bardzo specyficznych przypadkach, ale myślę, że jest to zdecydowanie właściwa odpowiedź. UWAGA : jeśli działa na maszynach o bardzo ograniczonych zasobach, dodanie zależności Elixir i Elixir do wydania może być cięższe pod względem pamięci. Więc jeśli się nie mylę, czasami może się zdarzyć, że trzymanie się czystego Erlanga może przynieść korzyści w postaci zaoszczędzenia kilku megabajtów pamięci, co ułatwia uniknięcie awarii, gdy nie ma miejsca na rozszerzenie maszyny wirtualnej.
Laymer
37

TL; DR - Zacznij od Elixir

Erlang ma bardziej stromą krzywą uczenia się w porównaniu z Elixirem. Gdy zaczniesz uczyć się Elixiru, automatycznie zaczniesz uczyć się Erlang. Dlatego zacznij od Elixiru. Elixir jest napisany w językach Erlang i Elixir. Zobacz dystrybucję na Github (ponieważ Elixir jest pełen makr zwanych metaprogramowaniem). Dystrybucja kodu projektu Elixir

Możesz używać Elixir z Erlang i odwrotnie, stąd pełny ekosystem Erlang obejmujący ponad 20 lat bibliotek.

Więcej szczegółów od Erlang Solutions

Produktywność Elixir „po wyjęciu z pudełka” jest osiągana dzięki silnemu naciskowi na narzędzia i wygodę w wyrażaniu manipulacji danymi. Projekt systemu jest taki sam w Elixir i Erlang, ale Elixir usuwa wiele standardowych kodów i jest łatwiejszy do rozszerzenia. Usunięcie schematu zwiększa produktywność i pozwala programistom szybciej uzyskiwać informacje zwrotne - ma to kluczowe znaczenie, gdy chcesz jak najszybciej wprowadzić swój produkt na rynek. Mniej schematów to także szczęśliwi deweloperzy, a szczęśliwi programiści są nieoczekiwanie produktywnymi programistami.

Wpis na blogu Joe Armstronga (wynalazcy Erlanga) o Elixirze

Zacznij tutaj, aby dowiedzieć się więcej o Elixirze - Pierwsze kroki

Gdy poczujesz, że wszystko idzie dobrze, pracuj nad ćwiczeniem z ćwiczeniami fizycznymi i innymi zasobami .

Sairam
źródło
3

Jest kilka rzeczy. Myślę, że nie możesz utworzyć rekurencyjnej funkcji anon w Elixirze. Teraz, żeby być uczciwym, jest to coś, co przez ponad 8 lat Erlang nie sądzę, żebym kiedykolwiek musiał robić, a gdybym to zrobił, można to łatwo zrobić w inny sposób. Prawdopodobnie jest kilka innych rzeczy, które całkiem szczerze możesz zignorować.

Ogólnie rzecz biorąc, w przypadku rzeczy, które większości ludzi interesuje wszystko, co możesz zrobić w Erlang, możesz zrobić w Elixirze i odwrotnie. Społeczność po stronie Elixir wydaje się być bardziej aktywna, więc proponuję zacząć od niej. Niedawno przeniosłem się z Erlang do Elixir i poza kilkoma wymyślnymi rzeczami w Proper mogę powiedzieć, że jest to dość łatwe przejście

Zachary K
źródło