Rechercher

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 suite

Docs/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 suite

Docs/devinettes/maths/fourmies.md

Fourmies

Modifié le

N fourmies sont sur un baton de 1m, et agissent ainsi :

Lire la suite

Docs/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 suite

Docs/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/Backends.md

LUA

Publié le

Metalang possède désormais 5 nouveaux backends : lua, groovy, scala, forth et smalltalk.

Lire la suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/Reversi.md

Reversi.md

Publié le

<img src="https://lh5.ggpht.com/PDMQdjAUX0mrD6I-_pK6shGp6aejFGrtVPg2wIZUG2IMRP05_-zqByB0hXoerzcv64il=w300-rw" class="thumbnail" />

Lire la suite

Blog/Chess.md

Chess.md

Publié le

<img src="https://lh3.ggpht.com/65OEJJSxNv66cX2LZ2sNRu6W_YhRR0ZAkQXOsWSPGwA2ljdRI7Go0YIDR4xMzZAcGQk=w300-rw" class="thumbnail" />

Lire la suite

Blog/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 suite

Blog/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 suite

Blog/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 suite

Blog/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