Hlavní navigace

Historie vývoje textových editorů (2)

7. 7. 2015
Doba čtení: 21 minut

Sdílet

Druhá část článku o historii vývoje textových editorů je věnována postupnému přechodu od interaktivních řádkových editorů směrem k plnohodnotným celoobrazovkovým editorům. Zajímavé bude sledovat především dvě vývojové větve: od TECO k Emacsu a od QEDu k editoru Vi a jeho následovníkům.

Obsah

1. Historie vývoje textových editorů (2)

2. Relativně pomalá cesta k celoobrazovkovým textovým editorům

3. Vývoj QED → ed → em → ex → vi

4. Následovníci textového editoru Vi

5. nvi

6. Stevie

7. Elvis

8. Vim

9. bvi

10. e3

11. Obsah třetí části: postupný vývoj od maker TMACS a TECMAC k plnohodnotnému Emacsu

12. Odkazy na Internetu

1. Historie vývoje textových editorů (2)

V předchozí části seriálu o historii vývoje výpočetní techniky jsme se seznámili s prehistorií textových editorů, zejména s obdobím, v němž byly „vynalezeny“ takzvané řádkové textové editory, které se teprve v pozdější době transformovaly do podoby celoobrazovkových editorů. Dnes budeme pokračovat v popisu dalšího vývoje textových editorů, mezi jejichž prapředky se počítají minule popsané nástroje TECO popř. taktéž minule popsaný nástroj QED. Zajímavé je, že základní rozdíly mezi TECO a QEDem vlastně nebyly příliš velké, ovšem vývojové větve, na jejichž počátku stály tyto aplikace, se od sebe začaly oddělovat, což v roce 1976 vyústilo ve vznik „konkurenčních“ editorů vi a Emacs. V posledních deseti letech pak můžeme vidět postupné sbližování Vimu jakožto potomka editoru vi a GNU Emacsu, a to zejména díky existenci VimScriptu a rozhraní k několika dalším skriptovacím jazykům, které je ve Vimu implementováno (Lua, Perl, Ruby, Tcl, Python).

ibm-4

Obrázek 1: Mainframe IBM System/370 model 138. Zajímavé je, že i přes dominanci společnosti IBM v oblasti sálových počítačů se vývoj přelomových textových editorů odehrával na odlišných platformách, což s velkou pravděpodobností souvisí s tím, že například na universitách měli pracovníci a studenti snadnější přístup k odlišným typům počítačů. Ovšem samotná architektura IBM System/370 byla velmi úspěšná a prodávala se dvacet let.

V následující tabulce jsou vypsány ty aplikace, kterými se dnes budeme přímo či nepřímo zabývat. Na prvních dvou řádcích se samozřejmě nachází oba prapředkové současných textových editorů (TECO a QED), na dalších řádcích pak editory spadající buď do vývojové větve „vi“ nebo naopak do vývojové větve „Emacs“:

Rok Editor/procesor Poznámka
1963 TECO Tape Editor and COrrector, bude popsán v páté kapitole
1965 QED řádkový editor, mocnější než později vydaný ed
1971 ed autorem dodnes udržované aplikace je Ken Thompson, původně vytvořeno pro PDP-7
1975 em „Editor for Mortals“, založeno na edu
1976 ex další úpravy původní aplikace ed, přímý předchůdce vi
1976 vi editor ex + nový vizuální režim
1976 TMACS, TECMAC makra pro editor TECO
1976 Emacs první verze Emacsu odvozená od maker TMACS a TECMAC
1985 MicroEMACS jedna z alternativních větví EMACSu
1987 Stevie (ST Editor for VI Enthusiasts)
1988 Vim první verze (prozatím neveřejná)
1990 Elvis  
1991 Vim (Vi iMitation) verze 1.14 (veřejně šířená)

Obrázek 2: Rychlá řádková tiskárna používaná u mainframů Burroughs B5000 k vytváření tiskových sestav atd. Podobné periferie se používaly i u prvních systémů pro zpracování textů.

2. Relativně pomalá cesta k celoobrazovkovým textovým editorům

V předchozím článku jsme si řekli, že jeden z důvodů, proč se v dávné minulosti používaly převážně řádkové textové editory, spočíval v tom, že terminály byly k počítačům (typicky sálovým počítačům či minipočítačům) připojeny s využitím relativně pomalých sériových linek (vzdálené terminály pak ještě pomocí modemů). K tomuto faktoru je zapotřebí připočíst i to, že se většinou jednalo o „hloupé“ terminály, které pouze opisovaly znaky, které jim byly po sériové lince poslány (Glass TTY).

