Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  17 3461
Hva tenker folk om Haskell, egentlig? Eventuelt meninger om funksjonell programmering i det hele tatt?
Jeg kan overhodet ikke så mye om funksjonell programmering, men jeg lekte meg litt med Haskell og F# for et par år siden. Den største overgangen er at du må endre tankesettet ditt da paradigmet er helt annerledes - noe jeg hadde store problemer med Men når det er sagt så har jeg inntrykk av at de funksjonelle språkene er sykt raske og egner seg godt for håndtering av store datamengder. Har du bare lyst til å lære eller er det noe spesielt du ønsker å gjøre?

Forøvrig bør du sjekke postene til "tormaroe" her på NFF. Han er en jævel på programmering, også funksjonell programmering. Han har også en veldig god blogg kalt Programmeringsbloggen: http://blog.kjempekjekt.com/
Sist endret av Jurgen1337; 26. februar 2016 kl. 10:22.
Har ikke så mye erfaring med Haskell.
Begynte å lære meg det litt en sommer bare for å ha noe å gjøre på, men faller ikke innom noen av de kategoriene jeg liker å jobbe med så det ble liksom ikke noe mer enn det.

Funksjonell programmering har nok sin nytte der det trengs, men jeg føler at OOP er mer for meg.
Har ikke så veldig mange meninger om det ennå, men dette er i det minste en sjanse til å skryte av at jeg nettopp boken "Learn you a good Haskell for great good!" .. Ja, jeg vet den er gratis som e-bok, men litt ekstra motivasjon til å lære det når man har en egen kopi. Har så vidt begynt å lære om de mange listefunksjonene.

Tenkte først og fremst å bruke Haskell til å løse problemer på Projecteuler.net og lære meg det på den måten. Når jeg leser gjennom kommentarene for løste oppgaver der ser jeg ofte løsninger i Haskell og det ser jo veldig sexy ut.
Funksjonell programmering funker fett om man skal ha ting gjort raskt eller har små prosjekter med få personer.
Ulempen er at det fort blir lite oversiktlig i en stor kodebase med mange deltakere (sies det).

Det er helt klart fornuftig å prøve seg litt på funksjonell programmering. Tankemåten vil gjøre veldig mange ting mye enklere.

Haskell er veldig bra på matte, mye hendig logikk buit-in.
Men det er jo et general purpose-språk, så en kan bruke det til hva som helst.

Som ali88 brukte jeg Haskell til å løse et par hundre oppgaver på Project Euler.
Ellers har jeg brukt det til simulering.
Hadde et fag i funksjonell programmering der vi brukte Haskell, så er på ingen måte noe ekspert. Kan ikke si at jeg har merket at det yter spesielt bra ift andre språk - hverken bedre eller dårligere enn det meste jeg har vært borti. Det som er digg er at syntaksen er veldig fin når du holder på med ting som er matte-aktig og ikke trenger mye io (som er veldig knotete). Vil uansett si det er en fordel å lære seg funksjonell programmering på grunn av at du får et nytt perspektiv på problemløsning. Brukte boken Prgramming in Haskell av Graham Hutton i faget og det var en veldig bra bok; kortfattet og enkel.
Maskinlæring, trening av neuroner osv? Noen som har vært borti de litt mer sære greiene? Eller kan forklare meg hva f*** en "monad" er?
Sitat av Tøffetom Vis innlegg
Eller kan forklare meg hva f*** en "monad" er?
Vis hele sitatet...
Har du lest de to første avsnittene av wikipedia-artikkelen om monads? https://en.wikipedia.org/wiki/Monad_...l_programming)

Den forklarer veldig enkelt hva konseptet dreier seg om
Sist endret av liasis; 26. februar 2016 kl. 17:54.
Sitat av liasis Vis innlegg
Har du lest de to første avsnittene av wikipedia-artikkelen om monads? https://en.wikipedia.org/wiki/Monad_...al_programming)

Den forklarer veldig enkelt hva konseptet dreier seg om
Vis hele sitatet...
Ja, og jeg synes ikke det var så veldig enkelt.
Ser på Haskell som et verdifullt språk å lære seg fordi det 1) er "reint"/pure (har ikke sideeffekter eller muterer variabler) og 2) har et avansert typesystem. Det er også veldig konsist.

Etter min mening er kost/nytte-ratioen for statisk typing ofte ikke verdt det, så personlig heller jeg mer mot dynamiske språk.

