Reklama

Barbara Liskov - žena, ktorá naučila softvér správať sa rozumne

Zdroj | The Franklin Institute
Števo Porubský
Zdroj | The Franklin Institute
Zdroj | The Franklin Institute

Barbara Liskov patrí medzi tie osobnosti informatiky, ktorých meno väčšina bežných používateľov nikdy nepočula, hoci výsledky jej práce používajú každý deň.

Keď sa prihlásite do internet bankingu, otvoríte cloudovú službu, pracujete s databázou, používate aplikáciu napísanú v modernom objektovo orientovanom jazyku alebo sa vývojár snaží napísať kód tak, aby sa nerozsypal pri prvej zmene, niekde v pozadí stojí aj jej výskum.

Obsah pokračuje pod reklamou

Pozrite si aj ďalšie príbehy úšpešných žien v technologickom svete v našej špeciálnej rubrike.

Barbara Liskov, rodená Barbara Jane Huberman, sa narodila 7. novembra 1939 v Los Angeles, no vyrastala v San Franciscu. V neskoršom rozhovore pre ACM otvorene povedala, že v čase jej dospievania sa od dievčaťa rozhodne neočakávalo, že sa bude zaujímať o matematiku a vedu. Spoločenský odkaz bol jednoduchý a dosť neokrôchaný: vydať sa, mať deti, nemať kariéru.

Našťastie doma to nebolo také úzke. Obaja jej rodičia mali vysokoškolské vzdelanie a od Barbary sa očakávalo, že bude brať školu vážne. Sama spomínala, že ju matematika a prírodné vedy priťahovali od mladosti, preto si na strednej škole vyberala všetky dostupné predmety z týchto oblastí. Veľa ich nebolo. Najpokročilejším kurzom bola predkalkulová matematika v poslednom ročníku. 

Dôležitý detail je, že jej príbeh sa nezačína počítačom. Dnes máme tendenciu predstaviť si veľkých informatikov ako deti, ktoré v desiatich rokoch rozoberali procesor, v dvanástich písali assembler a v pätnástich optimalizovali kernel. V prípade Barbary Liskov to tak nebolo. Počítače sa jej do života dostali až neskôr, takmer náhodou. Na strednej škole mala skôr matematicko-vedecký záujem, no už vtedy v triedach často nebolo veľa dievčat. Sama si nebola istá, či tam niekedy nebola úplne jediná. Dôležité však je, že ju to nezastavilo.

Berkeley: matematika, fyzika a prvé nárazy do reality

Po strednej škole nastúpila na University of California v Berkeley. Spočiatku si myslela, že bude študovať fyziku. Ako neskôr povedala, fyzika vtedy pôsobila ako najťažší odbor a teda prirodzene priťahovala ambicióznych študentov. Pomerne rýchlo však zistila, že jej viac sedí matematika, preto prešla na matematický odbor a fyziku si nechala ako vedľajší odbor. Počítače si z Berkeley prakticky nepamätala. Neskôr sa dozvedela, že tam už boli, no nachádzali sa najmä v technických odboroch. Ona na inžiniersku školu ani nepomyslela. Nie preto, že by na to nemala, ale preto, že jej to nikto reálne neukázal ako možnosť. 

Aj na Berkeley bola v matematických triedach často jedinou ženou alebo jednou z veľmi mála. V rozhovore opísala, že sa stretávala skôr s tichým odsúvaním než s otvorenými útokmi. Nebola tá, ktorú vyučujúci vyvolávali, nebola tá, ktorú pozývali do výskumných projektov, hoci patrila medzi najlepších študentov v triede. To je presne ten druh diskriminácie, ktorý sa ľahko zametie pod koberec, lebo nikto nekričí, nikto nezabuchne dvere. Len sa talentu opakovane nedá priestor. Liskov si z toho vraj vzala skôr praktickú lekciu: negatívne signály si nemá zmysel prehnane pripúšťať, ak človek vie, že má na viac. 

