Dlaczego zdecydowałeś "przeciw" używając Erlanga?

Czy rzeczywiście "próbowałeś" (czyli zaprogramowałeś, a nie tylko przeczytałeś artykuł na ten temat) Erlanga i zdecydowałeś się na projekt? Jeśli tak, to dlaczego? Ponadto, jeśli zdecydowałeś się wrócić do swojego starego języka lub użyć innego języka funkcyjnego, takiego jak F#, Haskell, Clojure, Scala lub coś innego, to też się liczy i podaj dlaczego.

Author: Zubair, 2010-02-04

15 answers

Wróciłem do Haskell dla moich osobistych projektów z Erlanga dla prostej cnoty niesamowitego systemu typu Haskell. Erlang daje Ci mnóstwo narzędzi do obsługi, gdy coś pójdzie nie tak. Haskell daje Ci narzędzia, dzięki którym nie będziesz się mylić.

Pracując w języku z silnym systemem typów skutecznie udowadniasz wolne twierdzenia o swoim kodzie za każdym razem, gdy kompilujesz.

Dostajesz też masę przeciążonego cukru z maszynek Haskella, ale jest to dla mnie w dużej mierze wtórne-nawet jeśli pozwala mi to wyrazić wiele abstrakcji, które byłyby strasznie gadatliwe lub nie-idiomatyczne i bezużyteczne w Erlangu (np. Kategoria-dodatki Haskella).

Uwielbiam Erlang, uwielbiam jego kanały i łatwą skalowalność. Zwracam się do niego, kiedy tego potrzebuję. Haskell nie jest panaceum. Rezygnuję z lepszego zrozumienia zużycia przestrzeni. Rezygnuję z magicznego zbieracza śmieci. Rezygnuję z szablonów OTP i wszystkich łatwość skalowania.

Ale trudno mi zrezygnować z koca zabezpieczającego, który, jak to się powszechnie mówi, w Haskell, jeśli się wpisuje, to prawdopodobnie jest poprawny.

 49
Author: Edward Kmett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-02 00:59:44

Używamy Haskell, OCaml i (teraz) F#, więc dla nas nie ma to nic wspólnego z brakiem składni podobnej do C. Raczej pomijamy Erlanga Bo:

  • jest dynamicznie pisany (jesteśmy fanami systemu typów Haskella)
  • nie podaje "prawdziwego" typu string (rozumiem dlaczego, ale to irytujące, że nie zostało to jeszcze poprawione na poziomie językowym)
  • ma tendencję do słabego (niekompletnego lub niezainstalowanego) sterownika bazy danych
  • Nie ma baterii w zestawie i nie wydaje się mieć społeczność pracuje nad poprawieniem tego. Jeśli tak, to nie jest dobrze widoczny. Haskell przynajmniej ma Hackage, i myślę, że to właśnie przez to wybieramy ten język, a nie inny. W środowiskach Windows F # ma tutaj największą przewagę.

Są prawdopodobnie inne powody, o których nie mogę teraz myśleć, ale są to główne punkty.

 26
Author: Shaun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 17:34:42

Najlepszym powodem, aby uniknąć Erlanga, jest to, że nie można zaangażować się w funkcjonalny sposób programowania.

Czytałem kilka tygodni temu anty-Erlang blog rant, i jeden z krytyka autora Erlanga jest to, że nie mógł dowiedzieć się, jak sprawić, aby funkcja zwracała inną wartość za każdym razem, gdy wywołał ją z tymi samymi argumentami. Nie domyślił się, że Erlang jest taki celowo. W ten sposób Erlang udaje się tak dobrze działać na wielu procesorach bez wyraźnego zamykam. Programowanie czysto funkcjonalne to programowanie bez efektu ubocznego. Możesz uzbroić Erlanga w pracę tak, jak chciał nasz bloger, dodając efekty uboczne, ale w ten sposób odrzucasz wartość, jaką oferuje Erlang.

