Outil pour décoder/code en whitespace, un langage de programmation exotique qui n'utilise que des caractères blancs/invisibles comme espace, tabulation ou retour à la ligne.
Langage Whitespace - dCode
Catégorie(s) : Langage de Programmation
dCode est gratuit et ses outils sont une aide précieuse dans les jeux, les maths, les énigmes, les géocaches, et les problèmes à résoudre au quotidien !
Une suggestion ? un problème ? une idée ? Écrire à dCode !
Le langage de programmation Whitespace tire son nom du fait qu'il utilise uniquement les 3 caractères blancs : espace, tabulation et retour à la ligne. Le code source des programmes écrits en Whitespace sont donc invisibles.
Afin de rendre le code visible, il est courant d'utiliser 3 caractères : S pour espace (Space), T pour tabulation (Tab), et L pour nouvelle ligne (Line feed).
Tout les caractères visibles sont ignorés par le programme et peuvent servir de commentaire (ou pour attirer l'attention). C'est exactement le fonctionnement inverse de la plupart des langages de programmation ou espaces sont généralement ignorés.
Le whitespace utilise une pile, un tas (heap) ainsi que des instructions structurées, qui commencent par un IMP (Instruction Modification Parameter) parmi 5 possibles : S (espace) modifie la pile, TS (tab+espace) réalise un calcul, TT (tab+tab) accède au tas (heap) L (saut de ligne) gère les goto/jump du programme et TL (tab+saut de ligne) gère les entrées/sorties.
La liste complète des 22 instructions du Whitespace :
IMP+Commande | Paramètre | Description |
---|---|---|
S S | Nombre | Empile le nombre |
S LS | Copie le haut de la pile | |
S LT | Inverse les deux éléments du haut de la pile | |
S LL | Enlève le haut de la pile | |
TS SS | Addition | |
TS ST | Soustraction | |
TS SL | Multiplication | |
TS TS | Division (entière) | |
TS TT | Modulo | |
TT S | Enregistre dans le tas | |
TT T | Récupère le tas | |
L SS | Label | Créé un label dans le programme |
L ST | Label | Appel du label |
L SL | Label | Jump vers le label |
L TS | Label | Jump vers le label si le haut de la pile est 0 |
L TT | Label | Jump vers le label si le haut de la pile est < 0 |
L TL | Fin de la subroutine, et retour | |
L LL | Fin du programme | |
TL SS | Affiche le haut de la pile comme un caractère ASCII | |
TL ST | Affiche le haut de la pile comme un nombre entier | |
TL TS | Lit un caractère et l'enregistre à l'adresse décrite par le haut de la pile | |
TL TT | Lit un nombre et l'enregistre à l'adresse décrite par le haut de la pile |
Les nombres respectent une syntaxe propre: signe + valeurs absolue en binaire + saut de ligne. Le signe est S (espace) pour positif ou T (tabulation) pour négatif. La valeur du nombre s'écrit en binaire avec S (espace) pour 0 et T (tabulation) pour 1.
Exemple : Le nombre +100 est positif (codé S) et a pour valeur binaire 1100100 (codé TTSSTSS), donc il se code S TTSSTSS L
Exemple : SS STTSSTSSL TLSS correspond à l'instruction empile le nombre 100 et affiche le sous forme de caractère ASCII, le programme affiche donc d.
L'interprétation du White-space correspond à la lecture et l'application des instructions codées.
Sur dCode, il est possible de lire un fichier (généralement avec l'extension .ws) ou de copier-coller un programme (attention à ne pas rajouter un espace ou un retour à la ligne involontairement car celà pourrait causer des erreurs)
L'exécution se fait dans le navigateur, avec JavaScript.
dCode utilise WS2JS, un intrepréteur Javascript par Luilak (MIT License) ici
Le message est invisible, composé uniquement d'espace, de tabulations et de retour à la ligne.
Parfois, les caractères S, T et C accompagnent le code.
Il est possible d'accompagner le code de n'importe quel texte (caractères visibles uniquement) sans l'affecter, c'est donc une excellente méthode de stéganographie.
Le langage Whitespace a été conçu comme un langage de programmation ésotérique, ce qui signifie qu'il n'est pas destiné à être utilisé comme un outil pratique, mais plutôt comme un moyen de défier et d'amuser les programmeurs.
Whitespace a été décrit le 1er avril 2003 par Edwin Brady et Chris Morris (présenté comme un poisson d'avril) à l'Université de Durham.
dCode se réserve la propriété du code source pour "Langage Whitespace". Tout algorithme pour "Langage Whitespace", applet ou snippet ou script (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou toutes fonctions liées à "Langage Whitespace" (calculer, convertir, résoudre, décrypter / encrypter, déchiffrer / chiffrer, décoder / encoder, traduire) codés en langage informatique (Python, Java, C#, PHP, Javascript, Matlab, etc.) ou toute base de données, ou accès API à "Langage Whitespace" ou tout autre élément ne sont pas publics (sauf licence open source explicite type Creative Commons). Idem avec le téléchargement pour un usage hors ligne sur PC, mobile, tablette, appli iPhone ou Android.
Rappel : dCode est une ressource éducative et pédagogique, accessible en ligne gratuitement et pour tous.
Le contenu de la page "Langage Whitespace" ainsi que ses résultats peuvent être copiés et réutilisés librement, y compris à des fins commerciales, à condition de mentionner dCode.fr comme source.
L'export des résultats est gratuit et se fait simplement en cliquant sur les icônes d'export ⤓ (format .csv ou .txt) ou ⧉ copier-coller.
Pour citer dCode.fr sur un autre site Internet, utiliser le lien :
Dans un article scientifique ou un livre, la citation bibliographique recommandée est : Langage Whitespace sur dCode.fr [site web en ligne], consulté le 16/04/2025,