Do czego właściwie służy Haskell? [zamknięte]
Na przykład, jeśli zacznę uczyć się Haskella, do czego mogę go używać. Jakie są typowe zastosowania tego języka, które słyszałem, że jest funkcjonalny ?
10 answers
Jakie są typowe zastosowania tego język?
Szybkie tworzenie aplikacji.
Jeśli chcesz wiedzieć " dlaczego Haskell?", następnie należy wziąć pod uwagę zalety funkcjonalnych języków programowania (zaczerpnięte z http://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming):
Programy funkcjonalne wydają się być znacznie bardziej zwięzłe niż ich imperatywne odpowiedniki językowe. Często prowadzi to do zwiększenia programista wydajność
FP zachęca do szybkiego prototypowania. Jako taki, myślę, że jest to najlepszy paradygmat projektowania oprogramowania dla ExtremeProgrammers... ale co ja wiem?
FP jest modularny w wymiarze funkcjonalności, gdzie ObjectOrientedProgramming jest modularny w wymiarze różnych komponenty.
Możliwość zjedzenia ciasta. Wyobraź sobie, że masz złożony system oo przetwarzający wiadomości - każdy komponent może tworzyć stan zmienia się w zależności od wiadomości, a następnie przekazuje wiadomość do niektórych obiekty, do których ma linki. Czy nie byłoby po prostu zbyt fajne, aby móc łatwo cofać każdą zmianę, jeśli jakiś obiekt głęboko w wywołaniu hierarchia uznała, że wiadomość jest wadliwa? Co powiesz na historię różne stany?
Wiele zadań porządkowych wykonanych dla Ciebie: dekonstruowanie struktur danych( Pattern Matching), przechowywanie wiązań zmiennych (LexicalScope z zamknięcia), silne typowanie (TypeInference), Garbagecolection, storage alokacja, czy użyć boxed (wskaźnik do wartości) lub unboxed (wartość bezpośrednio)...
Bezpieczne wielowątkowość! Niezmienne struktury danych nie podlegają warunkom wyścigu danych, a co za tym idzie nie muszą być chronione przez zamki. Jeśli zawsze przydzielasz nowe obiekty, a nie destrukcyjnie manipulując istniejącymi, blokada może być ukryta w system alokacji i zbierania odpadów.
Poza tym Haskell ma swoje zalety, takie jak:
- przejrzysta, intuicyjna składnia inspirowana notacją matematyczną.
- składanie List w celu utworzenia listy na podstawie istniejących list.
- wyrażenia Lambda: tworzenie funkcji bez podawania im jawnych nazw. Więc łatwiej jest obsługiwać duże formuły.
- Haskell jest całkowicie referencyjnie przezroczysty . Każdy kod wykorzystujący wejścia/wyjścia musi być oznaczony jako taki. W ten sposób zachęca do aby oddzielić kod z efektami ubocznymi (np. umieszczenie tekstu na ekranie) od kodu bez (obliczenia).
- leniwa ocena to naprawdę fajna funkcja:
- nawet jeśli coś Zwykle spowoduje błąd, będzie działać tak długo, dopóki nie użyjesz wyniku. Na przykład, możesz umieścić
1 / 0
jako pierwszy element listy i nadal będzie działać, jeśli użyjesz tylko drugiego elementu. - łatwiej jest pisać takie programy jak ten sudoku solver ponieważ nie ładuje każdej kombinacji na raz-po prostu generuje je w miarę upływu czasu. Można to zrobić w innych językach, ale tylko Haskell robi to domyślnie .
- nawet jeśli coś Zwykle spowoduje błąd, będzie działać tak długo, dopóki nie użyjesz wyniku. Na przykład, możesz umieścić
Możesz sprawdzić następujące linki:
- http://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming
- http://blogs.msdn.com/wesdyer/archive/2007/01/18/why-functional-programming-is-important-in-a-mixed-environment.aspx
- http://blog.kickino.org/archives/2007/05/22/T22_34_16/
- http://useless-factor.blogspot.com/2007/05/advantage-of-functional-programming.html
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-10-04 08:27:35
Myślę, że ludziom w tym poście brakuje najważniejszego punktu dla każdego, kto nigdy nie używał funkcjonalnego języka programowania: Rozszerzanie umysłu. Jeśli jesteś nowy w programowaniu funkcyjnym, Haskell sprawi, że pomyślisz w sposób, o którym nigdy wcześniej nie myślałeś. W rezultacie twoje programowanie w innych obszarach i innych językach ulegnie poprawie. Ile? Trudno określić ilościowo.
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
2009-10-22 14:33:01
Jest jedna dobra odpowiedź na to, do czego jest dobry język ogólnego przeznaczenia, taki jak Haskell: pisanie programów w ogóle.
Do czego służy w praktyce, mam trzy podejścia do ustalenia, że:
- Chmura tagów Haskell library and app areas , ważona według częstotliwości hakowania.
Wskazuje, że jest dobry do grafiki, sieci, programowania systemów, struktur danych, baz danych, rozwoju, przetwarzania tekstu ...
- obszary wykorzystywane w przemyśle - Wiele DSL, aplikacje internetowe, projektowanie kompilatorów, sieci, analizy, programowanie systemów , ...
I wreszcie moja opinia na temat tego w czym jest naprawdę mocny:
Mam nadzieję, że to daje poczucie, jak szerokie jest twoje pytanie, jeśli ma być odpowiedział z jakąkolwiek konkretnością.
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
2013-08-15 10:44:30
Przykładem działania Haskell jest xmonad , "featureful window manager in less than 1200 linijek kodu".
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-10-23 10:58:33
From the Haskell Wiki :
Haskell ma zróżnicowany zakres zastosowań komercyjnie, z przemysłu lotniczego i obrona, Finanse, startupy internetowe, firmy projektujące sprzęt i Kosiarki producentów. Ta strona zbiera środki na przemysłowe wykorzystanie Haskell.
Według Wikipedii, Haskell Język powstał z potrzeby konsolidacji istniejących języków funkcyjnych w wspólny, który mógłby być wykorzystany do przyszłych badań w projekt funkcjonalno-językowy.
Jest oczywiste na podstawie dostępnych informacji, że przerosła swój pierwotny cel i jest używana znacznie więcej niż do badań. Obecnie jest uważany za język programowania funkcyjnego ogólnego przeznaczenia.
Jeśli wciąż zadajesz sobie pytanie: "Dlaczego mam go używać?", następnie przeczytaj Po co go używać? Sekcja wstępu Haskell Wiki.
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
2009-10-22 04:11:09
Haskell jest językiem programowania ogólnego przeznaczenia. Może być używany do wszystkiego, czego używasz w dowolnym innym języku. Nie ogranicza cię nic poza własną wyobraźnią. A do czego się Nadaje? Prawie wszystko. Istnieje kilka zadań, w których język funkcjonalny nie wyróżnia się.
I tak, jestem Rayne z Dreamincode. :)
Chciałbym również wspomnieć, że w przypadku, gdy nie czytałeś strony Wikipedii, Programowanie funkcyjne jest paradygmatem podobnym do obiektu Programowanie zorientowane jest paradygmatem. Na wypadek, gdybyś nie wiedział. Haskell jest również funkcjonalny w tym sensie, że działa; działa w tym całkiem dobrze.
To, że język nie jest językiem zorientowanym obiektowo, nie oznacza, że język jest ograniczony przez cokolwiek. Haskell jest językiem programowania ogólnego przeznaczenia i jest tak samo uniwersalny jak Java.
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
2009-10-22 14:31:50
Mam fajną, facebook stworzył automatyczne narzędzie do przepisywania kodu PHP. Przetwarzają źródło w abstrakcyjne drzewo składni, dokonują pewnych przekształceń:
if ($f == false) -> if (false == $f)
Nie wiem dlaczego, ale wydaje się, że to ich szczególny styl, a potem ładnie go drukują.
Https://github.com/facebook/lex-pass
Używamy haskell do tworzenia małych domen specyficznych języków. Ogromne ilości przetwarzania danych. Tworzenie stron www. Pająki sieciowe. Testowanie aplikacji. Pisanie Skrypty administracji systemem. Skrypty zaplecza, które komunikują się z innymi stronami. Skrypty monitorujące (mamy DSL, który dobrze współpracuje z munin, znacznie ułatwia pisanie poprawnego kodu monitora dla Twoich aplikacji.)
Właściwie to wszystko. Jest to po prostu codzienny język ogólnego przeznaczenia z kilkoma bardzo potężnymi i przydatnymi funkcjami, jeśli jesteś nieco matematycznie skłonny.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-11 13:31:56
From Haskell :
Haskell jest ustandaryzowane, ogólnego przeznaczenia czysto funkcjonalne język programowania, z niekonsekwentna semantyka i silna statyczna pisanie. Nazwa pochodzi od logican Haskell Curry.
Zasadniczo Haskell może być używany do tworzenia prawie wszystkiego, co normalnie tworzysz przy użyciu innych języków ogólnego przeznaczenia(np. C#, Java, C, C++, itp.).
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
2009-10-22 03:05:54
Na przykład do tworzenia interaktywnych aplikacji internetowych HTML5 w czasie rzeczywistym. Zobacz Elm , którego kompilator jest zaimplementowany w Haskell i którego składnia wiele zapożycza od Haskella.
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-11-13 17:16:27
To całkiem dobre źródło informacji o Haskell i jego zastosowaniach:
Uwolnienia Open Source Haskell i rozwój
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-10-23 10:52:32