Czyste Programowanie funkcyjne nie jest jedynym właściwym sposobem programowania. Nie wszystko musi być matematycznie rygorystyczne. Jeśli stwierdzisz, że Twoja aplikacja będzie najlepiej napisana w języku, który błędnie używa terminu "funkcja", lepiej skreśl Erlanga z listy.

 25
Author: Warren Young,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-02 19:25:06

Używałem już Erlanga w kilku projektach. Często używam go do odpoczynku. Nie używam go jednak do złożonych aplikacji internetowych, w których narzędzia takie jak Ruby on Rails są znacznie lepsze. Ale dla powerbrokera za kulisami nie znam lepszego narzędzia niż Erlang.

Używam też kilku aplikacji napisanych w Erlangu. Używam trochę CouchDB i RabbitMQ i skonfigurowałem kilka serwerów EJabberd. Aplikacje te są najpotężniejszymi, najłatwiejszymi i elastycznymi narzędziami w ich pola.

Nie chce używać Erlanga, ponieważ nie używa JVM jest w mojej głowie dość głupie. JVM nie jest jakimś magicznym narzędziem, które jest najlepsze w robieniu wszystkiego na świecie. W moim odczuciu możliwość wyboru z arsenału różnych narzędzi i nie utknięcie w jednym języku lub frameworku jest tym, co odróżnia ekspertów od małp kodowych.

PS: po przeczytaniu mojego komentarza z powrotem w kontekście zauważyłem, że wyglądało to tak, jakbym nazywał oxbow_lakes małpą kodową. Naprawdę. nie było i przeproś, jeśli tak to przyjął. Uogólniałem o typach programistów i nigdy nie nazwałbym jednostki tak negatywną nazwą na podstawie jednego jego komentarza. Prawdopodobnie jest dobrym programistą, chociaż zachęcam go, aby nie robił z JVM jakiegoś przerywnika.

 16
Author: Jon Gretar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 13:27:28

Chociaż ja nie, inni w Internecie mają, np.

Zbadaliśmy względne zalety C++ i Erlang w implementacji z równoległego śledzenia promieni akustycznych algorytm dla US Navy. Znaleźliśmy znacznie mniejszą krzywą uczenia się i lepsze środowisko debugowania dla równoległy Erlang niż dla Programowanie C++ oparte na pthreads. Nasze Implementacja C++ przerosła Program Erlang o co najmniej 12x. Próby użycia Erlanga na komórce IBM BE mikroprocesor był sfrustrowany przez Ślad pamięci Erlanga. (Źródło)

I coś bliższego mojemu sercu, co pamiętam, gdy czytałem po konkursie ICFP:

Kodowanie było bardzo proste, tłumaczenie pseudokodu na język C++. I mogłem użyć Javy lub C#, ale jestem na punkt, w którym programowanie na wysokim poziom w C++ jest równie prosty, a ja chciał zachować możliwość szybkiego spadając na jakiś niski poziom trochę pokręcone, jeśli do tego dojdzie. Erlang to mój drugi ulubiony język za włamanie się, ale martwił się o występach problem, którego nie mogłem wyciągnąć ja z. (Źródło)

 9
Author: Will,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 11:55:54

Dla mnie fakt, że Erlang jest dynamicznie pisany, sprawia, że jestem ostrożny. Chociaż używam języków pisanych dynamicznie, ponieważ niektóre z nich są tak bardzo zorientowane na problemy (weźmy Pythona, rozwiązuję z nim wiele problemów), chciałbym, aby zamiast nich były pisane statycznie.

To powiedziawszy, zamierzałem dać Erlangowi szansę na jakiś czas, a właśnie zacząłem pobierać źródło. Więc twoje "pytanie" jednak coś osiągnęło. ;-)

 7
Author: Konrad Rudolph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 12:26:43

