V únoru 1995, dva a půl roku předtím než Nathanovy zákony spatřily světlo světa, Švýcar Niklaus Wirth ve svém článku: A Plea for Lean Software (Volání po štíhlém software) zmiňuje: Software se zpomaluje rychleji, než se hardware zrychluje.
Software se zpomaluje rychleji, než se hardware zrychluje.
Wirth zde tento výrok připisuje svému kolegovi Martinu Reiserovi. A přidává další sarkasmus:
Software expanduje tak, aby zaplnil dostupnou paměť.
Práce se rozpíná tak, aby vyplnila čas určený k jejímu dokončení.
Co nám to jenom připomíná? Jistě, první Nathanův zákon. Wirth ho tu ovšem připisuje i nám dobře známému profesorovi ekonomie Cyril Northcote Parkinsonovi a jednomu z jeho věhlasných institucionárních zákonů: Práce se rozpíná tak, aby vyplnila čas určený k jejímu dokončení.
Mimochodem, číst Wirthův článek je inspirativní i po letech. Tvůrce Pascalu a dalších strukturovaných počítačových jazyků se tu zabývá rakovinovým bobtnáním software, jež umožnil překotný vývoj polovodičů. Na ten ale dle Wirtha zareagovalo softwarové inženýrství zcela nesprávně – růstem přebujelé a často nepotřebné funkcionality podbarvené až gargantuovsky obžerským grafickým prostředím.
Drahá kvantita ničící uživatele
Nekritické přidávání funkcionality dělá softwarové aplikace nesrozumitelné a náročné na obsluhu. Pokud programové vybavení hodnotíme objemem jeho funkcionality, hrubě nadřazujeme kvantitu kvalitě. Proč musí každá nová verze přicházet s přehršlí dalších funkcí, i když je nikdo nevyžaduje? Je to vždy koncový zákazník, kdo platí za celý balík. (Pozor, jsme stále ve světě on-prem.) Využívá však pouze jeho zlomek. Navíc je čím dál více zmatený z jeho komplexní obsluhy.
To ovšem vyhovuje dodavatelům software, kteří dále těží ze zákaznické podpory poskytované čím dál více dezorientovaným uživatelům. Rovněž obsáhlé a jen těžce srozumitelné bible s dokumentací či uživatelskými manuály jsou většinou k ničemu. Podle Wirtha bezpochyby signalizují dvě věci: nezvládnutý design produktu, postrádající jasnou koncepci a zřejmý úmysl „zaháknout“ zákazníka.
Závislost zákazníka na dodavateli je zdrojem větších zisků než zákaznická vzdělanost.
Jistě, zákazník platící předem za servisní smlouvu, je stabilnějším zdrojem příjmů, než zákazník plně ovládající sw produkt. A tady Wirth uvádí další zákon: Závislost zákazníka na dodavateli je zdrojem větších zisků než zákaznická vzdělanost.
Dále Wirth na příkladu jazyka C nahlíží na nesystémovost a nestrukturovanost ve vývoji software, jež mu ve velké míře umožnil prudký vývoj hardware postupující dle Moorova zákona. Solidní engineering charakterizuje Wirth pozvolným zdokonalováním produktů a jejich zvyšující se výkonností při daných omezeních včetně zdrojů.
Předem známé limity jsou dnes (píše se r. 1995) velkoryse přehlíženy, když rapidní rozmach výkonu procesorů a velikosti pamětí má kompenzovat lajdáctví ve vývoji software. Pečlivé technické návyky se v krátkodobém horizontu nevyplácí, což je jeden z důvodů, proč software hraje mezi zavedenými inženýrskými disciplínami stále dost pochybnou roli.
Niklaus Wirth
Niklaus Emil Wirth je švýcarský informatik narozený ve Winterthuru. Vystudoval elektrotechniku na ETH v Curychu. Obdržel magisterský titul na Lavalské univerzitě v kanadském Quebecu a titul Ph.D. získal na kalifornské univerzitě v Berkeley. V letech 1963-1967 působil jako asistent informatiky na Stanfordově univerzitě. V roce 1968 se stal profesorem informatiky na curyšském ETH. Dva roky strávil ve výzkumných laboratořích Xerox PARC v Kalifornii.
Byl šéf designérem programovacích jazyků Algol W, Pascal, Modula/Modula-2 a Oberon. Rovněž se aktivně účastnil návrhu a implementaci operačních systémů Lilith a Oberon a designu simulačního systému Lola. Je nositelem prestižní Turingovy ceny.
Jeho článek Program Development by Stepwise Refinement (Vývoj programů postupným zdokonalováním) je klasickým textem softwarového inženýrství. Je autorem proslavené knihy Algorithms + Data Structures = Programs (1975) vydané i u nás v r. 1988.
Seriál Zákony informatiky:
- Úvod a Moorův zákon (1)
- Zákon zrychlujících se změn (2)
- Finanční deriváty Mooreova zákona (3)
- Bellův zákon počítačové evoluce (4)
- Jak Kryder odsunul Moora do vedlejší role (5)
- Jonathan Koomey a spotřeba počítačů (6)
- Metcalfe, Gilder a sítě (7)
- Sarnoffův rozhlasový zákon (8)
- Reedův zákon a sítě v sítích (9)
- Beckstromův zákon a ekonomická hodnota sítě (10)
- Robertsův zákon zvyšování přenosové rychlosti (11)
- Nielsenův zákon o internetové šířce pásma (12)
- Software je plyn. Nathanovy softwarové zákony (13)
- Jak rychle se zpomaluje software (14)
- Trh volí bloatware (Gatesův zákon) (15)
- Kolik třešní, tolik višní? Brooksův zákon (16)
- Když Brooksův zákon neplatí (17)
- Návštěva u Annie DeCaprio s Hofstadterem a Cheopsem (18)
- Organizace, její struktura a IT architektura podle Mela Conwaye (19)