Sections

2021-07-03

Esej na zákony softwareového inženýrství


Zadáno místo 2. úkolu na úpravu GUI u 1. semestrálky, kterou ale máme obhajovat později i s tím GUI. Měli jsme vymyslet i svoje vlastní, ale protože jsem místo toho dělal celé Velikonoce semestrálky, snažíc se pochopit JavaFX, vzpomněl jsem si na to až při cvičení, a naštěstí jsem to moh odevzdat do půlnoci. Takže kvalita je na úrovni tohoto blogu. Nicméně i přesto jsem ji měl nejlepší.

Výchozím textem byl tento: https://justpaste.it/19-eponymous-laws-of-software-de


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


V rozporu s instrukcemi posílám esej v prostém textu, protože pro obyčejný text formát PDF podléhá Paretově principu. Čtečky tohoto proprietárního formátu podléhají Wirthově zákonu a podle Murphyho zákona přeruší četbu výzvou k aktualizaci. Nezapomeňte si nastavit Vaše oblíbené písmo.

Většina těchto zákonů mi přijde jako aforismy, tedy vtipné shrnutí reality. Zaujaly mě 4, o kterých se rozepíšu. Pak mě také oslovil Hofstadterův zákon pro svou rekursivnost a moje zážitky z programování, a také Conwayův zákon pro přesné vystižení toho, proč místo týmové diskusím o programu jako celku preferuji Selbstgesamst(kunst)werk na své části.

Za klasické zákony považuju Mooreův a Murphyho. Mooreův už přestává platit s výrobními procesy na úrovni několika atomů křemíku, a Murphyho znám hlavně mimo softwareové inženýrství, podobně jako Paretův princip.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


 Parkinsonův zákon

-------------------

Práce se rozšiřuje tak, aby vyplnila čas na její dokončení.

Tento zákon se analogicky uplatňuje ve spotřebě paměti - programy se roztahují tak, aby ji vyplnili celou. Obzvláště je tím známý Google Chrome, který používá hodně procesů. Linux používá jinak nepoužívanou paměť jako diskovou cache. Obecně také kompilátory optimalizují pro rychlost, nikoliv pro spotřebu paměti, což se nehodí ve vestavěných systémech.

U procesoru k bobtnání nároků tolik nedochází, protože sběrnice jsou pomalejší než aritmetika. Pak by se ale dalo uplatnit pravidlo, že nároky na bandwidth se zvyšují tak, aby ji pokryly celou. To se děje u webových aplikací a streamování videí. Síťová neutralita mnohým zařízla 4K Netflix, se kterým měli ISP nasmlouvaný zero-rating.



 Paretův 80/20 princip

-----------------------

80 % důsledků pochází z 20 % příčin.

Tento princip je universální, a nevyhýbá se ani vývoji softwareu. Vyplývá z přirozeného nerovnoměrného rozdělení. Souvisí se Zipfovým zákonem o četnosti slov. Paretovo pravidlo předpokládá dostatečnou velikost statistického souboru. Nemá například smysl aplikovat tento princip na prográmky kratší 1000 řádků, což bývá většina UNIXových utilit, takže by se dalo říct, že UNIXová filosofie umožňuje platnosti tohoto pricipu se na této úrovni vyhnout. Ale zase 80 % uživatelů bude používat 20 % těchto prográmků. Přičemž těch 20 % se nemusí překrývat.


Další příklady (spíše aforismy):

80 % uživatelů použije jen 20 % funkcí programu.

80 % bugů je nahlášeno 20 % uživateli.

20 % vlastností zabere implementovat 80 % času.

80 % času tráví procesor v 20 % kódu.

20 % questů dohraje 80 % hráčů.

80 % softwareu je kompatibilní jen s 20 % cílových počítačů.


Na to, abyste rozuměli 80 % textu, vám stačí umět 20 % slov v něm použitých.

80 % majetku vlastní 20 % lidí, za předpokladu absence státu.*

80 % lidí mluví 20 % jazyků.

80 % lidí žije na 20 % plochy souše.

80 % nových zákonů se vztahuje na 20 % občanů.

80 % knihy je napsáno za 20 % času.

20 % jídel na jídelním lístku si objednává 80 % hostů.

etc.


* Fašistické státy přerozdělují opačným směrem než socialisitcké, a ani 1 cesta není správně, protože se tak děje pod pohrůžkou násilí.



 Wirthův zákon

---------------

Software se zpomaluje rychleji, než se zrychluje hardware.

V 90. letech, době OOP šílenství, se prosazoval přístup, že je lepší počkat 2 roky a koupit 2x rychlejší stroj, než vynakládat zdroje na optimalizaci. V roce 2005 narazil Intel na limit výkonu procesoru s 1 jádrem, proto začal těch jader dávat do procesorů víc. Nicméně pro víceprocesorové systémy je potřeba programy optimalizovat, takže se počet jader na delší dobu zastavil na 4, a postupně se vylepšovalo chlazení. V programování pro více vláken se uplatňují principy funkcionálního programování, které eliminací přiřazování zamezí potenciálu pro vznik souběhů (race condition), které se musí tradičně hlídat semafory a podmínkovými proměnnými, což může vést k uváznutí (deadlock).

