Archives pour janvier, 2012

Le seul mauvais choix est de ne pas en faire

Ils ont choisi Subversion. Et pourtant, ils connaissaient git. Mais ils ont quand même choisi Subversion. Personnellement, je ne connais pas SVN, mais je pratique git depuis longtemps. Je ne chercherai donc pas à alimenter la guerre stérile qui anime les défenseurs de chaque camp. Ha ! si, quand même, juste une chose : lors d’une coupure de courant, j’ai pu continuer de développer sur mon portable, organiser mes révisions, bref, travailler, quand tous les autres regrettaient que la machine à café ne soit pas sur réseau ondulé en attendant que l’électricité revienne. Les joies du mode déconnecté.

Je commence à bien connaître git ; une seule raison pourrait faire que je ne chercherai pas à l’utiliser d’emblée comme gestionnaire de version sur un projet : le degré d’intégration (de non intégration en fait) à la plateforme de développement. git étant totalement orienté « mode console », ils ont eu raison de choisir SVN pour leur nouveau projet multi-plateforme Windows / MacOS / GNU/Linux.

En ce qui me concerne, git-svn m’a ôté toute velléité d’apprendre à utiliser Subversion, puisque je peux bénéficier localement de toutes les qualités de git en m’interfaçant avec le dépôt central SVN. Par contre, j’ai pu observer leur manière d’utiliser Subversion. Et il en est une qui me choque.

"J'ai comme un goût dans la bouche après ma synchro partielle."

Il y a trop de doigts sur une main pour compter le nombre de participants à mon nouveau projet. Du coup, ambiance plateau de développement, agilité et compagnie. Logique. SVN a cette particularité de permettre de se réaligner partiellement sur la version de référence, ou ce qu’on veut en fait. Difficile d’ailleurs de savoir si c’est une fonctionnalité ou un pis-aller. Personnellement, j’imagine que se réaligner était tellement coûteux (est toujours, en fait), et la gestion des branches suffisamment calamiteuses, pour que les mecs de chez Apache se soient dit : « hé ! mais on devrait avoir le droit de ne récupérer que la nouvelle version des fichiers dont les défauts nous empêchent d’avancer ! » D’où, la synchronisation partielle.

Quand je vois la difficulté de mettre en place, tout comme le gain de temps énorme induit par une gestion correcte des dépendances dans une chaîne de compilation, je suis perplexe face à cette idée de synchronisation partielle. Cela revient quand même à dire que le développeur sait exactement ce dont il a besoin en terme de fichier source (et pas de version) pour corriger un problème auquel il est confronté. Moi, ça me scie. Encore, s’il s’agissait d’introduire localement les modifications issues d’un seul commit plutôt que tout ce qui l’a précédé ou ce qui peut le suivre, je dirais « pourquoi pas » (et c’est d’ailleurs sûrement possible avec SVN), si chaque version est un ensemble homogène et cohérent de modifications ayant trait à un unique sujet, etc. ça peut marcher. Mais non, ils vont piocher un fichier au pif (ou presque) et hop ! ils repartent à 300 km/h sur la piste du développement. Le Ministère de la Justice devrait s’employer à déployer cette technique expéditive, ça a l’air de faire des miracles.

De mon côté, je ne m’étonne plus de constater, lorsque je m’aligne, que le dépôt est vérolé. Ça me semble être la conséquence logique de cette idée de synchronisation partielle : on a (peut-être) testé notre modification dans un espace mal déterminé, on ne va pas recommencer sur l’état à jour. On est agiles ou pas ?

 

Tags: , , ,

Fedora – configurer Emacs pour la coloration syntaxique du OCaml

Chose amusante, je n’ai pas réussi à obtenir la coloration syntaxique du OCaml grâce à l’a-priori bien nommé paquetage « ocaml-emacs ». Peut-être n’est-ce tout simplement pas son rôle.

Par contre, le paquetage « emacs-tuareg » y réussi plus ou moins, avec quelques lacunes, mais c’est déjà mieux que rien. Pour que cela fonctionne, ne pas oublier d’ajouter à son .emacs favori :

;;; OCaml

(setq auto-mode-alist
 (append '(("\\.ml[iyl]?$" .  tuareg-mode ))
 auto-mode-alist))

(autoload 'tuareg-mode "tuareg.elc" "Mode for OCaml programs" t)

 

Tags: , ,

Apprentissage du OCaml

Comment apprendre un langage de programmation d’une manière générale ? Lire la documentation, c’est bien, mais rapidement, le besoin se fait sentir de pratiquer. Et pour ça, il faut avoir des sujets futiles mais variés pour créer des mini-programmes permettant de balayer les différents concepts. Pour apprendre Python, je m’étais inscrit à SPOJ, une sorte de concours de programmation permanent mettant à disposition des milliers de sujets et un robot qui évalue la qualité de votre programme-solution en le soumettant à des entrées qui ne vous sont pas fournies. L’intérêt est double : en plus d’apprendre un langage, cela vous pousse à prendre en compte les cas limites, ce que tout bon programmeur à tendance à oublier de prime abord.

Mais voilà, si le premier sujet s’apparente à un classique « Hello World! », le second nécessite l’implémentation d’un crible d’Ératosthène efficace, ce qui n’est pas franchement trivial. Donc, pour l’apprentissage progressif, on repassera.

J’étais tout à mon « Hello World! » en OCaml quand je me suis dit qu’il devait exister des sites dédiés à l’apprentissage d’OCaml. Et j’ai trouvé ça : « 99 problèmes en OCaml » (en anglais). C’est l’adaptation d’un classique du Lisp, une liste de problèmes à la difficulté croissante permettant de se familiariser avec les paradigmes des langages fonctionnels. De plus, on y trouve la correction de certains problèmes, et d’autres sont encore recensées ici.

Je vous encourage à lire le lien du dernier article sur les exceptions et leur inocuité dans 99% des cas, ça résume tout à fait ce que j’en pense.

Tags: