Initiation à la programmation fonctionnelle avec Python. λ
What you'll learn
- Vous initiez à la programmation Python grace au paradigme fonctionnel
- Vous familiariser à la notion de fonctions pure : pas d'instructions uniquement des expressions
- Les expressions et les opérateurs arithmétiques
- Les expressions et les opérateurs logiques
- Récursivité expression conditionnelle pour réaliser les répétitions
- maitriser filter map reduce
- A venir: l'évaluation paresseuse (Lazy avaluation) et protocole itérateur
- A venir: Les compréhensions de liste
- A venir: manipulation des collections et tranches (slices)
- A venir: Modèle de récursivité sur les collections et structures de données
Requirements
- Notion de fonction mathématique
- Très légère notions de programmation
Description
Apprenez à programmer en Python en utilisant le paradigme fonctionnelle. λ
L'objectif, si vous êtes débutant:
D'aprendre rapidement un nouveaux language, en minimisant les notions à connaitre.
Vous former à décrire un algorithme au moyen d'un raisonnement récursif et logique.
Les répétitions (boucles) sont les conséquences d'un résonnement récursif.
Initiation au modèle map-reduce pour les traitements sur les collections de données
L'objectif, si vous programmer déjà
Vous former à décrire un algorithme au moyen d'un raisonnement récursif, qui vous permettra d'écrire de meilleures itérations. En particulier pour trouver l'invariant de boucle et la condition de sortie de boucle
Différencier instructions et expressions, données mutable et immutable
Souligner les avantages de la programmation fonctionnelle pour les applications concurrente et répartis
Après une présentation rapide de l'environnement que nous utiliserons et une première approche intuitive de la programmation fonctionnelle. Nous approfondirons les notions de fonctions avec une introduction au lambda calcul et ses applications possible dans un language tel que Python
Quand on aborde la programmation fonctionnelle, vous entendrez souvent parler d'un nombre étourdissant de caractéristiques « fonctionnelles » : les données immuables, les fonctions de première classe et l'optimisation de la récursion terminale. Ces fonctionnalités ne sont que des caractéristiques de langage qui facilitent la programmation fonctionnelle. On parle aussi de mappage, de réduction, de pipeline, de récursion, de curryfication et d'utilisation des fonctions d'ordre supérieur. Ce sont des techniques de programmation employées pour écrire du code fonctionnel. Il est enfin question de parallélisation, d'évaluation paresseuse et de déterminisme. Ce ne sont que des propriétés avantageuses des programmes fonctionnels.
Un programme écrit en style fonctionnel se caractérise essentiellement par une chose essentielle: l'absence d'effets de bord, ou plus précisément l'abscence de changement d'états. Le code ne dépend pas de données se trouvant à l'extérieur de la fonction courante et il ne modifie pas des données à l'extérieur de cette fonction. Il transforme une donnée en entrée (sans la modifié) en donnée de sortie qu'elle crée.
La plupart des autres caractéristiques de la programmation fonctionnelle peuvent se déduire de cette propriété. Utilisez-la comme un fil conducteur:
Pas de boucles => récursivité ou reduce
Pas d'affectations => nommage d'expressions
Pas d'insctructions => uniquement expressions et définition de fonctions
Who this course is for:
- Débutant souhaitant apprendre à programmer rapidement
- Programmeur souhaitant s'initier au paradigme fonctionnel
- Programmation recursive et logique pour résoudre les problèmes
- Initiation ai modèle map-reduce
Instructor
. Computer science head of department.
. Information Systems and information technologies senior architect.
. Senior executive information system director.
. Hosting provider based on Open Source Solutions.
. Open Source Integrator and consulting.
. Private cloud and Hight availability based on Open Source Solutions.
. Promote Free Software and open source solutions.
. Specialties: Hosting provider, Google Apps specialist, ICT consulting, project management, research, teaching, multi-tiers architect, Mobile applications
. Research interest : Programming as a science. Distributed computing, BigData, ML and NoSQL
. Java/JEE Evangelist
. Python and functional programming