Portál AbcLinuxu, 30. dubna 2025 09:03
Poslední dobou mám dost volného času, tak dočítám vše, co se mi už nějakou dobu válí po pokoji. Konečně jsem se tak dostal i ke knize Operační systém Unix a jazyk C od dvojice autorů Brodského a Skočovského (ISBN 80-03-00049-1). Podařilo se mi jí koupit na aukru za 40kč a ku mému velkému podivu se jedná o mimořádně kvalitní knihu a to i přesto že vyšla v roce 1989, tedy v době kdy jsem měl na starosti především sání z matčina prsu.
Už dříve jsem se pokoušel proniknout do tajů Linuxu/Unixu, ale nikdy se mi to moc nevedlo, protože většina knih je buď moc tlustá a nezáživná (takovej ten typ co má 1500 stránek a vyžaduje rok úpěnlivého studia), nebo jen vysvětluje shell a uživatelské programy, tedy pro mě nepodstatná. Popisovaná kniha je unikátní už jen pro svých 367 stran formátu A5, na kterých se nachází v podstatě vše co jsem kdy chtěl o Unixu vědět. Posuďte sami, jeden z jejích autorů jí má částečně uveřejněnou na webu, tak si projeďte obsah.
Co se mi strašně líbí je, že autoři vždy jednají s čtenářem na rovinu. Zatímco v různých učebnicích a knihách o Linuxu/Unixu/C píšou o některých věcech že nejsou vhodné pro začátečníky, že by jim to jen pletlo hlavu, že se o nich bude psát později a proto se jim teď vyhnou, nebo o nich prostě raději nemluví, autoři této knihy vždy napíšou co se skutečně děje, i když to možná nepochopíte. Ve druhé kapitole se tak mluví o i-nodech a v třetí najdete schéma paměti procesu (text, data, stack). Nevím jak to napsat aby to nevypadalo blbě, ale miluju tenhle přístup! Připadám si jako malej kluk, kterej se může ptát táty a na každou otázku se mu dostane pravdivé odpovědi, díky čemuž si může udělat obraz o světě kolem.
V předmluvě je na pár stránkách shrnuta historie Unixu, jeho vývoj a dělení až do roku 1989. Co mě skutečně zaujalo je následující odstavec:
V ČSSR je k dispozici DEMOS pro minipočítače SMEP SM 52-11 a SM 52-12. V době, kdy se tato kniha objeví na trhu, bude pravděpodobně již implementován Unix na všech počítačích vyráběných a dodávaných v ČSSR jako výsledek snahy o jednotné základní programové vybavení. Toto tvrzení se týká nejen počítačů střediskových (JSEP), minipočítačů (SMEP), ale i mikropočítačů (osobní počítače a pracovní stanice). Všechny implementace budou vyhovovat doporučení X/OPEN.
Vskutku zarážející, že? Věčná škoda, že to nějak vyšumělo.
V úvodu je shrnuta charakteristika Unixu a popsány jeho výhody. Je to takové rychlé seznámení ala co by jste mohli říct nováčkovi za 15m.
Užitečná kapitola z uživatelského hlediska. Poměrně detailně (začíná popisem i-nodů) vysvětluje jak vytvářet, mazat a kopírovat soubory, jaký je rozdíl mezi binárním a textovým souborem a v čem ho zobrazit. Dál se věnuje adresářové struktůře, právům, speciálním souborům v /dev, mountování a archivaci pomocí taru.
V této kapitole je vysvětlen termín proces a popsán terminál, a to tak že hodně (po jejím přečtení pravděpodobně zvládnete naprogramovat vlastní emulátor). Dál se zde autoři věnují přesměrování, filtrům, rourám, kolonám a démonům. Uživatel se přitom seznámí se spoustou příkazů, ale na tomto místě jim není věnována přílišná pozornost.
Tato kapitola je v dnešní době z celé knihy pravděpodobně nejzbytečnější. Je v ní vysvětlena práce v edu, sedu a exu (vi), přičemž exu je věnována jen jedna stránka, na které je vysvětlen jen hrubý princip.
Kapitola se věnuje základům nějaké prehistorické verze C. Ne že by to kapitolu nějak devalvovalo, jedná se o mistrovskou práci, která na pár desítkách stránek docela přehledně vysvětlí to, na co ostatní potřebují knihy o stovkách stránek. Některé věci se už ale minimálně deset let dělají jinak (například deklarace funkcí - autor píše parametry oddělené středníky za hlavičku fce). Na konci kapitoly najdete přehled a ukázky knihoven, práci s kompilátorem atp..
Styl jakým je tato kapitola napsaná mě přiměl obdivovat autory za jejich věcné a jasné podání, které se ostatně prolíná celou knihou. Je to stručné, jednoznačné a jasné, navíc prokládané různými ilustracemi a spoustou krátkých zdrojových kódů, ze kterých se dá pochopit princip. Nejspíš to není kapitola pro neprogramátory a předpokládá znalosti nějakého programovacího jazyka (v té době nejspíš BASICu), nebo jsou všechny ostatní učebnice C co jsem četl psané pro idioty (jak jinak si vysvětlit jejich ukecanost?). Za sebe říkám každopádně bravo, skvělá práce!
Touto kapitolou se kniha skutečně zhodnotila a po jejím přečtení můžu říct, že stála za to. Autoři se zde věnují volání funkcí jádra, procesům a jejich synchronizaci do takových podrobností, že to jde div ne až na hardware. Je zde vysvětleno prakticky všechno důležité API pro práci se systémem. Díky této kapitole jsem pochopil, že většina programů shellu jsou jen wrappery nad jednou/dvěma funkcemi jádra.
Ke konci kapitoly se řeší nástroje tvorby programů, mimo jiné třeba profilování, jestli je lepší napsat shell script (kouzelně zvaný scénář) nebo program v C, ukázka použití programů lint, size a nm, tvorba makefiles (díky této kapitole jsem je konečně plně pochopil, vždy jsem za tím hledal něco složitého a ono je to silně triviální), debugování a cosi jako zálohovací (nikoli verzovací) nástroj pro zdrojové kódy (SCCS).
Kapitola zaměřená na pokročilejší práci a scriptování v sh. Nutno dodat že část věnovaná sh mi přišla možná až moc krátká, i když vysvětleno je vše. Dost místa pak autoři věnovali csh, které mě osobně vůbec nezaujalo (co se na tom proboha podobá C?). Lahůdkou na poslední stránce je jakýsi vsh - podivnost vypadající jako prapradědeček mc.
wc, grep, diff atp.. Dost stránek je věnováno awku a snad ještě víc editoru troff, který má služit pro přípravu dokumentů k tisku. Imho to vypadá jako totální horor, ve kterém bych nechtěl psát ani jedno slovo. Třikrát hurá pro WYSIWYG!
Popsána je komunikace mezi terminály pomocí příkazu write a mezi uživateli systému pomocí mailu. Příběh který komunikace popisuje je docela dobrý :)
Následuje popis příkazu at, ale překvapivě chybí cron, který bych na takovém místě očekával. Dál se v kapitole mihne calendar a zbytek kapitoly se věnuje příkazům pro komunikaci na síti - uucp a kermit (jakýsi telnet + přenos souborů po RS232).
Asi nejvíc hardcore kapitola z celé knihy. Popisuje správu procesů, swapování, přidělování paměti, práci se zařízeními (blokové/textové), svazky, implementace souborů, adresářů, rour a proudů. To vše na úrovni jádra, skoro na každé stránce tak najdete nějakou tu céčkovskou strukturu a na každé druhé ilustraci. Jak říkám, hardcore, ale pochopit se to dalo.
Kapitola začíná popisem instalace Unixu z pásky a disket, dále je popsána údržba systému - zakládání nových uživatelů, kontrola disků, zálohování, daemoni atp.. Ke konci se autoři věnují generování nového jádra (bez zdrojáků i s) a řešení chyb. Dnes už většina uvedených informací moc užitečná není, v Linuxu se to dělá jinak, například při přidání nového uživatele už /etc/passwd asi ručně nikdo needituje.
Kapitola se věnuje historii přenositelnosti Unixu a C. Je zde rozebíráno co je nutné psát v asm a co je plně přenositelné v C, dále jsou nakousnuty ovladače a volání jádra. Kapitola je dost krátká, docela rád bych si o tom přečetl víc.
Syntaxe jazyka C - v podstatě referenční příručka ANSI normy C.
Abecední přehled příkazů shellu - doufám samo popisné.
Volání jádra - seznam všech funkcí jádra s jejich několikaslovným popisem (např. int plock(int op) .. uzamknutí textu(dat) v paměti).
Knihovny Unixu - seznam různých .h souborů a funkcí v nich obsažených s krátkým popiskem jako u jádra.
Je pozoruhodné, jak moc je dvacet dva let stará kniha o počítačích aktuální i dneska. Obzvlášť zajímavé to je, když to porovnáte s ostatními knihami o počítačích, kterých jsou plné antikvariáty - většinou jsou to knihy dobré leda tak k pobavení, nebo postrašení.
Za sebe můžu říct, že mi toho kniha dost dala, spoustu jsem se toho z ní dozvěděl a její čtení se mi tedy vyplatilo. Jako bonus jsem dostal chuť porovnat jak moc se liší dvacet let starý Unix od Linuxu, takže se asi konečně donutím přečíst nějakou z těch tlustých knih :)
Tiskni
Sdílej:
protože většina knih je buď moc tlustá a nezáživná (takovej ten typ co má 1500 stránek a vyžaduje rok úpěnlivého studia), nebo jen vysvětluje shell a uživatelské programy, tedy pro mě nepodstatná. Připadám si jako malej kluk, kterej se může ptát táty a na každou otázku se mu dostane pravdivé odpovědi, díky čemuž si může udělat obraz o světě kolem.To není ani o tom, ale také o autorovi. Je docela rozdíl jestli se někdo živí psaním a nebo jestli to opravdu někoho baví a baví ho učit ostatní to co zná. Např. teď čtu takovou osmisetstránkovou bibli (obrázky by se daly spočítat na prstech) od nějakého renomovaného Floridského potentáta a některé pasáže jsou opravdu jen snůška rádoby-akademických honosných a především nicneříkajících keců jako výplň (některé pasáže jsou ale zase docela dobré). Nebo jsem v minulosti např. narazil na docela odborně vypadající doktorandskou práci, která se věnovala využití Fourierovy (nebo nějaké přidružené) transformace (ostatně dnes mě rozsekala věta Při dekódování byl signál rozdělen za pomoci jevu zvaného Fourierova transformace – můžete 3× hádat kde) v EKG, ale když si to člověk přečetl, tak věděl úplně to stejné jako na začátku: Nic nového. prostě jen spousta stran nic neříkajících keců. Takové je prostě nejlepší veřejně označit a vyhýbat se obloukem.
Vskutku zarážející, že?Ani ne. Teda až na ten UNIX a ČSSR, existenci a stáří X/Open a výchoďácké plány k zařazení. Ono se to tak skutečně za dob jednotného řízení dělalo, že
černé na bílémvládlo.
BTW: Kde že si říkal, že si to sehnal?
Kde že si říkal, že si to sehnal?Na aukru za 40kč :). Mám v readeru hozené RSS z vyhledávání na klíčové slovo "unix", koupil jsem tak tuhle knihu a pak Umění programování v Unixu za 150 (taky ho budu muset někdy dočíst, jsem cca v půlce).
Např. teď čtu takovou osmisetstránkovou bibli (obrázky by se daly spočítat na prstech)To mi připomnělo, že v knize jsou desítky obrázků. Vychází to tak, že zhruba na každé druhé straně jeden, kromě několika delších sekcí (například programování v C), kde jsou pro změnu ukázky zdrojových kódů.
BTW: Kde že si říkal, že si to sehnal?Např.
Kniha z ČSSR 89, která se tomu věnuje tak jak je popsáno? To se mi nechce věřit. To musí být nějaká mejlka. To byla těžká nadvláda Piešťan, Nového Boru, Skalice a BASICu.Cože? Ta nadvláda byla v segmentu tzv. mikropočítačů, v ČSSR v té době stále ještě 8bitových. Protože ty naše ekonomika byla schopna produkovat aspoň v tisících kusů, takže kolem toho roku 89 byly mikropočítače PMD85 a podobné k dispozici na velké části základních škol. Byl to počítač, na kterém jsem se učil programovat, a měl jsem ho doma i když potom začala PCčka. Protože mi ho mohli půjčit, ne jako PC s CPU 386, které na začátku 90. let stálo 50 000 tehdejší korun. Jinak samozřejmě jsme měli v ČSSR i vývoj a používání sálových počítačů a minipočítačů. Pro bližší referenci doporučuji články pana Tišnovského na rootu. Byla snaha o kompatibilitu s IBM System/360, a snad se na těch našich JSEP strojích používaly i "ukradené" systémy od IBM. No a právě koncem 80. a v začátku 90. let už sem více začaly pronikat i UNIXové stroje. Byla to záležitost velkých podniků, které si to mohly dovolit a nějak se k těch technologiím dostaly, ale minimálně byl to jasný trend, tak proč by o tom nevznikla kniha? Tehdejší autoři z tohoto segmentu byli velmi dobří, i když málo kdo se k nim dostal a málo koho to zajímalo, protože nebylo na čem si s tím hrát.
Jinak samozřejmě jsme měli v ČSSR i vývoj a používání sálových počítačů a minipočítačů. Pro bližší referenci doporučuji články pana Tišnovského na rootu.Ty pravidelně čtu, jakožto amatérskému nadšenci do počítačové historie mi přijdou naprosto super.
Kapitola se věnuje základům nějaké prehistorické verze C. Ne že by to kapitolu nějak devalvovalo, jedná se o mistrovskou práci, která na pár desítkách stránek docela přehledně vysvětlí to, na co ostatní potřebují knihy o stovkách stránek.
Já si vždycky vybavím jeden z prvníh popisů jazyka C Programming in C: A Tutorial od Kernighana, který taktéž na dvaceti stránkách velmi přístupně vysvětluje „celý“ jazyk.
Tahle kniha je vynikající - já se z ní učil C bez počítače a překladače.Hh, to muselo být něco :)
Dnes většině programátorů chybí teoretické základy, takže se musí psát jinak jednodušeji, ukecaněji :(Na tom něco bude. Další věcí je nejspíš taky to, že píše každý kdo má do prdele díru. Tuhle knihu napsal někdo kdo věděl o čem mluví, ne další průměrný uživatel.
Hh, to muselo být něco :)
Tehdy to bylo celkem obvyklé - ne každý mohl mít doma PC s upirátěným Turbo C…
Další věcí je nejspíš taky to, že píše každý kdo má do prdele díru. Tuhle knihu napsal někdo kdo věděl o čem mluví, ne další průměrný uživatel.+1
Tak sem si na zaklade tve recenze knizku pujcil a musim rict, ze me moc zaujala - jak pristupem, tak i pretrvavajici aktualnosti.
Diky za tip, keep'em comming!
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.