Apprendre à programmer

10 mai 2017

Vous désirez apprendre et/ou apprivoiser un langage de programmation, un système d’exploitation, une base de données, un shell, etc ?  Vous y songez sérieusement mais vous craignez d’avoir à installer une tonne de trucs sur votre ordinateur pour satisfaire votre curiosité?  Vous y songez mais, malheureusement, ce que vous désirez n’est pas disponible pour votre système d’exploitation?  Vous y songez mais l’installation de tout ce qu’il vous faudrait vous semble compliquée?

Ne cherchez plus! TutorialsPoint.com vous offre l’environnement en ligne CodingGround !  Tous les environnements en ligne ainsi que les tutoriels en ligne sont gratuits en plus!

Qu’est-ce que CodingGround ?  C’est un environnement de développement minimal en ligne vous permettant d’éditer, de compiler et d’exécuter du code.  C’est une machine virtuelle qui vous offre aussi un shell Linux et un browser (pour tester votre PHP, HTML ou CCS par exemple). Pour les environnements qui le supportent, il est également possible de changer les options de compilation. On peut aussi ouvrir simultanément plusieurs fichiers source, scripts, shells, browsers, etc.

CodingGround vous offre en plus de sauvergarder, importer, exporter, partager et lire tous vos projets avec GitHub, DropBox, OneDrive et GoogleDrive!  Vous pouvez aussi simplement garder tous vos projets sur votre ordinateur!

Quels sont les langage de programmation, les systèmes d’exploitation, les bases de données, les outils de développements que CodingGround offre?  Une tonne!

Liste des terminaux (shell) en ligne

Liste des IDE en ligne

 

 

 

 

 


Deep Learning : votre propre cerveau artificiel avec Python

6 décembre 2016

Une très intéressante et éducative conférence sur le deep learning et Python avec Nicolas Audebert (@nshaud sur Twitter).

 


OpenRefine

12 août 2016

A long long while ago, I had a close look at GoogleRefine.  This tool’s sole purpose is to extract, clean, transform and reconcile data.  And  the more the messy is your data, the better you’ll like this tool!

At first glance GoogleRefine was very interesting but, at the time, the whole thing was more promising than useful.  But recently, while looking for GoogleRefine again (I just could not remember the name!), I found its successor: OpenRefine!

Since then, Java has matured, web services are more robust, the tool has progressed quite a lot and OpenRefine uses everything in it’s power to facilitate your job!  More ways to reconcile the data, many different ways to transform your data, more predefined functions and functionalities!

Custom transformations can be done in 3 ways with some easy coding : with GREL (Google Refine Expression Language), Jython (a Python implementation that runs on Java) or Clojure.  Many many many ways to reconcile the data are now available, more import formats (TSV, CSV, Excel, JSON, XML, etc), more ways to reconcile data from webservices and the list goes on.  I must say OpenRefine has lots to offer!

So instead of writing a novel about how cool this tool is, I’ll leave you with a list/compilation of videos, tutorials, documents and websites that demonstrate what OpenRefine do for you!

School of data

Enipedia Tutorial

OpenRefine.org

Hope this help!

In the I-have-to-clean-up-this-mess department, DataCleaner is another useful tool.  But that’s going to be the topic of another post!

Save

Save


RSqueak/VM

12 avril 2015

On annonce des progrès significatifs et très intéressants du côté de RSqueak/VM, cette machine virtuelle pour Squeak écrite en Python!  Les derniers résultats ici!


Ruzzle et algorithmes génétiques (1/7)

18 décembre 2014

ruzzle_board

J’ai toujours été fasciné par les jeux et les divertissements de lettres, que ce soit le Scrabble, le Boggle, les mots croisés et, plus récemment, le Ruzzle.

Si on exclut les cases lettre et mot compte double et triple, les règles du Ruzzle sont simples (extrait de Wikipedia) :

Il faut former le plus de mots possibles avec les seize lettres disponibles dans une grille de quatre par quatre. Les mots doivent être au moins de deux lettres, et trouvés en utilisant des lettres adjacentes les unes aux autres sans réutiliser deux fois la même case de la grille. Les formes conjuguées des verbes sont acceptées.

Je ne connaissais pas le Ruzzle avant de tomber sur cet article particulièrement intéressant, Ruzzle : à la recherche de la plus belle grille.  L’auteur, Didier Müller, y décrit les diverses méthodes (et ses résultats) ainsi que les programmes écrits en Python qu’il a employés afin de rechercher la grille comportant le maximum de mots.  Ça a piqué ma curiosité, en particulier les tentatives d’optimiser les grilles produites à l’aide d’un algorithme génétique.

