ISKA 2010timm@infosupport.com                          Functioneel                       programmeren in                  ...
Inhoud•   Wat ?•   Waarom ?•   Demo•   Toekomst
Wat ?functional programming is a programming  paradigm that treats computation as  the evaluation of mathematical  functio...
Waarom ? Waarom niet ?           Endeavour 5 Launch   4
Waarom ?  Iedereen kent (al dan niet onbewust) al        minstens één functionele taal                   Endeavour 5 Launc...
Waarom ?      SELECT Naam, Leeftijd          FROM Persoon   WHERE Achternaam LIKE ‘%Mahy%’               Endeavour 5 Launc...
Waarom ?DECLARE @achternaam nvarchar(255)DECLARE @id bigintDECLARE @resultaat table ( naam nvarchar(255), leeftijd short)D...
Waarom ? De tweede oplossing heeft als voordeel .......                      Endeavour 5 Launch     8
Waarom ?      Job security ?            Endeavour 5 Launch   9
Waarom ?    Security through       obscurity ?           Endeavour 5 Launch   10
Waarom ?   Logisch toch om 1°   oplossing te kiezen ?            Endeavour 5 Launch   11
Waarom ?           Endeavour 5 Launch   12
Waarom ?           Endeavour 5 Launch   13
Waarom ?           Endeavour 5 Launch   14
Basis principes van FP•   Closures (delegates)•   Strict vs Non-strict evaluation (yielding)•   Duck typing (via anonymous...
DemoBouw een applicatie die een reeks bestanden  inleest en telkens het aantal woorden telt                    Endeavour 5...
Gebruikt in de demo•   Higher-order functions•   Currying•   Non-strict evaluation•   Immutable states                    ...
Voordelen• Parallel (geen locking, sync problemen)  – immutable• Echt hergebruik van code  – ducktyping stijl van functies...
Nadelen• Debugging• Yielding kan performance boosten maar in  veel gevallen ook ********                     Endeavour 5 L...
Toekomst• .NET 4.0 / VS 2010  – Parallel extensions  – F#  – C# DLR  – Dynamic lookup (duck typing going crazy)  – Co - co...
Toekomst• Dryad LINQ (  http://research.microsoft.com/en-us/projects/Dry  )                     Endeavour 5 Launch   21
Maar vergeet niet Alles wat in F# kan, kan je ook doen in C#. Je        moet enkel de F# keywords even        implementere...
Toekomst• Mogelijke ISKA’s indien interesse:  – Advanced FP in C# met als topics:     •   Continuations     •   Folding   ...
Upcoming SlideShare
Loading in …5
×

2010 iska - tim m - functioneel programmeren in c-sharp

335 views

Published on

Public session given about functional programming using C#

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
335
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2010 iska - tim m - functioneel programmeren in c-sharp

  1. 1. ISKA 2010timm@infosupport.com Functioneel programmeren in C#
  2. 2. Inhoud• Wat ?• Waarom ?• Demo• Toekomst
  3. 3. Wat ?functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions andavoids state and mutable data. It emphasizes the application of functions.......... developed in the 1930s to investigate function definition, function application, and recursion.........in C# version 3.0 and higher, lambda functions can be employed to write programs in a functional style Endeavour 5 Launch 3
  4. 4. Waarom ? Waarom niet ? Endeavour 5 Launch 4
  5. 5. Waarom ? Iedereen kent (al dan niet onbewust) al minstens één functionele taal Endeavour 5 Launch 5
  6. 6. Waarom ? SELECT Naam, Leeftijd FROM Persoon WHERE Achternaam LIKE ‘%Mahy%’ Endeavour 5 Launch 6
  7. 7. Waarom ?DECLARE @achternaam nvarchar(255)DECLARE @id bigintDECLARE @resultaat table ( naam nvarchar(255), leeftijd short)DECLARE c1 CURSOR READ_ONLYFORSELECT IdFROM PersoonOPEN c1FETCH NEXT FROM c1INTO @IdWHILE @@FETCH_STATUS = 0BEGIN SELECT TOP 1 @Achternaam = Achternaam FROM Persoon WHERE Id = @Id IF CONTAINS( @achternaam ,Mahy) BEGIN SELECT Naam, Leeftijd FROM Persoon WHERE Id = @Id INTO @resultaat END IF FETCH NEXT FROM c1 INTO @IdENDCLOSE c1DEALLOCATE c1 Endeavour 5 Launch 7
  8. 8. Waarom ? De tweede oplossing heeft als voordeel ....... Endeavour 5 Launch 8
  9. 9. Waarom ? Job security ? Endeavour 5 Launch 9
  10. 10. Waarom ? Security through obscurity ? Endeavour 5 Launch 10
  11. 11. Waarom ? Logisch toch om 1° oplossing te kiezen ? Endeavour 5 Launch 11
  12. 12. Waarom ? Endeavour 5 Launch 12
  13. 13. Waarom ? Endeavour 5 Launch 13
  14. 14. Waarom ? Endeavour 5 Launch 14
  15. 15. Basis principes van FP• Closures (delegates)• Strict vs Non-strict evaluation (yielding)• Duck typing (via anonymous types)• Type inference (var)• Lambda’s ( x,y => x + y )• Immutable Endeavour 5 Launch 15
  16. 16. DemoBouw een applicatie die een reeks bestanden inleest en telkens het aantal woorden telt Endeavour 5 Launch 16
  17. 17. Gebruikt in de demo• Higher-order functions• Currying• Non-strict evaluation• Immutable states Endeavour 5 Launch 17
  18. 18. Voordelen• Parallel (geen locking, sync problemen) – immutable• Echt hergebruik van code – ducktyping stijl van functies• Echt testbaar – geen moeilijke mockings / scenario tests Endeavour 5 Launch 18
  19. 19. Nadelen• Debugging• Yielding kan performance boosten maar in veel gevallen ook ******** Endeavour 5 Launch 19
  20. 20. Toekomst• .NET 4.0 / VS 2010 – Parallel extensions – F# – C# DLR – Dynamic lookup (duck typing going crazy) – Co - contra variance• .NET 5.0 – F# --> C# (async block, .....)• Oslo platform / M Endeavour 5 Launch 20
  21. 21. Toekomst• Dryad LINQ ( http://research.microsoft.com/en-us/projects/Dry ) Endeavour 5 Launch 21
  22. 22. Maar vergeet niet Alles wat in F# kan, kan je ook doen in C#. Je moet enkel de F# keywords even implementeren als functions.... Endeavour 5 Launch 22
  23. 23. Toekomst• Mogelijke ISKA’s indien interesse: – Advanced FP in C# met als topics: • Continuations • Folding • Impure • Memoization • Monads • PatternMatching • Recursion • Unfolding – F# introductie Endeavour 5 Launch 23

×