Znam Erlanga od czasów studiów, ale do tej pory nigdy nie używałem go we własnych projektach. Głównie dlatego, że głównie rozwijam aplikacje desktopowe, a Erlang nie jest dobrym językiem do tworzenia ładnych GUI. Ale wkrótce zaimplementuję aplikację serwerową i dam Erlangowi szansę, bo do tego jest dobra. Ale obawiam się, że potrzebuję więcej bibliotek, więc może spróbuję z Javą.

 6
Author: Jonas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 12:11:14

Kilka powodów:

  • Ponieważ wydaje się obcy od wszystkich używanych do rodziny języków C

  • Ponieważ chciałem móc uruchomić na wirtualnej maszynie Javy , Aby skorzystać z narzędzi, które znałem i rozumiałem (jak JConsole) i lata wysiłku, które włożyłem w JIT i GC.

  • Ponieważ nie chciałem przepisywać wszystkich bibliotek (Java), które zbudowałem przez lata.

  • Bo nie mam pojęcia o "ekosystemie" Erlanga (dostęp do bazy danych, konfiguracja, budowa itp.).

Zasadniczo jestem zaznajomiony z Javą, jej platformą i ekosystemem i włożyłem wiele wysiłku w budowanie rzeczy, które działają na JVM. Łatwiej było przenieść się do Scali

 6
Author: oxbow_lakes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 12:57:10

Zdecydowałem się nie używać Erlanga do mojego projektu, który miał być uruchamiany z wieloma współdzielonymi danymi na jednym wieloprocesorowym systemie i poszedł z Clojure, ponieważ Clojure naprawdę dostaje współdzieloną pamięć-współbieżność. Kiedy pracowałem nad rozproszonymi systemami przechowywania danych, Erlang był świetnym rozwiązaniem, ponieważ Erlang naprawdę błyszczy w rozproszonych systemach przekazywania wiadomości. porównuję projekt do najlepszej funkcji w języku i wybieram odpowiednio

 6
Author: Arthur Ulfeldt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 18:47:58

Używany jako bramka komunikatów dla zastrzeżonego, wielowarstwowego, binarnego protokołu. Wzorce OTP dla serwerów i relacje między usługami, a także binarne dopasowywanie wzorców sprawiły, że proces rozwoju był bardzo łatwy. W takim przypadku prawdopodobnie ponownie faworyzowałbym Erlanga nad innymi językami.

 5
Author: yawn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 12:23:58

JVM nie jest narzędziem, jest platformą. Chociaż jestem za wyborem najlepszego narzędzia do pracy, platforma jest już w większości zdeterminowana. O ile nie rozwijam czegoś samodzielnego, od podstaw i bez chęci ponownego użycia istniejącego kodu/biblioteki (trzy aspekty, które są już mało prawdopodobne w izolacji), mogę mieć swobodę wyboru platformy.

Używam wielu narzędzi i języków, ale głównie zajmuję się platformą JVM. To wyklucza Erlanga dla większości, jeśli nie wszystkich moje projekty, równie ciekawe jak niektóre koncepcje it.

Silvio

 4
Author: Silvio Bierman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 13:53:07

Chociaż podobało mi się wiele aspektów projektowania środowiska uruchomieniowego Erlang i platformy OTP, uznałem, że jest to dość irytujący język programowania, w którym można się rozwijać. Przecinki i kropki są całkowicie lamerskie i często wymagają ponownego napisania ostatniego znaku wielu linii kodu, aby zmienić jedną linię. Również niektóre operacje, które są proste w Ruby lub Clojure, są żmudne w Erlangu, na przykład obsługa łańcuchów.

Dla systemów rozproszonych opartych na wspólnej bazie danych system Mnesia jest naprawdę potężna i prawdopodobnie dobra opcja, ale programuję w języku do nauki i zabawy, a irytujący czynnik Erlanga zaczął przeważać nad czynnikiem zabawy, gdy przeszedłem podstawowe samouczki konta bankowego i zacząłem pisać wtyczki do serwera XMPP.

 4
