\"/
\"/ \"/    

Programové vybavení Unixu: Public domain Software

Luděk Matyska, ÚVT MU
Ročník IV - číslo 1, září 1993
Citace: L. Matyska. Programové vybavení Unixu: Public domain Software. Zpravodaj ÚVT MU. ISSN 1212-0901, 1993, roč. IV, č. 1, s. 1-5.
Tematické zařazení: Operační systémy
 předchozí číslo | následující článek 

1  Unix a aplikační software

Existuje celá řada dobrých důvodů, proč přejít na operační systém UNIX, existuje ovšem i řada skoro stejně dobrých důvodů, proč na něj nepřejít. O řadě otázek a problémů, spojených s přechodem na operační systém UNIX, jsme již mluvili v několika příspěvcích. Tento článek (a jeho připravované pokračování) je věnován jednomu pozitivnímu aspektu, se kterým se uživatelé operačního systému UNIX dříve či později setkají - prakticky nepřebernému množství systémových i uživatelských programů, které jsou pod UNIXem k dispozici.

Řada uživatelů operačního systému MS-DOS sdílí přesvědčení, podporované i výrobci programů, že UNIX je operační systém orientovaný především na uživatele-programátory a jako takový poskytuje jen velmi omezený výběr aplikačních programů, zejména ve srovnání s MS-DOSem. Toto tvrzení je pravdivé jen z části (pokud vůbec). Počet aplikačních programů, které jsou k dispozici pro uživatele pracovních stanic používajících některou z verzí operačního systému UNIX, je úctyhodný a v žádném případě si nezadá s aplikačním vybavením osobních počítačů. Skutečnost je spíše taková, že seriózní1 programové vybavení je k dispozici pouze pro pracovní stanice (a nikoliv pro osobní počítače). Je ovšem hořkou skutečností, že cena bývá úměrná kvalitě - programové vybavení pro UNIXovské počítače bývá o jeden až dva řády dražší, než (zdánlivě) obdobné programy pro osobní počítače.

Tento příspěvek je však věnován jiné stránce programového vybavení pro počítače pod operačním systémem UNIX - tzv. public domain (PD) softwaru, tj. programům "zadarmo".

Uživatelé MS-DOSu již dlouhou dobu používají tzv. volně šiřitelný software. V řadě případů jde o demonstrační verze "velkých" programů (jde tedy o určitou formu reklamy), ve většině případů jde o programy vyvinuté původně pro osobní potřebu a poté poskytnuté široké komunitě uživatelů. Skoro všechny programy pod MS-DOSem však mají jedno společné - jsou poskytovány pouze v podobě spustitelných programů, nikoliv zdrojových textů. Vzhledem k unifikované platformě osobních počítačů to nečiní prakticky žádné problémy (a otázka přítomnosti či nepřítomnosti koprocesoru se snadno vyřeší poskytnutím dvou verzí), uživatelé se však musí spokojit s programem "tak jak je", bez jakékoliv možnosti jej modifikovat a tím třeba opravit chyby, které se při používání objevily. Public domain software pro osobní počítače tak v mnohém připomíná komerční software - uživatel je odkázán na autora programu, na jehož libovůli (a časovém zaneprázdnění) záleží, zda a kdy potřebné změny či opravy chyb do programu zahrne.

Situace ve světě operačního systému UNIX je podstatně odlišná. Vzhledem k velkému množství hardwarových platforem, na kterých je UNIX provozován, je poskytování binárních verzí značně omezené - z takovýchto programů mohou těžit jen uživatelé stejných počítačů. Vzhledem k tomu, že UNIX skutečně začínal jako operační systém programátorů, převládal zejména v počátcích zájem pomoci druhým. Na rozdíl od MS-DOSu UNIX disponuje i jednotným programovacím jazykem - jazykem C. Tyto vlastnosti se společně projevily i na formě sdílení programů. Programy začaly být poskytovány ve zdrojovém tvaru (v jazyce C) spolu s návodem k jejich instalaci.

Na větší využití operačního systému UNIX v komerční sféře zareagovali různí programátoři různě. Zatímco někteří byli potěšeni vzrůstem svých příjmů (protože po programátorech se znalostí UNIXu prudce vzrostla poptávka), jiní v tom začali spatřovat omezení základních programátorských svobod.

