Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#MSDEVMTL
29 février 2016 - Groupe .NET/ASP.NET
Sujet: F#
Conférencier: Kevin Olivier Avignon
Pour ceux qui ne le connaissent pas, F# fait parti des langages .NET les plus récents du monde .NET. Il tire ses racines principalement du langage OCaml. Il ne faut pas se méprendre sur sa nature; il ne s'agit pas d'un langage purement fonctionnel. F# est en fait un langage hybride dans lequel il est possible de s'exprimer de façon impérative ou aussi, avec des objets. La présentation introduira comment s'immerger dans la pensée fonctionnelle et bâtir des applications avec les rudiments de F#.
Ce cours présente la notion de qualité de code et comment il est possible de l'évaluer grâce à des métriques mesurables. Après avoir présenté plusieurs métriques standards, il se concentrer sur des aspects de qualité de code spécifique à l'orienté objet et présente les cinq concepts de l'orienté objet. La deuxième partie du cours présente plusieurs bonnes pratiques à avoir en programmation orientée objet, sur base d'exemples concrets.
Cours en C++ de la programmation procédurale à la POO.
Partie 1: La Programmation Procédurale.
Partie 2: La Programmation Orientée Objet.
Partie 3: Les Exceptions, Entrées/Sorties, Structures, Unions, Énumérations…
Partie 4: Les interfaces Graphiques avec Qt.
Si vous avez des remarques ou des suggestions afin d'améliorer ce support du cours merci de me contacter via pr.azizdarouichi@gmail.com
C'est le premier chapitre du cours en C++ de la programmation procédurale à la POO.
Partie 1: La Programmation Procédurale.
Partie 2: La Programmation Orientée Objet.
Partie 3: Les Exceptions, Entrées/Sorties, Structures, Unions, Énumérations…
Partie 4: Les interfaces Graphiques avec Qt.
C'est la version 2019 du chapitre 1 sur C++:
https://fr.slideshare.net/AzizDarouichi/chap1-cours-en-c
Si vous avez des remarques ou des suggestions afin d'améliorer ce support du cours merci de me contacter via pr.azizdarouichi@gmail.com
Bonne lecture
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#MSDEVMTL
29 février 2016 - Groupe .NET/ASP.NET
Sujet: F#
Conférencier: Kevin Olivier Avignon
Pour ceux qui ne le connaissent pas, F# fait parti des langages .NET les plus récents du monde .NET. Il tire ses racines principalement du langage OCaml. Il ne faut pas se méprendre sur sa nature; il ne s'agit pas d'un langage purement fonctionnel. F# est en fait un langage hybride dans lequel il est possible de s'exprimer de façon impérative ou aussi, avec des objets. La présentation introduira comment s'immerger dans la pensée fonctionnelle et bâtir des applications avec les rudiments de F#.
Ce cours présente la notion de qualité de code et comment il est possible de l'évaluer grâce à des métriques mesurables. Après avoir présenté plusieurs métriques standards, il se concentrer sur des aspects de qualité de code spécifique à l'orienté objet et présente les cinq concepts de l'orienté objet. La deuxième partie du cours présente plusieurs bonnes pratiques à avoir en programmation orientée objet, sur base d'exemples concrets.
Cours en C++ de la programmation procédurale à la POO.
Partie 1: La Programmation Procédurale.
Partie 2: La Programmation Orientée Objet.
Partie 3: Les Exceptions, Entrées/Sorties, Structures, Unions, Énumérations…
Partie 4: Les interfaces Graphiques avec Qt.
Si vous avez des remarques ou des suggestions afin d'améliorer ce support du cours merci de me contacter via pr.azizdarouichi@gmail.com
C'est le premier chapitre du cours en C++ de la programmation procédurale à la POO.
Partie 1: La Programmation Procédurale.
Partie 2: La Programmation Orientée Objet.
Partie 3: Les Exceptions, Entrées/Sorties, Structures, Unions, Énumérations…
Partie 4: Les interfaces Graphiques avec Qt.
C'est la version 2019 du chapitre 1 sur C++:
https://fr.slideshare.net/AzizDarouichi/chap1-cours-en-c
Si vous avez des remarques ou des suggestions afin d'améliorer ce support du cours merci de me contacter via pr.azizdarouichi@gmail.com
Bonne lecture
C'est le chapitre 1 sur le langage Python qui est une introduction à ce langage.
Si vous avez des remarques ou des suggestions pour l’améliorer n’hésitez pas à m’écrire via ce courriel:
pr.azizdarouichi@gmail.com
Bonne lecture.
Comparatif en C# 5, Java 8 et C++ 11.
Y sont analysés les langages et les différences structurelles.
Ce comparatif est la suite de C#4 vs Java 7 ainsi que de .NET 4 côté serveur vs JEE 6
Android, Spring, Gradle et de nombreux autres projets apportent leur soutien au langage Kotlin. Fin 2017, Kotlin tient-il ses promesses ?
Retour d’expérience sur le langage, ses avantages et inconvénients sur un projet Mobile, un projet Back et bien plus.
This document discusses functional programming with streams in Java. It defines streams as sequences of data elements that support sequential and parallel aggregate operations. It outlines different stream operations like intermediate and terminal operations. It also describes how to create streams from various sources like collections, arrays and files. Additionally, it explains how to apply common stream operations like mapping, filtering, matching, grouping and partitioning data.
Contenu connexe
Similaire à Programmation Fonctionnelle avec Kotlin
C'est le chapitre 1 sur le langage Python qui est une introduction à ce langage.
Si vous avez des remarques ou des suggestions pour l’améliorer n’hésitez pas à m’écrire via ce courriel:
pr.azizdarouichi@gmail.com
Bonne lecture.
Comparatif en C# 5, Java 8 et C++ 11.
Y sont analysés les langages et les différences structurelles.
Ce comparatif est la suite de C#4 vs Java 7 ainsi que de .NET 4 côté serveur vs JEE 6
Android, Spring, Gradle et de nombreux autres projets apportent leur soutien au langage Kotlin. Fin 2017, Kotlin tient-il ses promesses ?
Retour d’expérience sur le langage, ses avantages et inconvénients sur un projet Mobile, un projet Back et bien plus.
This document discusses functional programming with streams in Java. It defines streams as sequences of data elements that support sequential and parallel aggregate operations. It outlines different stream operations like intermediate and terminal operations. It also describes how to create streams from various sources like collections, arrays and files. Additionally, it explains how to apply common stream operations like mapping, filtering, matching, grouping and partitioning data.
This document provides an introduction to reactive systems and asynchronous message passing according to the Reactive Manifesto. It includes links to resources about the Reactive Manifesto, examples of reactive applications using Spring WebFlux and Kotlin, and links to the author's GitHub pages showcasing reactive sample apps and code.
Micronaut is a modern Java framework for building microservices. It was developed by Graeme Rocher, creator of Grails and a Spring developer. Micronaut uses annotation processing at compile time for configuration rather than reflection at runtime, making it faster and using less memory than alternatives like Spring. It supports reactive programming, cloud native features, message-driven microservices using annotations, and serverless functions. The document provides an overview of Micronaut and demonstrates how to create a simple project.
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...Horgix
This is the slide deck of a talk by Alexis "Horgix" Chotard and Laurentiu Capatina presented at the MongoDB Paris User Group in June 2024 about the feedback on how PayFit move away from a monolithic hell of a self-hosted MongoDB cluster to managed alternatives. Pitch below.
March 15, 2023, 6:59 AM: a MongoDB cluster collapses. Tough luck, this cluster contains 95% of user data and is absolutely vital for even minimal operation of our application. To worsen matters, this cluster is 7 years behind on versions, is not scalable, and barely observable. Furthermore, even the data model would quickly raise eyebrows: applications communicating with each other by reading/writing in the same MongoDB documents, documents reaching the maximum limit of 16MiB with hundreds of levels of nesting, and so forth. The incident will last several days and result in the loss of many users. We've seen better scenarios.
Let's explore how PayFit found itself in this hellish situation and, more importantly, how we managed to overcome it!
On the agenda: technical stabilization, untangling data models, breaking apart a Single Point of Failure (SPOF) into several elements with a more restricted blast radius, transitioning to managed services, improving internal accesses, regaining control over risky operations, and ultimately, approaching a technical migration when it impacts all development teams.
L'IA connaît une croissance rapide et son intégration dans le domaine éducatif soulève de nombreuses questions. Aujourd'hui, nous explorerons comment les étudiants utilisent l'IA, les perceptions des enseignants à ce sujet, et les mesures possibles pour encadrer ces usages.
Constat Actuel
L'IA est de plus en plus présente dans notre quotidien, y compris dans l'éducation. Certaines universités, comme Science Po en janvier 2023, ont interdit l'utilisation de l'IA, tandis que d'autres, comme l'Université de Prague, la considèrent comme du plagiat. Cette diversité de positions souligne la nécessité urgente d'une réponse institutionnelle pour encadrer ces usages et prévenir les risques de triche et de plagiat.
Enquête Nationale
Pour mieux comprendre ces dynamiques, une enquête nationale intitulée "L'IA dans l'enseignement" a été réalisée. Les auteurs de cette enquête sont Le Sphynx (sondage) et Compilatio (fraude académique). Elle a été diffusée dans les universités de Lyon et d'Aix-Marseille entre le 21 juin et le 15 août 2023, touchant 1242 enseignants et 4443 étudiants. Les questionnaires, conçus pour étudier les usages de l'IA et les représentations de ces usages, abordaient des thèmes comme les craintes, les opportunités et l'acceptabilité.
Résultats de l'Enquête
Les résultats montrent que 55 % des étudiants utilisent l'IA de manière occasionnelle ou fréquente, contre 34 % des enseignants. Cependant, 88 % des enseignants pensent que leurs étudiants utilisent l'IA, ce qui pourrait indiquer une surestimation des usages. Les usages identifiés incluent la recherche d'informations et la rédaction de textes, bien que ces réponses ne puissent pas être cumulées dans les choix proposés.
Analyse Critique
Une analyse plus approfondie révèle que les enseignants peinent à percevoir les bénéfices de l'IA pour l'apprentissage, contrairement aux étudiants. La question de savoir si l'IA améliore les notes sans développer les compétences reste débattue. Est-ce un dopage académique ou une opportunité pour un apprentissage plus efficace ?
Acceptabilité et Éthique
L'enquête révèle que beaucoup d'étudiants jugent acceptable d'utiliser l'IA pour rédiger leurs devoirs, et même un quart des enseignants partagent cet avis. Cela pose des questions éthiques cruciales : copier-coller est-il tricher ? Utiliser l'IA sous supervision ou pour des traductions est-il acceptable ? La réponse n'est pas simple et nécessite un débat ouvert.
Propositions et Solutions
Pour encadrer ces usages, plusieurs solutions sont proposées. Plutôt que d'interdire l'IA, il est suggéré de fixer des règles pour une utilisation responsable. Des innovations pédagogiques peuvent également être explorées, comme la création de situations de concurrence professionnelle ou l'utilisation de détecteurs d'IA.
Conclusion
En conclusion, bien que l'étude présente des limites, elle souligne un besoin urgent de régulation. Une charte institutionnelle pourrait fournir un cadre pour une utilisation éthique.
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...OCTO Technology
Par Nicolas Bordier (Consultant numérique responsable @OCTO Technology) et Alaric Rougnon-Glasson (Sustainable Tech Consultant @OCTO Technology)
Sur un exemple très concret d’audit d’éco-conception de l’outil de bilan carbone C’Bilan développé par ICDC (Caisse des dépôts et consignations) nous allons expliquer en quoi l’ACV (analyse de cycle de vie) a été déterminante pour identifier les pistes d’actions pour réduire jusqu'à 82% de l’empreinte environnementale du service.
Vidéo Youtube : https://www.youtube.com/watch?v=7R8oL2P_DkU
Compte-rendu :
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Laurent Speyser
(Conférence dessinée)
Vous êtes certainement à l’origine, ou impliqué, dans un changement au sein de votre organisation. Et peut être que cela ne se passe pas aussi bien qu’attendu…
Depuis plusieurs années, je fais régulièrement le constat de l’échec de l’adoption de l’Agilité, et plus globalement de grands changements, dans les organisations. Je vais tenter de vous expliquer pourquoi ils suscitent peu d'adhésion, peu d’engagement, et ils ne tiennent pas dans le temps.
Heureusement, il existe un autre chemin. Pour l'emprunter il s'agira de cultiver l'invitation, l'intelligence collective , la mécanique des jeux, les rites de passages, .... afin que l'agilité prenne racine.
Vous repartirez de cette conférence en ayant pris du recul sur le changement tel qu‘il est généralement opéré aujourd’hui, et en ayant découvert (ou redécouvert) le seul guide valable à suivre, à mon sens, pour un changement authentique, durable, et respectueux des individus! Et en bonus, 2 ou 3 trucs pratiques!
4. PLAN
Qui suis-je ?
C’est quoi une fonction pure ?
Transparence référentielle
Immutabilité
Les fonctions d’ordre supérieur
Kotlin et la programmation fonctionnelle
Pourquoi Arrow-KT ?
C’est quoi une monade ?
Option
Either
Validated
Monoid
Folder une liste
Live Coding/Demo
Conclusion
5. Qui suis-je ?
Riadh MNASRI
Tech lead / Dev senior passionné
Adepte des pratiques crafts
Je m’intéresse au clean code, programmation fonctionnelle, …
J’aime apprendre et partager mes connaissances
Me contacter sur Linkedin/Twitter (@riadhmnasri)
6. C’est quoi une fonction pure ?
Retourne toujours le même résultat pour les mêmes
arguments
Doit retourner toujours un résultat
Ne fait pas d’effet de bord (Faire un changement en
dehors de la fonction)
7. Avantages des fonctions pures
Facile à tester
Facile à comprendre (pas de dépendance cachée ni effet de
bord)
Moins de risque de bugs
9. Immutabilité
Un objet est immutable si on ne peut plus changer son
état une fois déclaré
Thread safe/Parallélisme
Pas d’effets de bords cachés
10. Les fonctions d’ordre supérieur
Est traitée par le compilateur comme n’importe quelle
variable
On peut la passer comme argument, la retourner par une
fonction et l’assigner à une variable
11. Kotlin et la programmation
fonctionnelle
Immutabilité (val, séparation des collections mutables/lecture, …)
Les fonctions sont d’ordre supérieur
Les classes ‘sealed’
Pattern Matching (expressions when)
Fonctions d’extensions
…
13. Pourquoi Arrow-KT ?
Kotlin fournit les outils pour faire la programmation
fonctionnelle
Kotlin n’est pas un langage fonctionnel pur
Arrow.Kt: Librairie fournit des interfaces et des
abstractions de la programmation fonctionnelle.
Implémente les types de données (Either, …) Les types de
classes (Monades, …)
14. C’est quoi une Monade ?
Functor: un type qui dé
fi
nit comment transformer son
contenu (dé
fi
nit une fonction map() )
Monade: est un functor qui dé
fi
nit une fonction
fl
atMap
18. Monad Comprehension
Ecrire du code dans un style séquentiel, un enchainement
d’actions imbriqués
Un style linéaire facile à lire
Similaire aux coroutines/async-wait
19. Une Monoide 1/2
Notion mathématique: algèbre générale
C’est une structure algébrique
Un ensemble muni d’une loi de composition interne
associative
Dé
fi
nit un élément neutre
21. Une Monoide - Folder une Liste
Permettre de faire des opérations sur une liste
Une fonction pour combiner les éléments de la liste avec
une valeur initiale
24. Conclusion
Kotlin fournit tout ce qu’il faut pour faire la
programmation fonctionnelle.
Arrow-KT se base sur la puissance de Kotlin pour fournir
des abstractions/implémentations qui facilite la
programmation fonctionnelle.
25. References
Functional Programming in Kotlin - Marco Vermeulun, Runar Bjarnason and Paul Chiusano
Functional Kotlin - By Mario Arias and Rivu Chakaborty
https:/
/arrow-kt.io/docs/quickstart/
https:/
/wehightech.github.io/
https:/
/adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
https:/
/www.kodeco.com/7059961-functional-programming-with-kotlin-and-arrow-more-on-
typeclasses