ressources pour Thue

2003-08-08
[ EN | FR ]

Introduction

Thue est un langage de programmation ésotérique inventé par John Colagiola en 2000. Les pages web sur Thue ont tendance à ce faire rares ces temps-ci, donc j'inclue des copies de ce que j'ai trouvé sur le web avant que les pages disparaissent.

Description

Voici une description sommaire du langage. Se référer au manuel de référence inclus dans la distribution d'origine pour plus de détails.

Un programme en Thue contient deux parties : la base de règles, et l'état initial des données. La base de règles est une liste de règles exprimées sous la forme :

<partie-gauche>::=<partie-droite>

où les parties gauche et droite sont des chaînes de caractères. La ligne

::=

sépare la base de règle de l'état initial. L'état initial est une chaîne de caractères constitué de la concaténation de toutes les lignes suivantes (en excluant les caractères de retour à la ligne).

Lors de l'exécution, Thue prend régulièrement au hasard une règle don la partie de gauche est incluse dans l'état courant, et remplace dans l'état courant la partie gauche par la partie droite. Le programme s'arrête lorsqu'il n'y a plus aucune règle qui puisse s'exécuter.

Entrées/sorties

Les primitives d'entrée/sortie sont :

  • Les règles de la forme :

    <partie-gauche>::=~<chaîne-à-émettre>

    (c'est-à-dire les règles dont la partie droite commence par le caractère ~) permettent une sortie : quand une telle règle est exécutée, la partie gauche est retirée de l'état courant, et la chaîne à émettre est imprimée sur la sortie standard (rien n'est inséré dans l'état courant).

  • Les règles de la forme :

    <partie-gauche>::=:::

    (c'est-à-dire les règles dont la partie droite est égale à :::) sont les primitives d'entrée : à l'exécution, la partie gauche est remplacée par une ligne lue sur l'entrée standard (sans le retour à la ligne).

Retours à la ligne

Le manuel de référence de Thue n'est pas très clair au sujet des retours à la ligne dans les entrées sorties. Les implémentations existantes émettent un retour à la ligne après l'exécution de chaque règle de sortie. Malheureusement cela empêche d'écrire en thue des programmes qui auraient besoin d'un meilleur contrôle sur leur sortie (comme par exemple les programmes auto-reproducteurs qui émettent exactement leur propre code source).

Je propose une variante de Thue où :

  • les règles de la forme :

    <partie-gauche>::=~<chaîne-à-émettre>

    (où la chaîne à émettre est une chaîne de caractères non vide) émettent lors de leur exécution la chaîne à émettre, sans retour à la ligne.

  • les règles de la forme :

    <partie-gauche>::=~

    (c'est-à-dire celles dont la partie droite est exactement le caractère ~), émettent un retour à la ligne lors de leur exécution.

Avec cette convention, on peut écrire en Thue de chouettes programmes comme des quines ou bien 99 bouteilles de bière.

Téléchargement

Récupéré sur Internet

  • thue.zip (27 ko), la distribution d'origine ;
  • catseyes.zip (36 kb), la page récupérée du site de cat's eyes technologies apparemment mort (http://www.catseye.mb.ca/esoteric/thue/).

Fait maison

Tous les programmes ci-dessous adoptent la variante sur les retours à la ligne décrite ci-dessus.

  • beer.t, implementation de 99 bouteilles de bière;
  • quine.t, programme auto-reproducteur;
  • fibo.t, programme imprimant les nombres de Fibonacci en base 10;
  • fibnth.t, programme imprimant le nième nombre de Fibonacci;
  • thue.pl, un interpréteur limité écrit en perl (seul l'ordre aléatoire de déclenchement des règles est implémenté);
  • thue.c, interpréteur d'origine modifié pour implémenter la variante;
  • thue2sed.sed, compilateur de Thue vers sed, écrit en sed (l'ordre de déclenchement des règles n'est aléatoire);
  • thuemisc.zip, archive de tous les fichiers fait maison ci-dessus.

Liens

[Accueil]
Contenu
Quoi de neuf

[STonC]
STonC
Copies d'écran

[Programmation ésotérique]
Thue

[Minix]
Minix

[Divers]
Divers

Valid HTML 4.01! (C) 2003 - Laurent VOGEL
<lvl@club-internet.fr>