TECO (Texteditor) - TECO (text editor)

TECO
Originalautor(en) Dan Murphy
Erstveröffentlichung 1962/63
Betriebssystem OS/8 , ITS , TOPS-10 , TOPS-20 , RT-11 , RSTS/E , RSX-11 , OpenVMS , Multics
Typ Texteditor

TECO (Tee'koh / / t i k / ), Text - Editor & Corrector ist sowohl ein zeichenorientierten Texteditor und eine Programmiersprache, die im Jahr 1962 für den Einsatz auf entwickelt wurde , Digital Equipment Corporation Computer und ist seit verfügbar wurde auf PCs und Unix . Dan Murphy entwickelte TECO während seines Studiums am Massachusetts Institute of Technology (MIT).

Laut Murphy war das ursprüngliche Akronym "Tape Editor and Corrector", weil " Lochpapierband das einzige Medium zum Speichern der Programmquelle auf unserem PDP-1 war. Es gab keine Festplatte, Diskette, Magnetband (Magtape), oder Netzwerk." Als TECO für den allgemeinen Gebrauch zur Verfügung gestellt wurde, war der Name "Text Editor and Corrector" geworden, da sogar die PDP-1-Version zu diesem Zeitpunkt andere Medien unterstützte. Es wurde später von vielen anderen Leuten modifiziert und ist ein direkter Vorfahr von Emacs , das ursprünglich in TECO-Makros implementiert wurde.

Beschreibung

TECO ist nicht nur ein Editor, sondern auch eine interpretierte Programmiersprache zur Textmanipulation. Beliebige Programme (genannt "Makros") zum Suchen und Ändern von Text geben ihm große Macht. Im Gegensatz zu regulären Ausdrücken war die Sprache jedoch zwingend erforderlich , obwohl einige Versionen einen "oder"-Operator bei der String-Suche hatten.

TECO hat nicht wirklich eine Syntax ; Jedes Zeichen in einem Programm ist ein zwingender Befehl, der an seine entsprechende Routine gesendet wird. Diese Routine kann weitere Zeichen aus dem Programmstrom lesen (was die Wirkung von String-Argumenten ergibt), die Position des "Programmzählers" ändern (was die Wirkung von Kontrollstrukturen ergibt) oder Werte auf einen Wertestapel legen (was die Wirkung von verschachtelten Klammern). Aber es gibt nichts, was Operationen wie das Springen mitten in einen Kommentar verhindert, da es keine Syntax und kein Parsing gibt.

TECO ignoriert Groß- / Kleinschreibung und Leerzeichen (außer tab , einem Einfügebefehl).

Ein satirisches Essay über Computerprogrammierung, Real Programmers Don't Use Pascal , schlug vor, dass ein übliches Spiel für TECO-Fans darin besteht, ihren Namen als Befehlsfolge einzugeben und dann herauszufinden, was passieren würde. Derselbe Aufsatz bei der Beschreibung von TECO prägte das Akronym YAFIYGI , was "Du hast darum gebeten, du hast es" (wie WYSIWYG ) bedeutet.

Auswirkung

Der ursprünglich von David A. Moon und Guy L. Steele Jr. gestartete EMACS- Editor wurde in TECO als ein Satz von Editor MACroS implementiert. TECO wurde nach einer PDP-6- Implementierung der Digital Equipment Corporation (DEC), die 1964 beim Projekt MAC des MIT entwickelt wurde, weiter verbreitet . Diese Implementierung zeigte den bearbeiteten Text kontinuierlich visuell auf einem CRT- Bildschirm an und wurde als interaktiver Online-Editor verwendet. Spätere Versionen von TECO waren in der Lage, den Vollbildmodus auf verschiedenen DEC- RS232 -Videoterminals wie dem VT52 oder VT100 zu steuern .

TECO war für mehrere Betriebssysteme und Computer verfügbar, einschließlich des PDP-1- Computers, des PDP-8 (unter OS/8), des Inkompatiblen Timesharing-Systems (ITS) auf dem PDP-6 und PDP-10 sowie TOPS-10 und TOPS-20 auf dem PDP-10 . Eine Version von TECO wurde mit allen DEC-Betriebssystemen bereitgestellt; die für RT11 verfügbare Version konnte das GT40-Grafikdisplay ansteuern , während die für RSTS/E verfügbare Version als Mehrbenutzer- Laufzeitsystem implementiert wurde und als vollständige Betriebsumgebung des Benutzers verwendet werden konnte; der Benutzer musste TECO nie wirklich verlassen. Das TECO-Makro VTEDIT (Video Terminal Editor) wurde häufig auf RSTS/E- und VAX- Systemen mit Terminals mit direkter Cursorsteuerung (zB VT52 und VT100 ) verwendet, um einen visuellen Vollbild-Editor ähnlich der Funktion des gleichzeitig entwickelten Emacs bereitzustellen .

TECO ist weiterhin von VSI in OpenVMS enthalten und wird mit dem EDIT/TECOBefehl aufgerufen .

Ein Nachkomme der für den PDP-10 vertriebenen Version DEC ist noch im Internet verfügbar, zusammen mit mehreren Teilimplementierungen für die MS-DOS / Microsoft Windows Umgebung.

Geschichte

TECO wurde ursprünglich am MIT in der Umgebung von 1963 entwickelt sie Daniel L. Murphy für den Einsatz auf zwei PDP-1 - Computer, zu verschiedenen Abteilungen gehört, beide 26. Auf diesen Maschinen in der MIT - Gebäuden untergebracht, der normale Entwicklungsprozess die Verwendung eines beteiligten Schreibautomaten um Quellcode offline auf einem durchgehenden Streifen Lochstreifen vorzubereiten. Programmierer der großen IBM-Mainframes stanzten ihren Quellcode normalerweise auf Karten , wobei sie Schlüsselstanzen verwendeten , die gleichzeitig mit dem Stanzen jedes maschinenlesbaren Zeichens menschenlesbare Punktmatrixzeichen auf die Oberseite jeder Karte druckten . Somit konnten IBM-Programmierer Codezeilen lesen, einfügen, löschen und verschieben, indem sie die Karten im Kartenstapel physisch manipulierten. Gelochtes Papierband bot keine derartigen Annehmlichkeiten, was zur Entwicklung der Online-Bearbeitung führte.

Ein früher Redakteur für die PDP-1 wurde „ Teuer Schreibmaschine “ genannt. Geschrieben von Stephen D. Piner, war es der rudimentärste vorstellbare zeilenorientierte Editor, dem sogar die Funktionen zum Suchen und Ersetzen fehlten. Sein Name wurde als ironischer Anstoß zu einem früheren, ziemlich aufgedunsenen Redakteur namens „ Colossal Typewriter “ gewählt. Schon damals konnte die Online-Bearbeitung im Debugging-Zyklus Zeit sparen. Ein anderes Programm, das von den PDP-1- Hackern geschrieben wurde, war Expensive Desk Calculator , in ähnlicher Weise.

Der ursprünglich erklärte Zweck von TECO bestand darin, das PDP-1 effizienter zu nutzen. Wie im Handbuch vorgesehen, würde man, anstatt die Bearbeitung "teuer" durchzuführen, indem man an einer Konsole sitzt , einfach den fehlerhaften Text untersuchen und ein "Korrekturband" vorbereiten, das die an dem Text durchzuführenden Bearbeitungsoperationen beschreibt. Man würde das Quellband und das Korrekturband effizient über seinen Hochgeschwindigkeitsleser (200 Zeichen pro Sekunde) in den PDP-1 einspeisen. Mit TECO würde es sofort ein bearbeitetes Band mit seiner Hochgeschwindigkeitsstanze (60 Zeichen pro Sekunde) stanzen. Man konnte dann sofort mit dem Laden und Ausführen des Assemblers fortfahren, ohne Zeit für die Online-Bearbeitung zu verlieren.

Die ausgeklügelten Suchvorgänge von TECO wurden durch die Tatsache motiviert, dass die Offline-Flexowriter-Ausdrucke nicht zeilennummeriert waren. Bearbeitungsorte mussten daher nach Kontext und nicht nach Zeilennummer angegeben werden. Die verschiedenen Schleifen- und Bedingungskonstrukte (die TECO Turing-vollständig machten ) wurden eingeschlossen, um dem Korrekturband eine ausreichende Beschreibungskraft zu verleihen. Die knappe Syntax minimierte die Anzahl der Tastenanschläge, die zum Vorbereiten des Korrekturbands erforderlich waren.

Das Korrekturband war ein Programm und erforderte wie jedes andere Programm eine Fehlersuche. Die Fallstricke selbst des einfachsten globalen Suchens und Ersetzens wurden bald offensichtlich. In der Praxis wurde die TECO-Bearbeitung online durchgeführt, genau wie bei Expensive Typewriter (obwohl TECO sicherlich ein funktionsreicherer Editor war als Expensive Typewriter, so dass die Bearbeitung mit TECO viel effizienter war). Die ursprüngliche PDP-1-Version hatte keine Bildschirmanzeige. Die einzige Möglichkeit, den Zustand des Textes während des Editiervorgangs zu beobachten, bestand darin, Befehle einzugeben, die dazu führten, dass der Text (oder Teile davon) auf der Konsolenschreibmaschine abgetippt werden.

Bis 1964 wurde eine spezielle Version von TECO ( TECO-6 ) auf dem PDP-6 am MIT implementiert . Diese Version unterstützte die visuelle Bearbeitung, indem eine Bildschirmanzeige verwendet wurde, die den Inhalt des Bearbeitungspuffers in Echtzeit anzeigte und bei Änderungen aktualisiert wurde. Zu den Schöpfern von TECO-6 gehörten Richard Greenblatt und Stewart Nelson .

Am MIT wurde die Entwicklung von TECO im Herbst 1971 fortgesetzt. Carl Mikkelsen hatte einen Echtzeit- Editiermodus implementiert, der lose auf den TECO-6- Grafikkonsolenbefehlen basierte, jedoch mit den neu installierten Datapoint -3300 CRT-Textdisplays arbeitete. Die TECO-Pufferimplementierung war jedoch furchtbar ineffizient für die Verarbeitung von Einfüge- oder Löschfunktionen für einzelne Zeichen – die Bearbeitung verbrauchte 100 % des PDP-10. Mit Unterstützung von Richard Greenblatt implementierte Carl im Sommer 1972 den TECO-Pufferspeicher neu und reformierte die Makros als nativen PDP-10-Code. Da der Echtzeitmodus durch Eingabe von cntl+ aufgerufen wurde R, wurde dies als Control-R-Modus bezeichnet. Gleichzeitig fügte Rici Liknaitski Makros zur Eingabezeit ( cntl+ ]) hinzu, die so funktionierten, wie die Befehlszeichenfolge gelesen und nicht ausgeführt wurde. Lesezeitmakros machten die TECO-Hilfstextpuffer, die sogenannten Q-Register, nützlicher. Carl erweiterte den Namensraum des Q-Registers. Mit Lesezeitmakros, einem großen Q-Register-Namensraum und effizienten Pufferoperationen war die Voraussetzung geschaffen, jeden Schlüssel an ein Makro zu binden. Diese Bearbeitungsmakros entwickelten sich zu Emacs .

