Haskell - wykorzystanie komercyjne

0

Czy język Haskell jest wykorzystywany komercyjnie?, czy tylko do nauki programowania funkcyjnego?; np. aby potem przesiąść się na Scala, który jest wykorzystywany komercyjnie. Sam widziałem ogłoszenia o prace jako programista Scala. Nie widziałem nigdy Haskell.

1

Moim zdaniem Haskell nie jest produktem komercyjnym. Ma on szeroki open source. Jego zaletą jest na pewno wydajność tworzonego oprogramowania. Ale jego podstawy warto znać w ogóle, a zwłaszcza gdy chce się majstrować potem w Scala.

2

Tak, jest. Odsyłam do kilku ciekawych linków:

https://haskellonheroku.com/
https://halcyon.sh/

Napisane w Haskellu:
http://skedge.me/
https://www.silk.co/

Firmy używające Haskella:
https://github.com/commercialhaskell/commercialhaskell#companies

Z czego trzeba przyznać, że często jest on używany do narzędzi wewnętrznych, nie produktów klienckich.

Haskell to porządny język. Ludzie dopiero teraz dojrzewają do używania go "na co dzień".

0

Ma waskie zastosowanie w branzy finansowej i tradingowej.
Z rozmowy z osobą ktorej wiekszosc tego forum pewnie czytala ksiazke [ :) ] dowiedzialem sie ze dobrze programowac w haskellu to absolutny szczyt

1

Znam dwie osoby ktore uzywaja haskella do modelowania finansowego ale sa to bardziej matematycy niz programisci.
Zdarzylo mi sie w nim pisac system do rozwiazywania zaleznosci w konfiguracji na podstawie zadanych parametrow, niestety po paru tygodniach projekt umarl i zostal zastapiony bardziej mainstreamowa technologia, glownym problemem byl brak niezawodnego IDE.
Haskell ma duze walory edukacyjne, jest calkiem wydajny, kod wyglada pieknie i zwykle dziala za pierwszym razem, ale nie zanosi sie na to zeby kiedykolwiek wyszedl poza bardzo waska nisze.

0

Jeśli Haskell jest tak wydajny, to dlaczego nie korzysta się go w projektach komercyjnych. Czy ma jakieś wady w stosunku do np. Java, C++? Ja czytałem jak dotąd same o nim zalety. Nikt nie pisze o jego wadach? Czyżby nie miał żadnych?

@merlinnot co to są narzędzia wewnętrzne?

3

Oczywiscie ze ma (wiekszosc ponizszych jest dosyc scisle powiazana ze soba):

  • trudny do nauki
  • trudny do uzycia w aplikacjach okienkowych, webmastering, mobile
  • niezbyt podobny do popularnych jezykow
  • relatywnie mala ilosc dobrych bibliotek i narzedzi
4

Jeśli Haskell jest tak wydajny, to dlaczego nie korzysta się go w projektach komercyjnych.

Korzysta się. Np. całkiem niedawno Microsoft zopensource'ował swoją bibliotekę do serializacji danych napisaną w Haskellu. Używana jest przez nich m.in. w telemetrii Binga i Xboxa.
https://github.com/Microsoft/bond

1

@katelx

  • trudny do nauki

Ale że co? Język? Raczysz żartować. To nie język sprawia ludziom kłopoty, a sam paradygmat.

  • trudny do uzycia w aplikacjach okienkowych, webmastering, mobile

Pisanie aplikacji webowych jest raczej dość proste w Haskellu, szczególnie jak ta aplikacja jest stateless. Pisanie aplikacji okienkowych robi się praktycznie tak samo jak w językach imperatywnych (mówię poważnie, jedyna różnica to taka, że operacje GUI zamyka się w blokach do i używa jakichś śmiesznych operatorów do przypisywania eventów), a mobile nie ma zbytnio jak.

  • relatywnie mala ilosc dobrych bibliotek i narzedzi