Obrázek 3: Tiskárna používaná pro tisk zpráv posílaných operačním systémem mainframu Burroughs B5000. S touto tiskárnou je spojena i klávesnice, takže celek vlastně tvořil operátorskou konzoli (terminál).

Při přenosové rychlosti 300 bps trvalo jen překreslení jednoho textového řádku téměř tři sekundy. Poněkud lepší byla situace u terminálů připojených po lince s rychlostí 1200 bps: zde překreslení jednoho řádku proběhlo pod dobu trvání jedné sekundy, ovšem přepis celé obrazovky (80×24 znaků) přibližně 12 až 16 sekund, což je pro interaktivní práci příliš dlouho. Navíc ještě někteří výrobci terminálů zavedli technologii zvanou „echo negotiation“. Tato technologie spočívala v tom, že terminál pouze opisoval znaky zadávané z klávesnice a teprve po stisku speciální klávesy (typicky Enteru) se všechny znaky přenesly na řídicí počítač. Pro zadávání příkazů v shellu byl tento režim poměrně výhodný, protože řídicí počítač nemusel zpracovat každý zapsaný znak (což pro něj znamenalo přerušení, přepnutí do jiného procesu atd.), ovšem po celoobrazovkové editory se příliš nehodil.

Obrázek 4: Starší typ dálnopisu. Na levé straně je umístěna jednotka pro děrování i čtení děrné pásky, na pravé straně pak klávesnice. Dálnopis taktéž sloužil jako jeden z dostupných prostředků pro připojení ke střediskovým počítačům.

Pokrok přinesly až terminály s přenosovou linkou o rychlosti 9600 bps, které již byly použitelné i pro potřeby celoobrazovkových editorů. I ta nejpomalejší operace, tj. přepsání celé obrazovky novým obsahem, zde trvala méně než dvě sekundy. Použití těchto terminálů ještě zvýraznil fakt, že se mnohdy jednalo o takzvané „chytré terminály“ obsahující například speciální řídicí sekvence pro smazání obrazovky, scroll (posun) okna, posun kurzoru libovolným směrem (relativně či absolutně), smazání znaků od aktuální pozice kurzoru do konce řádku atd. Poprvé byly tyto nové a dříve nedostupné možnosti využity v editoru TECO, který byl původně pouze řádkovým editorem, ovšem poměrně rychle byl (dokonce několikrát) upraven tak, aby pracoval i v režimu celé obrazovky. Dalším textovým editorem, v němž došlo k implementaci celoobrazovkového režimu, je editor ex, o němž se zmíníme v navazující kapitole v souvislosti s vývojem od řádkového editoru QED k textovému editoru vi.

Obrázek 5: Dálnopis ASR-33, který byl poměrně často používaný i jako levná a relativně kvalitní tiskárna.

3. Vývoj QED → ed → em → ex → Vi

V předchozí části tohoto seriálu jsme si řekli základní informace o editoru QED, takže již víme, že se jednalo o řádkový editor s podporou více bufferů, jednoduchým skriptováním atd. V roce 1971, tj. celých osm let(!) po vzniku první verze QEDu vytvořil Ken Thompson další řádkový editor nazvaný jednoduše ed. Tento editor byl ve skutečnosti zjednodušenou variantou QEDu, a to z toho důvodu, že ed byl určen pro tehdy vyvíjený Unix a počítač PDP-7, který Ken Thompson tehdy používal, měl omezenou kapacitu operační paměti, kterou nebylo možné zbytečně plýtvat. Z tohoto důvodu měl ed zjednodušenou implementaci regulárních výrazů (pro rozpoznání podmnožiny regulárních jazyků a ne bezkontextových jazyků jako tomu překvapivě bylo u QEDu). Taktéž přestala existovat podpora pro použití většího množství bufferů, nicméně i přesto byl ed velmi dobře použitelný v praxi (dodnes se používají jeho jednoznakové příkazy). Ostatně ed je považovaný za editor pro opravdové muže: jeho chybové hlášení se omezuje na otazník, teprve později byl přidán příkaz „h“, který pomůže i tápajícím.

Obrázek 6: Editor ex přeložený pro moderní Linux (tedy až na chybějící databázi terminálů a tím pádem i chybějícímu vizuálnímu režimu).

Na základě editoru ed vytvořil George Coulouris v roce 1975 editor em („Editor for Mortals“). Většina vlastností edu zůstala zachována. Další vývoj směřoval k aplikaci nazvané ex, kterou o rok později (tedy v roce 1975) na podkladu editorů ed a em vytvořil Bill Joy (pozdější zakladatel společnosti Sun Microsystems). První verze editoru ex vlastně není příliš zajímavá, protože došlo jen k úpravám některých přepínačů zadávaných z příkazové řádky. Později však došlo k významném rozšíření: byl přidán nový celoobrazovkový režim, takže se příkazem :visual mohl editor ex přepnout do „vizuálního“ módu, který se zkráceně začal nazývat vi, protože ex začal existovat ve dvou variantách. Ve variantě první byl program spuštěn v režimu řádkového editoru, ve variantě druhé v režimu celoobrazovkovém (což platí dodnes :-).

Nový „visual interface“ mj. zajistil, že se nemusely pomocí příkazů upravovat jen jednotlivé (nějakým způsobem adresované) řádky, ale kurzor se mohl relativně volně pohybovat po celé obrazovce, což samozřejmě vyžadovalo velké změny jak v zobrazovacím kódu, tak i ve vnitřní logice editoru. Mimochodem – vývoj vi probíhal na terminálu ADM-3A, kde se klávesa ESC nachází v místech, kde dnes nalezneme TAB. Právě proto se ve vi používá pro přepínání režimů ESC, která byla snadno dostupná (ne jak dnes). Navíc tento terminál měl na klávesách H, J, K a L kurzorové šipky, což je opět důvod proto, že stejné klávesy využívá vi pro pohyb kurzoru, i když logičtější by byly pozice J, K, L a ;.

Mimochodem: původní, jen nepatrně upravený ex lze získat na adrese http://ex-vi.cvs.sourceforge.net/. Po nezbytné úpravě v modulu pro práci s regulárními výrazy lze tento historický artefakt přeložit i na moderním Linuxu (viz též screenshot uvedený v této kapitole).

4. Následovníci textového editoru Vi

Textový editor vi se stal standardní součástí mnoha komerčních distribucí Unixu, což mj. znamenalo, že se s jeho alespoň základním ovládáním museli seznámit jak administrátoři, tak i vývojáři či běžní uživatelé tvořící různé typy textů. Ovšem vi pro mnoho činností nenabízel všechny očekávané funkce, což se týká například zpracování běžného odstavcového textu (například dokumentu připravovaného v TeXu či později v HTML) či pouze jednoúrovňové operace typu undo. Navíc se později, zejména s příchodem systémů BSD a Linuxu, ukázal problematický i způsob licencování editoru vi. Na druhou stranu vedl vícemodální způsob ovládání editoru, prakticky navržená a přitom překvapivě ortogonální sada příkazů a nízké systémové nároky vi (jakožto původně čistě nativní aplikace nezávislé na vysokoúrovňovém skriptovacím jazyku) k velké oblibě tohoto editoru, takže není divu, že se objevily snahy o vytvoření textových editorů s podobným rozhraním, ovšem bez omezení, o nichž jsme se zmínili výše.

Obrázek 7: O tom, že pro tvorbu textů není zapotřebí používat nejnovější výkřiky IT s plnohodnotným GUI, svědčí i existence několika generací zařízení Alpha Smart, která jsou v mnoha ohledech pravým opakem tabletů: malý pasivní (černobílý) displej s několika řádky textu je doplněn poměrně kvalitní klávesnicí a výdrží na baterie i několik týdnů. Jádrem systému je procesor na bázi slavné Motoroly 68000.

5. nvi

Prvním editorem odvozeným od původního nástroje vi je editor nazvaný nvi. Tato aplikace, která je mj. součástí mnoha současných distribucí Linuxu (popř. ji lze snadno doinstalovat), je naprogramována takovým způsobem, aby byla v co nejvyšší míře kompatibilní s původní implementací editoru vi, přitom však uživatele ani programátory nvi neomezují licenční ujednání, které prakticky dodnes zabraňují použití původního vi v Linuxu (toto není zcela přesné tvrzení, protože licenci lze získat, ostatně stačí se podívat do Solarisu atd.). Tvůrci nvi se dokonce snaží o dosažení „bug-for-bug“ kompatibility, což znamená, že se ani nepokusili o vylepšení chování nvi. Tato snaha má za následek, že v nvi je možné použít prakticky jakoukoli sekvenci příkazů nebo maker určených pro původní vi. Oproti dalším editorům odvozených od vi však nenalezneme žádné pokročilejší příkazy, nápověda je stále minimalizována na pouhý jeden řádek a i možnosti konfigurace jsou poměrně nízké.

