Blog Arolla

TechDays 2012 – partie 3 – F# 3.0 Type Providers with Don Syme

Focus particulier sur la session : Information-Rich Programming with F# 3.0!

Pour cette session, assurée en anglais par Don Syme, créateur du langage F# et toujours en charge de ses évolutions, au centre de recherche Microsoft à Cambridge, accrochez vos ceintures, on fait un bond dans le futur !

Aux TechDays, j’ai régulièrement remarqué que les sessions assurées dans les toutes petites salles, pour un public extrêmement restreint, pouvaient se révéler être passionnantes. J’avais assisté il y a quelques années à une démonstration du Cloud Azure alors qu’il s’agissait encore d’un projet de recherche, et désormais il semblerait que les mots “Cloud” et “Azure” doivent être prononcés par les intervenants à chaque session sous peine de se faire expulser du salon.

Je pense que dans le cas présent on se situe sur le même genre de situation. Je suis persuadé que les avancées du F# vont avoir à nouveau des répercutions dans les prochaines années sur les langages plus “mainstream” de Microsoft, C# et VB.NET.

L’introduction de la session a le mérite d’être clair, F# est là pour répondre à des changements profonds de notre environnement ! Pour Don Syme, nous avons dans les années passées assisté à un changement de paradigme : nous sommes passé de l’ère de l’industrie à l’ère de l’information. Ce changement peut désormais se sentir jusque dans les langages informatiques, et les nouveaux formats de données ouverts. Comme exemple, Don Syme nous montre le site www.programmableweb.com, qui recense les API ouvertes disponibles sur internet.

L’augmentation du volume d’informations disponibles s’est accompagné de l’utilisation de plus en plus fréquente des langages de programmation dynamique, qui permettent facilement de s’adapter et de représenter très facilement de nombreux formats de données.

Dans cette optique, F# 3.0 est désormais doté de Type Providers, qui permettent de voir les sources de données comme des bibliothèques. Pour mettre cette évolution dans son contexte, Don Syme nous propose un petit historique des évolutions du F#. Le tableau suivant montre le problématiques particulières pour lesquelles F# a été conçu.

Data
Information
Services
Code
Analysis
Algorithms
Parallel programming
Presentation
Publication
Experience
F# 3.0 F# 1.0, 2.0 C#, F#, Pit, WebSharper, JavaScript…

S’en suivent quelques slides de témoignages d’utilisation des versions précédentes de F#, tout à fait de saison en ce froid hivernal : une application de load balancing d’énergie (par Simon Cousins) et un exemple dans le monde de la finance (par Phil Trelford).

Enfin, on attaque le sujet des Types Providers : dans une console interactive, Don Syme référence les données de la banque mondiale (http://data.worldbank.org/data-catalog). Les types de données nécessaires sont générés à la volée, et l’IntelliSense est disponible, au fur et à mesure de l’exploration des données. Tout ceci est possible grâce à l’analyse automatique à la fois des données et des méta-données exposées par les services.

Un mash-up est rapidement mis en place, pour récupérer les données concernant la dette gouvernementale de la Grèce (au hasard). Je ne vois pas à ce jour comment on pourrait récupérer ces données avec un code à la fois aussi simple et aussi expressif… En quelques lignes, on génère un graphique d’évolution du montant de la dette, puis un nouveau graphique avec cette fois l’évolution de la dette souveraine de plusieurs pays européens !

Autre exemple : pour vérifier les propos tenus par un politicien tchèque, on effectue (à nouveau en quelques lignes) des moyennes sur des données mondiales. Évidemment le politicien avait tort…

Pour référencer des données depuis un service exposant des données OData, il suffit de le référencer :

type Netflix = ODataService<“http://odata.netflix.com”>

Le type défini est alors vu comme s’il était le point d’entrée d’une bibliothèque de types, et permet de développer avec des objets fortement typés et le support de l’IntelliSense.

Suivent encore d’autres mash-ups, comme la corrélation de prévisions météorologiques avec les les données réelles collectées pour visualiser sur une carte les écarts entre prévisions et réalité.

La présentation se termine sur sur une récapitulatif des types providers existants à ce jour directement dans F# 3.0, mais aussi sur le modèle extensible et ouvert des Type Providers, et la possibilité de développer ses propres outils, ou de puiser dans ceux déjà réalisés par la communauté, notamment sur GitHub.

Pour résumer, les Types Providers permettent de récupérer très simplement des données de manière fortement typée, sans génération explicite de code, et avec un modèle extensible et ouvert, à partir de toutes sortes de sources :

  • des données ouvertes sur le web (OData),
  • les data markets existants (Azure par exemple),
  • WMI et Active Directory,
  • des feuilles de calculs (Excel),
  • des web services,
  • des outils CRM,
  • les réseaux sociaux,
  • des données présentes en bases SQL,
  • des données scientifiques…

Et en attendant que le webcast des TechDays soit disponible, la présentation faite par Don Syme sur le même sujet à Londres en novembre dernier est en ligne à l’adresse suivante :

http://skillsmatter.com/podcast/scala/fsharp3

Vous pouvez également retrouver une interview de Don Syme sur le sujet :

http://www.simple-talk.com/opinion/geek-of-the-week/geek-of-the-week-don-syme/

@pirrmann

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *