XD blog

blog page

~technical


2014-04-10 La programmation pour les enfants

Comment initier les enfants à la programmation ? Je commence à croire que les langages de programmation ne s'appellent pas langages par hasard et que leur apprentissage doit démarrer tôt si on veut avoir une chance d'être bilingue ou trilingue français/anglais/python. Même si passer d'un langage à l'autre est plus facile que d'une langue à l'autre, on aurait tort de penser qu'il n'existe pas de figure de style. Le site codecrap recense les plus beaux contresens programmatiques et permet même de voter pour les plus esthétiques.

Je reviens au sujet principal qui est l'initiation des enfants à la programmation. Il est plus facile de faire rêver un enfant devant un train électrique. Je n'en disconviens pas mais cela n'empêche pas d'essayer de rendre cette abstraction accessible de plein de façons possibles.

Si vous savez programmer, vous pouvez considérer l'ordinateur comme votre esclave personnel. Il ne comprend que les ordres simples (très simples) ce qui en fait un esclave parfois récalcitrant (allez lire Trolls dans la brume pour comprendre ce qu'est un esclave récalcitrant). Mais... si vous ne savez pas programmer, il n'est pas trop tard pour apprendre. Vous avez tout d'abord la programmation ludique : le décor est un jeu et programmer est la seule façon de s'en sortir: erase all kittens, robozzle.

Vous avez aussi des jeux toujours au décor imposé dans lequel la programmation vous sert à définir le jeu. codecombat, rubywarrior.

D'autres se sont dit qu'il fallait apprendre à programmer avec un outil qui peut presque tout faire mais de manière graphique, donc quasiment sans clavier. Dans ce domaine, le plus abouti est Scratch (voir aussi snap). Il y a aussi blocky. Les deux se ressemblent beaucoup, la différence vient sans doute des extensions. Par exemple, avec Scratch et Enchanting, vous pouvez piloter le robot Lego Mindstorm.

Moins ludique, moins graphique mais forcément plus compliqué, on a des langages très simples permettant de dessiner : livecodelab, code-monster, kojo.

Certains ont aussi pensé qu'en français, ce serait plus facile : linotte. D'autres ont ajouté kids devant un langage connu : kidsruby, python for kids.

Et si vous avez aimé, vous pouvez passer au niveau supérieur avec des applications qui permettent de faire des jeux gamesalad, de concevoir des objets 3D openscad ou d'avoir une vision un peu plus mathématique de la chose : Loria PLM.

Et pour finir, allez voir Hello Processing ou comment programmer une oeuvre d'art. Ne me dites que ce prof ne vous fait pas envie. Si vous avez toujours perçu l'informatique comme quelque chose d'austère, allez lui rendre visite. Il s'éclate complet ! La science est l'aventure de demain : Théorème vivant.

2014-05-13

Faut-il introduire la programmation à l'école ? Quand ? Ce blog regroupe de nombreux articles et réflexion autour du sujet : Coder à l’école… vous n’arrivez pas à suivre les débats ?. L'un d'eux précise que la notion de variable n'est vraiment assimilable qu'à partir de dix ans et qu'elle est essentielle. Le fait de désigner un objet inconnu par une lettre et de le manipuler sans savoir ce qu'il est intervient en mathématiques en sixième-cinquième avec la résolution des équations.

2014-12-27

Un article paru en décembre 2014 sur différents outils La programmation pour les non-programmeurs.

2014-04-05 Quelques précisions sur les projets informatiques (finance)

Lorsqu'on récupère les données depuis le site Yahoo Finance !, la dernière colonne est intitulé Adj Close.

cours de la BNP

La série Close fait apparaître un saut le 20 février 2002. A cette date, la BNP a divisé le cours de ses actions par deux et multiplié le nombre de titre par deux. La colonne Adj Close corrige ces effets. Vous en saurez un peu plus en lisant cette page About historical prices.

J'ai également mis à jour le module pyensae et cette page d'exemples. Il faut donc le réinstaller à nouveau pour bénéficier des améliorations. Il est maintenant possible de tracer plusieurs courbes à la fois sur le même graphique, de récupérer un sous-ensemble de la série. Enfin, je remets ici le lien vers le document Petit exposé sur les algorithmes de trading.

2014-04-04 A small video on sorting algorithm

If you can recongize them all, you are good. 15 sorting algorithms in 6 minutes

D'autres lectures sur le coût des opérations en Python :

2014-04-02 References for Statistics with R

Python does not offer all the functionalities in one module, you need to look for them sometimes. In my case, I was looking for a statistical test on coefficients obtained with a linear regression. The module I was looking for is statmodels. While looking for that, I found this interesting blog Glowing Python. But I finally decided to switch to R where I know for sure I would find what I need. And because I'm not fluent in R, I need something like that : StatMethods.

