SlideShare une entreprise Scribd logo
1  sur  21
https://www.pyxis-tech.ca/confluence/download/attachments/17170588/template+open+office+pres.odp Introduction à F# Penser différemment 1
2 Développer devient de plus en plus complexe… PFX Rx … C# 2.0C# 3.0 C# 4.0 …
3 Sans oublier le facteur humain
4 map (reducecomplexity) La programmation fonctionnelle permet de gérer cette complexité
5 La programmation fonctionnelle est une corde additionnelle à notre arc ASP.NET SQL POO ORM PF C# TDD Les défis de demain Programmation asynchrone Parallélisme « Mutations » de C#
6 Nous pouvons programmer de manière fonctionnelle en .Net C# F#
Débuter avec F# ,[object Object]
Programmer avec des fonctions
Continuer l’apprentissage de F#7
Débuter avec F# ,[object Object]
Programmer avec des fonctions
Continuer l’apprentissage de F#8
9 À propos de F# Langage de programmation générique et concis Langage hybride (fonctionnel, objet) de la plateforme .Net Peut être utilisé en mode interactif mais est fortement typé et intégré à .Net Caractéristiques intéressantes pour les objets, agents asynchrones, parallélisme et les unités de mesures
Démo: Découvrons F# La console interactive Les 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#.``
Débuter avec F# ,[object Object]
Programmer avec des fonctions
Continuer l’apprentissage de F#11
12 La programmation fonctionnelle … est un paradigme de programmationqui 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
La programmation impérative exige un contrôle des effets de bord 13 Synchronisation des effets de bord Système Classe Méthode X = X + 1 Effet de bord
La programmation fonctionnelle permet un style déclaratif 14 let x = 1 Déclarations let add a b = a + b let inc = add x add 21 21 val it : int = 42 Applications de fonction add 1 val it : int -> int = <fun:it@10> inc 41 val it : int = 42
Démo : idiomes de la programmation fonctionnelle 15 Valeurs immuables Structures de données immuables Tuples Listes Discriminated Union Type Fonctions récursives “Pattern matching” Utilisation des fonctions comme valeurs Fonctions d’ordre supérieur

Contenu connexe

En vedette

David Copperfield1
David Copperfield1David Copperfield1
David Copperfield1
guest5c23176
 
Mag Up and Under (n°11)
Mag Up and Under (n°11) Mag Up and Under (n°11)
Mag Up and Under (n°11)
Marc De Jongy
 

En vedette (20)

Desafio Devoto
Desafio Devoto Desafio Devoto
Desafio Devoto
 
Avis ce387797
Avis ce387797Avis ce387797
Avis ce387797
 
Holiday
HolidayHoliday
Holiday
 
Will T
Will TWill T
Will T
 
Un aperçu différent du design
Un aperçu différent du designUn aperçu différent du design
Un aperçu différent du design
 
David Copperfield1
David Copperfield1David Copperfield1
David Copperfield1
 
Barcelona
BarcelonaBarcelona
Barcelona
 
Pgi
PgiPgi
Pgi
 
Environnement bien
Environnement bienEnvironnement bien
Environnement bien
 
Politique et internet : les pires ennemis ? (La Lettre du cadre, 2007)
Politique et internet : les pires ennemis ? (La Lettre du cadre, 2007)Politique et internet : les pires ennemis ? (La Lettre du cadre, 2007)
Politique et internet : les pires ennemis ? (La Lettre du cadre, 2007)
 
Taller sobre redes sociales: facebook, twitter y comunidades virtuales
Taller sobre redes sociales: facebook, twitter y comunidades virtualesTaller sobre redes sociales: facebook, twitter y comunidades virtuales
Taller sobre redes sociales: facebook, twitter y comunidades virtuales
 
Notes
NotesNotes
Notes
 
De nos jours
De nos joursDe nos jours
De nos jours
 
Tutoriel Utilisation Overblog
Tutoriel Utilisation OverblogTutoriel Utilisation Overblog
Tutoriel Utilisation Overblog
 
Mag Up and Under (n°11)
Mag Up and Under (n°11) Mag Up and Under (n°11)
Mag Up and Under (n°11)
 
De nos jours
De nos joursDe nos jours
De nos jours
 
Nice
NiceNice
Nice
 
Veille numérique 250311
Veille numérique 250311Veille numérique 250311
Veille numérique 250311
 
Gamme abri-jardin-metallique
Gamme abri-jardin-metallique Gamme abri-jardin-metallique
Gamme abri-jardin-metallique
 
aquitaine
aquitaineaquitaine
aquitaine
 

Similaire à Programmation fonctionnelle avec f#

Chapitre 0_ Introduction à la compilation.pdf
Chapitre 0_ Introduction à la compilation.pdfChapitre 0_ Introduction à la compilation.pdf
Chapitre 0_ Introduction à la compilation.pdf
benfifiaymen36
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptx
OlyvierNzighou1
 

Similaire à Programmation fonctionnelle avec f# (20)

Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015
 
C# 5 versus Java 8... Quand C++ 11 s'invite à la fête
C# 5 versus Java 8... Quand C++ 11 s'invite à la fêteC# 5 versus Java 8... Quand C++ 11 s'invite à la fête
C# 5 versus Java 8... Quand C++ 11 s'invite à la fête
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 
Chapitre 0_ Introduction à la compilation.pdf
Chapitre 0_ Introduction à la compilation.pdfChapitre 0_ Introduction à la compilation.pdf
Chapitre 0_ Introduction à la compilation.pdf
 
