„Je snazší odpovědět, než mlčet“ – skvělý rozhovor s otcem transakční paměti Mauricem Herlihym

Maurice Herlihy - majitel dvou Ceny Dijkstra. První je pro práci "Synchronizace bez čekání" (Brown University) a druhý, novější, - "Transakční paměť: Architektonická podpora pro datové struktury bez zámku" (Virginia Tech University). Cena Dijkstra se uděluje za dílo, jehož význam a vliv je patrný již nejméně deset let a Maurice je zjevně jedním z nejznámějších specialistů v oboru. V současné době působí jako profesor na Brown University a má za sebou řadu úspěchů, které jsou dlouhé odstavec. V současnosti se zabývá výzkumem blockchainu v kontextu klasické distribuované výpočetní techniky.

Maurice již dříve přijel do Ruska na SPTCC (videokazeta) a uskutečnili vynikající setkání vývojářské komunity JUG.ru Java v St. Petersburgu (videokazeta).

Tento habrapost je skvělý rozhovor s Mauricem Herlihym. Pojednává o následujících tématech:

  • Interakce mezi akademickou obcí a průmyslem;
  • Nadace pro výzkum blockchainu;
  • Odkud pocházejí průlomové myšlenky? Vliv popularity;
  • PhD pod vedením Barbary Liskov;
  • Svět čeká na vícejádro;
  • Nový svět přináší nové problémy. NVM, NUMA a hackování architektury;
  • Kompilátory vs procesory, RISC vs CISC, sdílená paměť vs předávání zpráv;
  • Umění psát křehký vícevláknový kód;
  • Jak naučit studenty psát složitý vícevláknový kód;
  • Nové vydání knihy „Umění víceprocesorového programování“;
  • Jak byla vynalezena transakční paměť;   
  • Proč stojí za to provádět výzkum v oblasti distribuovaných počítačů;
  • Zastavil se vývoj algoritmů a jak pokračovat?
  • Práce ve společnosti Brown University;
  • Rozdíl mezi výzkumem na univerzitě a v rámci korporace;
  • Hydra a SPTDC.

Rozhovor vede:

Vitalij Aksenov — v současnosti postdoktorand na IST Austria a zaměstnanec katedry počítačových technologií na univerzitě ITMO. Provádí výzkum v oblasti teorie a praxe konkurenčních datových struktur. Před prací na IST získal doktorát na Paris Diderot University a ITMO University pod vedením profesora Petera Kuzněcova.

Alexej Fedorov - Producent ve společnosti JUG Ru Group, ruské společnosti, která pořádá konference pro vývojáře. Alexey se podílel na přípravě více než 50 konferencí a jeho životopis zahrnuje vše od pozice vývojového inženýra ve společnosti Oracle (JCK, Java Platform Group) až po pozici vývojáře v Odnoklassniki.

Vladimír Sitnikov - Inženýr ve společnosti Netcracker. Deset let práce na výkonu a škálovatelnosti NetCracker OS, softwaru používaného telekomunikačními operátory k automatizaci procesů správy sítí a síťových zařízení. Zajímám se o problémy s výkonem Java a Oracle Database. Autor více než tuctu vylepšení výkonu v oficiálním ovladači PostgreSQL JDBC.

Interakce mezi akademickou sférou a průmyslem

Alexey: Maurici, velmi dlouho jsi pracoval v akademickém prostředí a první otázkou je interakce mezi akademickou a průmyslovou sférou. Mohl byste pohovořit o tom, jak se v poslední době změnily interakce mezi nimi? Co se stalo před 20-30 lety a co se děje nyní? 

Maurice: Vždy jsem se snažil úzce spolupracovat s komerčními společnostmi, protože mají zajímavé problémy. Zpravidla se příliš nezajímají ani o zveřejňování svých výsledků, ani o podrobné vysvětlování svých problémů světovému společenství. Zajímá je pouze řešení těchto problémů. Nějakou dobu jsem pro takové firmy pracoval. Strávil jsem pět let prací na plný úvazek ve výzkumné laboratoři ve společnosti Digital Equipment Corporation, která bývala velkou počítačovou společností. Jeden den v týdnu jsem pracoval ve společnosti Sun, v Microsoftu, v Oracle a trochu jsem pracoval na Facebooku. Nyní půjdu na volno (profesor na americké univerzitě si takovou dovolenou může vzít na rok přibližně jednou za šest let) a pracovat v Algorand, jedná se o kryptoměnovou společnost v Bostonu. Úzká spolupráce s firmami byla vždy potěšením, protože se tak dozvíte o nových a zajímavých věcech. Můžete být dokonce první nebo druhá osoba, která publikuje článek na vybrané téma, místo abyste pracovali na postupném zlepšování řešení problémů, na kterých již pracují všichni ostatní.

Alexey: Můžete nám říct podrobněji, jak se to stalo?

Maurice: Samozřejmě. Víte, když jsem pracoval v Digital Equipment Corporation, já a Elliot Moss, vynalezli jsme transakční paměť. Bylo to velmi plodné období, kdy se všichni začali zajímat o informační technologie. Paralelismus, včetně, ačkoli vícejádrové systémy ještě neexistovaly. Během dnů Sun a Oracle jsem hodně pracoval na paralelních datových strukturách. Na Facebooku jsem pracoval na jejich blockchainovém projektu, o kterém nemůžu mluvit, ale doufám, že se brzy dostane na veřejnost. Příští rok budu v Algorandu pracovat ve výzkumné skupině studující chytré kontrakty.

Alexey: Blockchain se v posledních letech stal velmi oblíbeným tématem. Pomůže to vašemu výzkumu? Možná to usnadní získávání grantů nebo přístup ke zdrojům od společností působících v oboru?

Maurice: Už jsem dostal malý grant od nadace Ethereum. Popularita blockchainu velmi pomáhá inspirovat studenty k práci v této oblasti. Velmi je to zajímá a rádi se do toho pustí, ale někdy si neuvědomují, že výzkum, který navenek zní vzrušujícím způsobem, se ukáže jako opravdu tvrdá práce. Jsem však opravdu nadšený, že mohu použít všechnu tuto mystiku kolem blockchainu k přilákání studentů. 

Ale to není vše. Jsem v poradním výboru několika blockchainových startupů. Někomu se to může podařit, někomu ne, ale vždy je velmi zajímavé vidět jejich nápady, studovat je a radit lidem. Nejvzrušující věc je, když varujete lidi, aby něco nedělali. Mnoho věcí se na první pohled zdá jako dobrý nápad, ale je tomu skutečně tak?

Nadace pro výzkum blockchainu

Vitaly: Někteří lidé si myslí, že budoucnost spočívá v blockchainu a jeho algoritmech. A další lidé říkají, že je to jen další bublina. Můžete se podělit o svůj názor na tuto věc?

Maurice: Mnoho z toho, co se děje ve světě blockchainu, je špatně, některé jsou jen podvody, mnohé se přeceňují. Myslím si však, že pro tyto studie existuje pevný vědecký základ. Skutečnost, že svět blockchainu je plný ideologických rozdílů, ukazuje míru vzrušení a odhodlání. Na druhou stranu to není pro vědecký výzkum nijak zvlášť přínosné. Pokud nyní publikujete článek, který hovoří o nedostatcích konkrétního algoritmu, výsledná reakce není vždy zcela vědecká. Lidé často vyhazují své emoce. Myslím, že tento druh vzrušení v této oblasti může někomu připadat atraktivní, ale na konci dne existují skutečné vědecké a technické problémy, které je třeba řešit. Je tu hodně informatiky.

Vitaly: Takže se snažíte položit základy pro výzkum blockchainu, že?

Maurice: Snažím se položit základy solidní, vědecky a matematicky spolehlivé disciplíny. A součástí problému je, že někdy musíte odporovat některým příliš tvrdým postojům jiných lidí a ignorovat je. Někdy se lidé ptají, proč pracuji v oblasti, kde se zajímají pouze teroristé a překupníci drog. Taková reakce je stejně nesmyslná jako chování následovníků, kteří slepě opakují vaše slova. Myslím, že pravda je někde uprostřed. Blockchain bude mít hluboký dopad na společnost a globální ekonomiku. To se ale zřejmě díky moderní technice nestane. Budou se vyvíjet moderní technologie a to, co se v budoucnu bude nazývat blockchain, bude velmi důležité. Možná to ani nevypadá jako moderní blockchainy, to je otevřená otázka.

Pokud lidé vymyslí nové technologie, budou tomu nadále říkat blockchain. Tedy stejně jako dnešní Fortran nemá nic společného s Fortranem z 1960. let, ale všichni mu stále říkají Fortran. Totéž pro UNIX. To, čemu se říká „blockchain“, bude stále dělat svou revoluci. Ale pochybuji, že tento nový blockchain bude něco podobného tomu, co dnes všichni rádi používají.

Odkud pocházejí průlomové myšlenky? Vliv popularity

Alexey: Vedla popularita blockchainu k novým výsledkům z vědeckého hlediska? Více interakce, více studentů, více firem v okolí. Existují již nějaké výsledky z tohoto nárůstu popularity?

Maurice: Začal jsem se o to zajímat, když mi někdo předal oficiální leták společnosti, která právě vybrala docela dost peněz. Psalo se o úkol byzantských generálů, se kterou jsem více než obeznámen. To, co bylo napsáno v letáku, bylo zjevně technicky nesprávné. Lidé, kteří to všechno napsali, ve skutečnosti nechápali model za tím problémem... a přesto tato společnost vybrala spoustu peněz. Následně firma v tichosti nahradila tento leták za mnohem správnější verzi - a nebudu říkat, jak se tato firma jmenovala. Jsou stále kolem a daří se jim velmi dobře. Tento incident mě přesvědčil, že za prvé, blockchain je prostě forma distribuovaného počítání. Za druhé, vstupní práh (alespoň tehdy, před čtyřmi lety) byl poměrně nízký. Lidé pracující v této oblasti byli velmi energičtí a inteligentní, ale nečetli vědecké práce. Snažili se znovu objevit známé věci a udělali to špatně. Dnes se drama zmírnilo.

Alexey: To je velmi zajímavé, protože před několika lety jsme měli jiný trend. Je to trochu jako vývoj front-endu, kdy vývojáři front-endu na bázi prohlížečů znovu vynalezli celé technologie, které už byly populární v back-endu: sestavování systémů, nepřetržitá integrace a podobné věci. 

Maurice: Souhlasím. To však není překvapivé, protože skutečně průlomové myšlenky vždy pocházejí zvenčí zavedené komunity. Je nepravděpodobné, že by etablovaní výzkumníci, zejména etablovaní akademici, udělali něco skutečně převratného. Je snadné napsat příspěvek na příští konferenci o tom, jak jste mírně zlepšili výsledky své minulé práce. Jděte na konferenci, sejděte se s přáteli, mluvte o stejných věcech. A lidé, kteří přicházejí s průlomovými nápady, téměř vždy přicházejí zvenčí. Neznají pravidla, neznají jazyk, ale přesto... Jste-li v zavedené komunitě, radím vám, abyste se věnovali novým věcem, něčemu, co nezapadá do celkového obrazu. V jistém smyslu se lze pokusit spojit vnější, plynulejší vývoj s metodami, kterým již rozumíme. Jako první krok se pokuste vytvořit vědecký základ a poté jej změnit tak, aby jej bylo možné aplikovat na nové průlomové myšlenky. Myslím, že blockchain je skvělý pro to, že jde o neotřelý, rušivý nápad.

Alexey: Proč si myslíš, že se to děje? Protože lidé „venku“ nemají žádné specifické bariéry vlastní komunitě?

Maurice: Probíhá zde vzorec. Pokud si přečtete historii impresionistů v malbě a umění obecně, pak slavní umělci odmítli impresionismus. Říkali, že to bylo trochu dětinské. O generaci později se tato dříve zavrhovaná umělecká forma stala standardem. Co vidím ve svém oboru: vynálezci blockchainu se nezajímali o moc, o zvyšování publikací a citačního indexu, chtěli jen udělat něco dobrého. A tak si sedli a začali to dělat. Chyběla jim určitá technická hloubka, ale to se dá napravit. Je mnohem obtížnější přicházet s novými kreativními nápady než korigovat a posilovat nedostatečně vyzrálé. Díky těmto vynálezcům mám teď co dělat!

Alexey: To je podobné jako rozdíl mezi startupy a staršími projekty. Přebíráme mnohá omezení myšlení, bariéry, speciální požadavky a tak dále.

Maurice: Dobrou analogií je distribuovaná výpočetní technika. Přemýšlejte o blockchainu, jako by to byl startup a distribuovaný výpočetní systém jako velká zavedená společnost. Distribuované výpočty jsou v procesu získávání a slučování s blockchainem.

PhD pod vedením Barbary Liskov

Vitaly: Stále máme mnoho otázek! Pátrali jsme po vašem pozadí a narazili jsme na zajímavou skutečnost o vašem doktorátu. Ano, bylo to už dávno, ale zdá se, že je to důležité téma. Doktorský titul jste získal pod svým vedením Barbarou Liškovou! Barbara je v komunitě programovacích jazyků velmi dobře známá a obecně velmi známá osoba. Je logické, že váš výzkum byl v oblasti programovacích jazyků. Jak jste přešli na paralelní výpočty? Proč jste se rozhodl změnit téma?

Maurice: V té době se Barbara a její skupina právě dívali na distribuované výpočty, což byl velmi nový nápad. Našli se i tací, kteří tvrdili, že distribuované počítání je nesmysl a že počítače mezi sebou komunikují nesmyslně. Jedním z problémů řešených v distribuovaných výpočtech, který je odlišuje od centralizovaných výpočtů, je odolnost proti chybám. Po dlouhém výzkumu jsme se rozhodli, že programovací jazyk pro distribuované výpočty musí mít něco jako atomové transakce, protože si nikdy nemůžete být jisti, že vzdálené volání bude úspěšné. Jakmile máte transakce, vyvstává problém řízení souběžnosti. Pak bylo hodně práce na získání vysoce paralelních transakčních datových struktur. Když jsem pak odmaturoval, šel jsem na Carnegie Mellon a začal hledat téma ke zpracování. Přišlo mi, že výpočetní technika se přesunula z jednotlivých počítačů do sítí počítačů. Multiprocesory by byly přirozeným pokračováním pokroku – slovo „multi-core“ ještě neexistovalo. Říkal jsem si: co je ekvivalentem atomových transakcí pro vícejádrový systém? Rozhodně to nejsou běžné transakce, protože jsou příliš velké a těžké. A tak jsem přišel na ten nápad linearizovatelnost a tak jsem vymyslel celou synchronizaci bez čekání. Šlo o pokus odpovědět na otázku, jaká je analogie atomových transakcí pro multiprocesorový systém se sdílenou pamětí. Na první pohled může toto dílo vypadat úplně jinak, ale ve skutečnosti jde o pokračování stejného tématu.

