Programmation fonctionnelle avec f#

Preview:

DESCRIPTION

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

Citation preview

© 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

© Copyright Pyxis Technologies – pyxis-tech.com2

Développer devient de plus en plus complexe…

C# 2.0C# 3.0

C# 4.0

PFX

Rx

© Copyright Pyxis Technologies – pyxis-tech.com3

Sans oublier le facteur humain

© Copyright Pyxis Technologies – pyxis-tech.com4

map (reduce complexity)

La programmation fonctionnelle permet de gérer cette complexité

© 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#

© Copyright Pyxis Technologies – pyxis-tech.com6

Nous pouvons programmer de manière fonctionnelle en .Net

C#

F#

© Copyright Pyxis Technologies – pyxis-tech.com

Débuter avec F#

Utiliser F#Programmer

avec des fonctions

Continuer l’apprentissage de F#

7

© Copyright Pyxis Technologies – pyxis-tech.com

Débuter avec F#

Utiliser F#Programmer

avec des fonctions

Continuer l’apprentissage de F#

8

© 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

© 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#.``

© Copyright Pyxis Technologies – pyxis-tech.com

Débuter avec F#

Utiliser F#Programmer

avec des fonctions

Continuer l’apprentissage de F#

11

© 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

© 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

© 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

© 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

© 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

© 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

© Copyright Pyxis Technologies – pyxis-tech.com

Débuter avec F#

Utiliser F# Programmer

avec des fonctions

Continuer l’apprentissage de F#

18

© 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

© Copyright Pyxis Technologies – pyxis-tech.com

Livres

20

© Copyright Pyxis Technologies – pyxis-tech.com

Merci

21

Questions ?

Recommended