Nejextrémnější je příklad projektu GNU2, jehož autoři tvrdí, že software by měl být poskytován zdarma a zásadně v podobě zdrojových programů, aby uživatelé-programátoři měli možnost modifikovat programy podle svých potřeb, opravovat chyby a též aby měli možnost se na příkladech dobře napsaného kódu naučit psát kvalitní programy. Příjmy programátorů by měly pocházet z práce spojené s instalací, zaučením, instruktáží, nikoliv z poplatků za každou novou instalaci programu. Tento značně avantgardní přístup k de-komercionalizaci programování má, zejména ve Spojených státech, řadu příznivců (a je podporován, alespoň do určité míry, i některými počítačovými firmami), z jejichž dílny pocházejí jedny z nejlepších volně šiřitelných programů vůbec. Cílem projektu GNU je vytvoření operačního systému podobnému UNIXu, který bude celý poskytnut veřejnosti v podobě zdrojových textů a nebude zatížen poplatky žádné komerční organizaci. Dílčí produkty, o kterých bude dále řeč, dávají tušit, že řada premis projektu je zřejmě správná a i proklamovaného cíle se pravděpodobně podaří dosáhnout.

2  Operační systém

Vyznačným rysem UNIXu je existence a dostupnost zdrojových textů úplné implementace tohoto operačního systému. Dostupné zdrojové texty jsou odvozeny z verze UNIXu vyvinuté původně na Univerzitě v Berkeley - tzv. BSD UNIXu. Aniž bychom se zabývali historií vzniku, pro účely tohoto článku postačí konstatování, že z hlavních anonymních ftp uzlů je možno získat některou z konkrétních implementací BSD UNIXu. V současné době je zájem soustředěn především na osobní počítače s procesorem Intel 80386 nebo 80486, ale v principu nic nebrání tomu, aby skutečně dobrý programátor přenesl některou z těchto variant BSD UNIXu na libovolný počítač (pokud bude mít 32-bitovou architekturu a bude pro něj existovat překladač jazyka C).

Pro zmíněné osobní počítače je možno získat operační systém 386BSD, NetBSD či Linux. Rozdíly mezi jednotlivými verzemi jsou dány úplností instalace (vzhledem ke komerčním verzím), požadavky na vybavení počítačů, konkrétní implementací některých služeb jádra i pomocných programů a v neposlední řadě i formou podpory. Pro běžného uživatele je důležitý zejména poslední argument. Odhad z letošního jara hovořil o více jak 100.000 instalacích operačního systému 386BSD jen ve Spojených státech (situace k dnešnímu dni je poněkud jiná vzhledem k prudkému nárůstu zájmu o operační systém Linux). Jen zlomek těchto uživatelů je ve skutečnosti dostatečně erudovaný na to, aby mohl provádět nějaké zásahy do operačního systému (a tak jej např. zbavovat chyb), ale předpokládáme-li, že jedno promile je dostatečně zkušené (a to je značně pesimistický odhad, protože PD operační systém si většinou nepořídí úplný amatér), pak existuje nejméně 100 vysoce kvalifikovaných programátorů, schopných (a ochotných, protože systém používají) systém vylepšovat. Tak velké množství programátorů na jeden jediný programový systém si nemůže dovolit ani ta největší počítačová firma na světě.

Existence mnoha kopií zdrojového textu a relativně snadné spojení jednotlivých uživatelů prostřednictvím diskusních skupin a elektronické pošty potvrzuje předpoklady GNU projektu - má-li dostatečné množství uživatelů k dispozici zdrojové texty programů, je podstatně vyšší pravděpodobnost, že odhalené chyby a nedostatky jsou rychle opraveny a opravy se stejně rychle dostanou i k dalším uživatelům. Negativním rysem je přirozeně rychlý růst počtu verzí a s tím spojené komplikace při údržbě systému. Přesto lze říci, že všechny zmíněné operační systémy v maximální možné míře těží z podpory rozsáhlé uživatelské základny a představují svým způsobem určitý referenční prvek, který je možno využít vždy, když narazíme na problémy s konkrétní implementací základních (systémových) programů. Převzetím příslušných programů z některého ze zmíněných systémů můžeme dosáhnout nápravy chyby, ke které se autoři námi používaného komerčního systému nehlásí.

