Formation Découverte de la programmation fonctionnelle avec F#

En ligne - 17 mai

800€ HT / personne (960€ TTC)

1 jour

Paris - 17 juin

800€ HT / personne (960€ TTC)

1 jour

Objectifs

Cette formation permet aux participants d’acquérir des bases de la programmation fonctionnelle en les appliquant avec le langage F#, en pratiquant à partir d’un code existant familier (procédural et orienté objet).
Quelques pratiques de refactoring sont abordées afin de mener à bien la transformation du code existant vers un style de programmation plus fonctionnel.

  • Comprendre la programmation fonctionnelle
  • Découvrir le langage F#
  • Découvrir les types algébriques
  • Définir un typage fort

Acquis à l'issue de la formation

Le participant à cette formation aura acquis des bases de la programmation fonctionnelle et leur usage avec le langage F# en particulier:

  • Notions de programmation fonctionnelle
    • Comprendre les bénéfices de l'Immutabilité
    • Comprendre les Fonctions pures
    • Implémenter avec une architecture “Functional core/imperative shell”
  • F#
    • Découvrir les outils de base : VSCode, Paket, FAKE
    • Manipuler les valeurs (fonctions ou variables) mutables/immutables
    • Connaitre les différents types : Class, Alias, Tuples, Record et Discriminated Unions, unit, Option (+ inférence de type)
    • Définir des fonctions: récursives, lambdas, signature
    • Comprendre le “Currying” et application partielle des fonctions
    • Utiliser le “Pattern matching”
    • Effectuer de la Composition et “pipeline” de fonctions

Public concerné et pré-requis

Cette formation vise les développeurs d’applications ayant une première expérience avec un langage de programmation procédural (C,...) ou orienté objet (C#, Java, JS...).
Pas de pré-requis concernant la programmation fonctionnelle.
Les participants devront être équipés d’un PC (non fourni) et avoir installé Git dans sa dernière version.
La formation contient une part importante de pratique. Les sessions sont réalisées avec un maximum de 12 personnes, pour nous permettre d’adapter le déroulement de la formation et de contextualiser les exercices, en fonction des participants et de leurs spécificités, tout en garantissant l'acquisition des compétences visées par la formation.

Evaluation

En début de formation, une autoévaluation est effectuée pour évaluer le niveau, ainsi que les attentes de chaque participant. Ainsi nous pouvons organiser au mieux les différents groupes de travail.
Par la suite, le formateur effectue une évaluation continue à l'aide des nombreux exercices pratiques.
En fin de formation, la progression et les acquis sont autoévalués par chacun des participants. Le formateur fournit à chacun des participants une évaluation, ainsi que les axes d'amélioration.
En option, un accompagnement postformation peut être effectué. Cela fera l'objet d'un devis complémentaire.

Programme

La journée s'articule autour de 2 katas, un premier pour découvrir quelques principes de base de la programmation fonctionnelle avec le langage F#, et un second permettant d'aborder l'architecture fonctionnelle. L’acquisition se fera par la réalisation en groupe.

  • 1ère demi-journée
    • Découverte des différents types et des principes des fonctions en programmation fonctionnelle (illustré en F#)
    • Découverte de l’environnement de développement F#
    • Premiers types et premières fonctions F# pour réaliser le kata
  • 2ème demi-journée
    • Introduction au chaînage de fonctions comme architecture fonctionnelle
    • Conception et réalisation d'un kata avec cette architecture
    • Introduction de la fonction "bind" et du concept de Monade

Formateur / Formatrices

Suivant le nombre de participants, cette formation sera réalisée par un ou plusieurs formateurs.Découvrez nos formateurs

Témoignages

Either, Monad, Partial Application, autant de mots barbares qui maintenant me parlent.

Samuel

Cela faisait longtemps que je souhaitais m'investir dans la programmation fonctionnelle. La formation sur F# m'a donné les bases pour commencer à l'utiliser sur mes projets.

Romain