Svět čeká na vícejádro

Vitalij: Zmínil jste, že v té době bylo velmi málo vícejádrových počítačů, že?

Maurice: Prostě tam nebyli. Existovalo několik tzv. symetrických multiprocesorů, které byly v podstatě připojeny na stejnou sběrnici. To nefungovalo příliš dobře, protože pokaždé, když nová společnost vytvořila něco podobného, ​​Intel vydal jediný procesor, který byl lepší než multiprocesor.

Alexey: Neznamená to, že v těch dávných dobách to byla spíše teoretická studie?

Maurice: Nebyla to teoretická studie, ale spíše spekulativní studie. To vše nebylo o práci s mnoha teorémy, spíše jsme předkládali hypotézy o architektuře, která v té době neexistovala. K tomu slouží výzkum! Žádná společnost by něco takového neudělala, všechno to bylo něco z daleké budoucnosti. Ve skutečnosti tomu tak bylo až do roku 2004, kdy se objevily skutečné vícejádrové procesory. Protože se procesory přehřívají, můžete procesor ještě zmenšit, ale nemůžete jej zrychlit. Kvůli tomu došlo k přechodu na vícejádrové architektury. A pak to znamenalo, že najednou bylo využití všech konceptů, které jsme v minulosti vyvinuli.

Alexey: Proč si myslíte, že se vícejádrové procesory objevily až v roce XNUMX? Tak proč je tak pozdě?

Maurice: Je to kvůli hardwarovým omezením. Intel, AMD a další společnosti jsou velmi dobré ve zvyšování rychlosti procesoru. Když v určitém okamžiku byly procesory dostatečně malé, že už nemohly zvýšit takt, protože by procesory začaly vyhořet. Můžete je zmenšit, ale ne rychleji. Co je v jejich silách – místo velmi malého procesoru se jim do stejného objemu skříně vejde osm, šestnáct nebo dvaatřicet procesorů, kam se dříve vešel jen jeden. Nyní mezi nimi máte multithreading a rychlou komunikaci, protože sdílejí mezipaměti. K rychlejšímu běhu je ale přinutit nemůžete – je zde velmi specifický rychlostní limit. Postupně se zlepšují, ale už ne tolik. V cestě vylepšení stály fyzikální zákony.

Nový svět přináší nové problémy. NUMA, NVM a hackování architektury

Alexey: Zní to velmi rozumně. S novými vícejádrovými procesory přišly nové problémy. Čekali jste vy a vaši kolegové tyto problémy? Možná jste je studovali předem? V teoretických studiích často není snadné takové věci předvídat. Když nastaly problémy, jak naplnily vaše očekávání a očekávání vašich kolegů? Nebo byly úplně nové a vy a vaši kolegové jste museli strávit spoustu času řešením problémů, které se objevily?

Vitaly: Doplním k Alexeyově otázce: předpověděli jste správně architekturu procesoru, když jste studovali teorii?

Maurice: Ne 100%. Ale myslím si, že jsme s kolegy odvedli dobrou práci, když jsme předpovídali vícejádra se sdílenou pamětí. Myslím, že jsme správně předpověděli obtíže při vývoji paralelních datových struktur, které fungují bez zámků. Takové datové struktury byly důležité pro mnoho aplikací, i když ne pro všechny, ale často to, co opravdu potřebujete, je neuzamykatelná datová struktura. Když jsme je vymýšleli, mnozí tvrdili, že je to nesmysl, že se zámky všechno funguje dobře. Docela dobře jsme předpověděli, že budou existovat hotová řešení pro mnoho problémů s programováním a problémů se strukturou dat. Vyskytly se i složitější problémy, jako kupř V – nerovnoměrný přístup k paměti. Ve skutečnosti se s nimi až do vynálezu vícejádrových procesorů ani nepočítalo, protože byly příliš specifické. Výzkumná komunita pracovala na otázkách, které byly obecně předvídatelné. Některé hardwarové problémy spojené s konkrétními architekturami musely čekat na křídlech - ve skutečnosti vzhled těchto architektur. Nikdo například ve skutečnosti nepracoval na datových strukturách specifických pro GPU, protože GPU tehdy neexistovaly. I když se na něm udělalo hodně práce SIMDbyly tyto algoritmy připraveny k použití, jakmile byl k dispozici vhodný hardware. Není však možné předvídat vše.

Alexey: Pokud tomu dobře rozumím, NUMA je jakýmsi kompromisem mezi cenou, výkonem a některými dalšími věcmi. Nějaké nápady, proč NUMA vyšlo tak pozdě?

Maurice: Myslím, že NUMA existuje kvůli problémům s hardwarem používaným k výrobě paměti: čím dále jsou komponenty, tím pomaleji je k nim přístup. Na druhou stranu druhou hodnotou této abstrakce je uniformita paměti. Takže jednou z charakteristik paralelního počítání je to, že všechny abstrakce jsou mírně rozbité. Pokud by byl přístup dokonale jednotný, veškerá paměť by byla stejně vzdálená, ale to je ekonomicky a možná i fyzicky nemožné. Proto vzniká tento konflikt. Pokud napíšete svůj program, jako by paměť byla jednotná, pak bude s největší pravděpodobností správný. V tom smyslu, že nebude dávat špatné odpovědi. Její výkon ale neschytá ani hvězdy z nebe. Stejně tak, když píšeš spinlocky Bez pochopení hierarchie mezipaměti bude samotné blokování správné, ale na výkon můžete zapomenout. V jistém smyslu musíte psát programy, které žijí na vrcholu velmi jednoduché abstrakce, ale musíte přelstít lidi, kteří vám tuto abstrakci dali: musíte vědět, že pod abstrakcí je nějaká hierarchie paměti, že existuje autobus mezi vámi a touto vzpomínkou a tak dále. Existuje tedy určitý konflikt mezi jednotlivě užitečnými abstrakcemi, což nás vede k velmi konkrétním a pragmatickým problémům.

Vitaly: A co budoucnost? Dokážete předpovědět, jak se budou procesory dále vyvíjet? Existuje myšlenka, že jednou z odpovědí je transakční paměť. Pravděpodobně máte na skladě něco jiného.

Maurice: Před námi je několik velkých výzev. Jedním z nich je, že koherentní paměť je nádherná abstrakce, ale ve zvláštních případech se začíná rozpadat. Takže například NUMA je živým příkladem něčeho, kde můžete dál předstírat, že existuje jednotná paměť. Vlastně ne, produktivita vás rozpláče. V určitém okamžiku budou muset architekti opustit myšlenku architektury jediné paměti; nemůžete předstírat navždy. Budou zapotřebí nové programovací modely, které se budou snadno používat a dostatečně výkonné, aby byl základní hardware efektivní. To je velmi obtížný kompromis, protože když programátorům ukážete architekturu, která je v hardwaru skutečně použita, zblázní se. Je to příliš složité a není přenosné. Pokud předložíte rozhraní, které je příliš jednoduché, výkon bude slabý. K poskytnutí užitečných programovacích modelů použitelných pro skutečně velké vícejádrové procesory tedy bude potřeba udělat mnoho velmi obtížných kompromisů. Nejsem si jistý, že někdo jiný než specialista je schopen programovat na 2000jádrovém počítači. A pokud neděláte velmi specializované nebo vědecké výpočty nebo kryptografii nebo něco podobného - stále není vůbec jasné, jak to udělat správně. 

