TECO

TECO

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 probablement é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

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.

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 termes 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.

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...

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).

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 !

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 !

Anecdotes

  • La plupart des langages de commande DEC interprétaient 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 langages « 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.
  • TINT est une des premières implémentations TECO. Son nom est un acronyme récursif qui signifie en anglais « TINT Is Not TECO » (littéralement, « TINT n'est pas TECO»). Il s'agit d'après le site GNU[1],[2] du premier acronyme récursif utilisé dans le milieu hacker.
  • 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 ».

Notes et références

  1. (en) Discours de Richard Stallman le 30 octobre 1986 en Suède.
  2. (en) FAQ GNU/Linux.
  • Article basé sur le Jargon File, dont le contenu est du domaine public.

Voir aussi

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].

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article TECO de Wikipédia en français (auteurs)

Игры ⚽ Нужна курсовая?

Regardez d'autres dictionnaires:

  • TecO — Kategorie: Forschungseinrichtung Karlsruher Institut für Technologie Standort der Einrichtung: Karlsruhe Art der Forschung: Angewandte Forschung Fächer: Informatik Leitung …   Deutsch Wikipedia

  • TECO — may refer to* TECO, the [http://www.tecotested.com/history Timber Engineering Company] , originally a research subsidiary of the American Forest Paper Association, best known for its TECO timber connectors, now sold and manufactured by Cleveland… …   Wikipedia

  • TECO — bezeichnet: eine Software, siehe TECO (Texteditor) ein taiwanesisches Elektronikunternehmen, siehe TECO Electric eine Forschungseinrichtung des Karlsruher Institut für Technologie, siehe TecO Diese Seite ist e …   Deutsch Wikipedia

  • Teco — bezeichnet: eine Software, siehe TECO (Editor) ein taiwanesisches Elektronikunternehmen, siehe TECO Electric …   Deutsch Wikipedia

  • teco — |é| s. m. [Portugal: Trás os Montes] Caixão de madeira ou de cortiça.   ‣ Etimologia: origem obscura teco |é| s. m. 1.  [Brasil] Choque de uma bola noutra. 2.  [Brasil, Informal] Pancada com uma pedra ou com outro objeto arremessado. 3.  [Brasil …   Dicionário da Língua Portuguesa

  • Teco — puede referirse a: Text Editor and Corrector: Editor de texto desarrollado en los años 60. Cuerpo Superior de Técnicos Comerciales y Economistas del Estado: Cuerpo de funcionarios de la Administración Pública de España. Esta página de… …   Wikipedia Español

  • teco — n. m. (Belgique) Disjoncteur …   Encyclopédie Universelle

  • teco — {{hw}}{{teco}}{{/hw}} forma pron. (lett.) Con te …   Enciclopedia di italiano

  • tecó — adv. 1.  [Brasil: Norte] Do mesmo modo. 2. Na forma do costume …   Dicionário da Língua Portuguesa

  • teco — sustantivo masculino 1. Área: militar Origen: Argentina. Teniente coronel …   Diccionario Salamanca de la Lengua Española

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”