Skip to content
 

Potrebujeme podivné editory?

Občas sa stretávame s editormi, ktoré pracujú trochu zvláštne. Napríklad VI. Pre mnohých ľudí sú tieto editory nepochopiteľné, záhadné, komplikované. Nechápu, načo komu sú, a z nejakého záhadného dôvodu cítia potrebu viesť nezmyselné ohováračské kampane.

Tento ich postoj voči podivným editorom má pravdepodobne základ vo výrazne obmedzenom pohľade na svet IT okolo nás. Obmedzenom z pohľadu historického – nevidia akým spôsobom sa nejaký editor (a nielen editor, platí to na ľubovoľný softvér) dopracoval k svojej dnešnej podobe, aké požiadavky – dnes neaktuálne, avšak včera životne nutné – sa pokúšal splniť a hlavne nechápu kontinutu vývoja softvéru, keď sa obľúbený softvér postupne krok za krokom vylepšuje avšak zachováva svoje hlavné črty.

Ďaľšiu vec ktorú nechápu je realita života. Na celý svet aplikujú iba svoju životnú skúsenosť, kde vrcholom techniky je PC pripojené k Internetu, maximálne sieť pár počítačov. Existenciu iných technológii – napríklad staršieho hardvéru alebo systémov s rôznymi neštandardnými a proprietátnymi riešeniami neakceptujú. Majú na to jednoduchý recept: preinštalovať, obnoviť, zahodiť. No neviem, chcieť po niekom aby zmenil spoľahlivo fungujúcu technológiu za pár miliónov len preto že sa niekomu bridi VI? To je podstatne jednoduchšie a lacnejšie vymeniť tohoto človeka za niekoho adaptabilnejšieho.

To čo nechápem zase ja je nutkavá potreba týchto bojovníkov vytiahnuť do boja zakaždým, keď niekde padne zmienka o nenávídenom produkte a hlavne nechápem, prečo im už len samotná existencia tohoto produktu tak vadí, že si do svojej signatúry dajú heslo „VI je prežitok!“. Skutočne to nechápem.

Pripomína mi to istý súdny prípad (mám dojem že ho zmieňoval Ivo Jahelka), keď babička žalovala svoju susedu za to, že sa na balkóne opaľuje nahá a vzbudzuje verejné pohoršenie. Pri vypočutí na súde sa ukázalo, že aby babička slečnu na balkóne videla, musí vyjsť na povalu, postaviť sa na stoličku a odsunúť škridlu za komínom.

Ťažko povedať, akú motiváciu mala táto babička. Ale nebude nepodobná motivácii autora nasledujúceho citátu:

…ale proste nerozumiem preco vsade pchaju to VI

Asi boj za nejaký vyšší princíp či čo.

Kúsok histórie

Kedysi boli ako vstupné zariadenia písacie stroje alebo diaľnopisy. Editor schopný pracovať s písacím strojom ako vstupným zariadením musel implementovať špeciálne postupy na opravovanie textu. Obvykle boli jednoduché – napríklad pri mačkaní vymazávacej klávesy sa vypísalo lomítko a vymazávané písmená sa pospiatku vypisovali až po stlačenie „normálnej“ klávesy, keď sa vypísalo ďalšie lomítko a pokračovalo sa v písaní. Ak sa po niekoľkých opravách riadok stal nečitateľným, stlačením príslušnej klávesy sa prešlo na nový riadok a celý riadok sa vypísal nanovo. Bolo to čitateľnejšie, ako keby sa text dookola prepisoval. Sám som takýto editor implementoval na programovateľnom kalkulátore EMG666 s pripojeným písacím strojom.

Samozrejme, všetky editory určené pre prácu s písacími strojmi boli príkazovo a riadkovo orientované, žiadne GUI alebo celostránkové zobrazenie.

Neskôr sa objavili obrazovkové terminály. Najprv slúžili iba ako náhrada písacieho stroja – v podstate sa tvárili ako písací stroj s nekonečným papierom. Potom postupne pribúdali nové funkcie, ako mazanie znakov, pohyb po obrazovke, pohyb kurzora po obrazovke ktoré boli ovládané špeciálnymi znakmi prípadne sekvenciami znakov. Každý výrobca mal svoju predstavu o týchto riadiacich sekvenciách a funkčnosti terminálov. Týmto predstavám boli podriadené aj klávesnice, na ktorých boli veľmi špecifické klávesy. Táto rôznorodosť viedla k viacerým možným riešeniam:

  • snahe implementovať editory tak, aby boli v minimálnej miere závislé na vlastnostiach terminálu (ED, TECO)
  • snahe popísať existujúce terminály a ich chovanie v konfigurácii editora alebo operačného systému (napríklad z unixov známe termcap a terminfo databázy)
  • implementovať v editoroch možnosť editovať text aj v prípade, že sa nám nepodarilo editor nakonfigurovať pre existujúci terminál (VI)

Vsuvka o VI