Når det gjelder maskinlæring, nevrale nettverk osv. assosierer jeg mer til LISP enn Haskell. Tok et fag på NTNU som omhandla nevrale nettverk og genetiske algoritmer, såvidt jeg veit var det ingen som løste øvingene i Haskell, selv brukte jeg Python.
The Lone Deranger
bipbapbop's Avatar
https://www.youtube.com/watch?v=NvWTnIoQZj4 .. Bjarne Stroustrup.. jeg tror det er greit aa laere Haskell eller et annet funksjonelt programmeringsspraak.. "just to make your head spin" .. som Stroustrup sier..
Kommet litt i gang nå, virker jo spennende dette her. Sier fra om jeg får til noe kult, lære det må jeg visst uansett.
Sitat av Tøffetom Vis innlegg
Kommet litt i gang nå, virker jo spennende dette her. Sier fra om jeg får til noe kult, lære det må jeg visst uansett.
Vis hele sitatet...
Gjør det. Er det noe du kunne tenke deg å prøve på? Så du nevnte maskinlæring og da vil jeg bare si at det finnes et helt konge bibliotek til Python som heter PyBrain. Siden jeg var kjent med Python og hadde lyst til å lære meg litt ML så falt dette virkelig i smak og jeg fant masse gode ressurser til PyBrain: http://pybrain.org/
tar du inf122 på uib?

skal du er vel det jeg mener
Sist endret av ali88; 28. februar 2016 kl. 19:06. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Sitat av ali88 Vis innlegg
tar du inf122 på uib?

skal du er vel det jeg mener
Vis hele sitatet...
Nei er nok noen nivå over det.

Sitat av Jurgen1337 Vis innlegg
Gjør det. Er det noe du kunne tenke deg å prøve på? Så du nevnte maskinlæring og da vil jeg bare si at det finnes et helt konge bibliotek til Python som heter PyBrain. Siden jeg var kjent med Python og hadde lyst til å lære meg litt ML så falt dette virkelig i smak og jeg fant masse gode ressurser til PyBrain: http://pybrain.org/
Vis hele sitatet...
Må nok holde meg til haskell i denne omgang. Men dette her var skikkelig fascinerende, jeg kommer nok til å utforske dette litt utover det obligatoriske - etterhvert. Kommer tilbake til dere med rapport - en gang i sommer tenker jeg.
Sist endret av Tøffetom; 28. februar 2016 kl. 19:30. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Jeg har brukt Haskell i skole- og industrisammenheng de siste årene. Etter min mening er Haskell det beste språkvalget til "general purpose"-programmering i dag, da det er et meget godt språk, som samtidig er populært nok til å ha mange biblioteker og verktøy, og mange folk som kan hjelpe deg. De språka hvis totalpakke er på nivå med Haskell (primært Idris), er ikke like etablerte.

Det ble sagt tidligere i tråden at en ulempe med funksjonell programmering er at det blir uoversiktelig i store kodebaser med mange deltakere. Dette kjenner jeg meg overhodet ikke igjen i, da jeg vil påstå at maintainability er hovedfordelen et Haskellprosjekt har over et prosjekt i et ikke-funksjonelt paradigme. Haskell skalerer nydelig, og å gjøre store endringer på store prosjekter er en fryd.

Det ble også sagt at statisk typesjekking ofte ikke er verdt det. Dette utsagnet er jeg også skeptisk ovenfor. Statiske typer i ALGOL 60 og lignende (C, C++, Java, osv.) er ganske lite nyttige, og ofte i veien. Statiske typer i Haskell er helt fantastiske. I/O som en type gjør matematisk renhet nydelig å jobbe med. Algebraiske datatyper lar deg representere dype tanker, og renhet lar deg transformere dem bekymringsfritt. Typer i Haskell er rett og slett en drøm å bruke.

Hva angår monader, så ville forklart dem ulikt til ulike mennesker. En kategoriteoretiker kan man fortelle at de er monoider i kategorien endofunktorer (hvor typer er endofunktorer i Haskell). Til en C++-programmerer ville jeg forklart det som et semikolon man kan overlaste. Kort fortalt har man i matematikken at to uttrykk ved siden av hverandre ikke egentlig betyr noe. Monader lar det uttrykke hva de skal bety. Og de kan bety forskjellige ting i forskjellige situasjoner. Om det høres beundringsverdig abstrakt ut, så er det fordi det er det. Monader i Haskeller er i all hovedsak en funksjon med typen M a -> (a -> b) -> M b. Her er a og b typer, og M en typekonstruktør. Vi har med andre ord polymorfiske typer og en polymorfisk kontekst. Jeg anbefaler den lettfattelige artikkelen You Could Have Invented Monads: <http://blog.sigfpe.com/2006/08/you-could-have-invented-monads-and.html>. Det gir dog liten mening å sette seg inn i monader før man setter seg inn i det grunnleggende.
Sitat av Jurgen1337 Vis innlegg
Forøvrig bør du sjekke postene til "tormaroe" her på NFF. Han er en jævel på programmering, også funksjonell programmering. Han har også en veldig god blogg kalt Programmeringsbloggen: http://blog.kjempekjekt.com/
Vis hele sitatet...
Oi, det var da svært da, takk

