Pages

lundi 1 avril 2013

Programmation objet et programmation fonctionnelle par Martin Odersky

Dans la deuxième Keynote DevoxxFr 2013 nous avons eu le droit à un grand monsieur de l’informatique, Martin Odersky. Ses spécialités sont l’analyse de code et les langages de programmation Il est le concepteur du langage Scala et des generics en Java. Sa présentation était destinée à nous présenter la programmation fonctionnelle comparée à la programmation objet (Objetcs and functions, conflict without a cause)



La programmation objet est basée sur plusieurs concepts : les objets, l’abstraction, l’encapsulation de données, le polymorphisme. Mais si on réfléchit à ce que nous a apporté la programmation objet, elle est idéale pour définir des types de données abstraits dont les implémentations réelles sont cachées. On conçoit des applications basées sur des API limitées mais avec un nombre illimités d’implémentations

La programmation objet est une évolution de la programmation impérative. La programmation impérative s'appuie sur le modèle des machines à états avec une mémoire centrale et des instructions qui modifient son état grâce à des affectations successives. La programmation fonctionnelle n'utilise pas de machine à états pour décrire un programme, mais un emboîtement de fonctions que l'on peut voir comme des « boîtes noires » que l'on peut imbriquer les unes dans les autres. Chaque boîte possédant plusieurs paramètres en entrée mais une seule sortie.

Pourquoi la programmation fonctionnelle a t’elle le vent en poupe de nos jours? Tout simplement parce qu’elle bénéficie de deux catalyseurs : le cloud et le multi coeur. Comme la programmation fonctionnelle est sans état elle est beaucoup plus adaptée à la programmation parallèle et au scaling horizontal. Mais ceci ne veut pas dire que la programmation objet ne convient plus. Il faut simplement réduire le nombre d’état (faire du stateless et non plus de state full) et limiter les locks pour pouvoir répondre aux évolutions des machines et des réseaux.

En conclusion Martin Oderski, pense que les deux modèles peuvent cohabités : faire de l’objet pour la structuration des données et du fonctionnel pour le traitement. Scala a été pensé en ce sens pour pouvoir joindre les deux mondes. Au niveau du langage Java c’est également possible même si le résultat est un code un peu plus verbeux. Les lambdas expressions qui arrivent avec la version 8 en fin d’année permettront de résoudre ces problèmes et de simplifier la structure du code.

Aucun commentaire:

Enregistrer un commentaire

Remarque : Seul un membre de ce blog est autorisé à enregistrer un commentaire.