W Haskell jest dużo szumu, jednak trudno jest uzyskać informacje na temat tego, jak jest używany w rzeczywistych aplikacjach. Jakie są najpopularniejsze projekty / zastosowania Haskell i dlaczego wyróżnia się w rozwiązywaniu tych problemów?
W Haskell jest dużo szumu, jednak trudno jest uzyskać informacje na temat tego, jak jest używany w rzeczywistych aplikacjach. Jakie są najpopularniejsze projekty / zastosowania Haskell i dlaczego wyróżnia się w rozwiązywaniu tych problemów?
Odpowiedzi:
Jakie są typowe zastosowania tego języka?
Szybkie tworzenie aplikacji.
Jeśli chcesz wiedzieć „dlaczego Haskell?”, Musisz wziąć pod uwagę zalety funkcjonalnych języków programowania (wzięte z https://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming ):
Programy funkcjonalne są zwykle bardziej zwięzłe niż ich odpowiedniki w języku imperatywnym. Często prowadzi to do zwiększenia wydajności programisty
FP zachęca do szybkiego prototypowania. Jako taki, myślę, że to najlepszy paradygmat projektowania oprogramowania dla ExtremeProgrammers ... ale co ja wiem?
FP ma budowę modułową pod względem funkcjonalności, a ObjectOrientedProgramming ma budowę modułową pod względem różnych komponentów.
Zdolność do posiadania ciasta i zjedzenia go. Wyobraź sobie, że masz skomplikowany system przetwarzania komunikatów OO - każdy komponent może wprowadzać zmiany stanu w zależności od komunikatu, a następnie przekazywać go do niektórych obiektów, do których ma łącza. Czy nie byłoby to zbyt fajne, aby móc łatwo cofnąć każdą zmianę, jeśli jakiś obiekt głęboko w hierarchii połączeń uzna, że komunikat jest wadliwy? Co powiesz na historię różnych stanów?
Wiele zadań porządkowych wykonanych dla Ciebie: dekonstruowanie struktur danych (PatternMatching), przechowywanie zmiennych powiązań (LexicalScope z zamknięciami), silne pisanie (TypeInference), GarbageCollection, przydzielanie pamięci, czy używać pudełku (wskaźnik do wartości) czy rozpakowaniu (wartość bezpośrednio ) reprezentacja ...
Bezpieczny wielowątkowość! Niezmienne struktury danych nie podlegają warunkom wyścigu danych, a zatem nie muszą być chronione przez blokady. Jeśli zawsze alokujesz nowe obiekty, a nie niszcząc destrukcyjnie istniejące, blokowanie można ukryć w systemie alokacji i GarbageCollection.
Poza tym Haskell ma swoje zalety, takie jak:
1 / 0
jako pierwszy element listy i nadal będzie działać, jeśli użyjesz tylko drugiego elementu.Możesz sprawdzić następujące linki:
x = 5;
gwarantuje, że po wykonaniu x
zawiera wartość 5
.
operator =
zostanie wywołany. Gwarantuje to, co się stanie, jeśli nie zdefiniujesz użytkownikaoperator =
Myślę, że osobom w tym poście brakuje najważniejszego punktu dla każdego, kto nigdy nie używał funkcjonalnego języka programowania: rozwijania umysłu. Jeśli dopiero zaczynasz programowanie funkcjonalne, Haskell sprawi, że będziesz myślał w sposób, jakiego nigdy wcześniej nie myślałeś. W rezultacie poprawisz swoje programowanie w innych obszarach i innych językach. Ile? Trudne do oszacowania.
Jest jedna dobra odpowiedź na to, do czego służy język ogólnego przeznaczenia, taki jak Haskell: pisanie programów w ogóle.
Do tego, do czego jest wykorzystywany w praktyce, mam trzy podejścia do ustalenia, że:
Wskazuje, że jest dobry dla grafiki, sieci, programowania systemów, struktur danych, baz danych, programowania, przetwarzania tekstu ...
I wreszcie moja opinia na temat tego, na czym jest naprawdę silna:
Mam nadzieję, że dzięki temu zrozumiesz, jak szerokie jest twoje pytanie, jeśli na nie można udzielić konkretnej odpowiedzi.
Z Wiki Haskell :
Haskell ma różnorodne zastosowania komercyjne, od przemysłu lotniczego i obronnego, przez finanse, po start-upy internetowe, firmy projektujące sprzęt i producentów kosiarek. Ta strona zbiera zasoby dotyczące przemysłowego wykorzystania Haskell.
Według Wikipedii, Haskell język powstał z potrzeby konsolidacji istniejących języków funkcjonalnych we wspólny język, który można by wykorzystać w przyszłych badaniach nad projektowaniem języka funkcjonalnego.
Na podstawie dostępnych informacji widać, że przerósł swój pierwotny cel i jest wykorzystywany do czegoś więcej niż badań. Obecnie jest uważany za funkcjonalny język programowania ogólnego przeznaczenia.
Jeśli nadal zadajesz sobie pytanie: „Dlaczego powinienem go używać?”, Przeczytaj artykuł Dlaczego go używać? sekcja Haskell Wiki Wprowadzenie.
Haskell jest językiem programowania ogólnego przeznaczenia. Można go używać do wszystkiego, czego używasz w innym języku. Nie ogranicza Cię nic oprócz własnej wyobraźni. Co do tego, do czego jest odpowiedni? Cóż, prawie wszystko. Istnieje kilka zadań, w których język funkcjonalny nie przoduje.
I tak, jestem Rayne z Dreamincode. :)
Chciałbym również wspomnieć, że jeśli nie przeczytałeś strony Wikipedii, programowanie funkcjonalne jest paradygmatem, podobnie jak programowanie obiektowe. Na wypadek, gdybyś nie wiedział. Haskell działa również w tym sensie, że działa; w tym działa całkiem dobrze.
To, że język nie jest językiem obiektowym, nie oznacza, że jest on ograniczony przez cokolwiek. Haskell jest językiem programowania ogólnego i jest tak samo ogólnego przeznaczenia jak Java.
Mam fajny, facebook stworzył zautomatyzowane narzędzie do przepisywania kodu PHP. Analizują źródło w abstrakcyjne drzewo składniowe, dokonują transformacji:
if ($f == false) -> if (false == $f)
Nie wiem dlaczego, ale wydaje się, że to ich szczególny styl, a potem całkiem go wydrukowali.
https://github.com/facebook/lex-pass
Używamy haskell do tworzenia języków specyficznych dla małych domen. Ogromne ilości przetwarzania danych. Tworzenie stron internetowych. Pająki internetowe. Testowanie aplikacji. Pisanie skryptów administracyjnych systemu. Skrypty zaplecza, które komunikują się z innymi podmiotami. Skrypty monitorujące (mamy DSL, który ładnie współpracuje z muninem, znacznie ułatwia pisanie poprawnego kodu monitora dla twoich aplikacji).
Właściwie wszelkiego rodzaju rzeczy. Jest to zwykły język ogólnego przeznaczenia z kilkoma bardzo zaawansowanymi i przydatnymi funkcjami, jeśli jesteś nieco matematycznie skłonny.
false
po lewej stronie, nie widzę sensu używania narzędzia do robienia tego automatycznie: jeśli masz już ==
operatora, to wiesz, że nie masz błędu, którego ta część lex-pass jest przeznaczony do łapania, a jeśli masz =
zamiast niego, nie ma pewnego sposobu, aby powiedzieć, czy tak jest celowo.
Od Haskell :
Haskell jest znormalizowanym, ogólnie funkcjonalnym, czysto funkcjonalnym językiem programowania , o niesolidnej semantyce i silnym typowaniu statycznym. Jego nazwa pochodzi od logika Haskella Curry'ego.
Zasadniczo Haskell może być używany do tworzenia praktycznie wszystkiego, co normalnie tworzysz przy użyciu innych języków ogólnego przeznaczenia (np. C #, Java, C, C ++ itp.).
Jest to całkiem dobre źródło informacji o Haskell i jego zastosowaniach: