1950: Narodil se Bill Atkinson

Image doesn't exist
Foto: Gandalf

Bill Atkinson je americký počítačový inženýr a fotograf. Atkinson pracoval v Apple od roku 1978 do 1990. Obdržel bakalářský titul na Kalifornské univerzitě v San Diegu, kde mu přednášel vývojář Apple Macintoshe Jef Raskin. Atkinson pokračoval ve studiích a inženýrský titul získal na Univerzitě ve Washingtonu.

Atkinson byl součástí vývojářského týmu Apple Macintosh a tvůrcem dech beroucí aplikace MacPaint (v té době) mezi jinými. Byl to také on, kdo navrhl a implementoval QuickDraw, základní nástroj pro grafiku na Macovi. Výkon QuickDraw implementace byl základním úspěchem grafického rozhraní Maca. Atkinson také navrhl a implementoval HyperCard, první populární hypermediální systém.

Bill Atkinson a Regiony

Dnes si jen málo kdo uvědomí, jak klíčovou komponentou systému Mac OS se stal QuickDraw, který Bil napsal pro projekt Lisy a který zobrazoval pixely okolo framebufferu obrovskou rychlostí aby vytvořil oslavované uživatelské rozhraní. Jednou z hlavních úloh QuickDraw bylo poskytovat primitivní funkce pro rychlé vykreslování textu a grafiky do překrývajících oken, když okna která se překreslují jsou samy překrývány jinými okny. Aplikace tak mohly vykreslovat okna bez starostí o finální výsledek právě díky QuickDraw s malou pomocí window manageru. Tento systém totiž zajišťoval, že obsah okna zůstane vždy správně zobrazen.

Překrývající okna mohou vytvořit komplexní stíny, zejména pokud jsou jejich rohy zakřivené. Klíčová datová struktura v QuickDraw se nazývá "region", což prakticky představuje oblast na obrazovce. QuickDraw poskytuje rutiny, které dovolují programátorům definovat regiony pomocí vestavěných primitivních funkcí a provádět s nimi operace jako spojení a průnik. Nejdůležitější funkcí těchto primitivních funkcí byla však možnost kreslit do zakrytých oken. Obratnost a rychlost QuickDraw byla klenotem v arzenálu Apple.

Datová struktura regionů byl seznamem proměnných, které Bill nazýval "inverzní body", souřadnice hodnot ve kterém se černá měnila na bílou a naopak. Protože většina regionů byly většinou čtvercové, nebylo zde mnoho inverzních bodů a regiony byly docela malé. Občas však zde bylo mnoho inverzních bodů, jako například v kruhu a tak se datová struktura rozrostla podle potřeby.

QuickDraw byl kompletně napsán Billem Atkinsonem a na jaře 1982 se stále ještě vyvíjel. Nedávno zrychlil rychlost operací regionu více než 4x. Koncept "obrazu", sady kreslících operací, které se spojili dohromady pro jednoduché opakování byl právě přidán do balíčku a dosud nebyl řádně zapracován. V této fázi se začali dávat dohromady aplikace pro Lisu a Bill měl upravit QuickDraw tak, aby lépe vyhovoval vývojářům.

Jednoho rána byli však u Apple všichni v šoku, protože zjistili že Bill měl velmi špatnou autonehodu na jeho cestě do práce. Evidentně si v zatáčce nevšiml zaparkovaného nákladního auta a narazil do něj s jeho Corvettou, čímž zcela zdemoloval horní část svého auta - jeden z policistů prohlásil, že je zázrak, že Bill nepřišel o hlavu. Bylo to jen o něco málo déle než rok, co měl Woz nehodu s letadlem, takže se všem připomněly i tyto zážitky.

Když Steve slyšel o té nehodě, okamžitě naskočil do auta a jel do nemocnice, kde ležel Bill. Byl v nemocniční posteli a zrovna nabyl vědomí těsně před příchodem Steva. Měl poraněnou hlavu, ztratil trochu krve, ale naštěstí neměl žádné vážné komplikace.

Steve vešel do pokoje a s úlevou viděl, že Bill je při vědomí: "Je vše v pořádku? Všichni jsme o tebe měli strach." Bill otočil hlavu podíval se na Steva. Zvládl bolestivý úsměv a odpověděl: "Neboj se Steve, pořád si pamatuji regiony."

Bill Atkinson a vývoj MacPaint