Nie wiem jakich narzędzi oczekujesz, ale jeszcze nie spotkałem nic co by biło GHCi wraz z Hoogle. No i sam kompilator jest generalnie niezły.
Ad bibliotek, w porównaniu do Javy to pewnie jest ich mało, ale ja wciąż nie rozumiem po co komu 50 bibliotek do parsowania JSONa na przykład.

1

Bardziej ja bym stwierdził, że Haskell nie ma wartości dodanej w znacznej większości "zwykłych" aplikacji. Jedyne co dokłada to znacznie większy próg wejścia i trudności w znalezieniu nowych developerów.

Natomiast w tym wąskim gronie zastosowań, gdzie rzeczywiście ma wartość dodaną, to się go stosuje razem z innymi "egzotycznymi" językami, jak np. cała rodzina ML, Prolog, Lispy, etc. Z reguły są to jakieś systemy sztucznej inteligencji, przetwarzanie równoległe i rozproszone, etc.

Po prostu Haskell jest w pewien sposób dla "elity" programistycznej, a ta elita wie, że jednym z najważniejszych ich atrybutów jest umiejętność dobierania odpowiednich narzędzi do odpowiednich zadań, tak więc nie wciskają Haskella na siłę, "bo jest fajny", ale starają się by było jak najwygodniej i najszybciej.

0
n0name_l napisał(a):

Ale że co? Język? Raczysz żartować. To nie język sprawia ludziom kłopoty, a sam paradygmat.

Nie, nie bylo moja intencja rozbawienie nikogo.
Haskell byl dla mnie jednym z najtrudniejszych jezykow do nauki mimo ze nie byl pierwszym jezykiem funkcyjnym w ktorym pisalam, wiem tez ze nie jestem wyjatkiem. Jesli dla ciebie byl prosty to nie pozostaje mi nic innego jak pogratulowac.

n0name_l napisał(a):

Pisanie aplikacji webowych jest raczej dość proste w Haskellu, szczególnie jak ta aplikacja jest stateless. Pisanie aplikacji okienkowych robi się praktycznie tak samo jak w językach imperatywnych (mówię poważnie, jedyna różnica to taka, że operacje GUI zamyka się w blokach do i używa jakichś śmiesznych operatorów do przypisywania eventów), a mobile nie ma zbytnio jak.

No to teraz sobie zazartuje - zdecydowanie, haskell jest zdecydowanie najlepszym wyborem do klepania stronek czy okienek, mysle ze wylacznie ignorancja i fanboystwo nie przekonuje legionow php/asp/winforms/wpf developerow na zabawe w omijanie ograniczen jezyka czysto funkcyjnego.

n0name_l napisał(a):

Nie wiem jakich narzędzi oczekujesz, ale jeszcze nie spotkałem nic co by biło GHCi wraz z Hoogle. No i sam kompilator jest generalnie niezły.
Ad bibliotek, w porównaniu do Javy to pewnie jest ich mało, ale ja wciąż nie rozumiem po co komu 50 bibliotek do parsowania JSONa na przykład.

Oczekuje pierwszej klasy IDE. Kompilator jest ok, co z tego jak I/O jest wolne i skomplikowane.

1

haskell jest zdecydowanie najlepszym wyborem do klepania stronek czy okienek,

Nie wiem czy najlepszym, ale na pewno jednym z wielu.

mysle ze wylacznie ignorancja i fanboystwo nie przekonuje legionow

Ja myślę, że biznesu nie przekonuje to co zwykle nie przekonuje biznesu, tj. kasa albo jej brak.

php

Tych nie wiem co przekonuje, nigdy nie spożyłem takiej ilości alkoholu by zastanawiać się nad ich losem.

na zabawe w omijanie ograniczen jezyka czysto funkcyjneg

Jakich znowu ograniczeń? :-|

Oczekuje pierwszej klasy IDE.

Co to jest pierwszej klasy IDE? Co ono ma mieć? Sprawdzanie kodu w locie, podpowiadanie kodu, refactoring? Czy może jeszcze coś innego?

co z tego jak I/O jest wolne i skomplikowane.