Obrázek 8: Úplná (jediná) nápověda integrovaná do textového editoru nvi. Podle roku vzniku je patrné, že ani tento editor se nevyvíjí závratným tempem, což je ovšem v tomto případě logické, neboť nvi byl do vínku dán konzervatismus

6. Stevie

Druhým textovým editorem, který používal stejné příkazy i shodné režimy činnosti jako původní editor vi, je aplikace nazvaná Stevie neboli ST Editor for VI. Jednalo se o aplikaci určenou pro osobní mikropočítače Atari ST, jejímž původním autorem je Tim Thompson. Tento programátorský nástroj sice již není dále aktivně vyvíjen, ovšem jeho význam je z hlediska historie vývoje textových editorů značný, neboť právě na jeho zdrojových kódech byl založen velmi úspěšný projekt – textový editor Vim o němž se zmíníme v osmé kapitole. Právě na vývoji editorů Stevie a Vim je jasně patrné, jak jsou cesty úspěšných softwarových produktů nevyzpytatelné. Vždyť kdo mohl předpokládat, že Stevie jakožto aplikace napodobující editor pro textové konzole na multimediálním počítači Atari ST (který vlastně vůbec nepodporoval „pouhý“ textový režim) bude použita dalším programátorem, tentokrát na konkurenčním multimediálním počítači Amiga a postupně vznikne fenomén zvaný Vim?

Obrázek 9: Příkazem :help credits je možné již od prvních rozšířených verzí textového editoru Vim zobrazit odkaz na editor Stevie a jeho autory.

7. Elvis

V minulosti byl v mnoha distribucích Linuxu (zejména v distribucích šířených na disketách) jako základní textový editor využíván nástroj Elvis, což je další editor inspirovaný stařičkým Vimem. Důvody, které vedly k použití Elvise na minimalisticky pojatých disketových instalacích spočívají v jeho menší velikosti (i Vim je však v případě potřeby možné poměrně úspěšně zmenšit, ovšem za cenu ztráty některých vlastností) a nezávislosti na dalších knihovnách. I staticky slinkovaná verze textového editoru Elvis totiž zabere pouze cca 200kB (alespoň na 32bitové platformě x86). Menší velikost binárního souboru se projevuje i ve velikosti obrazu spuštěného editoru v operační paměti. Někdo možná miniinstalace Linuxu nepovažuje za plnohodnotné systémy, pro jednoduchý router či tiskový server se však mnohdy jedná o ideální, funkční a přitom nekomplikovanou záležitost; podobně je tomu v případě různých „live distribucí“ (například původní verze Slaxu používaly editor Elvis a nikoli Vim).

Obrázek 10: Editace zdrojového kódu v textovém editoru Elvis. Povšimněte si, že je podporováno i zvýraznění syntaxe.

Editor Elvis, jehož autorem je Steve Kirkendall, se sice snaží dodržovat co nejlepší zpětnou kompatibilitu s původním editorem vi, ovšem najdeme zde i množství nových vlastností, které byly později převzaty do Vimu. Pravděpodobně nejzajímavější vlastností, která je pro textový editor Elvis typická, je podpora pro několik režimů zobrazení textů – tyto režimy je možné v případě potřeby měnit s využitím příkazu :display. Režimy zobrazení v podstatě pracují jako obousměrné filtry, které převádí interní podobu textu na text zobrazený uživateli a naopak – editace prováděná uživatelem se aplikuje na interní podobu textu v bufferu, což je uživatelsky přívětivé a přitom se Elvis přibližuje možnostem nabízeným WYSIWYG editory.

Obrázek 11: Informace o verzi editoru Elvis. Jak je ze zprávy patrné, není tento editor dále aktivně vyvíjen.