Die VMS-Implementierung hat eine lange Geschichte - sie begann als TECO-8, implementiert in PDP-8-Assembly. Dieser Code wurde in die PDP-11-Assembly übersetzt, um TECO-11 zu produzieren. TECO-11 wurde in frühen Versionen von VAX/VMS im PDP-11-Kompatibilitätsmodus verwendet. Es wurde später von der PDP-11-Assembly in die VAX-Assembly übersetzt, um TECO32 zu produzieren. TECO32 wurde dann mit den binären Übersetzungsdienstprogrammen VEST und AEST konvertiert, um es mit OpenVMS auf Alpha bzw. Itanium kompatibel zu machen .

OS/8 MUNG-Befehl

Der OS/8 CCL MUNG- Befehl rief TECO auf, um das angegebene .TE TECO-Makro zu lesen und auszuführen. Optionale Befehlszeilenparameter sorgten für zusätzliche Anpassungsfähigkeit.

Als Programmierwerkzeug

Während und kurz nach den Jahren der Lochkarten-Ära gab es Quellprogramme, die als Lochkarten- basiert begonnen hatten. Kommentare bestanden oft aus einer Reihe von Zeilen, die einzelne Sternchen am Rand und oben/unten volle Sternchenzeilen enthielten. Nachdem die Karten online übertragen wurden, war es mühsam, die Randsterne neu auszurichten. TECO zur Rettung...