ESGAE_C#_2021-2024 Cours Avancé (('.pptx
ESGAE_C#_2021-2024 Cours Avancé (('.pptxESGAE_C#_2021-2024 Cours Avancé (('.pptx
ESGAE_C#_2021-2024 Cours Avancé (('.pptx
 
Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++
 
C#
C#C#
C#
 
Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !
 
Pl 2-bis
Pl 2-bisPl 2-bis
Pl 2-bis
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
 
Mix it 2011 - Clojure
Mix it 2011 - ClojureMix it 2011 - Clojure
Mix it 2011 - Clojure
 
Réutilisation de code entre Windows 8 et Windows Phone 8.
Réutilisation de code entre Windows 8 et Windows Phone 8.Réutilisation de code entre Windows 8 et Windows Phone 8.
Réutilisation de code entre Windows 8 et Windows Phone 8.
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
 
Microsoft Experieces 2016 - Retour d’expériences sur TFS Online
Microsoft Experieces 2016 - Retour d’expériences sur TFS OnlineMicrosoft Experieces 2016 - Retour d’expériences sur TFS Online
Microsoft Experieces 2016 - Retour d’expériences sur TFS Online
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptx
 
React xp
React xpReact xp
React xp
 
Langage C
Langage CLangage C
Langage C
 
Le langage C.pdf
Le langage C.pdfLe langage C.pdf
Le langage C.pdf
 

Programmation fonctionnelle avec f#

  • 2. 2 Développer devient de plus en plus complexe… PFX Rx … C# 2.0C# 3.0 C# 4.0 …
  • 3. 3 Sans oublier le facteur humain
  • 4. 4 map (reducecomplexity) La programmation fonctionnelle permet de gérer cette complexité
  • 5. 5 La programmation fonctionnelle est une corde additionnelle à notre arc ASP.NET SQL POO ORM PF C# TDD Les défis de demain Programmation asynchrone Parallélisme « Mutations » de C#
  • 6. 6 Nous pouvons programmer de manière fonctionnelle en .Net C# F#
  • 7.
  • 10.
  • 13. 9 À propos de F# Langage de programmation générique et concis Langage hybride (fonctionnel, objet) de la plateforme .Net Peut être utilisé en mode interactif mais est fortement typé et intégré à .Net Caractéristiques intéressantes pour les objets, agents asynchrones, parallélisme et les unités de mesures
  • 14. Démo: Découvrons F# La console interactive Les 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#.``
  • 15.
  • 18. 12 La programmation fonctionnelle … est un paradigme de programmationqui 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
  • 19. La programmation impérative exige un contrôle des effets de bord 13 Synchronisation des effets de bord Système Classe Méthode X = X + 1 Effet de bord
  • 20. La programmation fonctionnelle permet un style déclaratif 14 let x = 1 Déclarations let add a b = a + b let inc = add x add 21 21 val it : int = 42 Applications de fonction add 1 val it : int -> int = <fun:it@10> inc 41 val it : int = 42
  • 21. Démo : idiomes de la programmation fonctionnelle 15 Valeurs immuables Structures de données immuables Tuples Listes Discriminated Union Type Fonctions récursives “Pattern matching” Utilisation des fonctions comme valeurs Fonctions d’ordre supérieur
  • 22. Démo : un exemple complet 16 Analyse des indicateurs du développement de la banque mondiale Calcul de la surface couverte de forêt des différentes régions de la planète
  • 23. Chaque style de programmation a ses forces et ses faiblesses 17
  • 24.
  • 27. Pour continuer avec F# 19 FSI.exe Tutoriels MSDN Go to definition dans visual studio Lutz’ reflector http://cs.hubfs.net http://msdn.microsoft.com/en-us/fsharp/default.aspx

Notes de l'éditeur

  1. Plusieurs sources de donnéesPlusieurs formatsPlusieurs plateformesMulti core
  2. La composition de fonctions simples est la clé pour gérer la complexité de l’activité de développement.
  3. Je ne veux pas vous convaincre d’apprendre F# à tout prixPas de démonstrations tape à l’œil avec du traitement asynchrone et parallèleDes exemples simples pour illustrer les conceptsUne utilisation concrètePrésentation de niveau 101 (académique)Pas de survol généralDu code simple
  4. Je ne veux pas vous convaincre d’apprendre F# à tout prixPas de démonstrations tape à l’œil avec du traitement asynchrone et parallèleDes exemples simples pour illustrer les conceptsUne utilisation concrètePrésentation de niveau 101 (académique)Pas de survol généralDu code simple
  5. DémoCréer une application console F# (FirstSetps)Dans program.fsAfficher HelloWorldExécuter la ligne Alt+#Paramétriser le nom (déduction du type de la fonction printfn)Intégration avec .NetLire le nom à la consoleUtiliser windowformsRefactorisationExtractmethodExtract classIntégration à C#Module -&gt; classe statiqueReflector
  6. Je ne veux pas vous convaincre d’apprendre F# à tout prixPas de démonstrations tape à l’œil avec du traitement asynchrone et parallèleDes exemples simples pour illustrer les conceptsUne utilisation concrètePrésentation de niveau 101 (académique)Pas de survol généralDu code simple
  7. Je ne veux pas vous convaincre d’apprendre F# à tout prixPas de démonstrations tape à l’œil avec du traitement asynchrone et parallèleDes exemples simples pour illustrer les conceptsUne utilisation concrètePrésentation de niveau 101 (académique)Pas de survol généralDu code simple