Programmation fonctionnelle en Objective-C

Article publié par le 17 décembre 2012.

Catégorie(s) : Mobilité

 

Aucun commentaire »

underscoremDans un article précédent, nous avons entrevu les possibilités offertes par l’utilisation des Blocks en Objective-C. Leur similarité avec les expressions lambda de la programmation fonctionnelle que vous pouvez retrouver dans Java 8, Scala ou bien encore JavaScript est évidente. Cependant, nous ne sommes pas habitué avec Objective-C à penser ou bien écrire dans un style fonctionnel. Cependant, il existe des libraries qui permettent de faciliter l’usage de l’approche fonctionnelle. Plusieurs projets ont même fleuri depuis la mise à disposition des blocks avec la sortie d’iOS4.
En JavaScript, la librairie underscore.js est très appréciée par les développeurs web pour sa simplicité et son efficacité. Cette librairie a d’ailleurs tellement de succès qu’elle a traversé la frontière des langages pour être implémentée en Objective-C! Il en existe à ce jour au moins deux implémentations, toutes les deux sous license MIT.

Le projet Underscore.m semble fournir un support plus abouti des fonctionnalités proposées par la librairie JavaScript originale, et surtout propose un site documentaire complet qui permet de démarrer rapidement et de trouver un grand nombre d’exemples.

Lire la suite de cet article »

Retour sur les bancs de l’école avec Coursera

Article publié par le 11 décembre 2012.

Catégorie(s) : Java / JEE

 

Un commentaire »

Nous vous en parlions il y a quelques semaines dans notre revue de presse. Martin Odersky propose gratuitement, sur Coursera, une introduction à la programmation fonctionnelle à l’aide de Scala, le langage dont il est le père. Une dizaine de Xebians s’est inscrite et une folle course de huit semaines s’en est suivie. La session est désormais terminée, il est grand temps d’en faire le bilan.

Notez que ce bilan ne contient pas les solutions aux différents exercices. En effet, comme chaque étudiant, nous avons accepté le code d’honneur de Coursera qui nous interdit de les dévoiler. Ce type d’initiative est remarquable en soi, et c’est par respect pour le travail des participants, auteurs comme étudiants, que nous nous y conformons.

Lire la suite de cet article »

Mais pourquoi n’y a-t-il pas de multidispatch en Java ?

Article publié par le 19 septembre 2012.

Catégorie(s) : Java / JEE

 

11 commentaires »

« Voilà une conception dont je peux être fier ! Elle n’est pas forcément extraordinaire, mais elle va simplifier drastiquement le code qui a été écrit. Bon, mettons la en pratique… Mais !… Que se passe-t-il ?… Noooon ! Pas de multidispatch, pas de multiméthode. Je vais devoir mettre du class cast et du instanceof partout. Java, je te hais ! »

Dans cet article, je vous propose de découvrir ce qu’il s’est passé.

Lire la suite de cet article »

Revue de Presse Xebia

Article publié par le 22 mai 2012.

Catégorie(s) : Revue de presse

 

2 commentaires »

Revue de Presse Xebia
La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia.

Evènements de notre communauté en France et à l’étranger

Lire la suite de cet article »

Les types monadiques de Scala – Le type Either

Article publié par le 5 avril 2012.

Catégorie(s) : Java / JEE

 

Aucun commentaire »

Dans un premier article, nous avons introduit le type monadique Option. Nous avons vu que ce type permet de traduire l’absence de valeur ou de résultat et comment l’exploiter efficacement à l’aide des méthodes map et flatMap. Si vous n’avez pas eu l’occasion de le lire, je vous encourage fortement à le faire avant de commencer la lecture de ce qui suit.

Dans ce nouvel article, je vous propose d’aborder le type monadique Either, particulièrement utile pour la gestion des erreurs et qui peut remplacer de manière très avantageuse les mécanismes de checked exceptions. Nous approfondirons à cette occasion notre compréhension des monades et nous verrons comment combiner deux types de monades différents.

Lire la suite de cet article »

Les types monadiques de Scala – Le type Option

Article publié par le 19 mars 2012.

Catégorie(s) : Java / JEE

 

