Diskuze: Dotaz na zkušenější

Ostatní jazyky Ostatní programovací jazyky Dotaz na zkušenější

Avatar
Pjanus
Člen
Avatar
Pjanus:

Poslední dobou se velmi často setkávám s tvrzením že funkcionální programování je budoucnost programování, zajímalo by mě jestli to má opravdu tak velký význam a pokud by mi mohl někdo shrnout výhody, nevýhody popř. využití, byl bych mu velmi vděčný.

 
Odpovědět 5.1.2015 20:08
Avatar
hanpari
Redaktor
Avatar
Odpovídá na Pjanus
hanpari:

To je moc dobrý dotaz. Napřed si ale dovolím tě opravit, budoucnost programování není tak úplně ve funkciálním přístupu, ale v multiparadigma­tickém, ve kterém ta funkcionální část bude pravděpodobně hrát čím dál větší roli.
Důkazem toho může být např. Java 8, která se snaží dohnat funkcionální vlak, novinky v C# jsou také z funkcionálního světa. Ovšem tyhle jazyky jsou tak komplikovaně navržené, že spousta těch novinek vede k mému názoru jen k obrovskému zmatení.

Pokud tě to zajímá, můžeš si přečíst tuhle knihu:
http://it-ebooks.info/book/1419/

Pokud tě od funkcionálního programování neodradí, pak už nevím, co by mohlo. Problém je totiž v tom, že u těchto jazyků to pak dopadá, jako když kočička s pejskem vařila dort, alespoň podle mne :)

Teď k vlastnímu dotazu. V čem jsou přednosti FP, alespoň jak to tvrdí oficiální propaganda.

1/ Méně chyb v kódu.
2/ Stručnější kód
3/ Paralelní programování je snazší
4/ Není potřeba řešit komplikované návrhové vzory
5/ Lazy evaluation
atd

Víc si můžeš přečíst tady:
https://www.haskell.org/…Introduction#…

Editováno 5.1.2015 20:53
 
Nahoru Odpovědět 5.1.2015 20:52
Avatar
Pjanus
Člen
Avatar
Odpovídá na hanpari
Pjanus:

Já si hlavně nedookážu představit jak by takováhle aplikace běžela, dokážu si představit např. program který vypočítává ze zadaných údajů deseti stránkovou rovnici ale praktické využití např. u her, je zvláštní hlavně jsem v žádném z kódů na které jsem narazil neviděl jakýkoliv kontakt s hardwarem, pokaždé kód jenom něco počítal...

 
Nahoru Odpovědět 5.1.2015 21:20
Avatar
hanpari
Redaktor
Avatar
Odpovídá na Pjanus
hanpari:

No, nevím co myslíš tím hardwarem, ale snad tě přesvědčí například toto:

http://fsharp.org/…s-and-games/

Fsharp umí pracovat s objekty stejně jako csharp

 
Nahoru Odpovědět 5.1.2015 21:34
Avatar
hanpari
Redaktor
Avatar
Odpovídá na Pjanus
hanpari:

I když síla f# je někde jinde :)

*Our first delivery is approaching rapidly and F# has proved itself as a real life-saver. We started off using C# in many places but have since then moved almost entirely into F# due to its ability to reduce the amount of code required and its simplicity when developing massive parallel computations. The performance is phenomenal. We can now re-calculate the entire bank portfolio from scratch in less than a second and the response-time for single deal verification calculation is far below 100 milliseconds(the original demand was 200 milliseconds to make the application usable for electronic markets). Although some gains are to be attributed to how we have built our calculation models, F# made it possible for us to implement our algorithms and techniques with very little code and with a huge similarity to the original mathematical models and regulations (which is important for verification of correctness). We have also been able to use the support for Async-workflows producing code that is simple and clear and easy to understand but still runs in parallel when required.

The present application contains 35 to 40.000 lines of F#-code and an equal amount of C#-code. However, our estimate is that the F# code contains at least 80% of the functionality (which is pretty amazing!). Our experience shows us that the number of code lines shrinks with a ratio of 1/2 to 1/4 by just porting functionality from C# to F# (not counting single character or empty lines in the C#-code). We have by remodeling increased the ratio to the area of 1/5 to 1/8, where the remodeling involves replacing object oriented constructs with functional ones (and actually removing mutable states). One example from last week was a limit-utilization module written in F# but using an object-oriented approach containing +300 lines of code. I rewrote it to below 70 lines of code just by shifting paradigm (and the rewrite made it much easier to understand and verify)!*

zdroj: http://fsharp.org/testimonials/

Editováno 6.1.2015 22:04
 
Nahoru Odpovědět 6.1.2015 22:03
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.