Mezi podporované režimy zobrazení patří například režim HTML, při kterém je editovaný soubor interpretován jako dokument napsaný v jazyce HTML. V tomto režimu může Elvis do určité míry nahradit WWW prohlížeč, samozřejmě to platí pouze pro jednodušší stránky bez složitého formátování a stylů (celá nápověda je k tomuto editoru psána přímo v jednoduchém HTML, takže ji lze bez problému zobrazit). Režimu HTML se do značné míry podobá i režim TeXu, který je však do značné míry omezen repertoárem rozpoznávaných klíčových slov. Dalším podporovaným režimem je režim náhledu manuálových stránek, kdy se Elvis chová podobně jako příkaz man s tím rozdílem, že je možné manuálové stránky i editovat. Ne všechny příkazy značkovacího jazyka troff (ve kterém jsou stránky psané) jsou podporovány, repertoár značek je však pro běžnou práci dostačující. Zejména na systémech Microsoft Windows (kde oba editory samozřejmě pracují) je to cenná vlastnost, protože na tomto systému se implicitně žádný prohlížeč manuálových stránek nenachází.

Obrázek 12: Režim editace binárních souborů podporovaný textovým editorem Elvis.

Zvláštní postavení zaujímá režim hexadecimálního náhledu na editovaný soubor, při kterém se editor Elvis chová jako běžný hexadecimální editor. Tento režim mi osobně ve Vimu chybí nejvíce, protože náhražka ve formě filtru xxd je značně nedokonalá. Zatímco předchozí režimy zobrazení lze použít spíše pasivně pro prohlížení, režim hexadecimálního náhledu je při práci s binárními soubory velmi užitečný.

Editor Elvis poskytuje svým uživatelům mnoho dalších výborných funkcí, z nichž však uvedu z mého pohledu pouze ty nejzajímavější:

  1. Regulární výrazy (resp. „magické sekvence“) lze psát ve stylu podobném Perlu, což jistě mnozí ocení.
  2. Oproti Vimu má Elvis rozšířený příkaz show.
  3. Makra se nemusí psát pouze pomocí příkazu :map, lze použít mnohem flexibilnější :alias
  4. Pomocí operátoru = lze provést vyčíslení výrazu, avšak pouze při výběru bloku pomocí příkazu v. V opačném případě se jedná o formátovací příkaz, podobně jako ve vi či Vimu, takže kompatibilita je zachována.
  5. Přes soubor elvis.msg je možné provést překlad všech hlášení programu bez nutnosti zásahu do zdrojového kódu.

8. Vim

Většina programátorů pracujících s Linuxem se již pravděpodobně setkala s textovým editorem Vim, ovšem možná již méně známým faktem je, že tento editor původně vznikl na osobních mikropočítačích Amiga.

Obrázek 13: Adresář s Vimem verze 3.0 pro Amigu zobrazený v souborovém manažeru Directory Opus.

Vše začalo aplikací nazvanou Vim 1.0. Tento program vytvořil již v roce 1988 Bram Moolenaar. V podstatě se jednalo o prostou a k tomu ještě původně neúplnou imitaci původního textového editoru vi (visual). I prvotní nezkrácený název programu – Vi IMitation – napovídá, že šlo v prvé řadě o převod původního vi na Amigu. Bram sice začal svůj program stavět na cizích zdrojových kódech (jiného klonu editoru vi, konkrétně na programu Stevie), později však došlo několikrát k přepsání celého editoru, takže z původních zdrojových kódů není nakonec použit ani bajt. Ostatně jenom díky tomu mohla být pro Vim v dalších letech vytvořena nová licence kompatibilní s GPL.

Obrázek 14: První Vim, který autor tohoto článku aktivně používal, nesl číslo verze 3.0.

První veřejně rozšířená verze textového editoru Vim nesla číslo 1.14. Stále se ještě jednalo o program vytvořený pouze pro Amigu, psal se totiž rok 1991 a tyto počítače před sebou měly ještě několik let úspěšného komerčního života. Tato verze již přinesla několik novinek a vylepšení oproti původnímu vi, zejména jiný způsob práce s operací undo.

Obrázek 15: Seznam parametrů Vimu verze 3.0 je již poměrně dlouhý, zejména v porovnání s vi.

Verze Vim 1.22 přinesla jednu zásadní změnu. Tato verze totiž byla s úspěchem portována na unixové systémy, čímž se kruh, jež začal u původního editoru vi, uzavřel. Původní editor vi tak získal na své vlastní platformě poměrně zdatného konkurenta (Emacs byl v té době editor zcela jiné kategorie) s mnoha výtečnými funkcemi, například vícestupňovou operací undo a možností pohybu kurzorem v režimu vkládání. Vzhledem k tomu, že se Vim v mnoha ohledech vylepšil, došlo také k jeho přejmenování: z původního „Vi IMitation“ se po zásluze stává „Vi IMproved“.

