Date: 2021-04-16 20:00:00
From: rpt@desudoli.cz
Subject: Švanda s Édou
To: dalnopis@desudoli.cz
Tags: software
Desc: Nahlédnutí do počítačové prehistorie, kdy práci monitorů dosud zastávaly řádkové tiskárny.

Švanda s Édou

Nedávno jsem dočetl vtipnou příručku Michaela W. Lucase Ed Mastery. Co si z toho vzít?

Program ed(1) je ten standardní unixovský textový editor. Tvrdí to alespoň Dennis M. Ritchie, spoluautor operačního systému Unix. A kdo by se hádal s člověkem, který napsal kompletní operační systém bez oné sofistikované hračky, kterou dnes nazýváme monitor.

Chceš-li patřit mezi elitu, musíš umět ed(1). Skutečný sysadmin, který má mozek a páteř, si pamatuje, co napsal, a udržuje v hlavě kontext. Komunikuje se strojem na hluboké úrovni. Žádný monitor, jen řádková tiskárna. Sysadmini rybízové používají ex[1], vi[2] či nafouknuté nvi[3]. Vim[4] a emacs[5] jsou komplikované a megalomanské kusy softwaru určené pro pouhé uživatele. Sysadmin, který je používá ke své práci, je jako upír. Ubírá vzácné systémové prostředky na pouhý editor. Nelze mu věřit, míní autor.

Michael W. Lucas to myslí vážně a zároveň ne. Je to třináctá kniha jeho sysadminovské řady, prý vydaná 1. dubna.

ed(1) byl vyvíjen od roku 1969 Kenem Thompsonem, jeho konečnou verzi napsal Dennis M. Ritchie patrně v roce 1973. Používá se tedy skoro 50 let a nepatří do starého železa. Knihu bych v něm asi nepsal (ve nvi ano), ale na menší úpravy textu, sysadminovské zásahy dává smysl a je dokonce nepostradatelný, např. v single user módu na OpenBSD ani jiný editor k dispozici není.

ed v akci

No, kdo zná vi a jeho klony nvi či vim, nebude mít se zvládnutím tohoto editoru závažný problém. Příkazový a vkládací režim, command mode a insert mode, jsou podobné. Řádkové zobrazení a práce s textem jsou samozřejmě nepohodlné a vyžadují cvik. Když jsem o tom poprvé četl, ani jsem si to nedokázal představit. Stiskni klávesu p a zobrazí se aktuální řádek, napiš 5p a zobrazí se pátá řádka. Napiš c, dostaneš se do vkládacího režimu a můžeš začít psát svůj text. Pátá řádka se přepíše. Mimo to je možné vložit řádku před (příkaz i jako insert) nebo řádku po (příkaz a jako append). Obojí přepne do vkládacího režimu určeného k psaní textu.

V ed(1) nelze řádku přímo editovat. Je možné ji přepsat (již zmíněný příkaz c jako change) nebo použít substituci. V tom spočívá největší síla editoru. Kdo zná vi/nvi/vim, ví, o čem je řeč. Substituce znamená vyhledat určitý výraz na řádce a nahradit ho jiným. Nejen na řádce, ale v kombinaci s vyhledáváním v celém souboru nebo na vybrané skupině řádek. Příkaz s/old/new/g vyhledá všechny výskyty slova old na řádce a nahradí je new. S pomocí regexu lze vytvářet velmi komplikované příkazy a provádět velice sofistikované změny v textu.

ed(1) je velice úsporný. Řeči o tiskárnách nejsou nadsázka. V době jeho zrodu se monitory nepoužívaly a počítač komunikoval s obsluhou pomocí řádkové tiskárny. Člověk si musel velice dobře rozmyslet, co dělá, aby se na něho nehrnuly stohy papíru šnečí rychlostí hlučného stroje. Veliké faux pas. Proto program není příliš ukecaný.

Stal se inspirací pro vývoj sofistikovanějších editorů jako ex či zmíněné vi a jeho vylepšená verze vim. Zapadá do filozofie unixovských nástrojů, protože umožňuje spolupráci s jinými programy k vykonání určitého úkolu, případně ve skriptování. Michael W. Lucas ukazuje několik chytrých příkladů, jak lze skriptovat uvnitř ed(1) nebo naopak využít ed(1) v shellových skriptech.[6]

I přes jeho stáří a nahrazení pokročilejšími nástroji stále stojí za to se s editorem ed(1) seznámit, neboť vede k hlubšímu pochopení, jak Unix vlastně funguje a jak je možné ho využívat. Je také zajímavé studovat, jak byli programátoři minulosti omezením tehdejšího hardwaru nuceni psát štíhlé a čistě funkční programy, schopné pracovat i za velice nepříznivých podmínek slabého síťového připojení, výpočetní síly a nízké paměti.

EOF