V roku 1961 získala titul z matematiky na Berkeley. Uvažovala o doktorandskom štúdiu matematiky a prihlásila sa na Berkeley aj Princeton. Na Berkeley ju prijali. Z Princetonu dostala pohľadnicu s informáciou, že ženy do doktorandského programu neprijímajú. Áno, vraj reálnu pohľadnicu. Písal sa rok 1961 a školy Ivy League boli stále výrazne mužským svetom. Liskov sa napokon rozhodla, že na doktorát ešte nepôjde. Namiesto toho odišla do Bostonu. 

Náhoda menom MITRE

Do Bostonu odišla v lete 1961 bez pripraveného pracovného miesta. Hľadala prácu, no ako matematička nenašla nič zaujímavé. Ponuku však dostala od spoločnosti MITRE Corporation, a to na miesto programátorky. Bol to vraj jej prvý skutočný kontakt s počítačmi. Vtedy ešte neexistovali masové odbory informatiky a firmy často brali ľudí, ktorí vedeli logicky myslieť, aj keď nemali formálne vzdelanie v programovaní. Prvý deň jej dali manuál jazyka FORTRAN a úlohu napísať program. Sama neskôr povedala, že tak zistila, že ju programovanie baví, ide jej a má naň talent. 

Barbara Liskov tak nešla do informatiky preto, že by od detstva snívala o počítačoch. Dostala sa k nim preto, že jej niekto dal príležitosť pracovať s nástrojom, ktorý bol vtedy nový, ťažko dostupný a otvorený ľuďom so silným logickým myslením. V MITRE si všimla aj rozdiely v pracovnom zaradení mužov a žien. Spomínala prípad, keď muž a žena s magisterským titulom nastúpili na rôzne úrovne pozícií: muž ako technický pracovník, žena ako programátorka. Liskov to nepodala ako veľkú osobnú krivdu, skôr ako obraz doby.

Po roku v MITRE prešla na Harvard, kde pracovala na projekte strojového prekladu prirodzeného jazyka. Projekt používal veľký program napísaný v assembleri (pravdepodobne pre IBM 7094). Jej úlohou nebol výskum, ale hľadanie a oprava chýb. Z dnešného pohľadu to môže znieť ako menej vznešená práca, no technicky bola mimoriadne cenná. Naučila sa chápať, ako stroj skutočne funguje, ako vyzerá veľký program zvnútra a prečo je štruktúra softvéru dôležitá. Neskôr sama hovorila, že pochopenie nižších vrstiev výpočtu pomáha aj pri používaní vyšších programovacích jazykov. 

Stanford: umelá inteligencia, šachové koncovky a doktorát

Obsah pokračuje pod reklamou

Po skúsenostiach z MITRE a Harvardu sa rozhodla vrátiť na školu. Prihlásila sa na Harvard a Stanford, no vybrala si Stanford, aj preto, že sa chcela vrátiť do oblasti San Francisca. Na Stanford nastúpila v roku 1963. V tom čase ešte informatika ako odbor vyzerala úplne inak než dnes. Stanford síce nemal „computer science major“ v dnešnom zmysle, ale prostredie, ktoré patrilo medzi prvé silné centrá počítačovej vedy, sa ešte lne začínalo formovať.

Na Stanforde pracovala s Johnom McCarthym, jedným z otcov umelej inteligencie a neskorším laureátom Turingovej ceny. Venovala sa umelej inteligencii a jej doktorandská práca mala názov A Program to Play Chess End Games. Išlo o program na hranie šachových koncoviek. Šach bol v tom období obľúbenou témou výskumu umelej inteligencie, pretože sa zdal ako dobré laboratórium pre štúdium rozhodovania, plánovania a „inteligentného“ správania strojov. 

V roku 1968 získala doktorát z počítačovej vedy. ACM ju opisuje ako jednu z prvých žien v Spojených štátoch, ktoré získali PhD v informatike. Niektoré zdroje používajú aj formuláciu, že bola prvou ženou v USA s doktorátom z oddelenia počítačovej vedy. Jednoducho patrila medzi úplné priekopníčky v čase, keď ženy v informatike prakticky neboli viditeľné. Jej príbeh je o to silnejší, že neprišla do odboru cez hotovú diaľnicu. Skôr si ju musela sama vyšliapať cez matematiku, praktické programovanie, umelú inteligenciu a systémy. 

Návrat do MITRE

