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.


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.


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)

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 .


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.