2 commentaires »

Cet article est le premier d’une série dans laquelle nous étudierons les types dit monadiques fournis par Scala et couramment utilisés lors de développements d’applications. Un type monadique est un type de donnée répondant à certaines lois et généralement caractérisé dans Scala par la présence des méthodes map et flatMap, que nous aborderons ici même.

Cet article d’introduction aux monades nous montrera comment l’utilisation de ces types permettent de produire du code plus sûr et évolutif. Il sera suivi par une série d’articles ayant pour objectif de démystifier ce concept qui provient du monde de la programmation fonctionnelle (et plus particulièrement de Haskell) et débarque depuis peu dans le monde Java (grâce notamment au langage Scala ou à des frameworks tels que FunctionalJava). Ce sera aussi l’occasion de comprendre pourquoi l’expression « flatMap that shit ! » est utilisée avec autant de ferveur.

Lire la suite de cet article »

Fonctions d’ordre supérieur en Scala

Article publié par le 2 mars 2012.

Catégorie(s) : Java / JEE

 

2 commentaires »

Dans cet article, je vous propose de vous plonger dans l’une des caractéristiques les plus intéressantes de la programmation fonctionnelle et de Scala en particulier : les fonctions d’ordre supérieur !

Qu’est ce qu’une fonction d’ordre supérieur ? C’est une fonction qui prend en argument une ou plusieurs fonctions et/ou qui retourne une fonction. Un exemple courant de fonction d’ordre supérieur en Scala est la fonction map permettant de transformer le contenu d’une liste par exemple :

scala> List(1, 2, 3).map { x => x * 2 }
res0: List[Int] = List(2, 4, 6)

La fonction d’ordre supérieur map prend en argument une fonction f: A => BA est le type de départ (ici Int) et B le type d’arrivée (ici encore Int). Nous pouvons donc à l’aide de map et d’une fonction transformer une List[A] en List[B]. Les fonctions en Scala sont des first-class-citizen ce qui signifie qu’elles sont des objets (dans notre cas, {x => x * 2} est une instance de Function1) et donc passer une fonction en paramètre revient à passer un objet de type FunctionN.

Lire la suite de cet article »

Programmation fonctionnelle – Solution des exercices du XKE de novembre

Article publié par le 26 décembre 2011.

Catégorie(s) : Java / JEE

 

4 commentaires »

Lors du XKE du mois de novembre, j’ai présenté une introduction à la programmation fonctionnelle. Cette présentation fût suivie d’une partie Hands On où les participants ont pu s’essayer (parfois dans la douleur, mais toujours dans la bonne humeur) à ce paradigme avec le langage Java. Je vous propose dans cet article un ensemble de solutions sur les exercices présentés. De quoi occuper vos longues soirées d’hiver.

Lire la suite de cet article »

Tout ce que vous avez toujours voulu savoir sur la programmation fonctionnelle par François Sarradin

Article publié par le 15 décembre 2011.

Catégorie(s) : Java / JEE

 

2 commentaires »

François Sarradin a réalisé une introduction à la programmation fonctionnelle durant la session xke du mois de novembre. La présentation a précédé un Hands’on (une session qui permet aux participants de littéralement mettre les mains dedans).

Vous pouvez donc visionner cette introduction dans la vidéo ci-dessous. Le Hands’on est disponible sous Github : https://github.com/fsarradin/xke-fp/tree/xke-fp_2011-11

Tout ce que vous avez toujours voulu savoir sur la programmation fonctionnelle par François Sarradin



Tous les podcasts Xebia France :

  • Subscribe with iTunes
  • Xebia France Podcast Feed

Devoxx – Cracking clojure

Article publié par et le 17 novembre 2011.

Catégorie(s) : Java / JEE

 

4 commentaires »

Clojure est un dialecte de Lisp fonctionnant sur la JVM. Dans cette présentation, Alex Miller s’adresse aux développeurs sans expérience préalable du langage. Son but est d’en présenter les concepts de base et de montrer la puissance et l’expressivité qui lui ont fait choisir Clojure comme langage principal chez son employeur actuel.

Lire la suite de cet article »