8. Nekolik dalsich lekci z fetchmailu
Nez se vratime k obecnym problemum softwaroveho inzenyrstvi, je treba se poucit z nekolika specifickych lekci, ktere prinesl fetchmail.
Rc syntax zahrnuje nepovinny parametr 'noise', ktere parser zcela ignoruje. Takovyto anglicky znejici syntax je mnohem citelnejsi nez tradicni zhustene pary parametr=hodnota.
Toto zacalo jako nocni experiment, kdyz jsem si vsiml, jak mnoho deklarace rc souboru pripominaji prikazovy minimalisticky jazyk. (Proto jsem take zmenil jeden z puvodnich parametru popklienta "server" na "poll")
Zdalo se mi, ze pokud tento jazyk bude vice pripominat anglictinu, bude snaze pouzitelny. Ackoliv jsem presvedceny zastance designerske skoly, ktera se snazi ucinit z prikazu jazyk, jako v pripade HTML, Emacsu a rady databazi, obvykle nemam prilis rad poanglictely syntax.
Tradicne programatori davaji prednost syntaxi, ktera je velmi presna a kompaktni. Toto je dedictvi z doby, kdy vypocetni zdroje byly drahe, takze prochazeni souboru muselo byt levne a co nejjednodussi. Tehdy se zdala anglictina s 50% prebytkem slov zcela nevhodna.
To ovsem neni muj duvod, proc se takoveto anglicke syntaxi obvykle vyhybam. Ja ho zminuji pouze proto, abych jej vyvratil. V dnesni dobe by uz strucnost nemela byt cilem kvuli sobe same. Je dulezitejsi, aby jazyk byl pohodlny pro uzivatele, ne aby byl levny pro pocitac.
Existuji ovsem duvody k obezretnosti. Jednim z nich je komplexita parsingu. Nechcete jeji slozitost zvysit na uroven, kdy se stava zdrojem castych chyb a zacne plest i samotne uzivatele. Dalsim duvodem je, ze pokud chcete, aby Vas jazyk znel jako anglictina, musite anglictinu znacne pokroutit, a to natolik, ze tento zpitvoreny jazyk je stejne zmatecny, jako tradicni nesrozumitelny syntax. (Typickym prikladem jsou tzv. jazyky ctvrte generace a komercni jazyky pro pristup k databazim.)
Kontrolni system fetchmailu se vyhnul temto potizim proto, ze jeho jazykova oblast je nesmirne omezena. Neni to zdaleka jazyk obecny, to co rika, neni vubec slozite, takze je zde jen maly prostor pro zmatek pri myslenkovem prechodu od jeho miniaturni podmnoziny anglictiny k skutecnemu kontrolnimu jazyku. Mozna nas to uci dalsi lekci:
16. Pokud Vas jazyk neni zdaleka kompletni (Turig-complete), syntakticky cukr muze byt pritelem
Dalsi lekce je o bezpecnosti pres utajeni. Nekolik uzivatelu mne pozadalo, abych pozmenil program tak, aby ukladal hesla zasifrovana v rc souboru a tim zabranil prilezitostnym cumilum v jejich nahodnem odkryti.
Ja to neudelal, protoze tim ve skutecnosti neziskate zadnou ochranu. Kazdy, kdo ziska pristupova prava ke cteni vaseho rc souboru bude moci sam spustit fetchmail, a pokud chce vase heslo, ziska potrebny dekoder z kodu fetchmailu.
Zasifrovani hesla v .fetchmailrc by pouze dalo falesny pocit jistoty lidem, kteri o vsem dukladne nepremysleji.
17. A security system is only as secure as its secret. Beware of
pseudo-secrets.