Po doktoráte Liskov sa vrátila do oblasti Bostonu a znova nastúpila do MITRE, tentoraz ako výskumníčka. Sama neskôr povedala, že to bolo dobré rozhodnutie, pretože prechádzala z umelej inteligencie do systémového výskumu a mala sa veľa čo učiť. Prvý projekt, ktorý dostala, sa týkal mikroprogramovania. Vtedy išlo o celkom zaujímavý smer – jednoduchá hardvérová inštrukčná sada sa dala pomocou mikroprogramovania rozšíriť o zložitejšie správanie. 

Z tohto obdobia vyšiel projekt Venus. Venus je malý systém zdieľania času, ktorý skúmal, ako architektúra počítača pomáha alebo prekáža pri tvorbe zložitého softvéru. Systém podporoval viac terminálov a každý používateľ pracoval s vlastným virtuálnym strojom, takže vážna chyba jedného používateľa nemusela zhodiť celý systém. Už tu sa objavuje neskorší rukopis Barbary Liskov: softvér nemá byť len funkčný v ideálny deň, ale musí byť navrhnutý tak, aby zvládal chyby, izoloval problémy a dal sa rozumne udržiavať. 

Po projekte Venus sa dostala k programovacej metodológii, teda k otázke, ako vôbec organizovať veľký softvér. V tom období sa často hovorilo o „softvérovej kríze“. Programy rástli, vývoj bol drahý, projekty meškali a softvér sa správal horšie, než by si zákazníci, vývojári aj manažéri želali. Liskov začala čítať práce ľudí ako Tony Hoare, Niklaus Wirth, Edsger Dijkstra či David Parnas a premýšľala, ako programy rozdeliť tak, aby sa jednotlivé časti dali navrhovať, chápať a meniť samostatne. 

Pri práci na Venus si vraj uvedomila, že globálne premenné a voľné zdieľanie dát medzi časťami programu vedú k chaosu. Rozhodla sa preto rozdeliť globálny priestor premenných na partície, pričom každú časť spravoval konkrétny modul. Ostatné časti programu nemali siahať priamo na jeho dáta, ale mali používať procedúry, ktoré modul poskytoval. Toto je veľmi blízke tomu, čo dnes vývojári poznajú ako zapuzdrenie a abstrakciu dát.

MIT

V roku 1972 nastúpila na MIT. Computer History Museum uvádza, že po prezentácii práce o systéme Venus ju oslovili, aby zvážila akademickú pozíciu. Na MIT pôsobila v Laboratory for Computer Science a pokračovala vo výskume programovacej metodológie. Neskôr sa stala profesorkou, v rokoch 2001 až 2004 pôsobila ako Associate Head for Computer Science, v roku 2007 ako Associate Provost for Faculty Equity a v roku 2008 ju MIT vymenovalo za Institute Professor, čo je najvyššie akademické uznanie pre člena fakulty MIT. 

Na MIT začala riešiť problém, ktorý sa dá povedať veľmi jednoducho: programátori nemali dosť dobré nástroje na to, aby mohli veľké programy organizovať podľa ich významu. Liskov neskôr spomínala, že závidela elektrotechnikom. Tí mali obvody a vodiče, teda prirodzený spôsob, ako si systém predstaviť ako skladbu menších častí. Programátori takýto mentálny model často nemali. Kód sa síce dal písať, ale otázka znela, ako ho písať tak, aby sa dal aj pochopiť, opraviť a rozšíriť bez toho, aby ste pri každej zmene museli zapáliť sviečku svätému debuggerovi. Výsledkom bol koncept abstraktných dátových typov a programovací jazyk CLU.

Dátová abstrakcia

Dátová abstrakcia je jadro práce Barbary Liskov. Jej podstata je jednoduchá, ale veľmi silná: program nemá závisieť od toho, ako sú dáta vnútorne uložené, ale od toho, aké operácie nad nimi možno vykonať. Ak používate zoznam, zásobník, mapu alebo objekt reprezentujúci účet, nemá vás zaujímať vnútorná reprezentácia, ale rozhranie a správanie. Keď sa implementácia neskôr zmení, zvyšok programu by to nemal pocítiť, ak sa zachová rovnaké správanie. Liskov v texte Data Abstraction and Hierarchy vysvetľovala, že abstrakcia dát oddeľuje správanie od implementácie, čím umožňuje lokálne meniť reprezentáciu bez toho, aby sa menil kód, ktorý danú abstrakciu používa. 

