Programmation fonctionnelle avec f#
-
Upload
ernst-perpignand -
Category
Technology
-
view
1.552 -
download
1
description
Transcript of 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
© 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 ?