Als Programmiersprache

Die Dunkelheit der Programmiersprache TECO wird im folgenden Zitat aus " Real Programmers Don't Use Pascal ", einem Brief von Ed Post an Datamation, Juli 1983, beschrieben:

Es wurde beobachtet, dass eine TECO-Befehlssequenz eher dem Rauschen der Übertragungsleitung ähnelt als lesbarem Text. Eines der unterhaltsameren Spiele mit TECO ist es, Ihren Namen als Befehlszeile einzugeben und zu erraten, was er tut. So gut wie jeder mögliche Tippfehler beim Sprechen mit TECO wird wahrscheinlich Ihr Programm zerstören oder noch schlimmer - subtile und mysteriöse Fehler in einer einmal funktionierenden Subroutine einführen.

Laut Craig Finseth, dem Autor von The Craft of Text Editing , wurde TECO als eine " schreibgeschützte " Sprache beschrieben, was bedeutet, dass ein einmal in TECO geschriebenes Programm ohne entsprechende Dokumentation äußerst schwierig zu verstehen ist, was es tat.

Trotz ihrer Syntax war die TECO-Befehlssprache enorm mächtig, und Klone sind immer noch für MS-DOS und für Unix verfügbar .

TECO-Befehle sind Zeichen (einschließlich Steuerzeichen), und die Eingabeaufforderung ist ein einzelner Stern:

*

Die Escape-Taste wird als Dollarzeichen angezeigt, einmal gedrückt, um das Ende eines Befehls zu markieren, der ein Argument erfordert, und zweimal gedrückt, um die Ausführung der eingegebenen Befehle einzuleiten:

*$$

Beispielcode

Gegeben eine Datei namens hello.c mit folgendem Inhalt:

 int main(int argc, char **argv)
 {
     printf("Hello world!\n");
     return 0;
 }

man könnte die folgende TECO-Sitzung verwenden (beachten Sie, dass die Eingabeaufforderung "*" ist und "$" das Echo von ESC ist), um "Hallo" in "Auf Wiedersehen" zu ändern:

*EBhello.c$$                     Open file for read/write with backup
*P$$                             Read in the first page
*SHello$0TT$$                    Search for "Hello" and print the line (pointer placed after searched string)
    printf("Hello world!\n");    The line
*-5DIGoodbye$0TT$$               Delete five characters before pointer (ie "Hello"), insert "Goodbye", and print the line
    printf("Goodbye world!\n");  The updated line
*EX$$                            Copy the remainder of the file and exit

Diese beiden Beispielprogramme sind eine einfache Austauschart des aktuellen Textpuffers, basierend auf dem ersten Zeichen jeder Zeile, entnommen aus dem PDP-11 TECO Benutzerhandbuch. Es werden eine „ goto “- und eine „ strukturierte “ Version angezeigt.

Beispiel 1

!START! j 0aua               ! jump to beginning, load 1st char in register A !
!CONT! l 0aub                ! load first char of next line in register B !
qa-qb"g xa k -l ga 1uz '     ! if A>B, switch lines and set flag in register Z !
qbua                         ! load B into A !
l z-."g -l @o/CONT/ '        ! loop back if another line in buffer !
qz"g 0uz @o/START/ '         ! repeat if a switch was made on last pass !

Beispiel 2

0uz                             ! clear repeat flag !
<j 0aua l                       ! load 1st char into register A !
<0aub                           ! load 1st char of next line into B !
qa-qb"g xa k -l ga -1uz '       ! if A>B, switch lines and set flag !
qbua                            ! load B into A !
l .-z;>                         ! loop back if another line in buffer !
qz;>                            ! repeat if a switch was made last pass !

Anmerkungen

Verweise

Externe Links

Dieser Artikel basiert teilweise auf der Jargon-Datei , die gemeinfrei ist.