Obsah pokračuje pod reklamou

Toto je dnes také bežné, že si to vývojári často ani neuvedomujú. Použijú knižnicu, triedu, API alebo modul a predpokladajú, že stačí poznať jeho verejné rozhranie. Lenže niekto musel túto disciplínu sformulovať a ukázať, že nejde o estetiku kódu, ale o spôsob, ako zvládnuť rastúcu zložitosť softvéru. Liskov v práci z roku 1987 zároveň upozorňovala, že objektovo orientované programovanie je najmä technika dátovej abstrakcie a dedičnosť je iba doplnok, ktorý má zmysel len v niektorých situáciách.

CLU: jazyk, ktorý predbehol svoju dobu

CLU vznikal na MIT od roku 1973. Liskov na ňom pracovala so študentmi a kolegami, pričom názov vznikol zo slova „cluster“. V jej spomienkach bol proces návrhu CLU mimoriadne racionálny – skupina prebrala možné riešenia, porovnávala výhody a nevýhody a jazyk sa súčasne navrhoval aj implementoval. Implementácia vlastného kompilátora bola dôležitým testom. Ak jazyk zvládne kompilátor, zvládne veľký reálny program. 

CLU má byť teda jazyk podporujúci dátovú abstrakciu. CHM dodáva, že CLU zaviedol prístup, ktorý pomáhal vytvárať spoľahlivejšie a bezpečnejšie programy. CLU síce nepatrí medzi jazyky, v ktorých by dnes bežný vývojár písal produkčný systém, no mnohé jeho koncepty prežili v neskorších jazykoch. Dôležité boli najmä abstraktné dátové typy, moduly, parametrizované typy, polymorfizmus, iterátory a mechanizmy spracovania výnimiek. 

Liskov pritom nevnímala CLU ako samoúčelný jazykový experiment. Bol to nástroj na presadenie určitého spôsobu myslenia. Dobrý program sa podľa nej nemal skladať z hromady detailov, ale z dobre navrhnutých abstrakcií. Každá mala jasne povedať, čo robí, a skryť, ako to robí. Tento prístup sa stal bežnou súčasťou vývoja softvéru. Ak dnes vývojár používa rozhranie, typ, triedu, generický kontajner alebo iterátor, pracuje v prostredí, ktoré Liskov pomáhala vytvoriť.

Liskovovej substitučný princíp

Najznámejším pojmom spojeným s jej menom je Liskovovej substitučný princíp, známy ako Liskov Substitution Principle alebo LSP. V jednoduchej verzii hovorí, že objekt podtypu musí byť možné použiť všade tam, kde program očakáva objekt nadradeného typu, a program sa nesmie správať nesprávne.

Pre vývojára to znamená napríklad, že ak funkcia očakáva objekt typu „účet“ a dostane objekt typu „sporiaci účet“, všetko má fungovať podľa sľubov, ktoré platia pre účet. Podtyp môže pridať správanie, môže byť konkrétnejší, ale nesmie rozbiť predpoklady, na ktorých stojí kód používajúci nadradený typ. Ak nadradený typ sľubuje, že určitá operácia bude možná, podtyp ju nemá potichu zakázať. Ak nadradený typ garantuje určitý stav po operácii, podtyp túto garanciu nemá oslabiť. Inak dedičnosť vyzerá pekne iba v diagrame a v skutočnom programe robí presne to, čo pekné diagramy vedia najlepšie: zakrýva problém.

Liskov túto tému otvorila v práci Data Abstraction and Hierarchy z roku 1987. Neskôr ju spolu s Jeannette Wing rozpracovala vo vedeckom texte A Behavioral Notion of Subtyping z roku 1994. V ňom nejde iba o názvy metód a typové podpisy, ale o správanie, invarianty, pre- a postpodmienky a takzvané history properties, teda vlastnosti vývoja stavu objektu v čase. Práca hovorí, že vlastnosti dokázané pre objekty nadradeného typu musia platiť aj pre objekty podtypu.