2014-03-28 Quelques astuces pour faire du machine learning

On a parfois l'impression qu'il suffit de choisir un modèle (réseau de neurones, SVM, random forests, ou autres scikit-learn), de l'entraîner puis de l'appliquer pour obtenir un prédicteur de bonne qualité. Mais ça ne marche pas toujours... Voici quelques raisons qui pourraient l'expliquer.


more...

2014-03-22 Faire des gammes en programmation

Publier des articles sur son blog, mettre en ligne des corrections d'examens, synchroniser un répertoire de son disque avec un un disque USB, j'ai une forte tendance à automatiser toutes les tâches que je répète fréquemment afin qu'elles ne m'encombrent plus. J'avoue pourtant que ce n'est pas ce genre d'applications qui m'a fait apprécier l'exercice. Il arrive qu'automatiser ces corvées se mue en une corvée encore plus fastidieuse. J'ai d'abord aimé résoudre des petits problèmes tels que ceux énoncé sur Pydéfis puis d'autres plus compliqués comme L'énigme d'Einstein. Le site Google Jam est une bonne source de problèmes pour s'entraîner. On admet généralement qu'on ne peut pas devenir excellent musicien sans faire beaucoup de gammes. Je pense qu'on ne peut pas devenir excellent programmeur sans pratiquer ces exercices de temps à autre.


more...

2014-03-18 Python 3.4, no need to install pip anymore

The new version Python 3.4 was just released. One interesting change is that modules pip and setuptools are now part of the distribution. That's a relief. Every module which does not requires C++ compilation can now be installed using pip install [module] without any extra step. On Windows, the others modules can still be installed from this page: Unofficial Windows Binaries for Python Extension Packages unless you want to use Visual Studio to compile them. In this case, I recommend reading this page: Module Madness: installing Python modules on Windows.

Among the unexpected changes, the instruction #coding:latin-1 is not allowed anymore. The C++ API changed a little bit. It made me make a change to pythonnet to compile it with Python 3.4: pythonnet migration to Python 3.4. Hopefully, the installation of executables (sometimes after looking for them) could become easier with Python Wheels. Maybe WinPython will follow soon.

However, I recommend to wait a little bit before switching. I had some weird behaviour with matplotlib: no failure with Python 3.3 but a failure while drawing a second graph with Python 3.4.

2014-03-16 Laisser l'utilisateur définir ses propres paramètres

Chaque année, à la fin de l'année scolaire, je dois exécuter les projets de mes étudiants. Assez souvent, je me retrouve à répondre à des questions simples et parfois nombreuses : nom du premier joueur, nom du second joueur, niveau de jeu... Bien souvent, la première exécution ne fonctionne pas, la plupart du temps à cause d'un nom absolu de fichier qui ne trouve pas à l'endroit attendu. Une fois corrigé, je relance le programme et je dois de nouveau répondre à tous les questions.

Je pourrais leur imposer une façon de faire, mais lorsqu'un projet s'étire sur plusieurs mois, n'importe quel directive insérée dans un mail finit aux oubliettes. Je pourrais leur demander de modifier leur programme mais lorsque je suis face au problème à une heure très matinale, quelques heures avant leur soutenance, j'ai quelques doutes sur la réussite de l'entrerprise. Reste peut-être la possibilité de coder une fonction qui peut peut-être devenir aussi utile pour eux que pour moi.


more...

2014-03-15 Data pipeline in Python

I started to use Hadoop in 2008 at Yahoo. At that time, I liked it because the language introduced new constraints (there is no index, you can dispatch a huge amount of data among many machines but you have a limited amount of memory to process it on each machine) and it was fun playing with them. However, after a while, I accumulated many jobs, and I had to remember which one to run and in which order to get the final results. It is fine when you do research but not very convenient when you need to explain the full workflow to somebody else and even less convenient when you need to productionize the workflow.


more...

2014-03-12 Convert a PDF into an image

Today, I just wanted to convert a PDF into a PNG image. I knew I already did it but I forgot to remember how (I only need it once every six months). I hope you don't mind if I use my own blog to avoid looking again for it. First, it requires ImageMagick. The following script will do the trick:

from PythonMagick import Image

os.environ["MAGICK_HOME"] = r"path_to_ImageMagick"

file = "my.pdf"
to = file.replace(".pdf",".png")

p = PythonMagick.Image()    
p.density('300')
p.read(os.path.abspath(file))
p.write(os.path.abspath(to))

# the ImageMacgick command line to do it
# cmd = "convert -density 300 -depth 8 -quality 85 {0} {1}".format(file, to)

more...

2014-03-08 Programmer un robot Lego

J'ai acheté un robot Lego Mindstorms. Je me suis que si des enfants arrivent à le faire dans des coding goûters, je devrais bien y arriver aussi. Je suis donc allé dans un magasin Lego à Levallois pour dénicher l'objet (ici).