J’ai donc décidé de tenter la même expérience : trouver la grille avec le plus de mots possible en utilisant un algorithme génétique.  J’opterai surtout pour la flexibilité au détriment de la performance pour essayer d’étudier une panoplie d’hypothèses et de tester certaines de mes idées.  Évidemment, j’ai comme objectif de battre le record de monsieur Müller !  Je vise, au moins, 1635 mots!

Pour me suivre dans cette longue aventure, vous aurez donc besoin de connaissances en programmation (j’utiliserai Pharo, un environnement de développement Smalltalk), de quelques connaissances en SQL (j’utiliserai probablement MySQL pour sauvegarder les résultats) et de peut-être quelques connaissances en R (pour les graphiques et l’analyse statistique).  Évidemment, je rendrai publics les scipts SQL et R, les chiffriers, le code Smalltalk ainsi que tous les fichiers utilisés à la fin de cette série de chroniques.

Le présent texte sert donc de présentation aux expériences d’optimisation que je décrirai dans les 6 prochains articles.

Voici donc, en vrac, quelques-unes des idées que je testerai :

Article 2 : Stratégies de création d’individus

a) Aléatoire : toutes les lettres ont la même probabilité d’être choisies lors de la création de la grille
b) Muller : utiliser la fréquence des lettres établie par Müller
c) St-Jean : utiliser la fréquence des lettres établie par moi-même (vous verrai en quoi je diffère de Müller)
d) Wikipédia : utiliser la fréquence des lettres décrite sur Wikipédia
e) Anglais : utiliser la fréquence des lettres en anglais
f) Digramme : utiliser la fréquence des digrammes du dictionnaire pour créer la grille
g) Trigramme : utiliser la fréquence des trigrammes du dictionnaire pour créer la grille
h) Quadrigramme : utiliser la fréquence des quadrigrammes du dictionnaire pour créer la grille
i) Voyelles et consonnes : utiliser la fréquence relative entre les consonnes et les voyelles en français
j) Mots de 16 lettres : utiliser des mots de 16 lettres pour créer les grilles
k) St-Jean inversé : utiliser l’inverse de la fréquence de c (les lettres les plus moches deviennent les plus probables)

Article 3 : Stratégies de croisement (crossover)

a) croisement multi-points 50-50
b) croisement multi-points à longueur variable
c) croisement multi-points à longueur fixe
d) croisement simple 50-50 à locus fixe
e) croisement simple 50-50 à locus variable
f) croisement simple à longueur variable
g) croisement simple à longueur fixe

Article 4 : Stratégies de mutation

a) Mutation aléatoire
b) Mutation de la lettre avec la plus petite fréquence de la grille
c) Mutation de la lettre avec la plus petite fréquence au centre de la grille
d) Mutation de la lettre avec la plus petite fréquence sur les bords de la grille
e) Mutation de la lettre la plus grande fréquence de la grille
f) Mutation de la lettre avec le plus d’occurences de la grille

Article 5 : Stratégies de sélection, de survie, d’immigration et d’épidémie

a) Sélection aléatoire pure
b) Sélection aléatoire basée sur la force (fitness) des individus
c) Sélection élitiste (seuls les n% meilleurs individus se reproduisent entre eux)
d) Sélection adaptative (les individus plus forts se reproduisent avec les plus faibles)
e) Survie des meilleurs individus (pour n générations au maximum)
f) Intégration de nouveaux individus « immigrants » dans la population
g) Épidémie : chaque individu avec un gène spécifique aléatoire est éliminé de la population

Article 6 : Paramètres de la population et de la simulation

a) Pourcentage de mutation fixe
b) Pourcentage de mutation variable
c) Taille de la population fixe
d) Taille de la population variable
d) Pourcentage de croisement fixe
f) Pourcentage de croisement variable
g) Pourcentage de survie fixe
h) Pourcentage de survie variable
i) Pourcentage d’immigration fixe
j) Pourcentage d’immigration variable

Article 7 : Conclusions, résultats et autres recherches

Si jamais il y avait un intérêt pour cette série d’article, je me propose de publier un document PDF détaillé que je pourrai (là encore, seulement s’il y a un intérêt!) aussi traduire en anglais.