Nicméně je zde i další aspekt pociťovaného zpomalování SW, a sice takový, že mnoho programů dělá věci, které po nich uživatel nechce, a bez kterých by se před 20 lety obešel. Například sbírání dat o používání nebo podbízení nepotřebných vlastností. Svým způsobem se pak jedná o malware. To souvisí se Zawinského zákonem. (Každý program se pokouší rozšířit, aby uměl číst zprávy. Ty, které nemohou, jsou nahrazeny.)

V souvistlosti s Brooksovým (přidávat do zpožděného projektu lidskou sílu jej dále zpozdí) a Amdahlovým zákonem přidávání dalších a dalších jader přestane přinášet zrychlení, protože vlákna musí mezi sebou komunikovat a čekat na sebe, a v neparalelizovatelné části spočívá bottleneck, který určuje limit zrychlení při nekonečném počtu jader. Tedy po dosažení 1000jádrových procesorů (RTX 3090 má přes 10k CUDA jader) bude nutné naučit se vytvářet NUMA-aware programy a distribuované systémy.



 Hickův zákon

--------------

Čas potřebný pro učinění rozhodnutí je logaritmem možných rozhodnutí. (Také na to má vliv počet lidí.)

Technologická omezení podporují kreativitu, protože snižují počet možností, tedy se dá snadněji vybrat nějaká, a nedochází k přehlcení výběrem. Také v kontextu těchto omezení působí výsledná díla impresivněji, viz demoscéna. Ledaskterý hudební modul pro Amigu často zní z uměleckého hlediska lépe než současná Top 40, kde na 1 povrchní písničku bylo potřeba přes 256 stop, a na repetitivním textu pracovalo několik lidí. Je to podobné jako s hamburgery z McDonaldu. Každý dokáže udělat doma lepší, ale ne milion. Ale je zaručeně potrvrzena umělecká kvalita skladby, když si ji poslechne milion lidí na Spotify?

Logaritmus odkazuje na složitost algoritmů prohledávání stavového prostoru k výběru nejvhodnějšího tahu ve hře (Negascout). Nicméně počet rozhodnutí roste exponenciálně s počtem parametrů (byť bivalentních), takže v důsledku čas potřebný k rozhodnutí roste lineárně s počtem parametrů.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


 Getmanovo pravidlo

--------------------

Veškerý software je svobodný, jste-li piráti.

Znáte-li dostatečně danou architekturu, i strojový kód je zdrojový.

Odkazuje na rozšířenou praxi ignorování proprietárních licencí pro soukromé použití. Komerční použití se dá auditovat, a veřejné je všem na očích. Nedá-li uživatelům proprietor 4 svobody, sami si je zajistí. Někdy je to dokonce i nutné, na což pamatuje směrnice EU 2009/24/EC, články 5 a 6, které povolují zpětné inženýrství a dekompilaci za účelem spolupráce s ostatními programy. FSF tvrdí, že zdrojový kód je potřeba, a přestože je pohodlné ho mít, není vždy nezbytný. Ale přitom sami uvádí, že svoboda není o pohodlí.


<kázání>

Pojem "softwareový pirát" je záměrná démonizace sdílení něčeho, co lze snadno rozmnožovat. Ježíš duplikoval chleba a ryby (Lukáš 9:16, Jan 6:11), zatímco dneska nemusíte být polobůh k nasdílení torrentu nebo nahrání na warezdoupě. Přesto korporace srovnávají takové dobrodiní s námořním pirátstvím, div se neopakovala situace s Barabášem (Matouš 27:21), kdy by somálského piráta nechali na pokoji, zatímco kluka, co sdílel pár filmů a her, zruinují exekucemi. Není to ta šelma, která zakáže lidem prodávat a kupovat, když nebudou mít její značku (Zjevení 13:17), tedy DRM klíč? Další kampaň, tentokráte od RIAA, byla "When you're downloading MP3's, you're downloading {{{COMMUNISM}}}!". Sdílení dat je 1 z mála případů, kdy komunismus funguje, protože všichni doopravdy můžou mít všechno, jen za cenu internetového připojení, a nikdo o nic nepřijde. Poslední dobou zašly korporace tak daleko, že prolobbovali daň z odkazu, čímž podlomili základní princip World Wide Webu, ukazujíc, že jejich hrabivost nezná mezí. A dokud někoho touha po materiálnu nezná mezí, nebude spokojený.

</kázání>


Před Bernskou úmluvou se programy sdílely jako recepty. Samotné recepty dodnes nepodléhají právu na kopírování. Je program, který je napsán v esoterickém jazce připomínající recept (Chef), chráněn jako program, nebo nechráněn jako recept? Obdobně, je program napsaný v esoterickém jazyce připomínající divadelní hru (Shakespeare), chráněn jako divadelní hra, nebo jako program? Zatím se tyto jazyky nerozšířily natolik, aby o tom nějaký soud byl nucen rozhodnout.


okolo 1200 slov, přes 9000 znaků (podle programu wc)


Zrovna když vyšlo tohle video: https://www.youtube.com/watch?v=4pkAwkJV5NY 


No comments:

Post a Comment

Barely anyone comments, so I don't moderate. Free advertising, I guess.