21
© Copyright Pyxis Technologies – pyxis-tech.com https://www.pyxis-tech.ca/confluence/download/attachments/ 17170588/template+open+office+pres.odp Penser différemment Introduction à F# 1

Programmation fonctionnelle avec f#

Embed Size (px)

DESCRIPTION

Présentation d'introduction à la programmation fonctionnelle avec F# faite à la communauté .net de Montréal

Citation preview

Page 1: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com

https://www.pyxis-tech.ca/confluence/download/attachments/17170588/template+open+office+pres.odp

Penser différemment

Introduction à F#

1

Page 2: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com2

Développer devient de plus en plus complexe…

C# 2.0C# 3.0

C# 4.0

PFX

Rx

Page 3: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com3

Sans oublier le facteur humain

Page 4: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com4

map (reduce complexity)

La programmation fonctionnelle permet de gérer cette complexité

Page 5: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com5

La programmation fonctionnelle est une corde additionnelle à notre arc

POO

SQL

ORM

ASP.NET

C#

PF

TDD Les défis de demain• Programmation

asynchrone• Parallélisme• « Mutations » de C#

Page 6: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com6

Nous pouvons programmer de manière fonctionnelle en .Net

C#

F#

Page 7: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com

Débuter avec F#

Utiliser F#Programmer

avec des fonctions

Continuer l’apprentissage de F#

7

Page 8: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com

Débuter avec F#

Utiliser F#Programmer

avec des fonctions

Continuer l’apprentissage de F#

8

Page 9: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com9

À propos de F#

Langage de programmation générique et concisLangage hybride (fonctionnel, objet) de la plateforme .NetPeut être utilisé en mode interactif mais est fortement typé et intégré à .NetCaractéristiques intéressantes pour les objets, agents asynchrones, parallélisme et les unités de mesures

Page 10: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com

Démo: Découvrons F#

La console interactiveLes valeurs (primitives, fonctions, etc.)Une application F# dans Visual Studio• Gestion des fichiers

La syntaxe de base• Les espaces sont importants• La case différencie les valeurs• ``Malgré les caractères %@!, ce nom de valeur est légal en

F#.``

Page 11: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com

Débuter avec F#

Utiliser F#Programmer

avec des fonctions

Continuer l’apprentissage de F#

11

Page 12: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com12

La programmation fonctionnelle

… est un paradigme de programmation qui considère le calcul en tant qu'évaluation de fonctions mathématiques et rejette le changement d'état

et la mutation des données. Elle souligne l'application des fonctions, contrairement au modèle de programmation impérative qui met en avant les

changements d'état.http://fr.wikipedia.org/wiki/Programmation_fonctionnelle

“Functional Programming in a nutshell is programming with functions… In functional programming, functions are not special; they are treated the same

as data.”Brian Beckman

http://channel9.msdn.com/Shows/Going+Deep/Brian-Beckman-Dont-fear-the-Monads

Page 13: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com

La programmation impérative exige un contrôle des effets de bord

13

Système

Classe

Méthode

X = X + 1

Effet de bord

Synchronisation des effets de bord

Page 14: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com

La programmation fonctionnelle permet un style déclaratif

14

let x = 1

let inc = add xDéclarations let add a b = a + b

add 21 21 val it : int = 42

Applications de fonction

add 1 val it : int -> int = <fun:it@10>inc 41val it : int = 42

Page 15: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com

Démo : idiomes de la programmation fonctionnelle

15

Valeurs immuablesStructures de données immuables• Tuples• Listes• Discriminated Union Type

Fonctions récursives“Pattern matching”Utilisation des fonctions comme valeursFonctions d’ordre supérieur

Page 16: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com

Démo : un exemple complet

16

Analyse des indicateurs du développement de la banque mondialeCalcul de la surface couverte de forêt des différentes régions de la planète

Page 17: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com

Chaque style de programmation a ses forces et ses faiblesses

17

Qualité Fonctionnel Impératif

Compréhension des programmes

Style déclaratifpas d’effets de bord (facile)

Contrôle des effets de bord cache l’essence de l’algorithme (difficile)

Écriture du code Expression concise et essentielle (facile)

Expression détaillée très chargée (difficile)

Rajout d’une nouveau type de données

Modification de toutes les fonctions impactées (difficile)

Création d’une nouvelle classe (facile)

Rajout d’un nouveau traitement

Création d’une nouvelle fonction traitant tous les cas (facile)

Rajout d’une nouvelle méthode dans tous les types existants (difficile)

Comparaison structurelle

Facile Difficile

Page 18: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com

Débuter avec F#

Utiliser F# Programmer

avec des fonctions

Continuer l’apprentissage de F#

18

Page 19: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com

Pour continuer avec F#

19

FSI.exeTutoriels MSDNGo to definition dans visual studioLutz’ reflectorhttp://cs.hubfs.nethttp://msdn.microsoft.com/en-us/fsharp/default.aspx

Page 20: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com

Livres

20

Page 21: Programmation fonctionnelle avec f#

© Copyright Pyxis Technologies – pyxis-tech.com

Merci

21

Questions ?