Během vývoje LisaGraf, základního softwarového balíku pro Lisu, tak i pro Macintosh (Tam se přejmenoval na QuickDraw), pracoval sporadicky na jednoduchém kreslícím programu pro Lisu nazvaným SKetchPad. SketchPad dovolil kreslit pomocí myši výběr geometrických obrazců a dovolil tak Billovi rychle nakreslit nebo ukázat nové funkce nebo vylepšení, která přidal do LisaGrafu.

Začátkem roku 1983, krátce po oznámení projektu Lisa na valné hromadě akcionářů, Bill přestal pracoval na systémovém software pro Lisu a začal pracovat na aplikaci pro Macintosh. Steve Jobs si myslel, že by měl pracovat na nějakém strukturovaném kreslícím programu, něco jako LisaDraw od Marka Cuttera, ale Bill se domníval, že strukturované kreslení je příliš komplexní a chtěl vytvořit něco co bylo jednoduché, elegantní a snadno se používalo.

Začal oprašovat svůj kód SketchPadu a rozběhl ho na Macovi pod jménem MacSketch. SketchPad používal nabídky pro výběr vzorů a stylů podle kterých kreslil. Ale Bill je nahradil permanentními paletkami v dolní části obrazovky a přidal další velkou prominentní paletku na levé straně, která obsahovala různé kreslící nástroje. Postupně se zapracovávaly další nástroje, ale základní struktura MacPaintu zde již byla od prvních verzí.

Prvním velkým pokrokem, který Bill udělal byla eliminace blikání. Když jste přetahovali různé tvary nebo obrázky přes obrazovku, musely být smazány ze staré pozice před jejich překreslením na novou, což způsobovalo rozčilující blikání způsobované videem, které občas zobrazovalo dočasné, částečně vykreslené stavy. Bill problém vyřešil sestavováním obrazu zcela mimo paměťový buffer obrazovky, který byl pak najednou převeden v jednom kroku, takže předběžné stavy nebyly viditelné.

Ačkoliv Mac měl jen omezené množství paměti, používal dva buffery mimo obrazovku, každý o velikosti okna dokumentu. Jeden obsahoval aktuální body v dokumentu, druhý obsahoval body v předchozím stavu, před poslední operací. To usnadnilo implementaci funkce Zpět díky jednoduchému přepsání starého bufferu do nového. Také to dovolilo rychlé vykreslování, protože bylo snadné přistupovat k originálnímu stavu dokumentu v druhém bufferu jako k objektu, který byl modifikován.

Po té co základní aktualizace fungovaly, Bill začal přidávat další nástroje do palety. Přidal čtvercový nástroj pro označení, aby uživatelé mohli provádět operace na části dokumentu. V dokumentu byla oblast označená jednoduše inverzí bodů za ní, což fungovalo dobře u jednoduchých oblastí, ale bylo matoucí a těžko viditelné, když byl pod takto označenou oblastí komplexní obraz - například naskenovaná fotografie. Bill věděl, že musí najít lepší cestu jak to udělat.

Přemýšlel o tomto problému u večeře ve staré restauraci v Los Gatos. Objednal si pivo, podíval se okolo baru a všiml si poutače na pivo Hamm's beer. Poutač znázorňoval vodopády s animací vody (v podstatě tytéž co lze vidět v čínských restauracích). Billovi došlo, že animace bylo docíleno vrstvou masky pohybující se pod povrchem a poutač se měnil podle toho, která část obrazu byla zrovna viditelná.

Najednou si uvědomil, že animovaný okraj, animovaný technikou podobnou tomuto vodopádu může vyřešit problém grafického výběru, protože bude vždy jednoduché jej vidět na jakémkoliv pozadí. Spěchal domů a implementoval animaci pomocí sekvence vzorů, která vytvářela lizu neustálého pohybu, stejně jako poutač piva. Vypadalo to skvěle, ale nevěděl jak to pojmenovat. O pár dní později to ukazoval Rodovi Perkinsovi z aplikačního týmu Lizy, který řekl Billovi že ten efekt připomíná "pochodující mravence", Billovi se to líbilo a tak to také pojmenoval.

Okolo dubna 1983, Bill změnil jméno programu z MacSketch na MacPaint. A začal na něm pracovat intenzívněji. Jednou z nejdůležitějších funkcí byl mód "Fat Bits", který zvětšil malou sekci dokumentu 8x, čímž dovolil uživateli snadno manipulovat s individuálními body. Bylo to implementováno zvětšením offscreen bufferu, takže všechny ostatní funkce a efekty v tomto módu fungovaly.