Pre laikov sa LSP často vysvetľuje na príklade obdĺžnika a štvorca. Matematicky je štvorec špeciálny obdĺžnik. V programe to však nemusí znamenať, že trieda Square má dediť z triedy Rectangle. Ak má obdĺžnik metódy na nezávislé nastavenie šírky a výšky, štvorec tento predpoklad poruší, pretože šírka a výška musia zostať rovnaké. LSP pripomína, že dedičnosť v programovaní nie je biologický rodokmeň ani školská geometria. Je to zmluva o správaní.

Jazyk Argus

Obsah pokračuje pod reklamou

Po CLU sa Liskov posunula k distribuovaným systémom. To sú systémy, v ktorých spolupracuje viac počítačov prepojených sieťou. Dnes je to normálny svet cloudu, mikroslužieb, databáz, internet bankingu a on-line služieb. V 80. rokoch to však bol zložitý výskumný priestor, kde sa riešilo, čo sa stane, keď časť systému zlyhá, sieť mešká, odpoveď nepríde alebo vzdialený výpočet skončí v neurčitom stave.

Výsledkom bol jazyk Argus. MIT CSAIL ho opisuje ako prvý vysokoúrovňový jazyk podporujúci implementáciu distribuovaných programov. Argus rozširoval myšlienky CLU do prostredia, kde program nežije v jednom počítači, ale v sieti. Pracoval s objektmi nazývanými guardians a s akciami, ktoré podporovali transakčné správanie. Ak vzdialené volanie zlyhalo alebo nebolo jasné, či sa vykonalo, systém mal mať mechanizmus, ako situáciu spracovať bez poškodenia konzistencie. 

Liskov neskôr vysvetľovala, že veľkou originalitou Argusu bolo prenesenie transakcií priamo do programovacieho jazyka. Pri vzdialenom volaní nemáte istotu, že dostanete odpoveď, pretože komunikujete s iným strojom a medzi vami stojí sieť. Argus preto používal transakcie a podakcie, aby výpočet dokázal zvládnuť neistotu. Sama však s odstupom priznala, že model bol komplikovaný a drahý a dnes by možno zvolila jednoduchší výpočtový model.

Zaujímavou historickou odbočkou je X Window System. Liskov v rozhovore spomínala, že Bob Scheifler, ktorý pre ňu pracoval na implementácii Argusu, potreboval nástroj na ladenie distribuovaných programov. Vzniklo prostredie, kde bolo možné sledovať rôzne časti distribuovaného systému v oknách. Sama Liskov zdôraznila, že X Windows nebol jej vynález, ale Bobov. Aj to ukazuje, ako výskumné laboratóriá fungujú: jeden projekt rieši konkrétny problém a vedľajší nástroj sa zapíše do histórie samostatne. 

Thor, bezpečnosť a praktická byzantská odolnosť

Liskov sa venovala aj objektovo orientovaným databázam. MIT CSAIL uvádza projekt Thor, objektovo orientovaný databázový systém poskytujúci transakčný prístup k perzistentným a vysoko dostupným objektom v široko distribuovanom prostredí. Znie to ako veta z akademického abstraktu, ale v preklade ide o to, ako ukladať, sprístupňovať a chrániť objekty v systémoch, ktoré nie sú na jednom stroji a musia prežiť chyby. 

Ďalšou dôležitou kapitolou je Byzantine Fault Tolerance, teda odolnosť voči byzantským chybám. Taká chyba nie je len obyčajný pád servera. Byzantský komponent sa môže správať ľubovoľne nesprávne: môže klamať, posielať rôznym častiam systému rôzne odpovede, robiť chyby v dôsledku bugu alebo útoku. Miguel Castro a Barbara Liskov v roku 1999 publikovali prácu Practical Byzantine Fault Tolerance. Opísali replikačný algoritmus, ktorý dokázal tolerovať byzantské chyby a fungovať v asynchrónnych prostrediach podobných internetu.