Jeg har startet på Haskel flere ganger, men har alltid blitt distrahert og begynt med andre ting, så jeg har lite erfaringer å dele. Men jeg er veldig glad i funksjonell programmering, gjerne av den statiske typen via F#, eller den dynamiske via f.eks. ulike Lisper. Om man som utvikler enda ikke har eksponert seg selv for den funksjonelle paradigmen så er det bare å hoppe i det - gjerne med Haskel.
Jeg har fått satt opp et enkelt nevralt nettverk og fått surret litt med trening og testing; helt utrolig fascinerende hvor "enkelt" det egentlig lot seg gjøre. Så på maskinlæring og NN'er som uforståelige "beist" forbeholdt supernørder med superhjerner, men på mange måter er det jo veldig forståelig og 100% logisk.

Har forøvrig brukt et utgangspunkt som bruker lister over in- og output til de forskjellige lagene heller enn konstruktører av uavhengige nevroner satt sammen; uten at jeg helt forstår hvordan forskjellige oppsett sammenlignes mht funksjonalitet eller presisjon?

Ei heller vet jeg hvordan det måler seg med konstruksjon av nevrale nettverk på andre språk? Føler meg litt småforelsket i haskell nå; men siden jeg ikke har sett noe NN i aksjon før er det vel litt som å forelske seg i dama du mister jomfruen til. Noen som har gjort det i andre språk?

Sitat av alexanderb Vis innlegg
Jeg har brukt Haskell i skole- og industrisammenheng de siste årene. Etter min mening er Haskell det beste språkvalget til "general purpose"-programmering i dag, da det er et meget godt språk, som samtidig er populært nok til å ha mange biblioteker og verktøy, og mange folk som kan hjelpe deg. De språka hvis totalpakke er på nivå med Haskell (primært Idris), er ikke like etablerte.

Det ble sagt tidligere i tråden at en ulempe med funksjonell programmering er at det blir uoversiktelig i store kodebaser med mange deltakere. Dette kjenner jeg meg overhodet ikke igjen i, da jeg vil påstå at maintainability er hovedfordelen et Haskellprosjekt har over et prosjekt i et ikke-funksjonelt paradigme. Haskell skalerer nydelig, og å gjøre store endringer på store prosjekter er en fryd.

Det ble også sagt at statisk typesjekking ofte ikke er verdt det. Dette utsagnet er jeg også skeptisk ovenfor. Statiske typer i ALGOL 60 og lignende (C, C++, Java, osv.) er ganske lite nyttige, og ofte i veien. Statiske typer i Haskell er helt fantastiske. I/O som en type gjør matematisk renhet nydelig å jobbe med. Algebraiske datatyper lar deg representere dype tanker, og renhet lar deg transformere dem bekymringsfritt. Typer i Haskell er rett og slett en drøm å bruke.

Hva angår monader, så ville forklart dem ulikt til ulike mennesker. En kategoriteoretiker kan man fortelle at de er monoider i kategorien endofunktorer (hvor typer er endofunktorer i Haskell). Til en C++-programmerer ville jeg forklart det som et semikolon man kan overlaste. Kort fortalt har man i matematikken at to uttrykk ved siden av hverandre ikke egentlig betyr noe. Monader lar det uttrykke hva de skal bety. Og de kan bety forskjellige ting i forskjellige situasjoner. Om det høres beundringsverdig abstrakt ut, så er det fordi det er det. Monader i Haskeller er i all hovedsak en funksjon med typen M a -> (a -> b) -> M b. Her er a og b typer, og M en typekonstruktør. Vi har med andre ord polymorfiske typer og en polymorfisk kontekst. Jeg anbefaler den lettfattelige artikkelen You Could Have Invented Monads: <http://blog.sigfpe.com/2006/08/you-could-have-invented-monads-and.html>. Det gir dog liten mening å sette seg inn i monader før man setter seg inn i det grunnleggende.
Vis hele sitatet...
Jøss, stilig når folk virkelig kan sakene sine.

Føler meg rimelig tjukk i hodet når jeg leser dette nå, tror jeg kommer tilbake til dette i morgen.