Jedným z editorov, krorý v sebe schováva všetky tri prístupy je práve toľko opľúvaný VI:

  • pokiaľ všetko funguje ako má, pracuje ako celoobrazovkový editor (platí najmä pre modernejšie verzie)
  • ak nefungujú špeciálne klávesy, dá sa ovládať bežnými textovými klávesami
  • ak nefunguje správne zobrazovanie, dá sa spustiť v riadkovom režime

Aby bola možnosť používať textové klávesy na ovládanie, tento editor implementuje dva režimy: príkazový a vsúvací. Vo vsúvacom režime sa písaný text vsúva (v modernejších verziách VI – napriklad VIM – sa v tomto režime dá plnohodnotne editovať, pohybovať sa po texte, mazať text pomocou obvyklých funkčných kláves), v príkazovom režime sa textové klávesy interpretujú ako príkazy. Preto je potrebné prepínať sa medzi módmi. Napríklad prikazom i (insert) sa z príkazového módu prepneme do vsúvacieho módu.

Dalo by sa argumentovať tým, že by sme mohli jednotlivé módy špecifikovať pri spustení pomocou parametra. Avšak ak v dobrej viere spustíme takýto editor v „štandardnom režime“, nemusíme sa vedieť dostať z neho von. A tak príde ku slovu zúfalé búchanie po <CTRL>-C, <CTRL>-X, <CTRL>-D, <CTRL>-Break, zabíjanie procesov a iné zúfalé kroky. Metóda ktorú implementuje VI je každopádne bezpečnejšia.

Táto vsuvka je venovaná autorovi nasledujúceho názoru:

Stale je mi zahadou, co viedlo tvorcu toho kusu software k nicomu takemu, ze musis pred tym, ako nieco napises zadat i. Take veci som robil, ked som mal dvanast, a chcel som ukazat co vsetko viem.

Dúfam že si to raz prečíta a pochopí. A snáď raz aj pochopí, prečo sa VI stále používa.

Späť k histórii

Ako čas plynul, prišlo k istej štandardizácii. Niektoré kvalitnejšie terminály (hlavne od firmy Digital) sa stali nepísaným štandardom a kompatibilita s VT100, VT52 alebo VT220 sa stali samozrejmosťou. Vznik ANSI normy zadefinoval štandardné sekvencie pre prácu s terminálmi. Rozšírením PC sa stal bežným terminálom softvérový terminál bežiaci na PC. Takisto PC klávesnice sa stali štandardom.

A tak rôzne exotické editory začali strácať na význame a postupne boli nahradené vizuálnymi editormi všetkých možných farieb a príchutí.

Možno si poviete: žiadna škoda, písacie stroje a terminály s obmedzenými schopnosťami predsa dávno zmizli v prepadlisku dejín. To je sčasti pravda, avšak existuje mnoho situácií (a to prekvapivo mnoho), keď moderná technika nefunguje podľa očakávaní a jej úžitkové vlastnosti nie sú o v konečnom dôsledku o mnoho lepšie ako u týchto historických zariadení. Neriešme či je to chyba konfigurácie, chyby v software alebo či si máme inštalovať iný software. Ćasto nemáme možnosť to zmeniť, často nemáme čas to riešiť. Hlavne ide o situácie, ak ako súčasť poskytovaných konzultačných služieb potrebujeme editovať textové súbory na zákazníckom systéme kam sa pripájame na diaľku cez nejakú infraštruktúru.

Typická situácia: potrebujeme upraviť konfiguráciu na prastarom Unixe, ktorý riadi výrobnú linku. Zákazník na druhom konci sveta nám poskytne prístup k serveru tak, že sa pripojíme na terminál server v DMZ, odtiaľ sa pripojíme na ďalší terminál server v zákazníkovom intranete, odkiaľ sa pripojíme pomocou CarbonCopy na Win95 monitorujúce výrobnú linku a a konečne – cez hyperterminal cez RS232 sa dostaneme na unixový systém. Pustíme svoj obľúbený editor, otvoríme konfiguračný súbor, stlačíme pár kláves a ajhľa – v texte sa nám začnú objavovať rôzne paznaky. Čo teraz?

Riešenie je predsa jednoduché, povie „odborník“ – preinštalovať, urobiť upgrade, opraviť. Fajn, dobré riešenie. Akú odpoveď dostanem, ak zákazníka požiadam aby niečo nainštaloval na systém monitorujúci výrobnú linku prípadne aby si tú linku zmodernizoval si dokážete prestaviť. Môžem samozrejme skúsiť problém nájsť a stráviť hodiny skúmaním čo je zle nastavené. Môžem skúmať nastavenia toho Unixu, môžem skúmať nastavenia Hyperterminálu, terminál serverov, CarbonCopy.

No je tu ešte jedno riešenie. Zoberiem podivný editor – vi, ed, ex. Poeditujem a za päť minút je hotovo. Proste tieto editory majú mnohokrát cenu zlata.

Popísaný prípad nie je vymyslená situácia. Je to každodenná realita s ktorou máme možnosť stretať sa u tzv. enterprise riešení. U riešení, kde je niekedy funkčnosť dôležitejšia ako pohodlie, u riešení, ktoré poskytujú obrovské množstvá variant ako možu byť konfigurované a samozrejme množstvá príležitostí ako to nastaviť zle. Jedná sa často o prostredia, kde sú desiatky až stovky rôznorodých systémov a zariadení a kde skutočne nikto nemá čas na to, aby riešil nepodstatné hlúposti.