Další podobnou oblastí jsou specializované architektury. Grafické akcelerátory existují již dlouhou dobu, ale staly se klasickým příkladem toho, jak můžete vzít specializovaný typ výpočetní techniky a spustit jej na vyhrazeném čipu. To přidává své vlastní výzvy: jak s takovým zařízením komunikujete, jak ho naprogramujete. Nedávno jsem řešil problémy v této oblasti počítání blízké paměti. Vezmete malý procesor a přilepíte jej k obrovskému kusu paměti, takže paměť běží rychlostí mezipaměti L1 a poté komunikuje se zařízením, jako je TPU – procesor je zaneprázdněn načítáním nových úloh do vašeho paměťového jádra. Dalším zajímavým příkladem je navrhování datových struktur a komunikačních protokolů pro tento druh věcí. Zakázkové procesory a hardware se tedy budou ještě nějakou dobu vylepšovat.

Alexey: A co energeticky nezávislá paměť (energeticky nezávislá paměť)?

Maurice: Oh, to je další skvělý příklad! NVM výrazně změní způsob, jakým se díváme na věci, jako jsou datové struktury. Energeticky nezávislá paměť v jistém smyslu slibuje, že věci skutečně zrychlí. Ale život to nijak neusnadní, protože většina procesorů, mezipamětí a registrů je stále nestálá. Když spustíte po havárii, váš stav a stav vaší paměti nebudou úplně stejné jako před havárií. Jsem velmi vděčný lidem pracujícím na NVM - výzkumníci budou mít spoustu práce po dlouhou dobu, aby zjistili podmínky správnosti. Výpočty jsou správné, pokud mohou přežít havárii, při které dojde ke ztrátě obsahu mezipaměti a registrů, ale hlavní paměť zůstane nedotčena.

Kompilátory vs procesory, RISC vs CISC, sdílená paměť vs předávání zpráv

Vladimir: Co si myslíte o dilematu „překladače vs. procesory“ z hlediska instrukční sady? Dovolte mi vysvětlit pro ty, kteří to neznají: pokud přejdeme na zkreslenou paměť nebo něco podobného, ​​mohli bychom použít velmi jednoduchou sadu příkazů a požádat kompilátor, aby vygeneroval složitý kód, který dokáže využít objevené výhody. Nebo můžeme jít jinou cestou: implementovat složité instrukce a požádat procesor, aby instrukce upravil a provedl s nimi další manipulace. Co si o tom myslíš?

Maurice: Na tuhle otázku vlastně nemám odpověď. Tato debata probíhá již čtyři desetiletí. Byla doba, kdy mezi zkrácený sada příkazů a obtížné občanské války byly vedeny souborem příkazů. Na chvíli lidé z RISC vyhráli, ale pak Intel přestavěl jejich motory tak, aby se interně používala zmenšená sada instrukcí a celá se exportovala externě. To je asi téma, ve kterém musí každá nová generace hledat vlastní kompromisy a rozhodovat se sama. Je velmi těžké předvídat, která z těchto věcí bude lepší. Takže jakákoliv předpověď, kterou udělám, bude po určitou dobu pravdivá a pak zase na chvíli nepravdivá a pak zase pravdivá.

Alexey: Jak běžné je pro průmysl, že některé nápady vyhrávají několik desetiletí a prohrávají v dalších? Existují další příklady takových periodických změn?

Maurice: Na téma distribuovaného počítání existují lidé, kteří věří sdílená paměť a lidé, kteří věří výměna zpráv. Zpočátku, v distribuovaném počítání, paralelní počítání znamená předávání zpráv. Pak někdo zjistil, že je mnohem jednodušší programovat se sdílenou pamětí. Opačná strana uvedla, že sdílená paměť je příliš komplikovaná, protože vyžaduje zámky a podobně, takže se vyplatí přejít do jazyků, kde nic jiného než předávání zpráv prostě neexistuje. Někdo se podíval na to, co z toho vzešlo, a řekl: „Páni, tato implementace zpráv vypadá hodně jako sdílená paměť, protože vytvoříte spoustu a spoustu těchto malých modulů, posílají si zprávy a všechny blokování"Udělejme lepší databázi sdílené paměti!" To vše se stále dokola opakuje a nedá se říct, že by jedna ze stran měla rozhodně pravdu. Jedna strana bude vždy dominovat, protože jakmile jedna z nich téměř vyhraje, lidé znovu a znovu vymýšlejí způsoby, jak zlepšit druhou.

Umění psaní křehkého vícevláknového kódu

Alexey: To je velmi zajímavé. Když například píšeme kód, bez ohledu na to, v jakém programovacím jazyce, obvykle musíme vytvářet abstrakce jako buňky, které lze číst a zapisovat. Ale ve skutečnosti to na určité fyzické úrovni může vypadat jako odeslání zprávy přes hardwarovou sběrnici mezi různými počítači a jinými zařízeními. Ukazuje se, že práce probíhá na obou úrovních abstrakce najednou.

Maurice: Je naprosto pravda, že sdílená paměť je postavena na předávání zpráv – autobusy, mezipaměti a tak dále. Ale je těžké psát programy pomocí předávání zpráv, takže hardware záměrně lže a předstírá, že máte nějakou jednotnou paměť. To vám usnadní psaní jednoduchých správných programů, než se výkon začne zhoršovat. Pak řeknete: vypadá to, že je čas spřátelit se s keší. A pak se začnete starat o umístění keše a odtud to jde. V jistém smyslu hackujete abstrakci: víte, že to není jen plochá, jednotná paměť, a tyto znalosti využijete k psaní programů šetrných k vyrovnávací paměti. To je to, co budete muset udělat ve skutečných problémech. Tento konflikt mezi sladkou, jednoduchou a pěknou abstrakcí, kterou jste dostali, a strašně složitou implementací základního hardwaru je místo, kde každý udělá svůj vlastní kompromis. Mám knihu o multiprocesorech a synchronizaci a v jednu chvíli jsem chtěl napsat kapitolu o datových strukturách v java.util.concurrent. Když se na ně podíváte, věci jako seznamy s vynechanými položkami Jsou to úžasná umělecká díla. (Pozn. redakce: Kdo je obeznámen s jazykem Java, měl by se na implementaci alespoň podívat ConcurrentSkipListMap, můžete se podívat na odkazy na API и zdrojový kód). Ale z mého pohledu by bylo nezodpovědné je ukazovat studentům, protože taková datová struktura je něco jako chlap v cirkuse běžící na laně přes medvědí jámu. Pokud změníte byť jen jeden malý detail, celá konstrukce se zhroutí. Tento kód je velmi rychlý a elegantní už jen proto, že je napsán perfektně, ale sebemenší změna povede k úplnému selhání. Dám-li studentům tento kód za příklad, okamžitě řeknou: To zvládnu taky! A pak se zřítí nějaké letadlo nebo vybuchne jaderný reaktor a já se provinil tím, že jsem jim dal příliš mnoho informací ve špatnou dobu.

