Coding challenge !

Je suis tombé hier sur un vieux challenge proposé par Cédric Beust sur son blog :
http://beust.com/weblog/2008/06/27/

Comme je suis en train d'apprendre Haskell, et que ce genre de challenge algorithmique semble particulièrement bien adapté à ce langage, je vous livre ici ma solution.

Quelle serait la vôtre ? Tous les langages sont acceptés.
(Si le code est trop long pour tenir dans un commentaire, ou si ce n'est pas pratique pour des raisons de formatage, postez-le sous la forme d'un Gist par exemple)

Lire la suite...

Petit guide de programmation illustrée

Ce très court billet pour vous signaler l'existence de quelques sites de programmation à la fois très sérieux et fort sympathiquement illustrés.

Haskell

Un sur Haskell d'abord, mon langage du moment. Richement illustré sous Paint, on admirera la précision du tracé et l'harmonie des couleurs.
Learn you a Haskell for great good : http://learnyouahaskell.com/

Lisp

Un sur Lisp ensuite, comme quoi l'obsession parenthésique n'oblitère pas irrémédiablement le sens artistique :
Lisperati : http://lisperati.com/

A la réflexion, oubliez ce que j'ai dit sur Lisp et le sens artistique. Visez un peu, l'auteur du site a réalisé une vidéo pour promouvoir son livre, et quelque chose me dit qu'il l'a fait lui-même après consommation de champignons de contrebande :

Ruby

Pour finir, un site sur Ruby, parce qu'il n'y a pas que des langages utiles dans la vie (troll spotted). Et puis voyez, le temps d'exécution de ses programmes a laissé à l'auteur tout le champ nécessaire pour apprendre à dessiner correctement, comme quoi à quelque chose malheur est bon.
Why's (Poignant) Guide to Ruby : http://mislav.uniqpath.com/poignant-guide/book/


Allez je vous laisse, j'ai de la lecture !

MkTree : créez facilement une hiérarchie de répertoires

Je vous livre (en pièce jointe de ce billet) un petit script shell que j'ai développé suite à un besoin récurrent : créer une hiérarchie de répertoires.
Le besoin typique est de créer une structure de projet Java (à la Maven), mais le script peut naturellement se révéler utile dans nombre de situations.

Lire la suite...

Perl : rétrospective et futur par Larry Wall

Dans une interview accordée à ComputerWorld, Larry Wall partage ses réflexions sur Perl, dont il est l'inventeur. Outre les origines du langage, nous y apprenons quelques anecdotes intéressantes ou surprenantes : par exemple, Perl a été utilisé pour écrire le pilote d'accès au système de fichiers de Clearcase (tiens donc, ça explique bien des choses...).

Quant au futur du langage, il s'annonce mouvementé. Après Python 3, c'est au tour de Perl 6 de marquer la rupture : la rétrocompatibilité ne sera pas assurée car le coeur de l'interpréteur a été totalement réécrit, et le langage lui-même semble voué à une forte mutabilité ("embrace and extend, please").
A noter aussi le mea culpa sur la syntaxe des expressions rationnelles : "We took it and made it worse"...

Python 3.0 enfin disponible

Au début de l'année, je vous avais déjà parlé de Python 3.0, qui s'annonçait comme une version de rupture, un nouveau départ permettant de faire un peu de ménage dans le langage tout en ajoutant de nouvelles fonctionnalités.

Bonne nouvelle, Python 3.0 est maintenant officiellement disponible en version finale !
Je vous laisse lire la documentation et découvrir les changements apportés par cette version.

PHP : Fin du support de PHP4

Après huit ans de bons et loyaux services, PHP4 prend sa retraite. Sorti le 22 mai 2000, il a apporté en son temps de nombreuses nouveautés et une sécurité améliorée. Son support officiel est désormais arrêté.

Les derniers irréductibles qui n'auraient pas encore migré sur PHP5 sont donc fortement invités à le faire, et pourront à cette occasion découvrir son tout nouveau modèle objet et profiter de ses fonctionnalités avancées comme la gestion native du XML, des webservices, et l'intégration de la librairie SQLite.

Quant à ceux qui se sentent l'âme aventurière, ils pourront toujours se lancer dans l'aventure PHP6 en l'installant en tant que module Apache, ou en parallèle de PHP5.

C++ : Histoire d'un langage à succès

ComputerWorld a eu la chance de réaliser une longue interview de Bjarne Stroustrup, créateur du langage C++.
Celui-ci revient sur les raisons qui l'ont poussé à créer un nouveau langage de programmation, et présente les justifications techniques ou philosophiques ayant conduit à certaines des fonctionnalités les plus controversées du langage.

XML : Rétrospective et futur

IBM publie un article intéressant (mais non technique) retraçant les origines de XML, son utilisation actuelle, et son futur probable.

Conçu à l'origine pour la publication de documents (rapports, documents techniques, pages web...), XML a pourtant été peu employé dans ce but, notamment en raison de la complexité et de la mauvaise qualité des outils permettant de le manipuler. Actuellement, il est surtout utilisé dans le domaine du développement logiciel, pour les fichiers de configuration, les exports de données... Pourtant, il opère un retour rapide sur son domaine d'application premier, notamment grâce aux dernières suites bureautiques (OpenOffice, et dans une moindre mesure MS Office) et aux nouveaux protocoles de publication comme APP (Atom Publishing Protocol).

Python 3.0 : la rupture

Les développeurs de Python (menés par Guido Van Rossum, à l'origine du projet) ont récemment annoncé que la version 3.0 de ce puissant langage de script ne serait pas rétro-compatible avec la branche 2.x. La faute à une réécriture complète du moteur, le but recherché étant de débarrasser le langage de tous les "hacks" et bugs accumulés au fil des ans, afin de repartir sur une base saine. Tous les programmes et modules d'extension devront être profondément modifiés pour fonctionner sur cette nouvelle version.

Une telle rupture est suffisamment rare dans le petit monde des langages de programmation pour provoquer surprise et interrogation parmi la communauté des utilisateurs, car l'habitude est plutôt à un conservatisme forcené - on se souvient des contorsions auxquelles Sun doit se livrer pour intégrer certaines nouvelles fonctionnalités dans Java (les "génériques" pour Java5, les "closures" pour Java7...) sans briser la rétro-compatibilité...

Certaines sociétés hésiteront donc à franchir le pas et préféreront rester sur la branche 2.x actuelle, dont le développement continue. Par exemple, Google estime qu'environ 15% de son code repose sur Python : on imagine aisément l'ampleur de la migration...