Successfully reported this slideshow.
Your SlideShare is downloading. ×

F#: Funkcijsko programiranje za .NET

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
Programski jezici
Programski jezici
Loading in …3
×

Check these out next

1 of 31 Ad

More Related Content

Advertisement

F#: Funkcijsko programiranje za .NET

  1. 1. Funkcijsko programiranje F# Primjeri Resursi F# Funkcijsko programiranje za .NET Nikola Pleji¢ <nikola@plejic.com> Web User Group, studeni 2010.
  2. 2. Funkcijsko programiranje F# Primjeri Resursi Funkcijsko programiranje • In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data.
  3. 3. Funkcijsko programiranje F# Primjeri Resursi Primjer [ for x in 1 .. 999 do if x % 3 = 0 or x % 5 = 0 then yield x ] | List.sum
  4. 4. Funkcijsko programiranje F# Primjeri Resursi Primjer [ for x in 1 .. 999 do if x % 3 = 0 or x % 5 = 0 then yield x ] | List.sum (Project Euler, zadatak 1: suma svih umnoºaka brojeva 3 i 5 manjih od 1000)
  5. 5. Funkcijsko programiranje F# Primjeri Resursi Povijest • teorijska podloga: A. Church - λ ra£un (1930-ih)
  6. 6. Funkcijsko programiranje F# Primjeri Resursi Povijest • teorijska podloga: A. Church - λ ra£un (1930-ih) • po£eci: kasnih 1950-ih • MIT: John McCarthy / LISP
  7. 7. Funkcijsko programiranje F# Primjeri Resursi Povijest • teorijska podloga: A. Church - λ ra£un (1930-ih) • po£eci: kasnih 1950-ih • MIT: John McCarthy / LISP • Scheme, ML
  8. 8. Funkcijsko programiranje F# Primjeri Resursi Povijest • teorijska podloga: A. Church - λ ra£un (1930-ih) • po£eci: kasnih 1950-ih • MIT: John McCarthy / LISP • Scheme, ML • FP danas: • Haskell, Erlang, OCaml, XSLT... • vrlo popularno u akademskoj zajednici i u razvoju visokorizi£nih sustava
  9. 9. Funkcijsko programiranje F# Primjeri Resursi FP u drugim jezicima • C#: LINQ
  10. 10. Funkcijsko programiranje F# Primjeri Resursi FP u drugim jezicima • C#: LINQ • Python: list comprehensions, higher-order functions, ...
  11. 11. Funkcijsko programiranje F# Primjeri Resursi FP u drugim jezicima • C#: LINQ • Python: list comprehensions, higher-order functions, ... • Ruby, JavaScript...
  12. 12. Funkcijsko programiranje F# Primjeri Resursi Za²to funkcijsko programiranje? • asinkronost, paralelizacija i iskori²tavanje vi²ejezgrenih procesora
  13. 13. Funkcijsko programiranje F# Primjeri Resursi Za²to funkcijsko programiranje? • asinkronost, paralelizacija i iskori²tavanje vi²ejezgrenih procesora • druga£iji pristup i izraºajnija sintaksa pogodna za matematiku, DSL-ove...
  14. 14. Funkcijsko programiranje F# Primjeri Resursi Za²to funkcijsko programiranje? • asinkronost, paralelizacija i iskori²tavanje vi²ejezgrenih procesora • druga£iji pristup i izraºajnija sintaksa pogodna za matematiku, DSL-ove... • manje koda = manje bugova
  15. 15. Funkcijsko programiranje F# Primjeri Resursi Za²to funkcijsko programiranje? • asinkronost, paralelizacija i iskori²tavanje vi²ejezgrenih procesora • druga£iji pristup i izraºajnija sintaksa pogodna za matematiku, DSL-ove... • manje koda = manje bugova • osobno prosvjetljenje
  16. 16. Funkcijsko programiranje F# Primjeri Resursi Za²to funkcijsko programiranje? • asinkronost, paralelizacija i iskori²tavanje vi²ejezgrenih procesora • druga£iji pristup i izraºajnija sintaksa pogodna za matematiku, DSL-ove... • manje koda = manje bugova • osobno prosvjetljenje • geekPoints++
  17. 17. Funkcijsko programiranje F# Primjeri Resursi Hello, World! printfn Hello, World!
  18. 18. Funkcijsko programiranje F# Primjeri Resursi F# • ML =⇒ (O)Caml =⇒ F#
  19. 19. Funkcijsko programiranje F# Primjeri Resursi F# • ML =⇒ (O)Caml =⇒ F# • Don Syme, Microsoft Research, Cambridge cca. 2002.
  20. 20. Funkcijsko programiranje F# Primjeri Resursi F# • ML =⇒ (O)Caml =⇒ F# • Don Syme, Microsoft Research, Cambridge cca. 2002. • vi²eparadigmatski • funkcijski • objektno-orijentirani • imperativni
  21. 21. Funkcijsko programiranje F# Primjeri Resursi F# 1 • stati£no i jako tipiziran 1 statically strongly typed 2 Hindley-Milner
  22. 22. Funkcijsko programiranje F# Primjeri Resursi F# 1 • stati£no i jako tipiziran 2 • pogaža tipove: type inference 1 statically strongly typed 2 Hindley-Milner
  23. 23. Funkcijsko programiranje F# Primjeri Resursi F# 1 • stati£no i jako tipiziran 2 • pogaža tipove: type inference • eksplicitna promjenjivost (keyword mutable) 1 statically strongly typed 2 Hindley-Milner
  24. 24. Funkcijsko programiranje F# Primjeri Resursi F# i .NET Framework • puni pristup Base Class Libraryju + libraryji speci£ni za F# (Microsoft.FSharp)
  25. 25. Funkcijsko programiranje F# Primjeri Resursi F# i .NET Framework • puni pristup Base Class Libraryju + libraryji speci£ni za F# (Microsoft.FSharp) • referenca na DLL + open [namespace]
  26. 26. Funkcijsko programiranje F# Primjeri Resursi F# i .NET Framework • puni pristup Base Class Libraryju + libraryji speci£ni za F# (Microsoft.FSharp) • referenca na DLL + open [namespace] • C# library → F#
  27. 27. Funkcijsko programiranje F# Primjeri Resursi F# i .NET Framework • puni pristup Base Class Libraryju + libraryji speci£ni za F# (Microsoft.FSharp) • referenca na DLL + open [namespace] • C# library → F# • F# library → C#
  28. 28. Funkcijsko programiranje F# Primjeri Resursi F# na Windowsima • Visual Studio 2010 • Visual Studio 2008 uz zasebnu instalaciju
  29. 29. Funkcijsko programiranje F# Primjeri Resursi F# na drugim platformama 3 • GNU/Linux i MacOS X: Mono 4 • editori: MonoDevelop 2.4 , Emacs, Vim... 3 http://fsxplat.codeplex.com/ 4 http://functional-variations.net/screencasts/linux-monodevelop.aspx
  30. 30. Funkcijsko programiranje F# Primjeri Resursi Primjeri
  31. 31. Funkcijsko programiranje F# Primjeri Resursi Resursi • F# Programming: http://en.wikibooks.org/wiki/F_Sharp_Programming • F# PowerPack: http://fsharppowerpack.codeplex.com/ • hubFS: http://cs.hubfs.net/ • F# Developer Center: http://fsharp.net/ • Don Syme: http://blogs.msdn.com/b/dsyme/ • Tomas Petricek: http://tomasp.net/

×