Affichage des articles dont le libellé est Langage fonctionnel. Afficher tous les articles
Affichage des articles dont le libellé est Langage fonctionnel. Afficher tous les articles

samedi 13 mars 2010

Petit amusement programmatique avec Google Collections (1)

Google Collections est une bibliothèque fort sympathique et bien utile. Ce billet de Benjamin Wintenberg et celui-ci sur le Jayway Team Blog en présente plus en détail que le mien ce qu'offre cette nouvelle bibliothèque de Google .

Mon objectif est plus ici de m'amuser un peu avec Google Collections sur un petit cas concret. En l'occurrence ici le problème 1 du Projet Euler.
Il s'agit ici de déterminer la somme de tous les entiers naturels strictement inférieurs à 1000 qui sont multiples de 3 ou de 5.

La classe principale qui implémente une solution possible avec utilisation de l'API Google Collections :


La classe de tests (JUnit4) associée :


Regardons tout cela d'un peu plus près. La partie vraiment intéressante est la méthode solve.

Cette méthode comme son nom l'indique résout notre problème.
On crée d'abord une liste des nombres entiers de 0 à 999. Le "Lists.newArrayList();" vient de Google Collections. C'est plutôt explicite, la méthode statique newArrayList me retourne une instance de ArrayList (ici une ArrayList) que l'on se contente ensuite d'initialiser avec les nombres de 0 à 999.
Puis on crée une nouvelle liste à partir de la première liste. On utilise toujours Lists.newArrayList mais cette fois-ci avec en paramètre un Iterable. Ce paramètre Iterable correspondra concrètement à notre liste précédente filtrée pour ne garder que les multiples de 3 ou de 5. Pour se faire on utilise la méthode statique filter de la classe Iterables disponible dans Google Collection. Cette méthode filter prend en paramètre la liste à filtrer et un objet implémentant l'interface Predicat matérialisée ici par l'instanciation d'une classe anonyme implémentant une méthode apply. Cette méthode apply doit retourner un booléen et sera appliquée sur chaque élément de la liste passée en paramètre de la méthode filter : tous les éléments pour lesquels la méthode apply retournera false seront filtrés. Une fois que l'on a la liste filtrée, c'est fini. Il n'y a plus qu'à faire la somme des éléments pour trouver le résultat.

Voilà, rien de bien extraordinaire, c'est certain. L'intérêt est ici de voir un petit exemple d'utilisation de l'API Google Collections (qui - je vous rassure - propose bien d'autres choses) et les possibilités de pouvoir avoir une approche fonctionnelle en Java. D'ailleurs puisque l'on parle d'approche fonctionnelle en Java, un billet sur le blog de Xebia à propos de la sortie de Google Collections en finale 1.0 renvoyait vers 2 projets qui concernent une approche fonctionnelle en Java : Lambdaj et Functional Java. Avis aux amateurs !

dimanche 17 janvier 2010

Présentation du langage Clojure (5)

Les vidéos 8, 9 et 10 de cette introduction à Clojure :

- la 8ème vidéo


- la 9ème vidéo


- la 10ème vidéo

Présentation du langage Clojure (4)

Voici respectivement les vidéos 6 et 7 :

- la 6ème


- la 7ème

dimanche 10 janvier 2010

Présentation du langage Clojure (3)

Les vidéos 4 et 5 de la série d'introduction à Clojure.

- la 4ème vidéo


- la 5ème vidéo

Présentation du langage Clojure (2)

Suite du billet précédent sur Clojure, avec les vidéos 2 et 3 de la série

- la deuxième vidéo


- la troisième vidéo

Présentation du langage Clojure (1)

Clojure est un dialecte de Lisp pour la JVM créé par Rich Hickey. En dehors d'être un langage fonctionnel de la famille de Lisp, il propose plusieurs caractéristiques intéressantes notamment par rapport à la gestion du "multithreading".
Le mieux est d'aller voir le site officiel - http://clojure.org/ - sur lequel vous trouverez toutes les informations pertinentes.

Si après la première de 10 vidéos de présentation sur clojure. Je trouve cette série vraiment bien faite : elle présente dans des vidéos relativement courte (toujours d'une durée au maximum de l'ordre des 10 minutes) l'essentiel des caractéristiques de Clojure.

J'ai inclus la première vidéo ci-après et je vais mettre sur mon blog les 9 autres. L'URL de cette vidéo sur YouTube est http://www.youtube.com/watch?v=Aoeav_T1ARU.
Vous pouvez toutes les retrouver directement (ainsi que d'autres sur d'autres thématiques informatiques comme JavaScript) sur la chaîne de briantwill : http://www.youtube.com/user/briantwill.

dimanche 20 janvier 2008

Un coup d'oeil sur le langage Scala

Si cela fait quelques temps que vous entendez parler régulièrement du langage Scala et que vous souhaitez quelques points d'entrée pour un savoir plus, voici quelques pistes.

Tout d'abord une courte définition de Scala reprise de Wikipédia :

Scala est un langage de programmation multi-paradigme conçu à l'EPFL pour exprimer les modèles de programmation courants dans une forme concise et élégante. Il intègre les paradigmes de programmation orientée objet et de programmation fonctionnelle, avec un typage statique.

Sur le site officiel du langage Scala (http://www.scala-lang.org/) où peuvent être trouvés bien sûr le langage lui-même mais également différents documents pour démarrer notamment un article qui fait une présentation synthétique du langage (certains passages sont assez techniques), un tutorial, un petit article d'introduction "par l'exemple" et une spécification du langage.

Sur YouTube vous pouvez trouver une présentation de Scala faite par Martin Odersky lui-même dans la série des "Google Tech Talks"

J'ai inséré la vidéo juste après dans ce billet. Cependant cette dernière dure plus d'une heure. Cela peut-être sympa de la récupérer avec Miro et de la regarder tranquillement. Cela reprend pas mal de points évoqués dans la "présentation synthétique du langage" que l'on trouve sur le site officiel : certains passages sont assez techniques et difficiles à suivre quand on n'a pas de solides bases en théorie des langages.



Scala est en ce moment évoqué régulièrement dans les épisodes du "JavaPosse", et dans l'épisode #158, les membres du JavaPosse renvoie vers un blog dédié à Scala et notamment à un billet présentant des résolutions de puzzles mathématiques dans l'esprit Scala.
L'épisode #155 est consacré à une interview de Martin Odersky.

Enfin sur Software Engineering Radio, il est également possible de trouver une interview de Martin Odersky sous forme de podcast (épisode 62).