Obrázek 16: Druhá obrazovka se seznamem parametrů dostupných ve Vimu 3.0.

Vim 3, jenž byl vydán v roce 1994, nabídl vůči předchozím verzím řadu vylepšení. Mezi ně patří zejména podpora pro více oken (prozatím rozdělených horizontálně, vertikální dělení se objevuje až v šesté verzi), integrovaný systém nápovědy a také větší úroveň kompatibility s původním vi, což se projevilo zejména při práci s původními makry. Úroveň kompatibility lze řídit příkazem :set cpoptions, takže rychlá práce s editorem je možná jak pro vi-veterány, tak i pro nové uživatele, kteří mohou snadno využít všechny nové vlastnosti tohoto editoru. Již v této chvíli začal být Vim používán v mnoha linuxových distribucích, kde postupně nahrazoval další klony editoru vi, například Elvise či Nvi.

Obrázek 17: Ukázka použití moderního pluginu: zobrazení rozdílu mezi dvěma uzly stromu formou diffu (plugin histwin).

V dalších verzích editoru Vim se začaly objevovat nové vlastnosti, například horizontální i vertikální členění oken, podpora záložek, skriptovací jazyk Vim Script, rozhraní pro další skriptovací jazyky, režim diff atd. To však již patří do novodobé historie.

Obrázek 18: Ukázka použití moderního pluginu: strom změn provedených v dokumentu v modulu Gundo.

9. bvi

Při striktním dělení aplikací by se nástroj bvi vlastně neměl v tomto článku objevit, protože se nejedná o editor určený pro editaci textů, ale o aplikaci, kterou je možné využít ve funkci hexa editoru, tj. především pro editaci binárních souborů. Nicméně vzhledem k tomu, že ovládání nástroje bvi je do značné míry podobné ovládání textových editorů vi a Vim, byla kapitola o bvi nakonec přidána :-)

Obrázek 19: Hexa editor bvi: důležitá sekce nápovědy, ve které se popisuje rozdíl mezi textovým editorem Vi a binárním editorem Bvi.

Kromě toho, že bvi je hexa editorem a nikoli textovým editorem, je dalším rozdílem mezi vi a Bvi změněné chování některých operací, což je ale pochopitelné, neboť binární soubory jsou zpracovávány jako jeden dlouhý blok bajtů a nikoli jako sekvence textových řádků. Zajímavé ovšem je, že bvi je možné volbou „memmove“ přepnout do režimu, v němž je možné jednotlivé bajty přidávat či naopak umazávat (což je operace, která je v některých dalších hexa editorech nedostupná).

Obrázek 20: Hexa editor bvi: textové uživatelské rozhraní binárního editoru Bvi.

Obrázek 21: Hexa editor bvi: výpis všech parametrů editoru, které je možné kdykoli změnit.

Obrázek 22: Hexa editor bvi: průběh vlastní editace binárního souboru.

Obrázek 23: Hexa editor bvi: režim přepisu znaků.

10. e3

Dalším celoobrazovkovým textovým editorem alespoň částečně odvozeným od starobylého vi, je aplikace, která se jmenuje e3. Již samotné pojmenování tohoto editoru naznačuje, že se jeho autor Albrecht Kleine snažil o vytvoření minimalistického nástroje, což se skutečně (alespoň podle mého názoru) povedlo. Textový editor e3 je totiž naprogramován v assembleru mikroprocesorů řady x86. Zdrojový kód původní verze e3 je uložen v jediném souboru s přibližně 6500 řádky optimalizovaného assembleru určeného pro překlad do 32bitového režimu (použít lze například známý assembler NASM). Pro 64bitový režim existuje jednoduchý skript, který zdrojový kód e3 jednoduše transformuje (odlišná jména registrů apod.). Kromě toho existuje i šestnáctibitová verze editoru e3 určená pro systém DOS či pro šestnáctibitové (real mode) zavaděče a různé utility. Současně existuje i varianta e3 přepsaná do programovacího jazyka C, aby bylo možné tento nepochybně zajímavý editor používat například na počítačích vybavených mikroprocesory ARM či MIPS. My se však v dalším textu budeme zabývat pouze originální 32bitovou a 64bitovou variantou e3 naprogramovanou v assembleru.