Vyššie citovaný autor konštatuje:

…ale proste nerozumiem preco vsade pchaju to VI

Nuž preto. Lebo existuje svet mimo zorné pole bežného užívateľa PC, kde majú podivné editory svoje miesto.

TECO – pramatka editorov

Na záver si stručne predstavme najpodivnejší editor všetkých čias. Je ním TECO. Napriek svojej podivnosti je ho možné považovať ze jeden z najsilnejších editorov aký kedy vznikol. Je škoda, že prakticky zmizol zo sveta.

TECO bol editor pôvodne určený na opravy diernych pások. Načítal kus pásky do pamäte, porobil nejaké zmeny, vydieroval a pokračoval ďalším kúskom pásky. V čase svojho vzniku implementoval mnohé pokrokové prvky ako možnosť programovania pomocou makier alebo regulárne výrazy (aj keď v trochu inej podobe ako ich poznáme dnes). Bol inšpiráciou pre mnohé editory, ktoré ho nasledovali – EMACS bol pôvodne napísaný ako sada makier pre TECO, riadkové editory ako ED nezaprú svoju inšpiráciu v TECO a takisto VI v sebe nesie istý odkaz.

TECO bol riadkovo a príkazovo orientovaný editor. Prakticky každý znak na klávesnici mal priradenú nejakú funkciu. Tieto funkcie nerealizovali iba základné editačné funkcie, ale implementovali makrá, prácu s premennými, cykly, podmienky. V podstate implementovali kompletný programovací jazyk, kde úlohu kľúčových slov hrali jednopísmenové príkazy.

Všetky tieto príkazy sa zadávali priamo na príkazovom riadku – nebolo treba prechádzať do nejakého makro editora, kde by sa makro napísalo a spustilo. Proste riadiace konštrukcie sa vpísali rovno na riadok, prípadne sa uložili do registra odkiaľ sa dali neskôr spúšťať. Tento prístup – že programovacie konštrukcie boli okamžite k dispozícii – zjednodušoval ich použitie, a tým sa stali aj pre bežného užívateľa každodenne používaným nástrojom. Tým sa TECO odlišoval od iných editorov s možnosťou programovania makier: iné editory vyžadovali (a vyžadujú) makro naprogramovať oddelene a spúšťať ho – preto sú makrá v iných editoroch zriedkavo využívané.

Zvláštnosťou editora TECO bolo aj to, že nepracoval s riadkami ako prakticky všetky ostatné editory. Znak nového riadku bol preňho znak ako každý iný. Každopádne veľa príkazov má svoju pôsobnosť ohraničenú znakmi nového riadku a tak vyzerajú že pracujú s riadkami.

Len jeden malý príklad: Zmažme v súbore osemdesiat riadkov začínajúcich reťazcom ###. Príkaz v TECO, ktorý napíšeme, vyzerá takto:

80<S
###$;0LK>$$

Kde jednotlivé znaky znamenajú:

  • 80 – počet opakovaní
  • <…> – cyklus, takže konštrukcia 80<…> vykoná príkazy vo vnútri osemdesiatkrát; bez zadania počtu opakovaní by išlo o nekonečný cyklus
  • S<nový riadok>### – vyhľadanie reťazca ###, vrátane znaku nového riadku na začiatku
  • $ – tento znak indikuje oddeľovač príkazov – príkazy sa oddeľujú klávesou <ESC> ale oddeľovač sa vypisuje ako dolár; oddeľovač je potrebné použiť len vtedy, ak by nasledujúci príkaz mohol splynúť s predošlým príkazom – napríklad v tomto prípade by sa stal súčasťou vyhľadávaného reťazca
  • ; – opustenie cyklu, ak predošlý príkaz – vyhľadávanie – zlyhal (reťazec sa nenašiel)
  • 0L – skok na začiatok riadku
  • K – vymazanie riadku od kurzora po koniec riadku (vrátane znaku konca riadku)
  • $$ – <ESC> dvakrát po sebe znamena povel na vykonanie príkazu

Skúste si vo svojom obľúbenom editore, či dosiahnete to isté na šestnásť stlačení klávesy alebo kliknutí myšou.

Na záver

Áno, rôzne podivné editory majú svoj zmysel – existuje mnoho situácií kedy a dôvodov prečo ich používať. Na niektoré úlohy je lepší jeden editor, na iné úlohy je lepší iný. Treba sa vedieť rozhodnúť, ktorý. Pre človeka profesionálne sa zaoberajúceho IT by nemal byť problém ovládať dva-tri editory a vždy zvoliť ten správny. Ak to problém je, mal by sa poohliadnuť po inej profesii. A hlavne prestať kecať do vecí ktorým nerozumie – to nech si nechá pre kamarátov na fasbúku.

Print Friendly, PDF & Email
2 741 zobrazení