« INTERCAL » : différence entre les versions
Contenu supprimé Contenu ajouté
Remplacement du lien brisé vers le manuel de réference. |
m Révocation des modifications de 82.127.182.126 (retour à la dernière version de Xqbot) |
||
Ligne 10 :
[[Image:Jimbo Lyon.jpg|droite|vignette|Jimbo Lyon, un des auteurs d'INTERCAL.]]
Selon le manuel original des auteurs<ref name="manual72">
{{Citation bloc|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 ».}}
Ligne 27 ⟶ 26 :
{{Citation bloc|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 "[[Tonsille|amygdale]]", comme expliqué dans cette note de bas de page: "4) Comme tous les autres manuels de référence ont des annexes ([[Appendice iléo-
[[Image:INTERCAL Circuitous Diagram.svg|vignette|gauche|Le "circuit diagramme" du manuel de Référence INTERCAL, censé expliquer le fonctionnement de l'opérateur "select".]]
Ligne 41 ⟶ 40 :
Bien 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. Un test de performance basé sur un [[crible d'Eratosthène]], calculant tous les nombres premiers inférieurs à 65536, a été évalué sur un ordinateur [[Sun Microsystems|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<ref name="stross">{{article|langue=en|titre=Intercal -- the Language From Hell|url=http://catb.org/~esr/intercal/stross.html|prénom=Charles|nom=Stross|date=1992-09|périodique=[[Computer Shopper (UK magazine)|Computer Shopper (UK)]]}}</ref>.
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
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<ref name="machine_instruction">[http://www.mailcom.com/besm6/instset.shtml#pack Broukhis, Leonid. "BESM-6 Instruction Set"]</ref> dans un ordinateur central [[BESM-6]] soviétique, sorti en 1967, et qui est effectivement équivalente à l'opérateur SELECT d'INTERCAL.
== Dialectes ==
L'INTERCAL Woods–Lyon original était très limité dans ses capacités d'[[entrée/sortie]] : les seules entrées acceptables étaient des nombres épelés en toutes lettres, et la seule sortie possible était une version étendue des [[chiffres romains]]. Un peu plus tard, il y eut une 'implémentation Atari', au sujet de laquelle des notes sont fournies dans le manuel de référence d'INTERCAL ; elle "diffère de la version originelle de Princeton
La réimplémentation C-INTERCAL, disponible sur Internet, a rendu le langage plus populaire parmi les dévots de la programmation ésotérique<ref name="nickm"/>. Le dialecte C-INTERCAL possède quelques différences par-rapport à l'INTERCAL original et introduit quelques nouvelles fonctionnalités, comme une commande <code>COME FROM</code> ''("arrive de")'' et un moyen de réaliser de l'E/S de texte basé sur le Modèle de Texte de Turing<ref name="manualick">{{lien brisé|consulté le=2013-04-10|url=http://www.progsoc.uts.edu.au/~sbg/intercal/ick.html|titre=C-INTERCAL supplemental reference manual}}</ref>.
Ligne 89 ⟶ 88 :
Les commandes en INTERCAL commencent toutes par un 'identificateur de commande' ; en INTERCAL-72, ceci peut être <code>DO</code>, <code>PLEASE</code>, ou <code>PLEASE DO</code>, chacun desquels ayant la même signification en ce qui concerne le programme (mais l'utilisation de l'un d'entre eux en excès provoque le rejet du programme, une fonctionnalité non documentée d'INTERCAL-72 qui fut mentionnée dans le manuel du C-INTERCAL<ref name="manualick"/>), ou bien par une forme inversée (avec <code>NOT</code> ou <code>N'T</code> ajouté à l'identificateur)<ref name="manual72"/>. Backtracking INTERCAL, une variante moderne, autorise également des variantes comme <code>MAYBE</code> (''« peut-être »'', qui peut être combiné avec PLEASE ou DO) en tant qu'identificateurs de commande, ce qui introduit la notion de hasard<ref name="backtrack">[http://www.cse.unsw.edu.au/~malcolmr/intercal/backtracking.html Backtracking in Intercal]</ref>. Avant l'identificateur, un numéro de ligne optionnel peut être donné (un entier encadré par des parenthèses) ; après l'identificateur, un pourcentage de chance que la ligne soit exécutée peut être donné au format <code>%50</code>, lequel prend par défaut la valeur 100 %<ref name="manual72"/>.
En INTERCAL-72, les structures de contrôle
C-INTERCAL fournit aussi l'instruction <code>COME FROM</code>, qui s'écrit <code>DO COME FROM (''ligne'')</code> ; le CLC-INTERCAL et les versions les plus récentes du C-INTERCAL fournissent également des versions calculatoires de COME FROM (<code>DO COME FROM ''expression''</code>) et NEXT FROM, qui fonctionne comme COME FROM mais sauvegarde également une adresse de retour sur la ''PROCHAINE'' pile<ref name="clc"/>.
Ligne 96 ⟶ 95 :
=== Divers ===
L'entrée (qui utilise l'instruction <code>WRITE IN</code>) et la sortie (qui utilise l'instruction <code>READ OUT</code>) n'emploient pas le format habituel ; en INTERCAL-72, WRITE IN gère l'entrée d'un nombre écrit en toutes lettres en langue anglaise (comme SIX FIVE FIVE THREE FIVE), et READ OUT l'imprime en [[chiffres romains]]<ref name="manual72"/>. Les versions plus récentes ont leur propre système d'E/S<ref name="clc"/>{{,}}<ref name="manualick"/>. Les commentaires peuvent être réalisés en utilisant les inverseurs d'identificateur de commande NOT ou N'T ; ceux-ci provoquent l'abstention d'exécution (ABSTAIN) de ces lignes de sorte qu'elles n'ont pas d'effet<ref name="manual72"/> (une ligne peut être en abstention même si elle ne possède pas une syntaxe valide ; les erreurs de syntaxe surviennent à l'exécution, et seulement à ce moment-là quand la ligne n'est pas en abstention.)<ref name="manual72"/>.
== Hello, world ==
Ligne 150 ⟶ 149 :
== Liens externes ==
* [http://www.catb.org/~esr/intercal/ Page
* [http://www.muppetlabs.com/~breadbox/intercal/ Ressources pour INTERCAL sur Internet], incluant plusieurs implémentations (en anglais)
* [http://www.techworld.com.au/article/251892/-z_programming_languages_intercal Interview de Don Woods par Computerworld au sujet d'INTERCAL] (en anglais)
|