Alexey: Když jsem byl trochu mladší, mnohokrát jsem se snažil studovat zdrojový kód Douga Lee, například java.util.concurrent, protože je to open source, je velmi snadné jej najít a pokusit se pochopit, co se tam děje. Nedopadlo to moc dobře: často je úplně nejasné, proč se Doug rozhodl udělat něco tímto způsobem, když všichni ostatní to dělají jinak. Jak tyto věci vysvětlujete svým studentům? Existuje nějaký konkrétní správný způsob, jak popsat konkrétní detaily například hardcore algoritmu? Jak to děláš?

Maurice: Učitelé kreslení mají klišé, které si pamatují jako první: pokud chcete kreslit jako Picasso, musíte se nejprve naučit kreslit jednoduché realistické obrázky, a teprve když znáte pravidla, můžete je začít porušovat. Pokud hned začnete porušovat pravidla, skončíte v průšvihu. Nejprve učím studenty, jak psát jednoduchý, správný kód bez obav o výkon. Říkám, že zde číhají složité problémy s časováním, takže si nedělejte starosti s mezipamětí, nestarejte se o modely paměti, jen se ujistěte, že vše funguje správně. Už to je dost obtížné: moderní programování není samo o sobě snadné, zvláště pro nové studenty. A když mají intuici, jak napsat správné programy, říkám: podívejte se na tyto dvě implementace spinlocku: jedna je velmi pomalá a druhá také není příliš, ale lepší. Matematicky jsou však tyto dva algoritmy stejné. Ve skutečnosti jeden z nich používá lokalitu cache. Jeden z nich běží na lokálně uložených datech a druhý opakovaně provádí operace napříč sběrnicí. Nemůžete psát efektivní kód, pokud nerozumíte tomu, co to je, a nevíte, jak prolomit abstrakci a podívat se na základní strukturu. Ale nebudete moci začít dělat to hned. Jsou lidé, kteří to začnou dělat hned a věří ve vlastní genialitu, většinou to skončí špatně, protože nepochopí principy. Nikdo nekreslí jako Picasso nebo nepíše programy jako Doug Lee, čerstvě po škole v prvním týdnu. Dosáhnout této úrovně znalostí trvá roky.

Alexey: Ukazuje se, že rozdělujete problém na dvě části: první je správnost, druhá je výkon?

Maurice: Přesně tak. A přesně v tomto pořadí. Část problému spočívá v tom, že noví studenti nechápou, že je obtížné dosáhnout správnosti. Na první pohled říkají: to je zjevně správné, zbývá jen urychlit. Někdy jim tedy řeknu o původně nesprávném algoritmu, jako by byl správný.

Jak naučit studenty psát složitý vícevláknový kód

Alexey: Jen aby viděli, jestli cítí úlovek?

Maurice: Vždy předem varuji, že někdy navrhnu nesprávné algoritmy. Neměli byste lidi klamat. Navrhuji, aby informace brali s rezervou. Pokud něco řeknu a řeknu: „Podívejte, to je zjevně správné“ - je to signál, že se vás někde snaží oklamat, a měli byste se začít ptát. Dále se snažím studenty povzbudit, aby kladli otázky, a pak navrhnu: „Co se stane, když necháme věci tak, jak jsou?“ A hned vidí chybu. Ale přesvědčit studenty, že je třeba se o správnost starat, je mnohem obtížnější, než se na první pohled zdá. Mnoho z těchto studentů přichází se zkušenostmi s programováním na střední škole, někteří získali práci a dělali tam programování a všichni překypují sebevědomím. Je to něco jako armáda: nejprve musíte změnit jejich náladu, abyste je přesvědčili, aby trpělivě přistupovali k řešení problémů, které nastanou. Nebo je to možná jako u buddhistických mnichů: nejprve se naučí uvažovat o správnosti, a jakmile pochopí způsoby uvažování o správnosti, mohou se posunout na další úroveň a začít se starat o výkon.

Alexey: To znamená, že někdy studentům ukazujete nefunkční příklady, díky nimž získáte zpětnou vazbu, která ukazuje, zda chápou podstatu problému, zda dokážou najít špatný kód a špatný výsledek. Dělají vám tedy studenti obvykle radost nebo smutek?

Maurice: Studenti chybu nakonec téměř vždy najdou. Pokud hledají příliš pomalu, kladu sugestivní otázky a zde je důležité pochopit, že pokud je nikdy nepodvedete, začnou bezmyšlenkovitě vnímat vaše slova jako konečnou pravdu. Pak se začnou nudit a začnou usínat při čtení Facebooku na notebooku během hodiny. Ale když jim předem řeknete, že budou podvedeni, a pokud nebudou cítit trik, budou vypadat hloupě, stanou se mnohem ostražitějšími. To je dobré různými způsoby. Přál bych si, aby studenti nejen zpochybnili své chápání problému, ale také autoritu učitele. Myšlenka je taková, že student může kdykoli zvednout ruku a říct: Myslím, že to, co jste právě řekl, je špatně. Je to důležitý učební nástroj. Nechci, aby někdo ze studentů seděl a tiše si myslel: to všechno vypadá jako úplný nesmysl, ale zvednout ruku je příliš děsivé, a tak jako tak je to profesor, takže všechno, co říká, je pravda. Pokud jsou tedy předem upozorněni, že ne vše, co bylo řečeno, musí být nutně pravda, mají motivaci věnovat materiálu větší pozornost. Dávám jasně najevo, že je v pořádku zvednout ruku a ptát se. Vaše otázka může znít hloupě nebo naivně, ale často tak vznikají ty nejlepší otázky.

Alexey: Velmi zajímavé. Obvykle mají lidé nějakou psychologickou bariéru, která jim neumožňuje položit otázku profesorovi. Zvláště pokud je v místnosti hodně lidí a všichni se bojí, že diskuse o vaší hloupé otázce zabere všechen čas těchto lidí. Existují nějaké triky, jak se s tím vypořádat?

Maurice: Často se zastavím a položím klasické otázky. Zda by bylo tvrzení správné, nebo jak by řešili diskutovaný problém. To je klíčová akce, zvláště na začátku lekce, kdy se lidé stydí říct i tu nejmenší věc. Položíte studentům otázku a dále nic neřeknete. Je ticho, všichni jsou trochu napjatí, napětí roste, pak to najednou někdo nevydrží, zlomí se a řekne odpověď. Situaci otočíte takto: mlčet se stává obtížnějším a nepohodlnějším než odpovídat! To je standardní pedagogický trik. Každý učitel na světě by měl vědět, jak to udělat.

Alexey: Nyní máme pro tento rozhovor skvělý název: „Je snazší odpovědět, než mlčet.“

Vitaly: Zeptám se znovu. Pracujete na topologických důkazech. Jak ses do toho vůbec dostal, protože distribuované výpočty a topologie jsou úplně jiné věci!