Je l'ai laissé mariner quelque temps afin de penser à aller acheter des piles (6 piles R6, 2 piles R03). Et j'ai commencé à monter l'engin, une occupation qui m'amuse beaucoup d'habitude, mais étant donné que j'étais plus intéressé par le robot fini que le fait de le construire, l'heure d'assemblage m'a paru longue. Lorsque j'ai eu fini, il me restait la moitié des pièces. J'ai compris que j'aurais dû télécharger l'application d'abord ! Cela prend une heure et on a le choix entre pas mal de modèles différents (avec les mêmes pièces je suppose). Si vous suivez le même chemin, il vaut mieux procéder dans cet ordre, télécharger d'abord, monter ensuite. Je vous montre une photo de mon petit n'importe quoi car je n'ai pas eu le courage de terminer un des assemblages proposés. L'essentiel était pour moi d'avoir un n'importe quoi qui bouge tout seul.


more...

2014-03-03 Styles conditionnels en VBA sous Excel

J'avais besoin de créer un tableau avec une ligne de couleur différente pour chaque jour de la semaine. J'ai d'abord essayé de me passer de programmation en VBA car je me suis dit que c'est le genre de choses que je pourrais trouver sans un menu quelconque. J'ai commencé à chercher dans les styles personnalisés, puis sur Internet mais j'ai finalement abandonné. Je suis passé au VBA et ça m'a pris une dizaine de minutes. J'ai utilisé la première ligne pour les couleurs que je souhaitais (j'ai fait ça très vite, ce n'est pas du meilleur goût) puis j'ai composé le tableau, une première colonne pour les dates, une seconde qui contient le jour de la semaine (obtenu par formule). C'est ce numéro qui indiquera la couleur.

Puis j'ai écrit la macro suivante :


more...

2014-02-26 Installer Python pour faire des statistiques

L'environnement que je suggère est celui que j'utilise pour préparer mes cours. Il permet d'utiliser les outils que je propose et d'obtenir un espace de travail équivalent à celui que propose R. Plusieurs options sont possibles :

Je poursuivrai par l'installation de pyensae, et je terminerai par la configuration de l'éditeur SCite qui est, de mon point de vue, le plus simple éditeur qui soit mais il fait bien ce pour quoi il est fait.

2014/10/25

Si je devais choisir une distribution, ce serait Anaconda. C'est la plus à jour et la plus complète. Une fois installée, elle devient la distribution par défaut sous Linux. Cela évite les confusions entre les différentes versions de Python (Python 2.7 est installée par défaut). Sous Windows, elle est plus complète que WinPython. Elle inclut notamment le package paramiko dont je me sers pour ouvrir une connexion SSH avec un serveur Linux et utiliser PIG.

Préliminaire

Il existe deux numéros de versions important à retenir :

Une fois choisis ces deux numéros de versions pour l'installation de Python, si ces versions sont précisées pour un module, alors il faudra choisir exactement ces deux mêmes versions.

WinPython


more...

2014-02-24 Travailler avec IPython notebook

Si l'environnement que R proposait était il y a encore quelques temps le meilleur compromis pour quiconque voulait faire des statistiques ou du machine learning, de mon point de vue, IPython a changé la donne. On peut toujours travailler avec un éditeur texte classique, ou avec une ligne de commande similaire à celle de R ou encore utiliser les notebook. Un notebook, c'est un peu comme une page blanche ou on mélange à la fois du texte, du code, des graphiques, des équations et même du javascript. C'est très pratique lorsqu'on cherche sa partition. Entendez par là que vous avez un problème à résoudre mais pas encore la solution. Il faut donc expérimenter. Cette page blanche vous permet facilement de garder une trace de tous vos essais et de les annoter puis de rédiger le document final. Pour vous en convaincre, il suffit d'aller voir la gallerie suivante (également A gallery of interesting IPython Notebooks), et on peut faire des choses assez marrantes (XKCDify) voire même utiliser R depuis IPython (Using R Within the IPython Notebook).

Pour essayer, l'option la plus rapide et de télécharger la distribution WinPython qui contient tous les packages intéressants pour un statisticien (ou data scientist). Il ne vous faudra pas très longtemps pour lancer le notebook et de là, découvrir par vous-même comment cela fonctionne. Il n'y a pas trente six mille boutons et tout est plutôt intuitif.


more...

2014-02-23 Python and C# in the same program

I pretty much use Python for everything, I link many of my tools with Python, having the same place to run them. However, C# is very convenient if you want to automate some processes on Windows. Since I discovered pythonnet, I do not look anymore for a way to do things in Python, I do it in C#, I make an assembly and I link it to Python.


more...
<-- -->

Xavier Dupré