„Ajťák“ Joker, osobní stránky

Nacházíte se v části webu: Hlavní stránka › Zápisník

Kdo je skutečně dobrý programátor?

napsal Joker, 30.4.2014 13.25:06, naposledy upraveno 30.4.2014 13.29:47

Po více než roční přestávce v psaní úvaha na téma, které mám v hlavě už několik let a občas se v nějaké souvislosti vynoří.

Nejdříve, pokud ho neznáte, si přečtěte slavný příběh o Melovi (v originále The story of Mel). Živě ho v seriálu o Hackerech nazývá Opravdovým hackerem, originál je Opravdový programátor (the Real programmer).

Mel byl v 60. letech skvělý programátor pro počítač RPC 4000, jeho programy dokázaly z toho počítače vyždímat maximum výkonu. Což tehdy bylo vysoce žádoucí, počítač RPC 4000 v roce 1964 stál 87 500 dolarů (přirovnejme to orientačně k dnešním 13 milionům Kč) a měl výkon 280 000 operací za minutu. Což odpovídá asi 0,0004% výkonu Raspberry Pi.

Kacířská myšlenka: Člověk typu Mela by dnes byl poměrně mizerný programátor. (Upozorňuji, že v dnešních podmínkách. Následující nemá ukázat, že Mel Kaye byl špatný programátor, ale je to úvaha nad tím, jak se význam termínu „dobrý programátor” za těch 50 let změnil.)

Program byl sice dokonale optimalizovaný pro hardware, jenže právě kvůli tomu zároveň naprosto svázaný s konkrétním modelem počítače. Jakákoliv změna, byť třeba jen výměna paměti za rychlejší, znamenala předělat i všechny programy. Trochu podobně na tom byly třeba staré mobily, jejich software byl optimalizovaný pro hardware, ale zároveň jste si tam nic dalšího instalovat nemohli. Tento model byl opuštěn ve prospěch univerzálních („neoptimalizovaných”) operačních systémů prakticky okamžitě, jakmile to umožňoval výpočetní výkon těch zařízení.

Být dokonale přizpůsobený jednomu zařízení je ve světě milionů rozličných zařízení dost na nic (to se samozřejmě týká „programů pro masy”, v některých specializovaných oborech je i dnes nutné optimalizovat pro konkrétní zařízení).

Hlavní problém by ale dnes byl, že Melův program byl nesrozumitelný pro jiné programátory. V příběhu si všimněte, jaké problémy měl vypravěč (profesor Nather) ten kód upravit (a nakonec to vzdal), přitom Blackjack samotný je poměrně triviální algoritmus (ukázka v C++). Z toho je vidět, že takový program je jen těžko udržovatelný a rozšiřitelný a naprogramovat tak složitější (na dnešní poměry) aplikaci prakticky není možné.

Cíl jako takový se vlastně nezměnil: Dobrý programátor by měl udělat program, který zákazníkům poběží pokud možno rychle a bez chyb. Jen zatímco před 50 lety to znamenalo maximálně optimalizovat (protože tehdejší počítače s bídou zvládly ty optimalizované programy), dnes to naopak znamená být univerzální a fungovat na různých zařízeních.

Navíc samotným faktem, že program funguje, dnes už nikoho neohromíte. Takže to musí i hezky vypadat, snadno se ovládat a musíte reagovat na požadavky zákazníků, tzn. musí to jít snadno rozšiřovat a udržovat.

Kdo by i dnes volal po maximální optimalizaci na výkon za každou cenu, musí si uvědomit i negativa. Vývoj bude trvat dlouho, takže takový program bude drahý… A tady to asi i skončí, protože zákazníci začnou říkat: „Jakto?! Vždyť ta optimalizace stála víc, než kdybych si prostě koupil rychlejší počítač!” A přesně v tom to je.


K tomuto příspěvku nejsou žádné komentáře

Přidat nový komentář