Articles
Docs/devinettes/README.md
Devinettes
Modifié le
Ici, on va placer quelques devinettes de maths et d'algo, dans divers sujets .md :
Lire la suiteDocs/devinettes/maths/ball_split.md
Devinette avec des baballes
Modifié le
Dans le jeu suivant :
Lire la suiteDocs/devinettes/maths/cheval.md
Cheval
Modifié le
Un cheval fait le tour d'une prairie carrée à vitesse constante. Pour le premier coté, il met 80 secondes à le parcourrir, pour le second, 80 secondes, ainsi que le troisième. Mais pour le 4e coté, il met une minute 20.
Lire la suiteDocs/devinettes/maths/fourmies.md
Fourmies
Modifié le
N fourmies sont sur un baton de 1m, et agissent ainsi :
Lire la suiteDocs/devinettes/maths/tas_cailloux.md
Tas de cailloux
Modifié le
On a cailloux qu'on répartis en tas. à chaque tour, on prend un caillou à chaque tas, et on forme un nouveau tas.
Lire la suiteDocs/devinettes/maths/pyramide.md
Décomposition d'un naturel en 5 tétraédriques
Modifié le
Conjecture de Pollock :
Lire la suiteDocs/devinettes/info/immeuble.md
Immeuble et incendie
Modifié le
On est responsable des procédures incendies dans un immeuble, et on doit mettre en place une méthode innovante : déterminer la hauteur à partir de laquelle on peut sauter sans se tuer.
Lire la suiteDocs/devinettes/maths/devinettes-sous-suite.md
Devinette : sous-suite croissante ou décroissante
Modifié le
Soit une suite de nombres distincts.
Lire la suiteBlog/Navigation.md
Les ancres #
Publié le
Une description du fonctionnement de sites web2 qui présentent des articles avec de vraies pages sans rechargement, tout en concervant les fonctionalités d'url.
Lire la suiteBlog/Les chaines.md
ERC20
Publié le
Ces dernières années, la mode s'est tournée vers les blockchaines et l'AI. Aujourd'hui nous parlerons un peu des chaines, de ce qu'on peut faire avec quand on est un technicien.
Lire la suiteBlog/des automatisations.md
des automatisations.md
Publié le
La configuration des automatisations peut-être assez contre intuitive. J'ignore si mon approche a été toujours la plus dogmatique, ou si comme souvent, j'ai contourné les solutions officielles pour bricoler à ma façon une méthode alternative plus geek mais moins propre. Comme pour beaucoup de logiciels, la documentation de home assistant n'est pas à jours. Elle contient peu d'exemples, et beaucoup des exemples en ligne sont eux aussi obsolètes. Mais à force d'expérimentations, on arrive à s'en sortir.
Lire la suiteBlog/Domoticz contre Home assistant.md
Domoticz contre Home assistant.md
Publié le
Il y a quelques années, j'avais un besoin dans ma maison : piloter mes radiateurs automatiquement avec des sondes de températures. S'offraient alors deux solutions : un thermostat déjà tout fait, mais pas connecté, ou alors de la domotique. La domotique m'aurait permis d'étendre un peu le concept à l'éclairage, de la sécurité, l'arrosage automatique du jardin. La domotique s'imposait donc. Cependant je n'avais aucune envie de dépendre d'une société avec du cloud, ce qui aurait potentiellement compromis mon système lors de coupures, soit d'internet, soit de leur service.
Lire la suiteBlog/Estimation si les abstentionnistes avaient voté..md
Estimation si les abstentionnistes avaient voté..md
Publié le
En regardant le résultat des européennes arriver en temps réel, j'ai eu un choc : à Paris, l'abstention ne fait que 42,12, alors que dans d'autres départements, c'est plus élevé de façon significative : 47,80 en loire atlantique par exemple. 61,99 d'abstention en corse, 85,63 en gouadeloupe, 86,59 en guyane, 69,34 à la réunion, 84,78 en martinique, 71,36 à mayotte... Même en ile de france, on ressent un décalage entre les zones défavorisées et les quartiers riches : 60,59 d'abstention pour le 93, contre 44,82 pour le 92. Avec bien évidement, des listes différentes en tête entre là ou on vote, et là ou on s'abstient.
Lire la suiteBlog/Pi zero, timeleaps.md
Pi zero, timeleaps.md
Publié le
Je me suis offert un raspberry pi zero, avec le module caméra, pour observer mon chaton. C'est pas super puissant, mais ça suffit pour beaucoup d'usages...
Lire la suiteBlog/Réseaux de neurones ?.md
Réseaux de neurones ?.md
Publié le
Les réseaux de neurones sont parfois abordés de façon étrange à la radio sur france culture, par exemple, on avait un exemple flagrant d'incompréhension lié simplement au fait qu'ils n'avaient aucune équation sous les yeux.
Lire la suiteBlog/Réécriture d'AST.md
Types récursifs explicites
Publié le
J'ai entrepris une grosse passe de réécriture peu après la fin des demies finales. Il s'agissait de remplacer d'une part les AST walkers par des fold sur des types fixés, et d'autre part de supprimer les objets dans les printers.
Lire la suiteBlog/Backends.md
LUA
Publié le
Metalang possède désormais 5 nouveaux backends : lua, groovy, scala, forth et smalltalk.
Lire la suiteBlog/Backend Haskell.md
Backend Haskell.md
Publié le
On supporte haskell à prologin cette année ! C'est toujours formidable pour l'association de gérer un langage de plus, mais j'aurais préféré qu'ils choisissent d'ajouter un langage qui est déjà géré dans Metalang, ou au pire, un langage plus proche du C...
Lire la suiteBlog/Les trois ans de Metalang.md
Les trois ans de Metalang.md
Publié le
Quoi de mieux qu'une demie finale de prologin pour feter les trois ans de Metalang ?
Lire la suiteBlog/Comparaison des différents backends.md
Passes de compilations
Publié le
Voici la liste des langages supportés par metalang, classés par qualité de code généré : ruby, ocaml, python, c, php, go, objective-c, java, javascript, c++, c#, perl, ocaml fonctionnel, visual basic, pascal, common lisp, ada, racket.
Lire la suiteBlog/Backend VB.net.md
Backend VB.net.md
Publié le
La création d'un backend visual basic était une étape logique. Nous avions déjà un backend C#, faire un backend VB.net n'est qu'un changement de syntaxe. Outre sa syntaxe étrange, le langage n'a pas posé de gros soucis. Ce qui a été particulièrement déroutant, c'est les opérateurs And et Or qui ne sont pas shortcuts (comme en ada), il faut utiliser OrElse et AndAlso. Une autre curiosité du langage, est l'opérateur de comparaison = qui refuse de comparer des pointeurs. Le seul vrai point qui m'a posé problème c'est l'integer overflow qui déclenche des exceptions. En vrai metalang ne garentit rien au sujet de la taille des entiers, donc c'est un faux problème mais j'ai du fixer des tests.
Lire la suiteBlog/Comparer des images ?.md
Comparer des images ?.md
Publié le
Depuis longtemps, je souhaite me faire un outil qui permettrait de manager des images, plus récement, je me suis posé la question : si tu cherchais 10 photos à imprimer, comment les séléctionnerais tu ? J'ai donc cherché à faire un logiciel qui permet de séléctionner ou de rejeter des photos, à partir d'une séléction initiale, on complète la gallerie par des photos qui ressemblent plus aux photos séléctionnées qu'aux photos rejetées. J'ai toujours aimé les algorithmes qui retravaillent ou analysent des images, mais faire un produit de ce genre n'a pas vraiment de sens car gimp fonctionne très bien pour ça. Par contre, pour la recherche de similitudes dans une base de données, il n'existe pas grand chose.
Lire la suiteBlog/Un backend ADA ?.md
Déclarations de types
Publié le
Ada est parmi ces anciens langages qui se sont trouvés aux frontières de l'impératif et de l'objet, et du garbage collector et de la gestion manuelle de la mémoire. Ce langage fournissait de nombreuses avancées en son temps. Proche du pascal, on aurait pu penser que l'implémentation du backend allait être un jeu d'enfant. Loin s'en faut...
Lire la suiteBlog/Statistiques.md
Statistiques.md
Publié le
Le graphique ci dessous montre le rapport entre la taille du code généré par metalang par langage, lors de l'execution des tests, et la taille des tests. En gros, pour chaque langage, on compte : taille du code générée * 1000 / taille des tests. Pour plus d'objectivité, la taille est exprimée en caractère non blanc.
Lire la suiteBlog/Backend Perl.md
Backend Perl.md
Publié le
Metalang comportait déjà des backends python, php et ruby, pour compléter cette petite famille, il manquait forcément perl.
Lire la suiteBlog/Backend Racket.md
Backend Racket.md
Publié le
J'ai ajouté un nouvel Ast : un AST fonctionnel. Cet Ast permet d'écrire des programmes fonctionnels, il ne contient que des expressions (donc pas d'instruction) et ne contient pas d'affectation sur les variables (les seules affectations sont sur les tableaux et les records). Cet Ast se trouve dans le dossier Astfun, la passe qui permet de convertir un ast impératif en ast fonctionnel se trouve dans le fichier transform.ml.
Lire la suiteBlog/Des statistiques.md
Des statistiques.md
Publié le
Bash + git + gnuplot forment une combinaison puissante pour voir l'évolution d'un projet à travers le temps. avec bash et git log, on peut parcourrir l'historique d'un projet et mesurer son évolution pour produire les deux graphiques suivants :
Lire la suiteBlog/Une nouvelle passe de test.md
Une nouvelle passe de test.md
Publié le
J'ai passé une partie de ma soirée à fixer le bug que j'ai cité dans un précédent article : j'ai ajouté une passe pour vérifier l'existance de mauvais returns. Il est désormais impossible de déclarer une fonction qui devrait renvoyer, sans mettre de return à la fin. Il est aussi impossible d'avoir un return dans une allocation de tableau.
Lire la suiteBlog/La division et le modulo.md
La division et le modulo.md
Publié le
Comme le décrit l'article de wikipedia sur le modulo, il existe deux definitions pour la division et le modulo dans les langages de programmation. En python on a la définition la plus mathématiquement correcte, tandis-qu'en C, la définition est plus "informatique".
Lire la suiteBlog/Backend Common Lisp.md
Backend Common Lisp.md
Publié le
Metalang peut maintenant générer du Common Lisp.
Lire la suiteBlog/Backend GO pour Metalang.md
Backend GO pour Metalang.md
Publié le
Un weekend, l'idée m'est venue de poursuivre l'ajouts de backends à Metalang. Après m'être pété les dents dur Bash (pour de multiples raisons, comme le passage de tableaux par valeur par exemple...), je me suis penché sur un backend que je n'avais jamais tenté : go
Lire la suiteBlog/Les deux ans de Metalang.md
Les deux ans de Metalang.md
Publié le
Metalang a maintenant deux ans. Ce projet a suivi un long parcours, une longue série de commits, de nombreux rebondissements pour le faire accèpter à prologin, pour arriver aujourd'hui à un projet stable et utile.
Lire la suiteBlog/Bug.md
Bug.md
Publié le
Suite à une tentative d'amélioration du code printé, j'ai apperçu un bug dans Metalang. Voici le code en question
Lire la suiteBlog/Metalang.md
Metalang.md
Publié le
Une nouvelle série de commits à été pushée sur metalang. On peut noter plusieurs améliorations principales comme des correctifs sur les passes de checkings, ou la génération de code propre. On peut aussi noter une meilleur stdlib qui permet de gérer un meilleur code python (pour le moment) généré lorsque les entrées sont formatées d'une des façons suivantes :
Lire la suiteBlog/Reversi.md
Reversi.md
Publié le
<img src="https://lh5.ggpht.com/PDMQdjAUX0mrD6I-_pK6shGp6aejFGrtVPg2wIZUG2IMRP05_-zqByB0hXoerzcv64il=w300-rw" class="thumbnail" />
Lire la suiteBlog/Chess.md
Chess.md
Publié le
<img src="https://lh3.ggpht.com/65OEJJSxNv66cX2LZ2sNRu6W_YhRR0ZAkQXOsWSPGwA2ljdRI7Go0YIDR4xMzZAcGQk=w300-rw" class="thumbnail" />
Lire la suiteBlog/Metalang en production !.md
Metalang en production !.md
Publié le
Les demies finales de prologin ont eu lieu. Pour cette occasion, Metalang a été utilisé pour générer des entrées sorties. J'étais présent à deux de ces demies finales (Strasbourg et Nantes) et j'ai pu constater que le code généré n'était pas à la hauteur de ce que les candidats attendaient : ça marchait bien mais c'était sale et difficile à lire.
Lire la suiteBlog/Brainfuck metacompiler.md
Brainfuck metacompiler.md
Publié le
Dans la série des compilateurs jouets, j'ai voulu écrire un compilateur brainfuck en métalang. L'idée était plutot curieuse : générer par méta-programmation du code métalang en lisant une source écrite en brainfuck.
Lire la suiteBlog/Metalang V1.0.2 : Macrophage.md
Metalang V1.0.2 : Macrophage.md
Publié le
Ma nouvelle série de commits sur metalang intègre des fixes variés et un tout nouveau système de macros.
Lire la suiteBlog/Metalang V1.0.1.md
Metalang V1.0.1.md
Publié le
Après un rapide clean du code et quelque nouvelles features, mon compilateur revient avec sa version 1.0.1 !
Lire la suiteBlog/Projet Metalang.md
Projet Metalang.md
Publié le
Le projet metalang est un projet opensource qui se présente sous la forme d'un compilateur pour un nouveau langage. Ce projet a été créé dans le cadre de prologin sur mon initiative. Le but était de créer un langage qui se compile vers le plus de langages possible. Ce nouveau langage permet donc d'écrire un algorithme et de pouvoir mesurer ses performances dans d'autres langages. On pourrait aussi utiliser metalang pour l'interfacer avec des programmes plus gros (pour l'écriture d'une librairie par exemple).
Lire la suite