Maurice: Je tam skryté spojení. Když jsem byl studentem matematiky, studoval jsem čistou matematiku. Počítače mě vůbec nezajímaly, dokud moje studium neskončilo a já jsem se ocitl před naléhavou potřebou hledat si práci. Jako student jsem studoval algebraickou topologii. O mnoho let později, při práci na problému tzv "Problém s dohodou k-set", použil jsem k modelování problému grafy a jak se v té době zdálo, našel jsem řešení. Stačilo si sednout a jít kolem počítání. Pokuste se najít vhodnou odpověď na tomto grafu. Ale můj algoritmus nefungoval: ukázalo se, že bude běhat v kruzích navždy. To vše se bohužel nepodařilo vysvětlit formálním jazykem teorie grafů – tím, který znají všichni informatici. A pak jsem si vzpomněl, že před mnoha lety, v hodinách topologie, jsme tento koncept používali "jednoduchý komplex", což je zobecnění grafů do vyšších dimenzí. Pak jsem se zeptal sám sebe: co by se stalo, kdybychom problém přeformulovali z hlediska simpliciálních komplexů? Toto se stalo klíčovým momentem. Použitím silnějšího formalismu se problém najednou mnohem zjednoduší. Lidé proti tomu dlouho bojovali pomocí grafů, ale nemohli nic dělat. A ani teď nemohou - správnou odpovědí se ukázalo, že to není algoritmus, ale důkaz nemožnosti vyřešit problém. To znamená, že takový algoritmus prostě neexistuje. Ale každý důkaz nemožnosti založené buď na simpliciálních komplexech, nebo na věcech, které lidé předstírali, že za simpliciální komplexy nepovažují. Jen proto, že něco nazýváte novým jménem, ​​neztrácí to svou podstatu.

Vitaly: Ukazuje se, že jsi měl jen štěstí?

Maurice: Kromě štěstí také připravenost. To znamená, že byste neměli zapomínat na „neužitečné“ věci, které jste se naučili dříve. Čím více zbytečných věcí se naučíte, tím více nápadů můžete získat, když čelíte novému problému. Tento druh intuitivního porovnávání vzorů je důležitý, protože... Pojďme to udělat, toto je řetězec: nejprve jsem zjistil, že grafy nefungují vůbec nebo nefungují vůbec, připomnělo mi to něco z událostí z osmi let a mých studentských let, kdy jsme studovali všechny tyto jednoduché komplexy. To mi zase umožnilo najít svou starou učebnici topologie a načíst si ji zpět do hlavy. Ale nebýt těch starých znalostí, nikdy bych v řešení původního problému nijak nepokročil.

Nové vydání knihy „Umění víceprocesorového programování“

Alexey: Řekl jsi pár slov o své knize. Pravděpodobně není to nejhorší tajemství, že jste napsal světově nejslavnější knihu o multithreadingu, „Umění víceprocesorového programování“. Je to už asi 11 let a od té doby to jen vychází  revidovaný dotisk. Bude druhé vydání?

Maurice: To je dobře, že ses zeptal! Bude to velmi brzy, za tři měsíce nebo tak. Jsou tu další dva autoři, přidali jsme mnohem více materiálu, vylepšili sekci o paralelismu fork/join, napsali sekci o MapReduce, přidali spoustu nových věcí a vyhodili nepotřebné věci - něco, co bylo v době psaní velmi zajímavé první vydání, ale dnes už tam není. Výsledkem byla velmi vážně přepracovaná kniha.

Alexey: Všechno už bylo hotovo, zbývá to jen vydat?

Maurice: Pár kapitol ještě potřebuje nějakou práci. Náš vydavatel (který už nás podle mě nenávidí) se stále snaží dostat zprávu, že bychom měli pracovat rychleji. Jsme daleko za plánem. Teoreticky jsme tuto knihu mohli udělat o pár let dříve.

Alexey: Máte šanci získat novou verzi knihy do Vánoc?

Maurice: To je náš cíl! Ale už jsem tolikrát předpovídal vítězství, že mi už nikdo nevěří. Ani v této věci byste mi asi neměli příliš věřit.

Alexey: V každém případě je to fantastická zpráva. První vydání knihy se mi moc líbilo. Dalo by se říct, že jsem fanoušek.

Maurice: Doufám, že nové vydání bude hodné vašeho horlivého nadšení, děkuji!

Jak byla vynalezena transakční paměť

Vitaly: Další otázka se týká transakční paměti. Pokud tomu dobře rozumím, jste v tomto oboru průkopníkem, vymyslel jste to v době, kdy o takových věcech nikdo nepřemýšlel. Proč jste se rozhodl přejít do tohoto oboru? Proč se vám transakce zdály důležité? Mysleli jste si, že jednou budou implementovány do hardwaru?

Maurice: O transakcích vím už od dob svého postgraduálního výzkumu.

Vitaly: Ano, ale to jsou různé transakce!

Maurice: Pracoval jsem s Elliottem Mossem na neblokovaném sběru odpadu. Naším problémem bylo, že jsme chtěli atomicky změnit pár slov v paměti a pak by se algoritmy staly velmi jednoduchými a alespoň některé z nich byly efektivnější. Použitím porovnat a vyměnit pro load-link/store-conditionalposkytuje paralelní architektura, je možné něco udělat, ale je to velmi neefektivní a ošklivé, protože byste se museli vypořádat s vrstvami nepřímosti. Chci změnit paměťová slova a potřebuji přepnout, protože mohu změnit pouze jeden ukazatel, takže musí ukazovat na nějakou strukturu podobnou adresáři. Mluvili jsme o tom, jak skvělé by bylo, kdybychom mohli změnit hardware tak, aby uměl simultánně nahrávat. Zdá se, že Elliott si toho všiml: pokud se podíváte na protokoly koherence mezipaměti, již poskytují většinu požadovaných funkcí. V optimistické transakci si protokol koherence mezipaměti všimne, že došlo ke konfliktu časování a mezipaměť se stane neplatný. Co se stane, když spekulativně spustíte transakci ve své mezipaměti a použijete mechanismy koherenčního protokolu k detekci konfliktů? Spekulativní hardwarovou architekturu bylo snadné navrhnout. Tak jsme to napsali úplně první publikace o transakční paměti. Ve stejné době společnost, pro kterou jsem pracoval, Digital Equipment Corporation, vytvářela nový 64bitový procesor s názvem Alpha. Šel jsem tedy a předal jsem vývojové skupině Alpha prezentaci o naší úžasné transakční paměti a oni se zeptali: Kolik dalších příjmů by naše společnost získala, kdybychom to všechno přidali přímo do procesoru? A na tohle jsem neměl absolutně žádnou odpověď, protože jsem technolog, nejsem marketingový specialista. Opravdu jsem neměl na co odpovědět. Moc je nezaujalo, že nic nevím.

Vitaly: Miliardy! Stačí říct miliardy!

Maurice: Ano, to jsem měl říct. Teď, v době startupů a všeho možného, ​​vím, jak napsat podnikatelský plán. Že o velikosti svého potenciálního zisku můžete trochu lhát. Ale v té době mi to připadalo naivní, tak jsem jen řekl: "Nevím." Když se podíváte na historii publikace o transakční paměti, všimnete si, že po roce na ni bylo několik odkazů a pak asi deset let nikdo tuto práci necitoval. Uvozovky se objevily kolem roku 2004, kdy se objevila opravdová vícejádra. Když lidé zjistili, že psaním paralelního kódu lze vydělávat peníze, začal nový výzkum. Ravi Rajwar napsal článek, který nějakým způsobem zavedl koncept transakční paměti do hlavního proudu. (Pozn. redakce: Existuje druhá verze tohoto článku, vydaná v roce 2010 a volně dostupná jako PDF). Najednou si lidé přesně uvědomili, jak se to všechno dá využít, jak lze zrychlit tradiční algoritmy se zámky. Dobrý příklad něčeho, co se v minulosti zdálo jen jako zajímavý akademický problém. A ano, kdybyste se mě tehdy zeptali, zda si myslím, že to všechno bude v budoucnu důležité, řekl bych: samozřejmě, ale kdy přesně, není jasné. Možná za 50 let? V praxi se ukázalo, že to bylo jen deset let. Je moc hezké, když něco děláte a už po deseti letech si toho lidé všimnou.

