Chcę rozpocząć eksperymentalny projekt z użyciem funkcjonalnego języka i staram się zdecydować między Erlangiem a Haskellem, i oba mają pewne punkty, które naprawdę lubię.
Podoba mi się silny system pisma Haskell i jego czystość. Mam wrażenie, że dzięki temu łatwiej będzie napisać naprawdę niezawodny kod. I myślę, że moc Haskella znacznie ułatwi to, co chcę zrobić.
Z drugiej strony mam wrażenie, że niektóre frameworki do robienia rzeczy w sieci na Haskell, takie jak Yesod, nie są tak zaawansowane, jak ich części przeciwne Erlang.
Raczej podoba mi się podejście Erlanga do wątków i tolerancji na błędy. Mam wrażenie, że skalowalność Erlanga może być dużym plusem.
Co prowadzi do mojego pytania, jakie są doświadczenia ludzi we wdrażaniu backendów aplikacji internetowych w Haskell i Erlang. Czy są jakieś pakiety dla Haskella, które zawierają niektóre z lekkich wątków i aktorów, które mają w Erlangu?
źródło
Odpowiedzi:
Mam tylko pytanie, co robi twoja usługa internetowa? Jeśli usługa sieciowa jest naprawdę problemem funkcjonalnym, lepiej dopasuje się Haskell.
Erlang niekoniecznie jest językiem funkcjonalnym. Jest to język proceduralny z bardzo silnym modelem wykonania dla systemów masowo równoległych. Został zaprojektowany z myślą o branży telekomunikacyjnej i na pewno doskonale sprawdzi się w odpowiedzi na żądania usług internetowych.
Zobacz tę stronę *, aby zapoznać się z różnicami między programowaniem proceduralnym a funkcjonalnym. (Z góry przepraszamy za brzydką czerń na błękitnej stronie).
Jeśli twoja usługa internetowa wykonuje wiele reguł dopasowywania wzorców i stosowania reguł, to Haskel jest twoim wyborem. Jeśli chcesz tylko skalowalnej infrastruktury, która nie różni się zbytnio od języków, które prawdopodobnie już znasz, wybierz Erlang.
(* link przez maszynę Wayback. Oryginalny plik został usunięty)
źródło
Pomiędzy tymi dwoma, o których wspominasz, zdecydowanie Haskell jest naukowcem, a Erlang jest wykorzystywany w rzeczywistych projektach o wysokiej skalowalności. Jeśli chodzi o usługi sieciowe, wybrałbym Erlang.
Ale powiedziałbym, że masz trzeci wybór: Scala , język, na który duży wpływ mają zarówno Haskell, jak i Erlang. Służy do budowania usług internetowych na najwyższym poziomie, takich jak Twitter czy Foursquare. Istnieje nawet Lift , platforma internetowa inspirowana Railsami i Django, choć z nieco innym, bardziej funkcjonalnym podejściem. Foursquare używa Lift.
źródło
Zwykle mówię: „ucz się jak najdalej od strefy komfortu, dzięki czemu będziesz lepszym programistą, nawet jeśli nigdy nie będziesz go używać w praktyce”.
W tym przypadku prawdopodobnie oznacza to Haskell; ale Erlang staje się nie tylko prawie społecznie akceptowalny; ale główne punkty (lekkie procesy, przekazywanie wiadomości, ogromna skalowalność) pojawiają się na wielu innych „praktycznych” platformach, więc wyciągnięte wnioski mają duże i natychmiastowe zastosowanie w bardziej „prawdziwej” pracy.
moja rada: jeśli to dla zabawy, zrób Haskell. jeśli to na trening, idź Erlang.
źródło