TECO | |
---|---|
Sorts | Textredigerare |
Författare | Dan Murphy |
Utvecklaren | Daniel Murphy [d] |
Första upplagan | 1962/63 |
Hårdvaruplattform | PDP-1 , PDP-6 [d] och PDP-10 |
TECO ( MFA: [ˈtiːkoʊ] ; ursprungligen en akronym för engelska. Tape Editor and COrrector , senare - Text Editor and COrrector ) är en textredigerare , som ursprungligen utvecklades vid Massachusetts Institute of Technology på 1960-talet, varefter den kunde modifieras av "vem som helst" [1] . TECO var den direkta förfadern till Emacs , som ursprungligen implementerades som ett makro för TECO. [2]
TECO var inte bara en textredigerare, utan också ett tolkat programmeringsspråk för textmanipulation. Olika program (kallade makron) för att hitta och ändra text gjorde editorn ganska kraftfull. Till skillnad från reguljära uttryck var programmeringsspråket absolut nödvändigt (även om vissa versioner hade en OR -operator för att söka efter delsträngar).
TECO-språket hade egentligen ingen strikt syntax , varje karaktär behandlades som ett imperativt kommando som utförde en specifik åtgärd. Denna åtgärd kan vara att läsa efterföljande tecken från programströmmen (ge effekten av ett "strängargument"), ändra positionen för " programräknaren " (ge effekten av att tillämpa kontrollsatser ), eller trycka värden till värdet stack (ger effekten av kapslade parenteser). Men ingenting hindrar det från att hoppa in i mitten av en kommentar, eftersom språket inte har någon strikt syntax och ingen analys .
Den klassiska programmeringsuppsatsen, " Rikta programmerare använder inte Pascal ", säger att ett vanligt spel för TECO-redaktörer var att skriva in sitt namn som en sekvens av kommandon och se vad som händer. I samma uppsats nämndes först förkortningen YAFIYGI, som betyder "You Asked For It You Got It" (från engelska - "you asked for it - you got it") och blev antitesen till WYSIWYG ("What You See Is What Du får" "det du ser är vad du får").
Den nu berömda Emacs- redigeraren implementerades ursprungligen på TECO. Senare versioner av Emacs, först Multics Emacs och senare GNU Emacs, implementerades i Lisp respektive C . TECO blev framträdande med 1964 års implementering av Digital Equipment Corporations PDP-6 stordator vid MIT . Denna implementering visade kontinuerligt text på en CRT-skärm och användes som en interaktiv redigerare (även om detta inte var den ursprungliga avsedda användningen för den).
TECO var tillgängligt för flera operativsystem och datorer, inklusive PDP-1 , Incompatible Timesharing System (ITS) på PDP-6 och PDP-10 stordatorer , och TOPS-10 och TOPS-20 OS på PDP-10- datorn . TECO editor-versionen levererades med alla DEC-operativsystem. Den version som följde med RT-11 kunde driva den grafiska GT40-skärmen, även om versionen som följde med RSTS/E implementerades som ett runtime-system för flera användare och kunde användas som en komplett arbetsbänk så att användaren aldrig faktiskt lämnade TECO miljö. .
Hewlett -Packard , efter att ha köpt Compaq (som tidigare hade köpt Digital Equipment Corporation ), började skicka TECO med sitt OpenVMS- operativsystem . [3] En ättling till versionen som DEC distribuerade för PDP-10 är fortfarande tillgänglig online, tillsammans med flera partiella implementeringar för MS-DOS / Microsoft Windows -miljön .
TECO utvecklades ursprungligen vid Massachusetts Institute of Technology runt 1963 av Daniel Murphy för användning på två PDP-1- datorer tillhörande olika avdelningar, som båda var inrymda i MIT:s 26:e byggnad. På dessa datorer ingick Friden Flexowriter i utvecklingsprocessen, på vilken källkoden till programmet förbereddes i förväg på en bit perforerad papperstejp. Programmerare på stora IBM stordatorer skrev vanligtvis källkod på hålkort med hjälp av en nyckelpunch, som inte bara stansade data på kortet i maskinläsbar form, utan också skrev ut den på en matrisskrivare överst på varje kort i en konventionell, av människor läsbar form. Således kunde IBM-programmerare läsa, infoga, ta bort och flytta kodrader genom att fysiskt flytta hålkorten i kortleken. Med stansat tejp var detta inte längre möjligt, och detta ledde till behovet av realtidsredigering.
En av de första versionerna av editorn för PDP-1 kallades "Dyr skrivmaskin". Skrivet av Steven Piner, det var en rudimentär linjeorienterad editor som saknade ens textsökning och ersättningsfunktionalitet. Dess titel valdes som en parodi på en tidigare redaktörs titel kallad "Colossal Typewriter". Även på den tiden kunde realtidsredigering spara mycket tid för felsökning. Ett annat program skrivet av aktiva användare av PDP-1 var "Dyra skrivbordskalkylatorn", namngiven i en liknande stil.
Kodexempel | Förklaring |
---|---|
ER -fil $ | öppna filen för läsning |
[ q … ] q | tryck på stacken ... skjut registret Q från stacken (operationen kan utföras med ett nummer, text eller kod) |
< kod > | loop iteration; det finns koder för nästa , bryta , fortsätta osv. |
n " X sedan-kod | annan-kod | villkorlig operatör (X är typen som kontrolleras) |
Detta är ett exempel på en Brainfuck- språktolk skriven i TECO. Det fungerar genom att köra den aktuella bufferten som ett Brainfuck-program och visar redaktörens funktioner.
@^UB#@S/{^EQQ,/#@^UC#@S/,^EQQ}/@-1S/{/#@^UR#.U1ZJQZ\^SC.,.+-^SXQ-^ SDQ1J#@^U9/[]-+<>.,/<@:-FD/^N^EG9/;>J30000<0@I/ />ZJZUL30000J0U10U20U30U60U7@^U4/[]/@^U5#<@:S/^EG4/U7Q7;-AU3(Q3-91)"=%1|Q1"=.U6ZJ@i/{/Q2\@i /,/Q6\@i/}/Q6J0;'-1%1' >#<@:S/[/UT.U210^T13^TQT;QT"NM5Q2J'>0UP30000J.US.UI<(0A-43)"=QPJ0AUTDQT+1@I//QIJ@O/end/'( 0A-45)"=QPJ0AUTDQT-1@I// QIJ@O/end/'(0A-60)"=QP-1UP@O/end/'(0A-62)"=QP+1UP@O/end/'(0A-46)"=-.+QPA ^T(-.+QPA-10)"=13^T'@O/end/'(0A-44)"=^TUT 8^TQPJDQT@I//QIJ@O/end/'(0A-91)"=-.+QPA"=QI+1UZQLJMRMB\-1J.UI'@O/end/'(0A-93)"=- .+QPA"NQI+1UZQLJMRMC\-1J.UI'@O/en d/'!end!QI+1UI(.-Z)"=.=@^a/END/^c^c'C>