Author: rosejn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-09 14:56:47

Kocham Erlanga z punktu widzenia współbieżności. Erlang naprawdę dobrze się spisał. Nie skończyłem używać Erlanga głównie ze względu na składnię.

Z zawodu nie jestem programistą funkcjonalnym. Generalnie używam C++, więc chętnie przełączam się między stylami (OOP, imperatyw, meta itp.). Czułem się, jakby Erlang zmuszał mnie do czczenia świętej krowy niezmiennych danych.

Uwielbiam to podejście do współbieżności, proste, piękne, skalowalne, potężne. Ale przez cały czas byłem programowanie w Erlangu ciągle myślałem, człowieku, wolałbym podzbiór Javy, który uniemożliwia współdzielenie danych między wątkiem a używanym modelem współbieżności Erlangów. Myślałem, że Java będzie miała najlepszą opcję ograniczenia języka zestaw funkcji kompatybilnych z procesami i kanałami Erlanga.

Niedawno odkryłem, że Język programowania Doferuje współbieżność w stylu Erlang ze znajomą składnią stylu c i wielowymiarowym językiem. Niczego nie próbowałem współbieżny z D jeszcze, więc nie mogę powiedzieć, czy to doskonałe tłumaczenie.

Więc profesjonalnie używam C++, ale staram się modelować masowo współbieżne aplikacje, tak jak w Erlang. W pewnym momencie chciałbym dać narzędzia współbieżności D prawdziwe jazdy testowej.

 3
Author: deft_code,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-25 01:03:37

Nie zamierzam nawet patrzeć na Erlanga.

Dwa posty na blogu mi się spodobały:

  1. Erlang machinery przechodzi przez całą listę, aby dowiedzieć się, czy mają wiadomość do przetworzenia, a jedynym sposobem na uzyskanie wiadomości jest przejście przez całą listę (podejrzewam, że filtrowanie wiadomości przez pid obejmuje również przejście przez całą listę wiadomości)

    Http://www.lshift.net/blog/2010/02/28/memory-matters-even-in-erlang

  2. Nie ma cudów, rzeczywiście, Erlang nie dostarcza zbyt wielu usług, aby poradzić sobie z nieuniknionymi przeciążeniami - np. wciąż pozostaje programiście aplikacji, aby zajmował się sprawdzaniem dostępnego miejsca w kolejce komunikatów (podobno chodząc po kolejce, aby dowiedzieć się bieżącej długości i przypuszczam, że nie ma wbudowanych mechanizmów zapewniających pewną uczciwość między nadawcami).

    Erlang - jak ograniczyć kolejkę komunikatów lub ją emulować?

Zarówno (1) jak i (2) są znacznie poniżej mojej książki i Jestem pewien, że w maszynach Erlang jest więcej "klejnotów" o podobnym charakterze.

Więc nie Erlang dla mnie.

Wydaje się, że gdy trzeba mieć do czynienia z dużym systemem, który wymaga wysokiej wydajności przy przeciążeniu C++ + Boost jest nadal jedyną grą w mieście.

Będę patrzeć na D następny.

 2
Author: zzz777,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:53:07

Chciałem użyć Erlanga do projektu, ponieważ jest to niesamowita skalowalność z liczbą procesorów. (używamy innych języków i od czasu do czasu uderzamy w ścianę, pozostawiając nam konieczność dostosowania aplikacji)

Problem polegał na tym, że musimy dostarczyć naszą aplikację na kilka platform: Linux, Solaris i AIX, a niestety w tej chwili nie ma instalacji Erlang Dla AIX.

Bycie małą operacją wyklucza wysiłek w portowaniu i utrzymywaniu wersji AIX Erlang, i prosząc naszym klientom korzystanie z Linuksa dla części naszej aplikacji jest niemożliwe.

Nadal mam nadzieję, że AIX Erlang przybędzie, żebyśmy mogli go wykorzystać.

 2
Author: Roger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-05 06:41:15