Nie wiem co jest skomplikowanego w IO w Haskellu i nie wiem czy jest ono wolniejsze niż to z C++. Zresztą, nie wiem czy w ogóle ktokolwiek by miał ochotę bawić się w optymalizowanie IO, a co dopiero mówić o implementacji w stdlibie (bo o tą chodzi, tak? Bo generalnie to można szybciej).

1

Ale że co? Język? Raczysz żartować. To nie język sprawia ludziom kłopoty, a sam paradygmat.

Wcale nie jestem przekonany. Jakoś ten sam paradygmat nie sprawia ludziom kłopotów w Scali...

1

To pewnie ma coś wspólnego z tym, że w Scali można go gwałcić bezkarnie na każdym kroku, a w Haskellu jest to co najmniej upierdliwe.

0

To w końcu pisanie imperatywnego kodu w Haskellu jest upierdliwe czy nie, bo wcześniej pisałeś, że nie jest?

0
n0name_l napisał(a):

na zabawe w omijanie ograniczen jezyka czysto funkcyjneg

Jakich znowu ograniczeń? :-|

99% prawdziwych aplikacji wymaga side effectow.

Nie do konca rozumiem o co ci chodzi z ta obrona haskella, ktos kto nie ma pojecia czytajac to i widzac twoja reputacje moze pomyslec ze no rzeczywiscie, haskell nie jest trudny, mozna i latwo sie w nim pisze wszystko oprocz mobile, no po prostu miod.
niestety prawda jest inna, haskell to glownie zabawka dla pasjonatow i zdecydowanie nie zanosi sie na to aby sytuacja miala sie kiedykolwiek zmienic.

n0name_l napisał(a):

Co to jest pierwszej klasy IDE? Co ono ma mieć? Sprawdzanie kodu w locie, podpowiadanie kodu, refactoring? Czy może jeszcze coś innego?

lubie miec troche wiecej niz oferuje vim (pewnie zaraz zaczniesz mowic ze vim oferuje to samo co VS albo intelliJ ;)

n0name_l napisał(a):

co z tego jak I/O jest wolne i skomplikowane.

Nie wiem co jest skomplikowanego w IO w Haskellu i nie wiem czy jest ono wolniejsze niż to z C++. Zresztą, nie wiem czy w ogóle ktokolwiek by miał ochotę bawić się w optymalizowanie IO, a co dopiero mówić o implementacji w stdlibie (bo o tą chodzi, tak? Bo generalnie to można szybciej).

nie spotkalam bardziej problematycznej obslugi i/o, chetnie poznam jeszcze gorsze alternatywy. pieczolowicie optymalizowany haskell ustepuje normalnemu kodowi w jezykach imperatywnych

zastanawia mnie ile (i jakich) projektow ukonczyles profesjonalnie/hobbystycznie w haskellu, zechcialbys wyjawic? ja niestety moge sie pochwalic wylacznie paromiesiecznym doswiadczeniem, wystarczylo mi to jednak zeby sie dowiedziec ze nie tedy droga. chetnie sie dowiem czy jestem ignorantem

2

99% prawdziwych aplikacji wymaga side effectow.

Ok. Brzmi całkiem rozsądnie, huh. Może zacznijmy od tego: main = putStrLn "Hello World!". Ten program po skompilowaniu i uruchomieniu wyświetla napis na stdout, brzmi jak efekt uboczny, co nie?

Nie do konca rozumiem o co ci chodzi z ta obrona haskella

Ale ja niczego nie bronię, w tym cały sens tej zabawy. Po prostu nie lubię jak ktoś piszę bzdury nie poparte niczym, albo nie mające żadnej treści.

ktos kto nie ma pojecia czytajac to i widzac twoja reputacje moze pomyslec

Jak ktoś się sugeruje reputacją na forum, to mogę mu jedynie współczuć.

haskell to glownie zabawka dla pasjonatow

Walić całe AI/przetwarzanie języka naturalnego/wykorzystanie akademickie/whatever. Zaraz dojdziemy do tego, że Haskell to tak naprawdę żart.

zdecydowanie nie zanosi sie na to aby sytuacja miala sie kiedykolwiek zmienic.

