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 !
Whitespace est un langage de programmation ésotérique qui tire son nom du fait que seuls trois caractères sont significatifs dans son code source : l'espace (0x20), la tabulation (0x09) et le saut de ligne (0x0A).
Tous les autres caractères visibles (lettres, chiffres, ponctuation, etc.) sont ignorés par l'interpréteur.
Un programme Whitespace peut donc sembler vide ou contenir un texte anodin alors que les instructions réelles sont encodées dans les caractères blancs. Le code n'est pas absent, mais invisible à l'œil nu.
Afin de rendre le code lisible par l'utilisateur, il est courant de représenter : S pour Space (espace), T pour Tab (tabulation), L pour Line feed (saut de ligne)
Le fonctionnement est inverse de celui de la plupart des langages de programmation, dans lesquels les espaces/vides sont généralement ignorés ou utilisés uniquement pour la mise en forme.
Whitespace est un langage impératif basé sur une pile (stack) et un tas (heap). L'exécution repose sur des instructions structurées, chacune commençant par un préfixe appelé IMP (Instruction Modification Parameter). Il existe 5 catégories d'IMP : 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.
Décoder du Whitespace consiste à lire séquentiellement les caractères significatifs (espaces, tabulations, sauts de ligne), à identifier les IMP, puis à interpréter les instructions selon la spécification du langage.
dCode utilise WS2JS, un intrepréteur Javascript par Luilak (MIT License) ici (L'exécution se fait dans le navigateur de l'utilisateur) dCode propose 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)
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.
Le code peut être dissimulé dans un texte ordinaire, car tous les caractères visibles sont ignorés par l'interpréteur. Il s'agit d'un procédé de stéganographie : l'information est cachée dans la structure invisible du fichier.
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). 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 (Licence de libre diffusion Creative Commons CC-BY).
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 01/04/2026,