Elixir - hit czy kit?

0

Skoro język Elixir umożliwia lepsze wykorzystanie rdzeni, łatwiejszą obsługę połączeń i w dodatku ma framework wzorowany na railsach. To czemu jest w nim tak mało ofert? Czemu jest więcej programistów NodeJS skoro w Elixir można zrobić to lepiej?

Zastanawiam się nad tym i mam kilka przemyśleń:

a) Programowanie w Elixir sprowadza się do programowania agentowego i funkcyjnego. I chyba jest to mniej pragmatyczy sposób biorąc pod uwagę dostępne języki. Myślę, że lepiej by było, gdyby to programista miał więcej możliwych podejść/technik do problemu, a nie tak, że język narzuca patrzenie na wszystkie problemy w jednakowy sposób.

b) Może większość osob czuje, że Elixir to bardziej rozwiązanie do osób programujących w Ruby. Natomiast póki nie ma tak wiele gemów jak w Ruby to Elixir jest w odstawce? A może programiści Ruby nie czują programowania funkcyjnego? Może ten język nie jest dla typowego programisty naturalny i w ten sposób bardziej odstasza niż zachęca?

c) Może we wszystkim chodzi o pieniądze i generalnie sam język nie ma nic do zaoferowania rynkowi. Tzn w małej firmie lepiej jest mieć kilku tańszych programistów w NodeJS, a w coraz większych firmach lepiej jest mieć programistów Scala (bo Elixir jest dynamiczny i zbyt magiczny (makra))

Fajnie byłoby, gdyby @Koziołek też zabrał głos w dyskusji. Z tego co widziałem to pisał on na blogu i robił tłumaczenia do elixir shool - dzięki!

1

Ale gdzie jest mało ofert w Elixirze? W tym kraju? Jeśli tak to za dużo abstrakcji oczekujesz. Tęgie umysły przyznają, że robią outsorucing .NET i Javy bo dobrze płacą. USA/UK wyrzucają te technologie od siebie bo tutaj ludzie pracują za 1/3 ich stawki i nazywają siebie bogaczami. Klasą wyższą itp. itd. Natomiast tam inżynierowie biorą się za nowsze technologie, które tutaj przyjdą jeśli tam się sprawdzą w postaci zrealizowanych projektów i jednocześnie znudzą (za 20 lat).

Wszyscy uczą korpojęzyków. Szkoły średnie, uczelnie, butkampy. Koniec końców widzisz oferty w C#, Java, JS, Scala powiedzmy, że w tym kraju dopiero ożywa. Chociaż w tymtempie upłynie dużo czasu nim ożyje porządnie o ie w ogóle. Python? Coraz wiecej małych firm (na szczęście) wykorzystuje ten język.
WIdziałęm swego czasu ofertę w Elixir z Poznania bodajże i to byłoby na tyle.

Nawet NodeJS czy Go w tym kraju to abstrakcja. Chcesz pracować w Elixirze? To szukaj poza granicami. Tylko pamiętaj, że często Eixir wiązany jest z Ruby, Go, Pythonem lub PHP. A pracy jest naprawdę dużo tylko trzeba jej poszukać w odpowiednich miejscach jak Linked czy https://elixir.career/

1

Ale gdzie jest mało ofert w Elixirze? W tym kraju? Jeśli tak to za dużo abstrakcji oczekujesz. Tęgie umysły przyznają, że robią outsorucing .NET i Javy bo dobrze płacą. USA/UK wyrzucają te technologie od siebie bo tutaj ludzie pracują za 1/3 ich stawki i nazywają siebie bogaczami. Klasą wyższą itp. itd. Natomiast tam inżynierowie biorą się za nowsze technologie, które tutaj przyjdą jeśli tam się sprawdzą w postaci zrealizowanych projektów i jednocześnie znudzą (za 20 lat).

Nawet w USA dalej rządzą Java, JavaScript, Python, C/ C++ itd Wszystkie te języki mają ponad 20 lat (licząc od pojawienia się wersji oficjalnej).

0
Nieposkromiony Kura napisał(a):

Skoro język Elixir umożliwia lepsze wykorzystanie rdzeni, łatwiejszą obsługę połączeń i w dodatku ma framework wzorowany na railsach. To czemu jest w nim tak mało ofert? Czemu jest więcej programistów NodeJS skoro w Elixir można zrobić to lepiej?

Przepraszam, że się czepiam, ale: co można zrobić lepiej? Jaki jest use case? Jakie problemy występowały lub występują w projekcie? Jaka była dostępność narzędzi, bibliotek i wreszcie samych devów?

1

Wywołany do tablicy odpowiadam:

  1. Ofert nie jest mało, ale szybko znikają. Znajoma firma, robiąca w railsach w przeciągu trzech miesięcy w całości przesiadła się na Elixira.
  2. Elixir ma stosunkowo niski próg wejścia dla railsowców, bo był pisany przez jednego z głównych commiterów RoR więc wiecie...