Raptem wszystkie mainstreamowe języki zaczynają czerpać z rozwiązań funkcyjnych, higher-order functions, expression comprehension, immutability. Ale tak, pewnie nigdy nikt nie będzie chciał mieć nic wspólnego z programowaniem funkcyjnym.

lubie miec troche wiecej niz oferuje vim

To znaczy co? Bo o to było pytanie.

nie spotkalam bardziej problematycznej obslugi i/o, chetnie poznam jeszcze gorsze alternatywy.

printf/scanf.

pieczolowicie optymalizowany haskell ustepuje normalnemu kodowi w jezykach imperatywnych

:-D

Problem wygląda mniej-więcej tak, że
#W Haskellu łatwo jest napisać działający kod i ma on odpowiednie narzędzia do takiej roboty (HMTS, utrudnienie robienia mutacji in-place).
#Haskell ma stosunkowo wysoki próg wejścia (głownie przez paradygmat) i przeciętnej aplikacji daje niewiele korzyści (głownie przez to, że jak się wysypie to nic się złego nie stanie).
#Haskell nigdy nie będzie mainstreamowym językiem, ale raczej wciąż będzie wykorzystywany w swoich niszach/przez hobbistów.
#Do Haskella prawdpodobnie nigdy nie będzie IDE pokroju VS (brak kogoś kto chcę włożyć kasę, mało możliwości na wyjęcie tej kasy z powrotem).
#Mówienie, że IO jest trudne bo trzeba (właściwie to nie trzeba, ale to też swoją drogą) przez do-syntax/ręczne wołanie binda jest zabawne.
#Mówienie, że Haskell jest wolny bo tak, jest zabawne.

1

Raptem wszystkie mainstreamowe języki zaczynają czerpać z rozwiązań funkcyjnych, higher-order functions, expression comprehension, immutability. Ale tak, pewnie nigdy nikt nie będzie chciał mieć nic wspólnego z programowaniem funkcyjnym

I to jest właśnie kolejny argument przeciw Twojej tezie, że paradygmat funkcyjny jest trudny i dlatego Haskell się nie przyjmie. Problemem jest Haskell, a nie FP. Smalltalk też się nie przyjął, a OOP się generalnie przyjęło. Widzisz podobieństwo? Po prostu Haskell jest zbyt ortodoksyjny w swoim podejściu do FP i realizuje je mocno inaczej niż większość języków "nieczystych". I nie tylko o sam język tu chodzi, a ogólnie o społeczność skupioną wokół tego języka, która jest nastawiono dość wrogo do innych paradygmatów i próbuje każdemu wepchnąć FP przez gardło, a prawie nikt z nich nawet nie potrafi dobrze wytłumaczyć początkującemu co to jest monada. Pewien odłam tej społeczności jest też bardzo aktywny w środowsku Scali i jest m.in. odpowiedzialny za takie cuda jak np. Scalaz, które przykleiły do Scali łatkę "trudnej", a społeczności "nieprzyjaznej".

Jak to napisał James Iry: Haskell gets some resistance due to the complexity of using monads to control side effects. Wadler tries to appease critics by explaining that "a monad is a monoid in the category of endofunctors, what's the problem?" :P

PS. Scala też powstała na uczelni, jest dużo młodsza od Haskella, a IDE wymiata. Da się? Da się.

0

Z czym mi się kojarzy Haskell hmm. Z typowaniem "cycków" i innych konstrukcji, dowodami indukcyjnymi i posraną pracownią noi nie można zapomnieć o monadach i ich pięknych definicjach. I oczywiście krucjata prowadzącego Haskell, prolog > reszta języków.

Co do samego "IDE" To polecam plugin do atom'a i IMO moim zdaniem więcej chyba nie potrzeba.
https://atom.io/packages/ide-haskell

A co do samego języka to jeżeli ktoś źle podejdzie do sprawy to można się naprawdę zniechęcić.

"Ostateczne rozwiązanie kwestii efektów ubocznych - zamknąć je wszystkie w Monadach." XD

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.