Obrázek 24: Spuštění editoru e3 v režimu emulace klávesových zkratek WordStaru.

Binární obraz e3 je v porovnání s ostatními moderními textovými editory velmi malý – podle použitého režimu (32bit/64bit) je spustitelný soubor /usr/bin/e3 velký přibližně 13 či 17 kB a žádné další soubory nejsou pro práci s e3 zapotřebí. Textový editor e3 přitom nabízí uživatelům poměrně velké množství funkcí. Asi nejzajímavější je existence několika režimů práce editoru – ten totiž dokáže napodobit editor WordStar (spuštěno přes link e3ws), Emacs (spuštěno přes link e3em), Vi/Vim (spuštěno přes link e3vi) Pico/Nano (spuštěno přes link e3pi) či NEdit (Nirvana Editor) (spuštěno přes e3ne). Režimy je možné dokonce přepínat i za běhu editoru a součástí je i obrazovka s klávesovými zkratkami (to vše je samozřejmě uloženo ve zmíněných 13 či 17 kB). e3 nabízí dokonce i funkci „undo“, obsahuje kalkulačku (dokáže spočítat i složitý aritmetický výraz zapsaný v textu!) a – což je v našich podmínkách velmi důležité – podporuje plnohodnotný osmibitový vstup znaků. Režim kompatibility s editorem vi je překvapivě dobrý, ovšem například uživatele Vimu některé neexistující příkazy a režimy budou pravděpodobně mrzet (nejvíc asi absence plnohodnotného vizuálního režimu).

Obrázek 25: Obrazovka s nápovědou je dostupná za všech okolností a přitom je vždy indikováno, jakou klávesovou zkratkou se nápověda zobrazí.

Vzhledem ke zcela minimální velikosti tohoto textového editoru asi nepřekvapí, že některé vlastnosti nejsou implementovány. Týká se to zejména podpory pro zarovnávání textu a automatického odřádkování i přerovnání odstavců, což je však funkce užitečná jen v některých případech, nikoli například při úpravách konfiguračních souborů či zdrojových kódů. Taktéž chybí podpora pro využití regulárních výrazů při hledání a nahrazování. To je však vyřešeno elegantním způsobem – funkcí pro poslání vybraného textu do filtru sed, což (znalým) uživatelům otevírá široké možnosti použití. e3 se pravděpodobně nestane jediným textovým editorem, který by byl vhodný pro všechny příležitosti, ovšem ukazuje, že i velmi krátký program dokáže být překvapivě mocný a přitom rychlý a současně nenáročný na systémové zdroje.

Obrázek 26: Editace zdrojového kódu napsaného v programovacím jazyce C.

CS24_early

11. Obsah třetí části: postupný vývoj od maker TMACS a TECMAC k plnohodnotnému Emacsu

Ve třetí části článku o historii vývoje textových editorů se budeme zabývat převážně druhou nejdůležitější větví vývoje těchto nástrojů. Popíšeme si totiž postupné rozšiřování maker určených pro editor TECO a sdružení vybraných (nejužitečnějších) maker do balíčku nazvaného později EMACS. Právě tehdy byly položeny základy pro vývoj hned několika aplikací používajících podobné klávesové zkratky i stejnou či alespoň příbuznou filozofii, v jejichž názvu se slovo Emacs či EMACS vyskytuje. V současnosti je pravděpodobně nejpopulárnější aplikace GNU Emacs, ve skutečnosti však i dnes existuje a je vyvíjeno několik dalších „alternativních“ implementací Emacsu, které není možné přehlížet (zmiňme především MicroEMACS, XEmacs či JOVE).

Obrázek 27: GNU Emacs v režimu kooperace s GNU Debuggerem při ladění uživatelského programu.

