Posted on Mar 31, 2009

Repérages à l’heure d’été

Si le passage à l’heure d’été a un avantage c’est bien de me permettre d’être en route pour le boulot au moment où le soleil se lève. Souvenez vous ce billet (de février 2007… donc encore à l’heure d’hiver… étrange) où je vous parlais d’un lever de soleil entre les tours de la Lorentzkirche.

J’ai fait quelques repérages ce matin entre les arbres pour tenter de trouver un endroit où me poster pour prendre quelques photos ; je ferais un nouveau passage ce soir… car pour le moment je n’ai pas trouvé d’endroit propice. Il va probablement falloir escalader un peu et passer outre quelques propriétés privées…

Posted on Mar 27, 2009

Débuter en fourchelangue

Je vous ai promis une introduction au parler Python, la voici la voila! Avant toute chose, il va vous falloir un petit logiciel, j’utilise PythonWin Editor, outil gratuit que vous trouverez ici. Installez le comme vous le souhaitez puis cliquez sur la petite tête de serpent pour lancez l’éditeur. Ce dernier est d’une simplicité déconcertante… presque autant que le langage lui même.

Comme vous pouvez le voir ici après, il est composé d’une fenêtre principale dans laquelle se trouve une zone d’écriture. Il se peut que vous n’ayez pas toute la rangée d’icônes que j’ai ici, mais du moment que vous avez celles de gauche c’est suffisant pour commencer. Comme vous pouvez le voir ci dessous, l’éditeur interprète directement ce que vous lui racontez: 2 + 2 ça fait 4, il en est sûr alors il le dit ; par contre Bonjour il aime pas trop… sans les guillemets en tout cas!

python1 python1b

Vous en conviendrez, programmer ligne par ligne c’est moche, on va donc passer en mode “scripts” et pour ce faire il suffit d’ouvrir un fichier .py ou de cliquez sur File/New/Python Script. Commencez par écrire une fonction dans la fenêtre de droite comme sur l’image ci après. Les fonctions se déclarent (très) facilement. Un mot clé “def” pour indiquer que c’est une définition, le nom de la fonction, quelques paramètres (ou pas) entre parenthèses “()” et deux points “:” pour terminer. Une fois à la ligne, il suffit “d’indenter” un coup vers la droite pour que l’éditeur comprenne tout de suite que c’est le “corps” de la fonction (ça fonctionne aussi ainsi avec les boucles).

python2 python4

Une fois votre première fonction déclarée, vous pouvez y écrire comme ci dessus print “Blablabla”. Repérez alors les deux petites icônes fléchées ci-dessus ; celle de droite teste votre code à la recherche de fautes de syntaxe alors que celui de gauche charge le code écrit en mémoire pour pouvoir l’utiliser depuis la fenêtre de gauche (l’icône de gauche est à cliquer avant chaque test si vous voulez que vos dernières modifications soient prises en compte). Appelez la fonction depuis l’éditeur principal… magie, “Blablabla” apparait!

Sur la capture de droite se trouvent d’autres petits exemples à la con:

  • Une fonction (Puissance()) qui prend des paramètres et renvoie un résultat (en utilisant au passage une fonction externe de Python Math.Power()),
  • Une fonction (Genre()) qui présente la syntaxe d’utilisation d’une boucle “si-alors-sinon”.

Croyez moi ou non, mais c’est presque tout ce dont vous avez besoin pour attaquer le Projet Euler dont je vous parlais hier. Il va vous falloir une boucle “tant-que”, un opérateur “modulo” (reste de la division entière) et peut être un peu de quoi jouer avec le listes et voila, vous êtes parés. Et comme je suis sympa, je vais faire le premier avec vous.

Projet Euler 1: If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000.

Pas la peine de chercher midi à 14h, on parle ici de nombres ridiculement petits (1000 haha la blague), on peut foncer dans le tas de manière totalement systématique.

Alors, comment feriez-vous pour trouver la somme des multiples de 3 ou 5 qui sont inférieurs à 1000?

Simplement en itérant un stupide compteur de 0 à 1000 en testant le dit compteur à chaque tour pour savoir s’il est multiple de 3 ou de 5 ; si oui on l’ajoute au résultat. Voila la fonction en Python:

projeteuler1

Pour info, l’opérateur % est le modulo dont je parlais plus haut, qui retourne le reste de la division entière du premier paramètre et du second. Ex: 4 % 2 = 0, 3 % 2 = 1, 5 % 2 = 1. Vous pouvez également voir que la syntaxe du “if” et “while” se terminent toujours par “:”.