Velké množství komerčních UNIXů je však založeno na verzi UNIXu známé pod označením System V. Zdrojové texty tohoto systému jsou vlastnictvím firmy AT&T, a nejsou tedy běžně k dispozici3. Značné odlišnosti systému V a BSD UNIXu znemožňují širší využití částí PD UNIXů pro odstranění chyb komerčních systémů. I tam, kde se jedná o verze BSD UNIXu, jako je tomu např. u operačního systému SunOS firmy SUN, nelze pochopitelně tímto způsobem vylepšovat jádro systému, ale většinu utilit lze skutečně převzít bez závažnějších modifikací.

3  Ostatní skupiny PD softwaru

Existence úplného operačního systému v public domain verzi je svým způsobem raritou, která pro řadu uživatelů nepřináší žádnou podstatnou výhodu. Často je operační systém, zejména pro pracovní stanice, pořízen přímo se stanicí a navíc rozsáhlejší komerční programové systémy jsou určeny pod zcela přesně specifikované operační systémy a neposkytují tak uživateli příliš velkou volnost výběru4. Prostředí operačního systému UNIX však poskytuje i těmto uživatelům dostatečný prostor při výběru dalšího programového vybavení.

Programy, které jsou k dispozici pro operační systém UNIX, lze rozdělit do následujících hlavních kategorií:

  1. Kompilátory.
  2. Pomocné utility.
  3. Grafické uživatelské prostředí (Graphic User Interface, GUI).
  4. Specializovaný software, většinou pro určitou vědní disciplínu.
  5. Hry.

V následujícím se o každé z těchto kategorií, kromě her, zmíníme podrobněji.

3.1  Kompilátory

Ve formě public domain softwaru jsou k dispozici překladače většiny používaných programovacích jazyků. Za nejdůležitější z hlediska uživatelů UNIXu je přirozeně možno považovat překladače programovacího jazyka C. Je dostupný kompilátor tohoto jazyka vyvíjený v rámci projektu GNU - kompilátor gcc. Tento kompilátor se v současné době stal de-facto standardním kompilátorem jazyka C pro UNIXovské systémy a například na platformě osobních počítačů představuje jednoznačně nejlepší kompilátor (většina komerčních kompilátorů pro mikroprocesory Intel například není schopná ani správně přeložit gcc). Současná verze 2.4.5 vychází velmi dobře i ze srovnání s kterýmkoliv komerčním kompilátorem pro pracovní stanice.

Systém gcc zahrnuje překladače tří jazyků - vlastní gcc je kompilátorem jazyka C, g++ je kompilátorem jazyka C++ a objc je kompilátorem jazyka Objective C. gcc je schopen generovat vysoce optimalizovaný kód pro většinu základních typů (mikro)procesorů, jako je MIPS, Intel, HP PA-RISC, IBM PowerChip a v poslední době i DEC Alpha. Vzhledem k širokému záběru a vysoké kvalitě je gcc v současnosti prakticky jediný používaný public domain kompilátor jazyka C. Překladač gcc je možno získat v podstatě z každého většího anonymního ftp místa, referenčním počítačem je prep.ai.mit.edu a pro Evropu irisa.irisa.fr. Na stejných místech je k dispozici i debugger gdb. Velkou předností programů vytvářených v rámci GNU projektu je i poměrně dokonalá dokumentace, a to jak v podobě manuálových stránek, tak i podrobných příruček (většinou připravených pro sázecí systém TeX).

Pro ty, kterým programovací jazyk C k srdci nepřirostl, existují "překladače" z jiných jazyků do C. Za zmínku stojí především vysoce kvalitní kompilátor Fortranu 77 f2c (k dispozici je i specializovaný kompilátor převádějící VAX Fortran do standardního Fortranu 77) a dále kompilátor p2c pro Pascal.

Vzhledem k převažujícímu použití jazyka C v prostředí UNIXu jsou již kompilátory pro jiné jazyky (s čestnou výjimkou Prologu) spíše vzácností a na jejich kvalitu se většinou nelze příliš spolehnout.

3.2  Pomocné utility