Proč se vyplatí provádět výzkum v oblasti distribuovaných výpočtů

Vitaly: Pokud mluvíme o novém výzkumu, co byste poradil čtenářům – distribuované výpočty nebo vícejádrové a proč? 

Maurice: V dnešní době je snadné získat vícejádrový procesor, ale je těžší nastavit skutečný distribuovaný systém. Začal jsem na nich pracovat, protože jsem chtěl dělat něco jiného než moje doktorandská práce. Toto je rada, kterou vždy dávám novým studentům: nepište pokračování své diplomové práce – zkuste se vydat novým směrem. A také multithreading je snadný. Mohu experimentovat s vlastní vidličkou běžící na mém notebooku, aniž bych vstal z postele. Ale kdybych najednou chtěl vytvořit skutečný distribuovaný systém, musel bych udělat hodně práce, přilákat studenty a tak dále. Jsem líný člověk a raději bych pracoval na vícejádru. Experimentování na vícejádrových systémech je také jednodušší než experimentování na distribuovaných systémech, protože i v hloupém distribuovaném systému je příliš mnoho faktorů, které je třeba kontrolovat.

Vitaly: Co teď děláš, zkoumáš blockchain? Kterým článkům byste měli věnovat pozornost jako prvním?

Maurice: Nedávno se objevil velmi dobrý článek, kterou jsem napsal společně s mým studentem Vikramem Sarafem, speciálně na přednášku Konference Tokenomcs v Paříži před třemi týdny. Toto je článek o praktických distribuovaných systémech, ve kterém navrhujeme vytvořit Ethereum vícevláknové. V současné době jsou chytré smlouvy (kód, který běží na blockchainu) prováděny postupně. Dříve jsme napsali článek, který hovořil o způsobu, jak využít spekulativní transakce k urychlení procesu. Vzali jsme spoustu nápadů ze softwarové transakční paměti a řekli jsme, že pokud tyto nápady uděláte součástí virtuálního stroje Etherium, vše bude fungovat rychleji. K tomu je ale nutné, aby ve smlouvách nedocházelo ke konfliktům dat. A pak jsme předpokládali, že v reálném životě k takovým konfliktům skutečně nedochází. Ale neměli jsme to jak zjistit. Pak nás napadlo, že máme téměř deset let skutečné historie smluv, a tak jsme zahodili Ethereum blockchain a zeptali jsme se sami sebe: co by se stalo, kdyby byly tyto historické záznamy prováděny paralelně? Zjistili jsme výrazné zvýšení rychlosti. V počátcích Etherea se rychlost velmi zvýšila, ale dnes je vše poněkud komplikovanější, protože existuje méně smluv a pravděpodobnost konfliktů u dat vyžadujících serializaci se zvýšila. To vše je ale experimentální práce se skutečnými historickými daty. Na blockchainu je hezké, že si vše pamatuje navždy, takže se můžeme vrátit v čase a studovat, co by se stalo, kdybychom pro spuštění kódu použili různé algoritmy. Jak by se lidem v minulosti líbil náš nový nápad? Takový výzkum je mnohem jednodušší a příjemnější, protože existuje věc, která vše sleduje a vše zaznamenává. To je již něco podobného sociologii než vývoji algoritmů.

Zastavil se vývoj algoritmů a jak dál?

Vitalij: Čas na poslední teoretickou otázku! Máte pocit, že pokrok v konkurenčních datových strukturách každým rokem klesá? Myslíte si, že jsme dosáhli plató v našem chápání datových struktur, nebo dojde k nějakým zásadním zlepšením? Možná existují nějaké chytré nápady, které mohou úplně všechno změnit?

Maurice: Možná jsme dosáhli plošiny v datových strukturách pro tradiční architektury. Ale datové struktury pro nové architektury jsou stále velmi slibnou oblastí. Pokud chcete vytvořit datové struktury pro, řekněme, hardwarové akcelerátory, pak se datové struktury pro GPU velmi liší od datových struktur pro CPU. Když vyvíjíte datové struktury pro blockchainy, potřebujete hashovat části dat a poté je vložit do něčeho podobného Merkle strom, aby se zabránilo padělání. V poslední době došlo v této oblasti k prudkému nárůstu aktivity a mnozí odváděli velmi dobrou práci. Ale myslím, že se stane to, že nové architektury a nové aplikace povedou k novým datovým strukturám. Starší aplikace a tradiční architektura – již nemusí být mnoho prostoru pro průzkum. Pokud ale sjedete z vyšlapaných cest a podíváte se za okraje, uvidíte šílené věci, které mainstream nebere vážně – tam se totiž všechny ty vzrušující věci skutečně odehrávají.

Vitaly: Proto, abych byl velmi slavným výzkumníkem, musel jsem vymyslet svou vlastní architekturu :)

Maurice: Můžete "ukrást" novou architekturu někoho jiného - zdá se to mnohem jednodušší!

Práce na Brown University

Vitaly: Můžeš nám o tom říct víc? Brown Universitykde pracuješ? V kontextu informačních technologií se o něm moc neví. Méně než například o MIT.

Maurice: Brown University je jednou z nejstarších univerzit ve Spojených státech. Myslím, že jen Harvard je trochu starší. Hnědá je součástí tzv břečťanové ligy, což je soubor osmi nejstarších univerzit. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. Je to taková stará, malá a trochu aristokratická univerzita. Hlavní důraz je kladen na vzdělávání svobodných umění. Nesnaží se to být jako MIT, MIT je velmi specializované a technické. Brown je skvělým místem pro studium ruské literatury nebo klasické řečtiny a samozřejmě informatiky. Zaměřuje se na komplexní vzdělávání. Většina našich studentů chodí na Facebook, Apple, Google – takže si myslím, že naši studenti nemají problém najít práci v oboru. Šel jsem pracovat do Brown, protože jsem předtím pracoval v Digital Equipment Corporation v Bostonu. To byla společnost, která vymyslela mnoho zajímavých věcí, ale popírala důležitost osobních počítačů. Společnost s nelehkým osudem, jejíž zakladatelé byli kdysi mladí revolucionáři, nic se nenaučili a nic nezapomněli, a tak se během asi tuctu let proměnili z revolucionářů v reakcionáře. Rádi vtipkovali, že osobní počítače patří do garáže – samozřejmě do opuštěné garáže. Je zcela zřejmé, že je zničily flexibilnější firmy. Když bylo jasné, že má společnost potíže, zavolal jsem svému příteli do Browna, což je asi hodinu od Bostonu. Z Bostonu jsem tenkrát nechtěl odejít, protože na jiných univerzitách se moc neotevřelo. To byla doba, kdy v informatice nebylo tolik pracovních míst jako nyní. A Brown měl otevření, nemusel jsem stěhovat svůj domov, nemusel jsem stěhovat svou rodinu a opravdu miluji život v Bostonu! Tak jsem se rozhodl jít do Browna. Líbí se mi to. Studenti jsou úžasní, takže jsem nikdy ani nezkoušel jít jinam. Během mého volna jsem rok pracoval v Microsoftu, rok jsem šel do Technionu v Haifě a teď budu v Algorandu. Všude mám mnoho kolegů, a proto není fyzické umístění našich učeben tak důležité. Nejdůležitější jsou ale studenti, ti jsou tady nejlepší. Nikdy jsem nezkoušel jít jinam, protože jsem zde docela šťastný.

