web/nec/confs/passageenseine/2023/baguette.org
2023-06-23 22:06:48 +02:00

2.3 KiB

Les langages exotiques ludiques : Le cas du Baguette#

#+html_link_up:../roadmap.html

Introduction

Rediffusion - Site

Conférence faite par Charlotte Thomas, étudiante en Licence 2 à l'ISTIC et en stage au sein de l'IRISA/INRIA.

Les langages exotiques

Un langage exotique, ou esolang en anglais, fait partie de l'informatique récréative. On fait ça pour s'amuser et n'a pas vocation à être utile.

Le langage exotique le plus connu : le brainfuck.

D'autres langages rigolos : Befunge (programmation 2D), 2014 et 2017 qui, comme leurs noms l'indiquent, ne fonctionnent qu'en 2014 et 2017.

Le principal intérêt de ces langages est pédagogique. On apprend à faire un langage simple. Baguette# était au début un simili-Basic, dont l'interpréteur est écrit en Ocaml. Il a été codé sans connaissance d'algorithme d'analyse syntaxique, ce qui a été entre autres appris lors de la réalisation de ce projet.

Baguette#

Ce langage n'a aucun intérêt si ce n'est apprendre (et être invitée à PSES). Les mots clés sont pertinents avec le nom, tournant autour de la pâtisserie (PARIS BREST pour ouvrir un guillemet…).

Il n'a pas d'opération infixe, ne sachant pas les réaliser à l'implémentation de l'interpréteur. Il faut écrire les opérations de la manière suivante : + 2 21.

Particularité : il n'a pas de boucles, il faut utiliser des goto.

Le langage peut être écrit avec des émojis : c'est grâce à une propriété d'Ocaml. Les chaînes de caractères sont encodées en UTF-8, il est donc possible de faire du pattern matching dessus.

Le langage a un manageur de paquets, comme pip ou npm et s'appelle Boulangerie. Il s'adapte selon la langue locale : en français les commandes sont en anglais et vice-versa. L'interpréteur et le manageur de paquets ne sont disponibles que sur MacOS et Linux, à cause d'une bibliothèque utilisée qui n'existe pas sur Windows.

Il n'y a pas de mode Emacs… pour l'instant.

Footnotes


1

Cela me fait penser au Lisp où l'addition est (+ 2 2).