Operační systém UNIX je tvořen množstvím různých utilit - pomocných programů, vykonávajících specializované funkce. Vzhledem k zaměření projektu GNU nepřekvapí, že prakticky všechny tyto programy jsou dostupné v GNU-verzi. Řada pod stejným názvem, avšak s rozšířenou funkcionalitou (make), řada pod novým názvem (např. UNIXovský yacc je znám pod jménem bison) s podstatně rozšířenými vlastnostmi. V každém případě je ve zdrojovém tvaru dostupná převážná většina utilit a jejich počet stále roste. Zatímco utility vytvářené v rámci projektu GNU jsou pečlivě testovány a jsou přeložitelné prakticky na všech verzích UNIXu, jsou produkty jiných autorů většinou určeny pouze do prostředí operačního systému SunOS (tj. BSD) a jejich přenesení pod Systém V je sice možné (je vždy k dispozici zdrojový text), ale vyžaduje často značnou erudici a námahu (a v mnoha případech je lepší napsat příslušný program znovu).

Speciální zmínku si v této souvislosti zaslouží především editor emacs, jehož PD verze je rovněž vyvíjena v rámci projektu GNU, a systém perl, který představuje pokus o integraci možností shellu s prostředky symbolické manipulace programů awksed.

Editor emacs je uživatelsky modifikovatelný editor (implementovaný v LISPu) vhodný nejen na editaci programů, ale i na vytváření vlastních integrovaných prostředí (v emacsu je možno editovat program, spouštět jeho kontrolní překlad, v dalším okně procházet chybová hlášení a dokonce je možno emacs "naučit" rozumět chybovým hlášením kompilátoru a vyhledávat syntakticky chybná místa v programu).

Systém perl je velmi mocným nástrojem pro rychlou tvorbu programů manipulujících s texty, číselnými tabulkami, ... Je vhodný především na tvorbu složitých filtrů, které je většinou velmi obtížné vytvořit pouze kombinací jednodušších prostředků.

3.3  GUI

Zcela samostatnou kapitolu tvoří grafická uživatelská prostředí pro UNIX. Zde zmíníme pouze kompletní distribuci X/Window systému, známou pod označením X11 release 5. Úplné zdrojové texty je možno nalézt na většině anonymních ftp serverů5. X11R5 jsou tvořeny především knihovnami grafických funkcí, jejich nadstavbou (tzv. toolkits) a samozřejmě implementací grafického serveru, tj. programu, který je schopen interpretovat jednotlivé grafické příkazy a výsledek vykreslovat na obrazovce. Distribuce X11R5 obsahuje rovněž značné množství klientů - programů vykonávajících určitou (graficky orientovanou) funkci. Jde jak o jednoduché programy, jako jsou různé typy hodin, ukazovátka polohy myši, tak i programy složité, jako je třeba X-interface programů elektronické pošty.

Součástí distribuce jsou i programy vlastního grafického uživatelského prostředí, které zprostředkovávají grafický styk uživatele s operačním systémem. Jedná se o nejrůznější druhy window manažerů, které umožňují manipulovat s okny na obrazovce, spouštět další grafické programy, obsluhovat jejich chování (např. zda si jednotlivá okna pamatují text, který je odsunut mimo obrazovku). Jednotlivá GUI se liší jak poskytovanou funkcionalitou, tak i mnoha maličkostmi (např. typem a tvarem rámečků).

Kromě úplné distribuce X11R5 je možno získat i samostatný server pro UNIXy na osobních počítačích - XFree86. Tento server, který je implementován i pro prostředí operačního systému SCO UNIX SVR3.2, umožňuje používat osobní počítač s UNIXem jako X-server pro komunikaci se vzdáleným počítačem, na kterém jsou spouštěny aplikace pro X. Součástí distribuce XFree86 jsou i některé základní X-aplikace, včetně window manažerů, takže jeho instalací je možno získat základní uživatelské X/Window prostředí.

3.4  Specializovaný software

Většina dosud zmíněného softwaru je určena všem uživatelům bez ohledu na jejich profesní zájmy (kromě toho, že používají operační systém UNIX). Uživatelé, které sdružuje společný odborný zájem, si často poskytují i specializovaný software, opět pod všeobecnými pravidly výměny programů pod UNIXem - ve formě zdrojových textů, převážně v jazyce C (ale též programů v perlu).