ad a. Nie, nie będzie lepiej. Paradygmaty funkcyjny i agentowy są domyślne w Elixirze ponieważ tak działa maszyna BEAM. Można sobie napisać makra, które "dołożą" nam do języka trochę obiektówki, ale po co?
ad b. Akurat jak wspomniałem wyżej, programiści ruby mają łatwiej, bo chociażby składnia jest zbliżona. Brak gemów też nie jest już aż takim problemem, bo hex jest wypełniany w miarę potrzeb.
ad c. Nie do końca. Po prostu BEAM jest mało popularny. Kilka dni temu pojawił się OTP 21 i cisza. Zresztą tak samo jak z kolejną wersją V8. Różnica polega na tym, że NodeJS ma niski próg wejścia, bo "w JS to każdy coś tam robił". Czy node jest tańszy... nie sądzę.

@TurkucPodjadek, elixir śmiga na stosie erlangowym, który ma jeden z sensowniej napisanych modeli współbieżności. W porównaniu z Javą wiele rzeczy pisze się łatwiej i z mniejszym bug-factor, o rubim nie wspominam, bo tam wielowątkowość to nie za bardzo istniała.

Nawet NodeJS czy Go w tym kraju to abstrakcja. Chcesz pracować w Elixirze? To szukaj poza granicami.

@theacid, są i w Polsce oferty. W końcu Jose Valim siedzi w Krakowie :) Choć rzeczywiście najszybciej na zachodzie, a najszybciej i najbliżej w Berlinie.

0

W porównaniu z Javą wiele rzeczy pisze się łatwiej i z mniejszym bug-factor

Z tym bym polemizował.
Model współbieżności oparty o aktorów + message-passing jest dualny do wątków. Do każdego typowego problemu, który można spotkać w aplikacjach wielowątkowych (np. deadlock albo nieprawidłowa synchronizacja) można dopasować dualny problem w modelu asynchronicznym. Natomiat jeśli chodzi o debugowanie i narzędzia - to prawdę powiedziawszy wolę klasyczne wątki. Przynajmniej stacktrace coś znaczy i jest dobry deadlock detector.

https://arxiv.org/pdf/1706.07372.pdf

0

To twoj pracodawca podejmuje decyzje co do jezyka. Dla korpo nowy jezyk to ogromne koszty.

2

@USA: jeżeli twój pracodawca podejmuje takie decyzje, to zmień go. Serio.

2
Krolik napisał(a):

Model współbieżności oparty o aktorów + message-passing jest dualny do wątków. Do każdego typowego problemu, który można spotkać w aplikacjach wielowątkowych (np. deadlock albo nieprawidłowa synchronizacja) można dopasować dualny problem w modelu asynchronicznym.

To chyba rozumie przez się. W każdym systemie można zrobić deadlocka i jeśli ktoś mi powie, że istnieje rozwiązanie równoległe, w którym tego się nie da zrobić, to parsknę śmiechem.

Natomiat jeśli chodzi o debugowanie i narzędzia - to prawdę powiedziawszy wolę klasyczne wątki. Przynajmniej stacktrace coś znaczy i jest dobry deadlock detector.

Ja osobiście nie. W systemie callbackowym jak Node to rzeczywiście jest to problematyczne, ale w Erlangu piszesz kod w stylu sekwencyjnym, więc w teorii jest to zdecydowanie bardziej "naturalne", bo możesz przyjąć, że to co napisałeś zawsze będzie obliczane od góry do dołu liniowo w obrębie jednej funkcji. Tak działają GenServery na ten przykład. Stacktrace też masz znaczący, bo dotyczy on jednego procesu Erlangowego, więc używając wspomnianej wcześniej abstrakcji GenServera masz wszystko bardzo ładnie przedstawione co i gdzie się stało, oczywiście w stacktrace IIRC nie ma zapisane kto odpalił proces, ale z reguły to jest dość wiadome, bo od tego masz supervisora a każdy proces ma jedno, z góry określone zadanie, więc też jest dość prosty w utrzymaniu. Dodatkowo Erlang stara się pomóc w unikaniu deadlocków (a przynajmniej na gen_server:call) poprzez timeouty (domyślnie 5s). No niestety jeśli ustawimy 2+ procesy w cykl tak, że każdy czeka na wiadomość od innego, no to może się okazać, że deadlock dalej nastąpi, ale z reguły do któregoś z tych procesów dostęp ma człowiek z zewnątrz, więc aż tak problematyczne IMHO to nie jest.

1

Polecam obejrzeć yt coś, co nazywa się code beam, wywiady z ludźmi którzy popełnili różne projekty w elixirze i wyciągnąć wnioski dla siebie. Ima Elixit to niszowa technologia niemniej ma swoje podwórko na którym sprawdza się dobrze albo bardzo dobrze. Czy będzie to szwajcarski scyzoryk czy multutool to odpowiedź brzmi nope.

Ja na przykład czuję delikatny przesyt utrzymywana korpo shitu który ma po kilkanaście lat więc lubię sobie zajrzeć do takiej czy innej technologii choćby aby podpatrzeć co tam się dzieje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1