12. Odkazy na Internetu

  1. Editor O26, de PP console editor (příkazy)
    http://www.museumwaalsdor­p.nl/computer/comp789_o26­.html
  2. Editor O26 (stránka na texteditors.org)
    http://texteditors.org/cgi-bin/wiki.pl?O26
  3. Editor O26 (text editor, Wikipedia)
    https://en.wikipedia.org/wi­ki/O26_%28text_editor%29
  4. Textové editory pro mainframy
    http://texteditors.org/cgi-bin/wiki.pl?MainframeEditorFamily
  5. IDA
    http://texteditors.org/cgi-bin/wiki.pl?IDA_Editor
  6. qed
    http://texteditors.org/cgi-bin/wiki.pl?Qed
  7. qed (description)
    http://www.qef.com/html/to­olsdesc.html#qed
  8. Text editor (Wikipedia)
    https://en.wikipedia.org/wi­ki/Text_editor
  9. Line editor (Wikipedia)
    https://en.wikipedia.org/wi­ki/Line_editor
  10. The Vi Editor and its clones and programs with a vi like interface
    http://www.guckes.net/vi/
  11. www.vim.org: obsahuje verze Vimu i pro Amigu
    http://www.vim.org/
  12. Články o Vimu na Root.cz:
    http://www.root.cz/n/vim/clanky/
  13. Vim sedm – první část
    http://www.root.cz/clanky/vim-sedm-prvni-cast/
  14. vim2elvis (1.část)
    http://www.root.cz/clanky/vim2elvis-1/
  15. vim2elvis (2.část)
    http://www.root.cz/clanky/vim2elvis-2/
  16. History of the Text Editor
    http://vanstee.me/history-of-the-text-editor.html
  17. Interview with Bill Joy
    http://web.cecs.pdx.edu/~kir­kenda/joy84.html
  18. Hex Editors for Lin/unix
    http://blog.sourcepole.com/2006/09/07/hex-editors/
  19. bvi Home Page
    http://bvi.sourceforge.net/
  20. bvi (Wikipedia)
    https://en.wikipedia.org/wiki/Bvi
  21. vim (man page)
    http://www.linux-tutorial.info/modules.php?na­me=ManPage&sec=1&manpage=vim
  22. An incomplete history of the QED Text Editor
    http://ned.rubyforge.org/doc/qed.html
  23. QED Text Editor
    http://ned.rubyforge.org/doc/qed­man.html
  24. Wang 1200
    http://www.wang1200.org/
  25. Wang Laboratories
    http://en.wikipedia.org/wi­ki/Wang_Labs
  26. Wang OIS Emulator
    http://www.cass.net/~jdonog­hu/oisemul.html
  27. SpeedScript 3.2 for the Commodore 64
    http://www.atarimagazines­.com/compute/gazette/198705-speedscript.html
  28. Opravdoví programátoři nepoužívají Pascal
    http://www.logix.cz/michal/hu­mornik/Pojidaci.Kolacu.xp
  29. A Brief History of Word Processing
    http://www.stanford.edu/~bkunde/fb-press/articles/wdprhist.html
  30. XyWrite
    http://en.wikipedia.org/wiki/XyWrite
  31. W.E.Pete Peterson
    http://www.wordplace.com/ap/
  32. Orthodox Editors
    http://www.softpanorama.or­g/Articles/orthodox_editor­s.shtml
  33. Mainframe Museum ‚Where we started‘
    http://www.techsystemsps.com/Mainframe-Museum.htm
  34. IBM Mainframe album
    http://www-03.ibm.com/ibm/history/ex­hibits/mainframe/mainframe_al­bum.html
  35. Mainframe computer
    http://en.wikipedia.org/wi­ki/Mainframe_computer
  36. IBM mainframe
    http://en.wikipedia.org/wi­ki/IBM_mainframe
  37. IBM 700/7000 series
    http://en.wikipedia.org/wi­ki/IBM700/7000_series
  38. IBM System/360
    http://en.wikipedia.org/wi­ki/IBM_System/360
  39. IBM System/370
    http://en.wikipedia.org/wi­ki/IBM_System/370
  40. Datamatic 1000 by DATAmatic Corporation (1955)
    http://www.computermuseum­.li/Testpage/Datamatic-1000.html
  41. Burroughs – Third Generation Computers
    https://wiki.cc.gatech.edu/fol­klore/index.php/Burroughs_Third-Generation_Computers
  42. Burroughs B5000, B5500 and B5700 (original) documentation
    http://www.bitsavers.org/pdf/bu­rroughs/B5000_5500_5700/
  43. Burroughs B6500 and B6700 (original) documentation
    http://www.bitsavers.org/pdf/bu­rroughs/B6500_6700/
  44. Burroughs B8500 (original) documentation
    http://www.bitsavers.org/pdf/bu­rroughs/B8500/
  45. General Electric GE-400
    http://www.feb-patrimoine.com/PROJET/ge400/ge-400.htm
  46. GE-400 Time-sharing information systems:
    http://www.computerhistory­.org/collections/accession/102646147

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.