Většina specializovaného softwaru je k dispozici na ftp anonymních serverech, kde bývá k dispozici i jejich stručný popis. Příkladem může sloužit server kekule.osc.edu, na kterém je možno nalézt programy pro počítačově orientované chemiky (sdružené kolem skupiny comp.chem).

Další velkou skupinu specializovaného programového vybavení tvoří programy pro sazbu textů. Jednak je to v prostředí UNIXu používaný program troff, resp. jeho GNU verze groff, a především sázecí systém TeX.

4  Závěr

V celosvětové počítačové síti je k dispozici nepřeberné množství programů, které usnadňují práci uživatelů operačního systému UNIX. Tyto programy jsou, až na malé výjimky, šířeny v podobě zdrojových textů v programovacím jazyce C. Dostupnost zdrojových textů umožňuje zásahy do programů, které zlepšují jejich užitnou hodnotu pro jednotlivé uživatele a rovněž podstatným způsobem přispívají k rychlému odstranění chyb (které se vyskytují v každém - větším - programovém systému). Současná kvalita PD programového vybavení dospěla již tak daleko, že v mnoha případech se po zakoupení a instalaci komerčního UNIXu vyplatí zaměnit jeho podstatné části public domain softwarem. PD software je často spolehlivější, robustnější a lépe uživatelsky ovladatelný než původní komerční programy. V mnoha případech je také k dispozici funkcionalita, u komerčního softwaru nedostupná.

Přes všechny výhody však public domain software není panacea6. Řada programů je špatně dokumentovaná (pokud vůbec) a jejich údržba vyžaduje kvalifikovanou obsluhu. Navíc rychlé opravy chyb a s nimi spojená rychlá změna verzí se v mnoha případech může stát spíše překážkou - jestliže se v průběhu jednoho měsíce změní dvakrát funkcionalita programu, uživatele to spíše znechutí, protože se těmto změnám musí přizpůsobovat. S tím souvisí nutnost udržovat různé verze (podle toho, jak rychle jsou uživatelé schopni reagovat na změny). Public domain software také zabírá značné místo na disku počítačů a vzhledem k rychlé obměně verzí není mazání a opětná instalace vždy tím nejvhodnějším řešením.

Přejdete-li na operační systém UNIX, je vhodné, zejména v akademickém prostředí, věnovat pozornost public domain softwaru a před koupí jakéhokoliv komerčního produktu si vždy ověřit, zda není k dispozici public domain program se stejnou nebo podobnou funkcionalitou. Po koupi aplikačního programového vybavení je pak zase vhodné ověřit, zda některé moduly nejsou nahraditelné lepšími, případně zda neexistují moduly další, s novou funkcionalitou. Přestože úroveň PD programů pro UNIX značně kolísá, je možno konstatovat, že v průměru jsou nejvýše tak špatné, jako je špatný komerční software.

setting
1 Pod tímto pojmem myslíme především programové vybavení schopné zvládat velké a komplexní aplikace, např. databáze o statisících položkách sdílené současně desítkami uživatelů.
... zpět do textu
2 Zájemci o tento projekt mohou požádat o zaslání GNU manifesta na elektronické adrese gnu@prepteckaaiteckamitteckaedu, kde je rovněž hlavní ftp archiv projektu GNU. Existuje rovněž celá řada diskusních (news) skupin věnovaných projektu GNU a vyvíjenému softwaru.
... zpět do textu
3 Získání zdrojové licence představuje investici řádově statisíců dolarů.
... zpět do textu
4 Typickým příkladem mohou být databázové systémy. Přes nesporné kvality zmíněných PD verzí operačního systému UNIX neexistují pro tyto systémy komerční verze databázových systémů, jako je Ingres, Informix, ... Chceme-li provozovat některý z těchto databázových systémů, musíme se podřídit a zakoupit takový operační systém, pro nějž implementace existuje (např. SCO pro 32 bitové osobní počítače).
... zpět do textu
5 Jen je třeba se připravit na záplavu programů - distribuční verze je tvořena cca 220 MB zdrojových textů.
... zpět do textu
6 všelék (pozn. edit.)
... zpět do textu
Zpět na začátek
ÚVT MU, poslední změna 14.11.2011