TECO
Un article de Wikipédia, l'encyclopédie libre.
TECO est un éditeur de texte développé au MIT dans les années 60, puis modifié par « un peu tout le monde ». Son nom signifiait à l'origine [paper] Tape Editor and COrrector (« Éditeur et Correcteur de Bande [papier] »), mais devint plus tard Text Editor and COrrector (« Éditeur et Correcteur de Texte »). Compte-tenu de tous les dialectes qu'il comprend, TECO a problablement été l'un des éditeurs les plus prolifiques, avant l'arrivée de vi et surtout de Emacs, dont TECO est l'ancêtre direct (Emacs signifiait à l'origine Editing MACroS running on TECO, « éditeur de macros fonctionnant sur TECO »).
Sommaire |
[modifier] Description et influence
TECO, remarquable pour sa syntaxe complexe, peut être considéré comme un langage de programmation interprété générique dédié à la manipulation de texte. Pratiquement chaque caractère est une commande, des séquences composées d'un ou de deux caractères remplacent les mots-clefs habituellement utilisés dans d'autres programmes d'édition de texte. De ce fait, toute chaîne de caractère peut être considérée comme une séquence de commandes TECO, bien qu'elle ne soit pas forcément utile à quelque chose. Un grand jeu consistait à deviner de tête les commandes TECO auxquelles correspondaient les prénoms des utilisateurs.
L'Emacs initial de Richard Stallman était implémenté en langage TECO. Toutefois, les versions suivantes, Emacs pour Multics puis GNU Emacs, furent implémentées en Lisp et Emacs Lisp. TECO acquit sa célébrité à la suite de son implémentation sur un PDP-6 de DEC, réalisée par le MIT pour le projet MAC en 1964. Cette implémentation affichait en permanence le texte édité sur un écran à tube cathodique, et permettait une édition en ligne interactive (ce qui n'était pourtant ni sa vocation, ni le mode dans lequel il était prévu pour fonctionner). Les versions suivantes de TECO étaient capables de piloter le mode plein écran de différents terminaux vidéo DEC RS232.
TECO était disponible pour plusieurs systèmes d'exploitation et ordinateurs, notamment le PDP-1, ITS sur le PDP-6 et le PDP-10, ainsi que TOPS-10 et TOPS-20 sur le PDP-10.
Un descendant de la version DEC distribuée pour le PDP-10 est toujours disponible sur Internet, ainsi que plusieurs implémentations partielles pour l'environnement MS-DOS/Windows.
Une version de TECO était fournie avec tous les systèmes d'exploitation DEC. La version disponible sur RT11 était capable de piloter l'afficheur graphique GT40, tandis que la version pour RSTS/E était tout bonnement implémentée comme un « environnement d'exécution » (RunTime System) multi-utilisateur et pouvait servir de système d'exploitation pour l'utilisateur. Il n'était même plus nécessaire de quitter TECO ! HP, ayant racheté Compaq/DEC, fournit toujours TECO avec VMS.
[modifier] Histoire
TECO a été développé à l'origine au MIT vers 1963 par Daniel L. Murphy, afin de l'utiliser sur deux ordinateurs PDP-1 appartenant à deux départements différents, tout deux abrités dans le même Bâtiment 26. Sur ces machines, le processus normal de développement impose l'utilisation d'un Friden Flexowriter pour préparer le code source hors-ligne, sur une bande continue de papier perforé. Les programmeurs des gros Mainframes IBM avait coutume de perforer leur code source sur des cartes perforées, en utilisant des perforatrices qui écrivaient des caractères matriciels lisibles par les humains en haut de chaque carte en même temps qu'elles la perforaient avec le langage machine. Ainsi, les programmeurs IBM pouvaient lire, insérer, effacer ou déplacer des lignes de code en manipulant directement les cartes. La bande perforée continue n'offrait pas un tel confort, et nécessité fut mère de l'édition en ligne.
Un des tout premiers éditeurs pour PDP-1 fut (officiellement !) nommé Expensive Typewriter (« Machine à écrire coûteuse »). Écrit par Stephen D. Piner, il s'agissait du plus rudimentaire des éditeurs ligne par ligne que l'on puisse imaginer, ne disposant pas même de la fonctionnalité « rechercher/remplacer ». Son nom a été choisi comme clin d'œil ironique à un précédent éditeur, plutôt lourd, appelé Colossal Typewriter (« Machine à écrire colossale »). Même à cette époque, l'édition en ligne permettait de gagner du temps dans le cycle de débogage. Un autre programme dans la même veine, Expensive Desk Calculator, fut écrit par les hackers du PDP-1.
L'objectif initialement fixé pour TECO était d'utiliser plus efficacement le PDP-1. Comme envisagé dans le manuel, plutôt que d'effectuer l'édition de façon « coûteuse » en restant devant une console, l'opérateur pouvait examiner le texte fautif et préparer une « bande corrective », décrivant les opérations d'édition à effectuer sur le texte. Il lui suffisait ensuite de donner les bandes contenant les sources et la correction au PDP-1, via le lecteur de bande haute-vitesse (200 caractères par seconde). En exécutant TECO, la bande corrigée était alors immédiatement perforée avec la perforatrice rapide (60 caractères par seconde). Il restait alors juste à charger et à exécuter l'assembleur, sans que du temps soit perdu pour l'édition en ligne.
Les opérations de recherches sophistiquées (pour cette époque) de TECO ont été motivées par le fait que les bandes produites hors ligne par la Flexowriter ne disposaient par de numéros de ligne. Par conséquent, l'emplacement des éditions devaient être précisées par le contexte plutôt que par un numéro de ligne. Les différentes structures de contrôle de TECO (boucles et conditions, faisant de TECO un langage turing-complet) furent introduites afin de fournir des capacités de description suffisantes à la bande corrective. La syntaxe concise minimisait le nombre de touches nécessaires pour préparer la bande corrective.
La bande corrective était en réalité un programme, qui nécessitait un débogage comme n'importe quel autre programme. Les pièges de la plus simple des opérations globales de rechercher/remplacer devinrent évidents. En pratique, l'édition avec TECO était effectuée en ligne, comme elle était faite avec Expensive Typewriter (bien que TECO soit certainement un éditeur bien plus complet en terme de fonctionnalités, rendant l'édition nettement plus efficace). La version initiale du PDP-1 n'avait pas d'afficheur vidéo. La seule façon d'observer l'état du texte durant le processus d'édition était d'entrer des commandes permettant d'imprimer le texte (ou une sous-partie) sur la console télétype.
[modifier] Exemple de code TECO
Code | Explication |
---|---|
ER fichier $ | Ouvrir un fichier en lecture |
[ q ... ] q | Empiler ... dépiler dans le registre Q (qui peut contenir des nombres, du texte ou du code) |
< code > | Itérer le code. Il existe des instructions équivalentes aux next, break, continue... |
[modifier] Exemple de programmes TECO
Le programme qui suit est un tri appliqué au tampon de texte courant, basé sur le premier caractère de chaque ligne, repris du PDP-11 TECO User's Guide. Deux version, la « goto » et la « structurée », sont présentées. TECO ignore la casse et les espaces blancs (à l'exception des tabulations, qui est une commande d'insertion).
[modifier] Exemple 1
!START! j 0aua ! Aller au début, charger le premier caractère dans le registre A ! !CONT! l 0aub ! Charger le premier caractère de la ligne suivante dans le registre B ! qa-qb"g xa k -l ga 1uz ' ! Si A > B, inverser les lignes et positionner un drapeau dans le registre Z ! qbua ! Charger B dans A ! l z-."g -l @o/CONT/ ' ! Recommencer s'il reste des lignes dans le tampon ! qz"g 0uz @o/START/ ' ! Répéter si une inversion a eu lieu lors de l'itération précédente !
[modifier] Exemple 2
0uz ! Effacer le drapeau de répétition ! <j 0aua l ! Charger le premier caractère dans le registre A ! <0aub ! Charger le premier caractère de la ligne suivante dans B ! qa-qb"g xa k -l ga -1uz ' ! Si A > B, inverser les lignes et positionner un drapeau dans le drapeau ! qbua ! Charger B dans A ! l .-z;> ! Recommencer s'il reste des lignes dans le tampon ! qz;> ! Répéter si une inversion a eu lieu lors de l'itération précédente !
[modifier] Anecdotes
- La plupart des langages de commande DEC interprètait la commande MAKE nomfichier comme une demande de démarrage de TECO et de création du fichier appelé "nomfichier". De nombreux (sinon la plupart) des TECO répondaient à la commande MAKE LOVE (« faire l'amour ») par le message Not war? (« pas la guerre ? »).
- TECO était considéré comme l'un des premiers langage « Write-Only » (écriture uniquement). Cela signifie que vous pouvez tout à fait écrire un programme TECO, mais il est bien peu probable que vous puissiez décrire ce que fait un programme arbitraire en TECO juste en le regardant. Plus récemment, d'autres langages, tels que APL, Perl ou Forth, ont aussi acquis cette réputation bien peu flatteuse.
- L'outil de macro pour la ligne de commande TECO s'appelait MUNG. Il exécutait le programme ou la macro TECO spécifiée sur le fichier spécifié. MUNG est l'un des tout premiers acronymes récursifs, signifiant MUNG Until No Good.
- Lorsque le VAX fut introduit, DEC annonça un éditeur de texte plein écran plus « convivial », EDT, pour remplacer TECO. Quand les utilisateurs se plaignaient que leur éditeur favori n'avait plus de support, ils s'entendaient dire que « TECO n'est pas un éditeur de texte, c'est un langage de programmation ».
[modifier] Voir aussi
[modifier] Liens internes
[modifier] Bibliographie
- TECO pocket guide. Digital Equipment Corporation, 1978. Order No. AV-D530A-TK. 17 pp. [1] ;
- TECO 6. PDP-6 Memo No. 2, Memorandum MAC-M-191, October 29, 1964. [2].
[modifier] Liens externes
- La collection TECO de Pete Siemsen ;
- La page TECO de Tom Almy, qui contient un TECO basé sur les documentations de Pete Siemsen sur TECOC et DECUS, ainsi que des versions Linux et OS/2.
Article basé sur le Jargon File, dont le contenu est du domaine public.