TECO: Мәтін өңдегіш және бағдарламалау тілінің тарихы
TECO (text editor)
TECO – 1962 ж. жасалған мәтін редакторы және бағдарламалау тілі. PDP-1 үшін ойластырылған, Emacs-тың алға басушысы. Тарихы, мүмкіндіктері туралы біліңіз!
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
TECO (/t//iː//k//oʊ/), Text Editor & Corrector дегеннің қысқартылған атауы, бұл символдарға бағытталған мәтін редакторы және бағдарламалау тілі. Ол 1962 жылы Digital Equipment Corporation компьютерлерінде қолдану үшін жасалған, кейіннен PC және Unix жүйелерінде қолжетімді болды. Ден Мерфи TECO-ны Массачусетс технология институтында (MIT) студент кезінде әзірледі. Мерфидің сөзіне сәйкес, бастапқы аббревиатура «Таспа редакторы және түзетуші» болған, себебі «біздің PDP 1-де бағдарламалық кодты сақтаудың жалғыз құралы перфокарталы таспа болды. Қатты дискі, дискета, магниттік таспа (магтапе) немесе желі болған жоқ». TECO макрокомандаларында бастапқыда іске асырылған Emacs-тің тікелей алдын бабасы болып табылады.
TECO ('/t//iː//k//oʊ/), short for Text Editor & Corrector, is both a character oriented text editor and a programming language, that was developed in 1962 for use on Digital Equipment Corporation computers, and has since become available on PCs and Unix. Dan Murphy developed TECO while a student at the Massachusetts Institute of Technology (MIT). According to Murphy, the initial acronym was Tape Editor and Corrector because "punched paper tape was the only medium for the storage of program source on our PDP 1. There was no hard disk, floppy disk, magnetic tape (magtape), or network." and is a direct ancestor of Emacs, which was originally implemented in TECO macros.
Сипаттама
TECO – тек редактор ғана емес, сонымен қатар мәтінді өңдеуге арналған интерпретацияланған бағдарламалау тілі. Мәтінді іздеу және өзгерту үшін кез келген бағдарлама (макрос деп аталады) оған зор күш береді. Дегенмен, тұрақты өрнектерден өзгеше, тіл императивті болды, бірақ кейбір нұсқаларында жол іздеуде "немесе" операторы болған. TECO-ның нақты синтаксисі жоқ; бағдарламадағы әрбір символ – оған сәйкес келетін процедураға жіберілетін императивті команда. Бұл процедура бағдарлама ағынынан қосымша символдарды оқи алады (аргументтердің әсерін тудырады), «бағдарлама санағышының» орнын өзгертеді (бақылау құрылымдарының әсерін тудырады) немесе мәндерді мән стегіне қосады (ішкі жақшалардың әсерін тудырады). Бірақ синтаксис пен талдау болмағандықтан, мысалы, түсіндірмелердің ортасына секіру сияқты операцияларға ешқандай шектеу жоқ. TECO регистрді және бос орындарды ескермейді (көшеткіштен басқа, ол енгізу командасы). Компьютерлік бағдарламалау туралы сатирикалық эссе, «Нағыз бағдарламашылар Паскальді қолданбайды», TECO жанкүйерлерінің әдеттегі ойыны – командалар тізбегі ретінде өз атын енгізіп, содан кейін не болатынын анықтауға тырысу екенін айтады. TECO-ны сипаттаған сол эсседе YAFIYGI аббревиатурасы пайда болды, ол «Сұрадың – алдың» дегенді білдіреді (WYSIWYG-ге қарама-қарсы).
TECO is not only an editor but also an interpreted programming language for text manipulation. Arbitrary programs (called "macros") for searching and modifying text give it great power. Unlike regular expressions, however, the language was imperative, though some versions had an "or" operator in string search. TECO does not really have syntax; each character in a program is an imperative command, dispatched to its corresponding routine. That routine may read further characters from the program stream (giving the effect of string arguments), change the position of the "program counter" (giving the effect of control structures), or push values onto a value stack (giving the effect of nested parentheses). But there is nothing to prevent operations like jumping into the middle of a comment, since there is no syntax and no parsing. TECO ignores case and whitespace (except tab, which is an insertion command). A satirical essay on computer programming, Real Programmers Don't Use Pascal, suggested that a common game for TECO fans was to enter their name as a command sequence, and then try to work out what would happen. The same essay in describing TECO coined the acronym YAFIYGI, meaning "You Asked For It You Got It" (in contrast to WYSIWYG).
Әсері
EMACS редакторы Дэвид А. Мун мен Гай Л. Стил-младший бастамасымен TECO-да редакторлық макростар жиынтығы ретінде іске асырылды. TECO 1964 жылы MIT-тің Project MAC жобасында жасалған Digital Equipment Corporation (DEC) PDP 6 жүйесінде іске қосылғаннан кейін кеңінен қолданыла бастады. Бұл жүйе өңделген мәтінді үнемі CRT экранында көрнекі түрде көрсетіп, интерактивті онлайн редактор ретінде пайдаланылды. TECO-ның кейінгі нұсқалары VT52 немесе VT100 сияқты түрлі DEC RS 232 бейне терминалдарында толық экран режимін іске қоса алды. TECO бірнеше операциялық жүйелер мен компьютерлер үшін қолжетімді болды, оның ішінде PDP 1 компьютері, PDP 8 (OS/8 жүйесінде), PDP 6 және PDP 10-дағы Үйлесімсіз уақыт бөлісу жүйесі (ITS), сондай-ақ PDP 10-дағы TOPS 10 және TOPS 20. TECO нұсқасы барлық DEC операциялық жүйелерімен бірге келді; RT11 үшін қолжетімді нұсқа GT40 графикалық дисплейін басқара алды, ал RSTS/E үшін қолжетімді нұсқа көп пайдаланушылы жүйе ретінде іске асырылды және пайдаланушының толыққанды операциялық ортасы ретінде қолданылуы мүмкін болды, сондықтан пайдаланушы TECO-дан шығу қажеттілігі болмады. VTEDIT (Video Terminal Editor) TECO макросы RSTS/E және VAX жүйелерінде, курсорды тікелей басқара алатын терминалдармен (мысалы, VT52 және VT100) жиі қолданылды, бұл Emacs сияқты толық экранды көрнекі редакторды қамтамасыз етті. TECO VSI компаниясымен OpenVMS жүйесіне енгізілген және EDIT/TECO командасы арқылы шақырылады. PDP 10 үшін DEC таратқан нұсқасының вариациясы әлі де Интернетте қолжетімді, сонымен қатар MS DOS / Microsoft Windows ортасы үшін бірнеше толық емес нұсқалары да бар.
The EMACS editor originally started by David A. Moon and Guy L. Steele Jr. was implemented in TECO as a set of Editor MACroS. TECO became more widely used following a Digital Equipment Corporation (DEC) PDP 6 implementation developed at MIT's Project MAC in 1964. This implementation continuously displayed the edited text visually on a CRT screen, and was used as an interactive online editor. Later versions of TECO were capable of driving full screen mode on various DEC RS 232 video terminals such as the VT52 or VT100. TECO was available for several operating systems and computers, including the PDP 1 computer, the PDP 8 (under OS/8), the Incompatible Timesharing System (ITS) on the PDP 6 and PDP 10, and TOPS 10 and TOPS 20 on the PDP 10. A version of TECO was provided with all DEC operating systems; the version available for RT11 was able to drive the GT40 graphics display while the version available for RSTS/E was implemented as a multi user run time system and could be used as the user's complete operating environment; the user never actually had to exit TECO. The VTEDIT (Video Terminal Editor) TECO macro was commonly used on RSTS/E and VAX systems with terminals capable of direct cursor control (e. g. VT52 and VT100) to provide a full screen visual editor similar in function to the contemporaneously developed Emacs. TECO continues to be included in OpenVMS by VSI, and is invoked with the EDIT/TECO command. A descendant of the version DEC distributed for the PDP 10 is still available on the Internet, along with several partial implementations for the MS DOS/Microsoft Windows environment.
Тарих
TECO бастапқыда 1963 жылы MIT-те Дэниел Л. Мерфи екі PDP 1 компьютерінде, әртүрлі бөлімдерге тиесілі, екеуі де MIT-тің 26-ғимаратында орналасқан. Бұл машиналардағы қалыпты даму процесі Friden Flexowriter-ді пайдалануды қамтыды, ол бастапқы кодты тығыздалған қағаз лентасының үздіксіз жолағында офлайн режимінде дайындау үшін қолданылды. IBM-нің үлкен мейнфреймдерінің бағдарламашылары әдетте бастапқы кодты карталарға, әрбір картаның жоғарғы жағында машинамен оқылатын әрбір таңбаны соққымен бірге басып шығаратын пернетақта арқылы теру арқылы жазатын. Осылайша IBM бағдарламашылары палубадағы карталарды физикалық түрде өңдеу арқылы код жолдарын оқи, қосып, жойып және жылжыта алатын. Тығыздалған қағаз лентасы мұндай мүмкіндіктерді ұсынбады, бұл онлайн өңдеуді дамытуға әкелді. PDP 1 үшін алғашқы редактор "Қымбат Жазу Машинасы" деп аталды. Стивен Д. Пайнер жазған, ол ең қарапайым, тіпті іздеу және алмастыру мүмкіндіктері жоқ, жолға бағытталған редактор болды. Оның атауы "Colossal Typewriter" деп аталған бұрынғы, тым ауыр редакторды әжуалау үшін таңдалды. Тіпті сол кезде онлайн өңдеу жөндеу циклында уақытты үнемдеуге көмектесетін. PDP 1 хакерлері жазған тағы бір бағдарлама осындай сипаттағы Expensive Desk Calculator болды. TECO-ның бастапқы мақсаты PDP 1-ді тиімді пайдалану болды. Нұсқаулықта көрсетілгендей, консольде "қымбатқа" өңдеу жасаудың орнына, қате мәтінді қарап, мәтінде орындалатын өңдеу операцияларын сипаттайтын "түзету лентасын" дайындау керек еді. Содан кейін бастапқы лентаны және түзету лентасын PDP 1-ге жоғары жылдамдықты (200 таңба/секунд) оқырман арқылы тиімді түрде беру керек. TECO іске қосылғанда, ол бірден өңделген лентаны жоғары жылдамдықты (60 таңба/секунд) соққымен шығаратын. Содан кейін монтаждаушыны жүктеу және іске қосуға кірісуге болады, онлайн өңдеуге уақыт жоғалтпастан. TECO-ның күрделі іздеу операциялары офлайн Flexowriter басылымдары жол нөмірленбегендігімен шақырылды. Сондықтан өңдеу орындарын жол нөміріне емес, контекстке сәйкес көрсету қажет болды. Түзету лентасының жеткілікті сипаттамалық күшін қамтамасыз ету үшін әртүрлі циклдық және шартты конструкциялар (TECO-ны Тьюринг толықтыратын) қосылды. Синтаксистің қысқалығы түзету лентасын дайындау үшін қажетті пернелердің санын азайтуға бағытталды. Түзету лентасы бағдарлама болды және басқа бағдарламалар сияқты жөндеуді қажет етті. Тіпті ең қарапайым жаһандық іздеу мен алмастырудың қиындықтары көп ұзамай анық болды. Іс жүзінде TECO өңдеуі Expensive Typewriter сияқты онлайн режимінде орындалды (бірақ TECO, әрине, Expensive Typewriter-ге қарағанда толыққанды редактор болғандықтан, TECO-мен өңдеу әлдеқайда тиімді болды). PDP 1-дің бастапқы нұсқасында экран болмады. Өңдеу процесінде мәтіннің күйін бақылаудың жалғыз жолы консольдегі жазу машинасына мәтінді (немесе оның бөліктерін) шығаратын командаларды енгізу болды. 1964 жылға қарай TECO-ның арнайы нұсқасы (TECO 6) MIT-те PDP 6-да іске асырылды. Бұл нұсқада визуалды өңдеу қол жетімді болды, өңдеу буферінің мазмұнын нақты уақытта көрсетуге мүмкіндік беретін экранды пайдаланды, ол өзгерген сайын жаңартылып отырды. TECO 6 жасаушыларының арасында Ричард Гринблатт пен Стюарт Нельсон болды. MIT-де TECO-ны дамыту 1971 жылдың күзінде жалғасты. Карл Миккелсен TECO 6 графикалық консоль командаларына негізделген, бірақ жаңадан орнатылған Datapoint 3300 CRT мәтіндік дисплейлерімен жұмыс істейтін нақты уақыт режимін енгізді. Алайда TECO буферін іске асыру бір таңбалық енгізу немесе жою функцияларын өңдеу үшін өте тиімсіз болды. Ричард Гринблатттың қолдауымен 1972 жылдың жазында Карл TECO буферлік сақтауын қайта іске асырды және макростарды PDP 10 коды ретінде қайта құрды. Нақты уақыт режиміне кіру үшін , пернесін басу қажет болды, сондықтан ол R басқару режимі деп аталды. Сонымен қатар, Ричи Ликнайцкий кіру уақытында макростарды қосты, олар команда тізбегі оқылғанда емес, орындалғанда жұмыс істеді. Оқу уақытының макролары Q регистрлері деп аталатын TECO көмекші мәтін буферлерін пайдалырақ етті. Карл Q регистрінің атау кеңістігін кеңейтті. Оқу уақытының макролары, үлкен Q регистрінің атау кеңістігі және тиімді буферлік операциялар арқылы әрбір кілтті макросқа байлауға жағдай жасалды. Бұл өңдеу макростары Emacs-қа айналды. VMS іске асыруының ұзақ тарихы бар – ол PDP 8 құрастыруында іске асырылған TECO 8 ретінде басталды. Бұл код PDP 11 құрастыруына TECO 11 шығару үшін аударылды. TECO 11 PDP 11 үйлесімділік режимінде VAX/VMS-тің алғашқы нұсқаларында қолданылды. Кейіннен ол PDP 11 құрастыруынан VAX құрастыруына TECO32 шығару үшін аударылды. TECO32 содан кейін OpenVMS-ке Alpha және Itanium сәйкестігін қамтамасыз ету үшін VEST және AEST бинарлық аударма утилиталарымен түрлендірілді.
TECO was originally developed at MIT in around 1963 by Daniel L. Murphy for use on two PDP 1 computers, belonging to different departments, both housed in MIT's Building 26. On these machines, the normal development process involved the use of a Friden Flexowriter to prepare source code offline on a continuous strip of punched paper tape. Programmers of the big IBM mainframes customarily punched their source code on cards, using key punches which printed human readable dot matrix characters along the top of every card at the same time as they punched each machine readable character. Thus IBM programmers could read, insert, delete, and move lines of code by physically manipulating the cards in the deck. Punched paper tape offered no such amenities, leading to the development of online editing. An early editor for the PDP 1 was named "Expensive Typewriter". Written by Stephen D. Piner, it was the most rudimentary imaginable line oriented editor, lacking even search and replace capabilities. Its name was chosen as a wry poke at an earlier, rather bloated, editor called "Colossal Typewriter". Even in those days, online editing could save time in the debugging cycle. Another program written by the PDP 1 hackers was Expensive Desk Calculator, in a similar vein. The original stated purpose of TECO was to make more efficient use of the PDP 1. As envisioned in the manual, rather than performing editing "expensively" by sitting at a console, one would simply examine the faulty text and prepare a "correction tape" describing the editing operations to be performed on the text. One would efficiently feed the source tape and the correction tape into the PDP 1 via its high speed (200 characters per second) reader. Running TECO, it immediately would punch an edited tape with its high speed (60 characters per second) punch. One could then immediately proceed to load and run the assembler, with no time wasted in online editing. TECO's sophisticated searching operations were motivated by the fact that the offline Flexowriter printouts were not line numbered. Editing locations therefore needed to be specified by context rather than by line number. The various looping and conditional constructs (which made TECO Turing complete) were included in order to provide sufficient descriptive power for the correction tape. The terse syntax minimized the number of keystrokes needed to prepare the correction tape. The correction tape was a program, and required debugging just like any other program. The pitfalls of even the simplest global search and replace soon became evident. In practice, TECO editing was performed online just as it had been with Expensive Typewriter (although TECO was certainly a more feature complete editor than Expensive Typewriter, so editing was much more efficient with TECO). The original PDP 1 version had no screen display. The only way to observe the state of the text during the editing process was to type in commands that would cause the text (or portions thereof) to be typed out on the console typewriter. By 1964, a special Version of TECO (TECO 6) had been implemented on the PDP 6 at MIT. That version supported visual editing, using a screen display that showed the contents of the editing buffer in real time, updating as it changed. Amongst the creators of TECO 6 were Richard Greenblatt and Stewart Nelson. At MIT, TECO development continued in the fall of 1971. Carl Mikkelsen had implemented a real time edit mode loosely based on the TECO 6 graphic console commands, but working with the newly installed Datapoint 3300 CRT text displays. The TECO buffer implementation, however, was terribly inefficient for processing single character insert or delete functions—editing consumed 100% of the PDP 10. With Richard Greenblatt's support, in summer of 1972 Carl reimplemented the TECO buffer storage and reformed the macros as native PDP 10 code. As entering the real time mode was by typing , this was known as control R mode. At the same time, Rici Liknaitski added input time macros , which operated as the command string was read rather than when executed. Read time macros made the TECO auxiliary text buffers, called Q registers, more useful. Carl expanded the Q register name space. With read time macros, a large Q register name space, and efficient buffer operations, the stage was set for binding each key to a macro. These edit macros evolved into Emacs. The VMS implementation has a long history it began as TECO 8, implemented in PDP 8 assembly. This code was translated into PDP 11 assembly to produce TECO 11. TECO 11 was used in early versions of VAX/VMS in PDP 11 compatibility mode. It was later translated from PDP 11 assembly into VAX assembly to produce TECO32. TECO32 was then converted with the VEST and AEST binary translation utilities to make it compatible with OpenVMS on the Alpha and Itanium respectively.
OS/8 MUNG командасы
OS/8 CCL MUNG командасы, көрсетілген TE TECO макросын оқу және орындау үшін TECO-ны іске қосты. Қосымша командалық жол параметрлері оның икемділігін арттырды.
The OS/8 CCL MUNG command invoked TECO to read and execute the specified TE TECO macro. Optional command line parameters gave added adaptability.
Бағдарламашының құралы ретінде
Пункциялық карталар дәуірінде және одан кейін көп ұзамай, бастапқыда перфокарталарға негізделген бағдарламалар пайда болды. Түсіндірмелер көбінесе бір-бірлеп қойылған жұлдызшалардан және жоғарғы/төменгі қатарларындағы толық жұлдызша жолдарынан тұратын. Карталар желіге (онлайн) көшкеннен кейін, шеттегі жұлдызшаларды қайта орналастыру қиындық тудырды. TECO көмекке келді.
During and shortly following the years of the punched card era, there were source programs that had begun as punched card based. Comments were often a series of lines that included single marginal asterisks and top/bottom full lines of asterisks. Once the cards were transferred online, it was a chore to realign the marginal stars. TECO to the rescue