Comme beaucoup d’entre vous ne le savent sans doute pas, j’ai depuis l’adolescence un genre de maladie mentale pas forcément néfaste dont les symptômes sont un appétit immodéré pour les livres, en particulier de Science Fiction, de fantasy et surtout d’informatique (si ça, ca fait pas cliché geek, je sais pas ce qui le fait :D). Je dévore, des fois j’en laisse quand j’en trouve un autre juste à côté qui m’a l’air encore plus appétissant, parfois j’en achète 5 d’un coup et puis certains restent sur ma table de chevet pendant des mois parce que de toutes façons j’en ai trouvé entre temps de nouveaux à dévorer…
J’en ai récemment lu deux sur le thème de « auto-formez vous rapidement à tel bidule », sauf qu’au lieux des sempiternels « Apprenez PHP en 21 jours ! » ou « Javascript pour les nuls », ces deux livres proposent un niveau de zoom un peu plus haut, et nous proposent une introduction à 7 langages / 7 bases de données dans l’air du temps, chaque chapitre étant dédié à un langage ou à une base de données en particulier. Alors comme bien souvent – et c’est bien dommage pour les francophonophiles – c’est en anglais, et c’est publié chez The Pragmatic Programmers, un éditeur qui n’a pas forcément la force de frappe d’O’Reilly, mais qui se distingue bien souvent par le traitement de sujets transversaux et qui le fait de manière très didactique.
Les livres s’appellent donc respectivement :
- 7 languages in 7 weeks
- 7 databases in 7 weeks
Le premier est intéressant parce qu’il parle de langages dont on a souvent entendu parlé mais qu’on a pas forcément eu l’occasion de pratiquer. Il va donc proposer un tour d’horizon de :
- Ruby – on ne le présente plus, l’un des trois gros langages côté serveur à typage dynamique avec Python et Perl, sur lequel tourne le fameux framework web Rails
- Io – un langage orienté purement objet ( on fera la distinction avec Java qui est un langage orienté classes), toujours à typage dynamique, avec une syntaxe simplifiée
- Prolog – un vieux de la vieille, précurseur des langages de programmation dits « logiques », qui a donné pas mal de maux de têtes à beaucoup d’étudiants
- Scala – un langage hybride – objet et fonctionnel – qui tourne sur une JVM et qui est proche de Java dans sa syntaxe
- Erlang – un de mes préférés du livre pour sa capacité à vite donné des noeuds au cerveau, dont l’atout principal est la robustesse de la parallélisation des tâches
- Clojure – Une implémentation de Lisp sur la JVM
- Haskell – Un langage de programmation fonctionnelle pure dont j’ai entendu parlé pour la première fois il y a quelques années lorsque la première implémentation de Perl6, Pugs, a été faite dans ce langage.
Le second nous fait découvrir 7 bases de données différentes. Son atout principal est qu’a l’heure ou SQL perd de sa suprématie, notamment à cause de son inefficacité à gérer correctement des arbres, il permet justement de lui trouver des alternatives crédibles. Il aborde :
- PostgreSQL – une base de données qui a perdu la guerre de religion initiale face à MySQL et qui pourtant a de nombreux avantages
- Riak – une base de données NoSQL qui se requète via des requêtes REST. Pour ce que j’en sais elle n’a pas eu beaucoup de succès jusqu’ici et a été phagocytée par CouchDB
- HBase – un engin de guerre orienté colonnes comme le SQL, qui se veut extrêmement robuste et fonctionne à merveilles avec des gros volumes – Facebook l’utilise par exemple extensivement pour son système de messagerie
- MongoDB – Ma première DB NoSQL, ses structures de données sont du JSON, se veut très proche de Javascript (les procédures stockées sont du JS par exemple)
- CouchDB – Une autre DB NoSQL, requêtable via REST, qui ressemble de prime abord à MongoDB mais qui est bien davantage structurée
- Neo4J – Une base de données orientée Graphes. J’ai trouvé l’approche très intéressante, même si je n’ai pas encore eu l’occasion de lui trouver le projet associé, elle fait parti des machins exotiques que j’essaierais bien dès que j’en aurai l’occasion
- Redis – Un genre de Memcache amélioré : son but est de faire tenir des structures complexes en mémoire et de pouvoir faire des opérations complexes dessus. Tout comme Neo4J, je m’y essaierai dès que l’occasion s’en présentera.
En résumé, deux livres qui sont intéressants pour tout programmeur qui aime bien savoir ce qui se passe autour de son monde et qui ne reste pas cloîtré dans son propre univers (Qui a dit que je ne faisais que du Perl ?)