PBFT je dôležitý preto, že presunul byzantskú odolnosť z kategórie „pekná teória, veľa šťastia pri nasadení“ bližšie k praktickým systémom. V čase rastúcich on-line služieb, bezpečnostných útokov a distribuovaných infraštruktúr to bol veľký kork. Dnes sa o byzantskej odolnosti často hovorí aj pri konsenzuálnych protokoloch a blockchainoch, hoci PBFT sám osebe netreba zamieňať za celý svet blockchainu. Podstatné je, že Liskov sa opakovane vracala k rovnakej téme: ako navrhnúť systém, ktorý sa dá používať aj vtedy, keď realita nie je poslušná laboratórna ukážka.

Turingova cena a uznanie

Barbara Liskov získala Turingovu cenu za rok 2008. Turingova cena sa často označuje za najvyššie ocenenie v informatike. ACM jej ju udelila za príspevky k praktickým aj teoretickým základom návrhu programovacích jazykov a systémov, najmä v oblasti dátovej abstrakcie, odolnosti voči chybám a distribuovaného výpočtu. MIT zároveň uvádzalo, že bola druhou ženou, ktorá toto ocenenie získala. Pred ňou ho v roku 2006 získala Frances Allen. 

Turingova cena ale nie je jediné ocenenie, ktoré Liskov získala. Zoznam je pomerne dlhý. Má členstvo v National Academy of Engineering od roku 1989, členstvo v American Academy of Arts and Sciences od roku 1992, ACM Fellowship od roku 1996, Society of Women Engineers Achievement Award z roku 1996, IEEE John von Neumann Medal z roku 2004, MIT Institute Professor z roku 2008, ACM SIGPLAN Programming Languages Achievement Award z roku 2008. V roku 2012 ju uviedli do National Inventors Hall of Fame a v roku 2023 sa stala Fellow Computer History Museum. Franklin Institute jej v roku 2023 udelil Benjamin Franklin Medal v oblasti Computer and Cognitive Science. 

Popri výskume bola aj mentorkou. ACM uvádza, že viedla výskum viac ako dvadsiatich doktorandov a veľkého počtu magisterských študentov. To je pri osobnosti jej typu rovnako dôležité ako ocenenia. V informatike sa myšlienky nešíria len článkami a jazykmi, ale aj cez ľudí, ktorých niekto naučí klásť dobré otázky a nepísať softvér ako domček z kariet. 

Obsah pokračuje pod reklamou

Barbara Liskov nie je dôležitá len preto, že po nej nesie meno jeden princíp objektovo orientovaného návrhu. Je dôležitá preto, že jej práca smerovala k disciplinovanejšiemu softvérovému inžinierstvu. Pomohla presadiť predstavu, že programy sa nemajú navrhovať ako spleť príkazov, ale ako systém abstrakcií s jasnými rozhraniami, zodpovednosťami a garanciami správania.

Jej kariéra prepája viac oblastí, ktoré dnes tvoria jadro modernej informatiky: programovacie jazyky, dátovú abstrakciu, typové systémy, objektovo orientované programovanie, distribuované systémy, databázy, bezpečnosť a odolnosť voči chybám. To nie je náhodný zoznam tém do životopisu. Je to jedna dlhá línia: ako vytvárať softvér, ktorému sa dá veriť viac než len počas demo prezentácie.

Zdroj | MIT

Liskov nevyrástla vo svete, ktorý by dievčatám hovoril: choďte do vedy, patríte tam. Naopak, vyrástla v čase, keď sa od nej očakával úplne iný život. K počítačom sa nedostala cez privilegovaný štart, ale cez matematiku, prvú prácu, vlastnú zvedavosť a ochotu učiť sa. Keď jej Princeton odkázal, že ženy neprijíma, svet sa nezrútil. Išla ďalej. Keď ju v triedach prehliadali, išla ďalej. Keď sa informatika ešte len formovala, pomohla jej dať tvar.

A to je možno najlepší odkaz jej kariéry. Technológie netvoria iba tí, ktorí zapadnú do očakávaného obrazu „typického“ programátora. Tvoria ich aj ľudia, ktorým niekto najprv ani neukázal dvere. Barbara Liskov ich našla, otvorila a potom za nimi vybudovala kus modernej informatiky.

Ďalšia story
Zatvoriť

Newsletter

Ďakujeme za váš záujem! Odteraz vám už neunikne žiadna novinka.
Ľutujeme, ale váš formulár sa nepodarilo odoslať.