pátek, listopadu 12, 2004

Design

Uh, poměrně vytížený týden. Dokončuji teď v práci jedno vypečené schéma hardwaru, ke kterému budu následně psát řídící program v C++.

Přemýšlel jsem o tom, že je to vlastně zvláštní, že programování je snad jediná inženýrská činnost, při které se víceméně nepoužívají grafické nástroje, ale téměř čistý text.

Stavaři, strojaři, elektronici, designéři integrovaných obvodů, a myslím, že i chemici, ti všichni během své práce převážně malují nějaké plány, výkresy nebo schémata. Grafická reprezentace toho, na čem pracují, jim příjde tak samozřejmá, že si zřejmě ani nedokáží představit, že by mohli pracovat bez ní (jakkoliv není žádný problém vytvořit textový rámec, kterým by se popisovaly stavby bez použití plánů).

Naproti tomu programátoři se po většinu času topí v textu, který je vlastně velmi abstraktní a pro lidský mozek nepřirozenou konstrukcí a neumožňuje snadné hierarchické řazení jednotlivých bloků, postupné intuitivní pronikání do hloubky problému, jednoduché naznačování vzájemných vazeb, a tak dále.

Samozřejmě, že existují nástroje jako UML, nicméně myslím, že nemalá část programátorů je považuje za cosi stejně otravně zdržujícího jako vývojové diagramy, a prostě je ignoruje, nebo v nich ex post tvoří dokumentaci. Nedokáži si představit strojaře, který by začal navrhovat převodovku bez toho, aby si její jednotlivé části nakreslil. Naproti tomu znám spoustu programátorů (sebe nevyjímaje), kteří se posadí k textovému editoru, chvíli přemýšlejí a pak začnou chrlit kód.

Vlastně tak přeskakují celou fázi designu, protože začnou rovnou s implementací. Je to jako by stavební inženýr dostal od architekta hrubé črty toho, jak má budovy vypadat zvenčí a místo aby vytvořil projektovou dokumentaci, začal by rovnou kopat základy a lepit k sobě cihly s tím, že ono se to nějak vyvrbí. Jakkoliv je tato představa směšná ve stavebnictví, je velmi běžná v oblasti tvorby software.

Možná je tohle důvod, proč programy často budí dojem neuhlazané, nelogické a odfláknuté práce. Grafická prezentace umožňuje mnohem lepší orientaci v problému a tudíž snadné dotažení designu, zatímco text (často desítky samostatných souborů obsahující různé části funcionality programu) svádí k ignorování nesrovnalostí proto, že je prostě příliš složité se v něm orientovat a udržet celkový obraz.

Programování je ve srovnání se všemi ostatními inženýrskými obory velmi mladá disciplína, která teprve hledá nějakou unifikovanou, bezpečnou a snadno pochopitelnou a kodifikovatelnou formu designu a následené implementace. Myslím, že grafické reprezentaci se nevyhneme, protože je pro naše spíše vizuálně založené mozky mnohem snazší orientovat se v diagramech než v textu.

Problémem zůstává vazba mezi designem a implementací. Zatímco strojaři postupně doplňují a zpřesňují návrh přidáváním kót a komentářů přímo do výkresu, programátoři zatím nemají k dispozici dostatečně propracovaný nástroj, který by na jedné straně umožňoval vizuálně definovat design, na druhé straně dokázal diagramy aktualizovat podle implementace.

Tak jako tak, myslím, že nás v oblasti vývoje softwaru ta pravé revoluce teprve čeká, a že ani tak nebude souviset s programovacími jazyky, jako spíš s návrhem, a dalšími vysokoúrovňovými aktivitami.

No, jsem zvědav a těším se, co tahle dekáda v oboru softwrového inženýrství ještě přinese.

Zvuková stopa: Spooky - Found Sound