Que dire d’autre? Heu… je crois que c’est tout. Vous pouvez commencer à rigoler avec le Python et le Projet Euler.

Posted on Mar 26, 2009

La programmation est un jeu d’enfant

Que vous vouliez bien me croire ou non, programmer peut vraiment devenir un jeu. Loin de moi l’idée d’essayer de vous  faire apprécier la beauté d’un “refactoring” complexe ou appréhender les finesses d’un polymorphisme bien fait qui sont la coke des développeurs mais plutôt de vous aider à mettre un pied dans ce petit monde et – pourquoi pas – comprendre que programmer peut aussi devenir un jeu pour toute personne un peu curieuse!

Pour ce faire, je fais appel au Project Euler, un petit défi mathématico-informatique très intéressant dont voici l’intitulé officiel:

Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.The motivation for starting Project Euler, and its continuation, is to provide a platform for the inquiring mind to delve into unfamiliar areas and learn new concepts in a fun and recreational context.

Ça a le mérite d’être simple, si les problèmes proposés sont parfois réalisables de tête avec un peu de jugeote, la grande majorité d’entre eux implique la manipulation de nombres trop grands pour que ce soit faisable, sans cependant demander de grosses bases mathématiques. C’est là que l’utilisation judicieuse de petits programmes informatiques devient nécessaire, sans pour autant sombrer dans la complexité. Dans la rubrique “à propos” du projet est spécifié que tous les problèmes sont solvables “en une minute de traitement”, ce qui pousse implicitement à optimiser les algorithmes au maximum. Mais sans aller jusqu’à cette extrémité, il est relativement facile de résoudre une partie des problèmes de manière assez systématique en utilisant cette qualité qu’on oublie trop souvent: “un ordinateur ça calcule (très) vite”.

Pour le fun (et par curiosité) j’ai également décidé de commencer ce challenge dans un langage de programmation que je n’avais pas encore testé, le fourchelangue, le Python… SSSsssSssSSssss. Le fait que j’ai découvert le Projet Euler en même temps que les fonctions personnalisables en Python d’Enso n’y est pas pour rien. Après maintenant quelques jours de jeu avec le Python et Euler je dois dire que je suis très surpris du premier et passionné par le second même si je n’en suis toujours qu’au début. J’ai résolu à ce jour 18 problèmes (grosso modo les 18 premiers par ordre de complexité croissant nombre de personnes les ayant résolu décroissant) sur les ~250 que compte le projet à l’heure actuelle et ça m’amuse toujours autant de chercher a en résoudre un de temps en temps.

Pour le moment les nombres premiers et en particulier les décompositions en nombres (premiers ou pas) sont bien présents ainsi que quelques petits problèmes de logique géométrique franchement pas difficiles. J’encourage tous les curieux sachant un brin programmer à enfourcher le compilateur de leur choix et de tenter l’expérience. Pour les plus curieux, une fois un problème résolu, vous avez accès à un forum de discussion qui vous permet de comparer votre méthode avec les grands malades qui se prennent vraiment la tête pour résoudre ces problèmes de manière efficace.

Pour les autres, ceux qui ne savent pas programmer et ne seraient pas contre l’idée de tester ceci pour peu qu’on les prenne un peu par la main, attendez quelques jours que j’écrive un billet sur “Comment prononcer ses premiers mots en fourchelangue” pour commencer l’expérience tranquillement! A vos claviers!

Posted on Mar 23, 2009

Nürnberger Zoo

En ce premier weekend de printemps – frisquet mais radieux – nous avons décidé de mettre les pieds au Zoo de Nuremberg histoire de prendre l’air. Occasion naturellement mise à profit pour sortir mon téléobjectif et faire quelques photos d’animaux dont voici le résultat.

On commence avec les macaques, animaux finalement les plus intéressants car les plus “vivants”. Ils étaient au nombre de 6, vraisemblablement 3 adultes et 3 enfants. L’un des “parents” roupillait sans scrupules alors que les deux autres semblaient occupés à nous dévisager. Quand aux enfants, incapables de tenir en place et se poursuivant dans leur petit univers clos, ils étaient le centre de notre attention.

Môssieur le chameau était de sortie, l’air bien fier entrain de se faire rôtir au soleil. Après avoir pris quelques photos de profil, nos pas nous ont fait contourner son enclos pour tomber sur sa “vue de derrière”… vue qui donne plus l’impression que ce dernier cherche une position stable pour cuver les restes d’une soirée bien arrosée que d’un animal fièrement posé au soleil.

