F#: Funkcijsko programiranje za .NET
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
932
On Slideshare
932
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
6
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Funkcijsko programiranje F# Primjeri Resursi F# Funkcijsko programiranje za .NET Nikola Pleji¢ <nikola@plejic.com> Web User Group, studeni 2010.
  • 2. Funkcijsko programiranje F# Primjeri ResursiFunkcijsko 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. Funkcijsko programiranje F# Primjeri ResursiPrimjer [ for x in 1 .. 999 do if x % 3 = 0 or x % 5 = 0 then yield x ] |> List.sum
  • 4. Funkcijsko programiranje F# Primjeri ResursiPrimjer [ 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. Funkcijsko programiranje F# Primjeri ResursiPovijest • teorijska podloga: A. Church - λ ra£un (1930-ih)
  • 6. Funkcijsko programiranje F# Primjeri ResursiPovijest • teorijska podloga: A. Church - λ ra£un (1930-ih) • po£eci: kasnih 1950-ih • MIT: John McCarthy / LISP
  • 7. Funkcijsko programiranje F# Primjeri ResursiPovijest • teorijska podloga: A. Church - λ ra£un (1930-ih) • po£eci: kasnih 1950-ih • MIT: John McCarthy / LISP • Scheme, ML
  • 8. Funkcijsko programiranje F# Primjeri ResursiPovijest • 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. Funkcijsko programiranje F# Primjeri ResursiFP u drugim jezicima • C#: LINQ
  • 10. Funkcijsko programiranje F# Primjeri ResursiFP u drugim jezicima • C#: LINQ • Python: list comprehensions, higher-order functions, ...
  • 11. Funkcijsko programiranje F# Primjeri ResursiFP u drugim jezicima • C#: LINQ • Python: list comprehensions, higher-order functions, ... • Ruby, JavaScript...
  • 12. Funkcijsko programiranje F# Primjeri ResursiZa²to funkcijsko programiranje? • asinkronost, paralelizacija i iskori²tavanje vi²ejezgrenih procesora
  • 13. Funkcijsko programiranje F# Primjeri ResursiZa²to funkcijsko programiranje? • asinkronost, paralelizacija i iskori²tavanje vi²ejezgrenih procesora • druga£iji pristup i izraºajnija sintaksa pogodna za matematiku, DSL-ove...
  • 14. Funkcijsko programiranje F# Primjeri ResursiZa²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. Funkcijsko programiranje F# Primjeri ResursiZa²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. Funkcijsko programiranje F# Primjeri ResursiZa²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. Funkcijsko programiranje F# Primjeri ResursiHello, World! printfn Hello, World!
  • 18. Funkcijsko programiranje F# Primjeri ResursiF# • ML =⇒ (O)Caml =⇒ F#
  • 19. Funkcijsko programiranje F# Primjeri ResursiF# • ML =⇒ (O)Caml =⇒ F# • Don Syme, Microsoft Research, Cambridge cca. 2002.
  • 20. Funkcijsko programiranje F# Primjeri ResursiF# • ML =⇒ (O)Caml =⇒ F# • Don Syme, Microsoft Research, Cambridge cca. 2002. • vi²eparadigmatski • funkcijski • objektno-orijentirani • imperativni
  • 21. Funkcijsko programiranje F# Primjeri ResursiF# 1 • stati£no i jako tipiziran 1 statically strongly typed 2 Hindley-Milner
  • 22. Funkcijsko programiranje F# Primjeri ResursiF# 1 • stati£no i jako tipiziran 2 • pogaža tipove: type inference 1 statically strongly typed 2 Hindley-Milner
  • 23. Funkcijsko programiranje F# Primjeri ResursiF# 1 • stati£no i jako tipiziran 2 • pogaža tipove: type inference • eksplicitna promjenjivost (keyword mutable) 1 statically strongly typed 2 Hindley-Milner
  • 24. Funkcijsko programiranje F# Primjeri ResursiF# i .NET Framework • puni pristup Base Class Libraryju + libraryji speci£ni za F# (Microsoft.FSharp)
  • 25. Funkcijsko programiranje F# Primjeri ResursiF# i .NET Framework • puni pristup Base Class Libraryju + libraryji speci£ni za F# (Microsoft.FSharp) • referenca na DLL + open [namespace]
  • 26. Funkcijsko programiranje F# Primjeri ResursiF# i .NET Framework • puni pristup Base Class Libraryju + libraryji speci£ni za F# (Microsoft.FSharp) • referenca na DLL + open [namespace] • C# library → F#
  • 27. Funkcijsko programiranje F# Primjeri ResursiF# 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. Funkcijsko programiranje F# Primjeri ResursiF# na Windowsima • Visual Studio 2010 • Visual Studio 2008 uz zasebnu instalaciju
  • 29. Funkcijsko programiranje F# Primjeri ResursiF# 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. Funkcijsko programiranje F# Primjeri ResursiPrimjeri
  • 31. Funkcijsko programiranje F# Primjeri ResursiResursi • 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/