Přes Brownovu slávu ve Spojených státech je však v zahraničí překvapivě neznámý. Jak vidíte, dělám nyní vše pro to, abych tento stav napravil.

Rozdíl mezi výzkumem na univerzitě a v rámci korporace

Vitaly: Dobře, další otázka se týká digitálního vybavení. Byl jste tam jako výzkumník. Jaký je rozdíl mezi prací na oddělení výzkumu a vývoje velké společnosti a prací na vysoké škole? Jaké jsou výhody a nevýhody?

Maurice: Dvacet let jsem pracoval v Microsoftu, úzce jsem spolupracoval se zaměstnanci Sun Microsystems, Oracle, Facebook a nyní Algorand. Na základě toho všeho chci říci, že jak ve firmách, tak na univerzitách je možné provádět prvotřídní výzkum. Důležitý rozdíl je v tom, že ve firmě pracujete s kolegy. Pokud mám najednou nápad na projekt, který ještě neexistuje, musím přesvědčit své vrstevníky, že je to dobrý nápad. Pokud jsem v Brownu, pak mohu svým studentům říci: pojďme pracovat na antigravitaci! Buď odejdou k někomu jinému, nebo se pustí do projektu. Ano, budu muset najít finance, budu muset napsat žádost o grant a tak dále. V každém případě bude vždy mnoho studentů a vy se budete moci rozhodovat jednostranně. Ale na univerzitě s největší pravděpodobností nebudete pracovat s lidmi vaší úrovně. Ve světě průmyslového výzkumu musíte nejprve všechny přesvědčit, že váš projekt stojí za to. Nemohu nikomu nic nařizovat. A oba tyto způsoby práce jsou cenné, protože pokud pracujete na něčem opravdu šíleném a vaše kolegy je těžké přesvědčit, je snazší přesvědčit postgraduální studenty – zvláště pokud je platíte. Pokud pracujete na něčem, co vyžaduje hodně zkušeností a hlubokou odbornost, pak potřebujete kolegy, kteří dokážou říct „ne, náhodou v této oblasti rozumím a váš nápad je špatný, nebude fungovat“. To je velmi užitečné z hlediska plýtvání časem. Také pokud v průmyslových laboratořích trávíte spoustu času psaním zpráv, pak na univerzitě strávíte tento čas hledáním peněz. Pokud chci, aby studenti mohli někam jít, musím na to najít peníze někde jinde. A čím důležitější je vaše postavení na univerzitě, tím více času musíte věnovat získávání peněz. Tak teď už víte, pro co pracuji – profesionální žebrák! Jako jeden z těch mnichů, kteří chodí s obětním talířem. Obecně se tyto dvě činnosti doplňují. Proto se snažím žít a zůstat nohama na zemi v obou světech.

Vitalij: Zdá se, že přesvědčit společnost je obtížnější než přesvědčit ostatní vědce.

Maurice: Obtížnější a mnohem víc. Navíc v různých oblastech je to jiné: někteří provádějí komplexní výzkum, zatímco jiní se zaměřují na své téma. Kdybych šel do Microsoftu nebo Facebooku a řekl: pojďme dělat antigravitaci, těžko by to ocenili. Ale kdybych přesně totéž řekl svým postgraduálním studentům, s největší pravděpodobností by se okamžitě pustili do práce, i když teď bych měl problémy - koneckonců na to musím najít peníze. Ale pokud chcete dělat něco, co je v souladu s cíli společnosti, může být tato společnost velmi dobrým místem pro výzkum.

Hydra a SPTDC

Vitalij: Mé otázky se chýlí ke konci, tak si pojďme trochu promluvit o nadcházející cestě do Ruska.

Maurice: Ano, těším se na návrat do Petrohradu.

Alexey: Je mi ctí, že jste letos s námi. Jste podruhé v Petrohradu, že?

Maurice: Už třetí!

Alexey: Chápu, ale SPTDC – určitě ten druhý. Naposledy se volalo do školy SPTCC, nyní jsme změnili jedno písmeno (C na D, Souběžně na Distribuované), abychom zdůraznili, že v letošním roce existuje více oblastí, které se specificky týkají distribuovaného počítání. Můžete říci pár slov o svých zprávách ve škole a Konference Hydra?

Maurice: Ve škole chci mluvit o základech blockchainu a o tom, co s ním můžete dělat. Chtěl bych ukázat, že blockchainy jsou velmi podobné vícevláknovému programování, které známe, ale mají své vlastní nuance, a tyto rozdíly je důležité pochopit. Pokud uděláte chybu v běžné webové aplikaci, je to jen nepříjemné. Pokud napíšete zabugovaný kód do finanční aplikace, někdo vám určitě všechny peníze ukradne. To jsou úplně jiné úrovně odpovědnosti a důsledků. Budu mluvit trochu o proof-of-work, o chytrých smlouvách, o transakcích mezi různými blockchainy.

Vedle mě budou pracovat další řečníci, kteří mají k blockchainu také co říct a dohodli jsme se na vzájemné koordinaci, aby do sebe naše příběhy dobře zapadaly. Ale pro inženýrskou zprávu chci širokému publiku srozumitelně vysvětlit, proč byste neměli věřit všemu, co o blockchainech slyšíte, proč jsou blockchainy skvělým oborem, jak se hodí k jiným známým myšlenkám a proč bychom se měli směle dívat do budoucna.

Alexey: Navíc chci říci, že se to nebude konat ve formátu setkání nebo uživatelské skupiny, jako tomu bylo před dvěma lety. Rozhodli jsme se uspořádat malou konferenci poblíž školy. Důvodem je, že po komunikaci s Peterem Kuzněcovem jsme si uvědomili, že škola je omezena pouze na sto, možná 120 lidí. Zároveň je tu spousta inženýrů, kteří s vámi chtějí komunikovat, navštěvovat prezentace a obecně je téma zajímá. Z tohoto důvodu jsme vytvořili novou konferenci jménem Hydra. Mimochodem, nějaké nápady, proč Hydra?

Maurice: Protože tam bude sedm řečníků? A jejich hlavy mohou být uříznuty a místo nich vyrostou nové reproduktory?

Alexey: Skvělý nápad pro pěstování nových reproduktorů. Ale ve skutečnosti je zde příběh. Vzpomeňte si na legendu o Odysseovi, kde měl mezi sebou plout Skylla a Charybda? Hydra je něco jako Charybda. Příběh je takový, že jednou jsem mluvil na konferenci a mluvil o multithreadingu. Na této konferenci byly pouze dvě skladby. Na začátku reportáže jsem divákům v sále řekl, že nyní mají na výběr mezi Skyllou a Charybdou. Mým duchovním zvířetem je Charybda, protože Charybda má mnoho hlav a mým tématem je vícevláknové. Takto se objevují názvy konferencí.

V každém případě nám došly otázky a čas. Takže vám, přátelé, děkujeme za skvělý rozhovor a uvidíme se na SPTDC School and Hydra 2019!

V rozhovoru s Mauricem můžete pokračovat na konferenci Hydra 2019, která se bude konat 11. – 12. července 2019 v Petrohradu. Přijde se zprávou „Blockchainy a budoucnost distribuovaných počítačů“. Vstupenky je možné zakoupit na oficiálních stránkách.

Zdroj: www.habr.com

Přidat komentář