Après avoir lu avec dépit que lions, tigres et autres félins serait excusés pour cause de “classe de printemps” au Zoo de Berlin, nous nous sommes dirigés du coté des oiseaux… (je sais les pingouins n’en sont pas, mais j’avais pas envie de faire une catégorie pour un malheureux unique petit spécimen).

 

Finalement entre loups et otaries nous tombons sur un guépard ‘achement balèze à la “baston de regard” (il doit s’entrainer tous les jours, c’est pô possible)…

Pour finir, deux petites photos au potentiel “kromeugnon” indéniable:

Le dimanche fût aussi sympa bien que le temps soit moins clément. 2h30 de vélo face au vent pour aller déguster des Germknödel (je suis plus très sur du nom mais la description colle bien) dans un froid mordant, c’était hard mais mes papilles remercient mes mollets :)

Posted on Mar 20, 2009

Spin aka FastForward

Dans ma quête de lecture de tousde plein de les… de quelques lauréats du prix Hugo, j’ai lu il y a peu le détenteur du prix 2006, Spin de Robert Charles Wilson.

Imaginez un instant vous réveiller un jour – ou plutôt une nuit – pour vous rendre compte que les étoiles et la lune ont disparu. Imaginez qu’après quelques semaines/mois sans explication, des scientifiques vous expliquent qu’une sorte d’enveloppe quantique a été placée autour de la Terre, que le temps s ‘écoule différemment de part-et-d’autre de cette dernière, si bien qu’une année à l’intérieur de la sphère équivaut à quelques 100 millions d’années à l’extérieur. Imaginez maintenant quelle serait votre réaction si avec cette explication quantique venait le postulat suivant: le soleil est en constante expansion, d’ici 4 millions d’années ce dernier aura “détruit la Terre” ce qui donne aux hommes une génération, entre 30 et 40 ans à vivre… les boules hein? C’est cet enfermement qui est baptisé “Spin” et c’est ce que vivent les trois protagonistes de l’histoire du même nom.

Entre science fiction pure – je vous laisse imaginer ce qu’on pourrait faire comme expérience et projets à long terme avec un tel écoulement du temps… terraformer Mars? – et roman psychologique – vous diriez quoi si on vous annonçait que la Terre a une petite trentaine d’années devant elle avant d’être absorbée par le soleil? – Spin est un petit livre vraiment sympathique.

Tyler (le personnage principal), Jason et Diane (des jumeaux) assistent à l’enfermement de la Terre alors qu’ils n’étaient que des enfants. Comprendre ce phénomène vire au trouble compulsif pour Jason alors que Diane embrasse une religion émergente aux penchants passablement fanatiques. Tyler quand à lui se laisse dériver au gré des pérégrinations des deux premiers, partagé entre son amour pour Diane et son amitié profonde avec Jason.

Les concepts déployés par ce livre sont profondément intéressant, tant du coté de la science-fiction, des technologies et de l’anticipation que du coté humain et des réactions humaines face à un tel ultimatum rendant la lecture des 2/3 du livre franchement intéressante. Cependant, entre intervention extra-terrestre à la mode tout-est-bien-qui-finit-bien et diabolisation des hommes d’état obligeant le narrateur à fuir ce qu’il est devenu (je n’en dirais pas plus, c’est un des éléments principaux du livre), je trouve la fin relativement décevante i.e. pas à la mesure de ce que le reste du livre laissait imaginer.

Si vous n’avez rien sur le feu c’est cependant un superbre livre à dévorer (les 2 premiers tiers s’avalent!) ne serait-ce pour les idées cachées derrière les concepts de cette membrane quantique.

Depuis que j’ai fini Spin, j’ai eu le temps d’avaler le Dreaming Void dont je vous parlerai bientôt, et après une pause studieuse avec Refactoring de Martin Fowler (très intéressant), je ne vais pas tarder à reprendre mes lectures avec The Temporal Void (la suite de Dreaming Void), Ender’s Shadow (une des suites d’Ender’s Game) et Seventh Son le premier tome de la série d’Alvin the Maker. Désolé Edouard, mais j’ai pas réussi à me résoudre à commander des livres sérieux comme “Hot Flat & Crowded” ou “Collapse” mais ne t’inquiète pas, ils restent dans mon pense bête sur Amazon ;)