Dalším klíčovým vylepšením, které Bill implementoval byl "kyblík s barvou", který dovolil uživateli vyplnit celou plochu obrazovky vybraným vzorem pomocí jednoho kliknutí. Tato funkce používal "vyplňovací" algoritmus pro nalezení všech sousedících bodů stejné barvy. Což bylo nároční na implementaci vzhledem k problémům s velikostí paměti. Bill nakonec implementoval několik algoritmů, dokud si jeden, dostatečně výkoný a efektivní nevybral. Tato rutina se pak dostala z MacPaintu do QuickDraw jako část 128K ROM.

Označení části obrazu pomocí čtverce bylo užitečné, ale často bylo nutné upravovat oblasti jiných tvarů, takže Bill přišel s dalším nástrojem, který nazval "lasso", protože se obtáčel okolo cíle. Protože je těžké ovládat myš na úrovni pixelů, laso dovolilo zhruba označit oblast zájmu, a samo se automaticky utáhlo. Přeskočilo bílé body a stáhlo se přesně okolo cíle. Laso v podstatě potřebuje stejnou funkci jako kyblík s barvou, takže jeho implementace byla relativně jednoduchá.

MacPaint byl také dobrý při psaní textu, dovolil uživateli psát znaky v jakékoliv pozici, s jakýmkoliv písmem, velikostí či stylem. Ale jak již byl text napsán, stal se body jako cokoliv jiného, nemohli jste jíž zpět a upravit jej jako text. V červnu 1983 si Bill ještě myslel, že s tím může něco udělat.

Bill se rozhodl změnit obrázky zpět na znaky pokud jste jej označili textovým nástrojem. Napsal mnoho výzkumného kódu, pravděpodobně jako pro každou funkci MacPaintu. Nejdřív napsal v assembleru rutinu pro izolaci každého znaku, pak spočítal sumu pixelů v každém boxu a porovnal ji s před připravenou tabulkou pro každé písmo, aby provedl úplné detailní srovnání s odpovídajícím znakem.

Billovy rutiny pro rozpoznávání textu pracovaly skvěle a vypadaly jako kouzlo, pokud jste používali první verze MacPaintu, mohli jste obnovit a upravit text. Ale nebylo to dokonalé, protože systém selhal, pokud byl jen jeden bod špatně umístěn. Stále to však bylo velmi užitečné. Každému se tato funkce líbila a gratuloval Billovi za tento zázrak.

O pár dní později k velkému údivu všech Bill oznámil, že se rozhodl tuto funkci zrušit. Bál se, že pokud by byla ponechána, lidé by ji příliš používali a MacPaint by byl považován za neadekvátní textový editor místo skvělého kreslícího programu. Bylo to pravděpodobně správné rozhodnutí, ale v té době si to moc lidí nemyslelo. Bylo překvapivé, že byl schopen se odpoutat od vší té práce a jednoduše ji zahodit. Ne každý je to schopen udělat.

MacPaint byl dokončen v říjnu 1983, dlouho před ostatními klíčovými aplikacemi. Poslední problém s dokončením MacPaintu byl s pamětí, protože opravdu tvrdě dotíral na limity 128K Maca použitím tří velkých bufferů. V nejhorším případě zde bylo okolo 100 bytů volného místa v paměti. Většina chyb objevených při spouštění MacPaintu byly chyby v systému, které byly zjištěny díky běhu na hraně dostupné paměti.

Je také zajímavé, jak malý program byl MacPaint vzhledem k dnešním standardům. Dokončený MacPaint se skládal z 5 804 řádků kódu v Pascalu, upravených dalšími 2738 řádky v asembléru, které byly překompilovány do méně než 0,05 MB spustitelného kódu.

Bill Atkinson po odchodu z Apple

Po odchodu z Apple zakládá v roce 1990 General Magic společně se dalšími dvěma společníky. Od roku 1996 se věnuje digitální fotografii přírody. V roce 2007 Atkinson začal pracovat jako externí vývojář s Numentouo, startup společností zaměřené na počítačovou inteligenci.

 

Změna barev | Autorská práva | Kontakt | Podpora | RSS kanály
© 2006 Gandalf, Design by Mirek
Creative Commons License