INTERCAL - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

INTERCAL, est une parodie de langage de programmation, et la référence canonique des langages de programmation ésotériques. Ce langage a été créé par Don Woods et James M. Lyon, deux étudiants de l'Université de Princeton, en 1972. Il tourne en dérision certains aspects des langages de programmation de l'époque, ainsi que la prolifération des propositions de construction de langage et de notation dans les années 1960. En conséquence, son humour peut paraître plutôt désuet pour des lecteurs modernes ayant grandi avec le C ou le Java.

Jimbo Lyon, un des auteurs d'INTERCAL

Selon le manuel original des auteurs,

« Le nom complet du compilateur est "Langage compilé n'ayant aucun acronyme prononçable", ce que, pour d'évidentes raisons, nous abrégerons en "INTERCAL". »

Il existe actuellement deux versions maintenues d'INTERCAL : C-INTERCAL (anciennement maintenu par Eric S. Raymond), et CLC-INTERCAL, maintenu par Claudio Calvelli.

Introduction

INTERCAL a pour vocation d'être complètement différent de tout autre langage informatique. Les opérations courantes dans d'autres langages ont une syntaxe cryptique et redondante en INTERCAL. D'après le Manuel de Référence d'INTERCAL :

«  C'est un fait bien connu et amplement démontré qu'une personne dont le travail est incompréhensible est tenue en haute estime. Par exemple, si quelqu'un devait affirmer que la manière la plus simple de stocker la valeur 65536 dans une variable 32-bit en INTERCAL est :

DO :1 <- #0¢#256
N'importe quel programmeur intelligent dirait que c'est absurde. Comme il s'agit effectivement de la méthode la plus simple, ce programmeur prendrait instantanément un air ahuri devant son responsable, qui aurait eu de toute évidence la bonne idée d'apparaître à ce moment-là, comme les responsables ont l'habitude de le faire. L'effet n'en serait pas moins radical si le programmeur avait eu raison.

 »

Le Manuel de Référence d'INTERCAL contient de nombreuses instructions paradoxales, insensées, ou autrement humoristiques (à la manière du jeu Kamoulox):

«  Attention ! Ne confondez en aucune circonstance la grille avec l'opérateur d'interpolation, excepté en cas de circonstances pouvant porter à confusion !  »

Le manuel contient également une "amygdale", comme expliqué dans cette note de bas de page: "4) Comme tous les autres manuels de référence ont des appendices, il a été décidé que le manuel d'INTERCAL devrait contenir un autre type d'organe retirable."

Le "circuit diagramme" du manuel de Référence INTERCAL, censé expliquer le fonctionnement de l'opérateur "select".

INTERCAL possède de nombreuses autres fonctionnalités prévues pour le rendre encore plus esthétiquement déplaisant au programmeur : il utilise des impératifs comme "READ OUT" ("lit à voix haute"), "IGNORE", "FORGET" ("oublie"), et des modificateurs comme "PLEASE" ("s'il te plaît"). Ce dernier mot-clé fournit deux raisons au compilateur pour rejeter le programme : si "PLEASE" n'apparaît pas assez souvent, le programme est considéré comme insuffisamment poli, et le message d'erreur en fait part ; s'il apparaît trop souvent, le programme peut être rejeté pour cause d'obséquiosité. Malgré le fait que cette fonctionnalité existât dans le compilateur INTERCAL d'origine, elle n'était pas documentée.

Le manuel d'INTERCAL donne des noms inhabituels à tous les caractères ASCII non alphanumériques : les apostrophes et les guillemets sont des "étincelles" et des "oreilles de lapin" respectivement (à l'exception de l'esperluette : comme l'affirme le Jargon File, "que pourrait-il bien exister de plus idiot ?"). L'opérateur d'assignation, représenté par un signe d'égalité (une "demi-grille" selon INTERCAL) dans de nombreux autres langages de programmation, est en INTERCAL une flèche gauche, "<-", à laquelle on se réfère sous le nom de "reçoit", et est faite avec un "angle" et un "ver".

L'implémentation originelle de Princeton utilisait des cartes perforées et le jeu de caractères EBCDIC. Afin de permettre à INTERCAL de fonctionner sur des ordinateurs utilisant l'ASCII, des substitutions durent être faites sur deux caractères : $ remplaça ¢ en tant qu'opérateur MINGLE ("mélanger"), lequel "représente le coût croissant du logiciel comparativement au matériel", et ? remplaça ∀ comme opérateur ou exclusif unaire pour "exprimer correctement la réaction de l'individu moyen lors de sa première rencontre avec un ou exclusif unaire". Dans les versions récentes de C-INTERCAL, les anciens opérateurs sont supportés en tant qu'alternatives ; et les programmes INTERCAL peuvent maintenant être encodés en ASCII, Latin-1, ou UTF-8.

Le groupe de discussion Usenet alt.lang.intercal est dévoué à l'étude et à l'appréciation d'INTERCAL avec d'autres langages ésotériques.

Malgré le fait que le langage soit intentionnellement obtus et bavard, INTERCAL est néanmoins Turing-complet : pour peu qu'il dispose d'assez de mémoire, INTERCAL peut résoudre n'importe quel problème qu'une machine de Turing universelle puisse résoudre. La plupart des implémentations d'INTERCAL le font très lentement, néanmoins. Un test de performance basé sur un crible d'Eratosthène, calculant tous les nombres premiers inférieurs à 65536, a été testé sur un ordinateur Sun SPARCStation-1. En C, il fallut moins d'une demi-seconde ; le même programme en INTERCAL prit un peu plus de dix-sept heures.

Il convient de noter qu'à peu près tous les langages de programmation autorisent des horreurs de notation aussi grandes ou pires que celles d'INTERCAL, comme le démontrent des concours comme l'International Obfuscated C Code Contest. Cependant, il s'agit généralement d'efforts intentionnels pour créer du code illisible, en contraste avec le design même d'INTERCAL, qui force virtuellement tout code à être illisible.

Selon le manuel d'INTERCAL, "l'objectif en concevant INTERCAL était de n'avoir aucun antécédent", à supposer ni en fonctionnalités de contrôle de flux, ni en opérateurs de manipulation de données. Les concepteurs ont presque réussi ; le seul antécédent connu est une instruction machine dans un ordinateur central BESM-6 soviétique, sorti en 1967, et qui est effectivement équivalente à l'opérateur SELECT d'INTERCAL.

Page générée en 0.101 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise