“Lakše je odgovoriti nego ćutati” - sjajan intervju s ocem transakcijskog pamćenja, Mauriceom Herlihyjem

Maurice Herlihy - vlasnik dvoje Dijkstra Prizes. Prvi je za posao "Sinhronizacija bez čekanja" (Brown University) i drugi, noviji, - "Transakciona memorija: arhitektonska podrška za strukture podataka bez zaključavanja" (Virginia Tech University). Dijkstra nagrada se dodeljuje za dela čiji je značaj i uticaj primetan najmanje deset godina i, očigledno, Moris je jedan od najpoznatijih stručnjaka u ovoj oblasti. Trenutno je profesor na Univerzitetu Braun i ima dostignuća od paragrafa. Sada se bavi istraživanjem blockchaina u kontekstu klasičnog distribuiranog računarstva.

Prethodno je Maurice već dolazio u Rusiju na SPTCC (video traka) i napravio odličan sastanak JUG.ru zajednice Java programera u Sankt Peterburgu (video traka).

Ovaj habrapost je sjajan intervju sa Mauriceom Herlihyjem. U njemu se raspravlja o sljedećim temama:

  • Interakcija između akademske zajednice i industrije;
  • Fondacija za istraživanje blockchaina;
  • Odakle dolaze revolucionarne ideje? Utjecaj popularnosti;
  • doktorat pod vodstvom Barbare Liskov;
  • Svijet čeka multi-core;
  • Novi svijet, novi problemi. NVM, NUMA i hakovanje arhitekture;
  • Kompajleri protiv CPU-a, RISC protiv CISC, dijeljena memorija naspram prosljeđivanja poruka;
  • Umijeće pisanja krhkog višenitnog koda;
  • Kako naučiti studente kako da napišu složeni višenitni kod;
  • Novo izdanje knjige "Umetnost višeprocesorskog programiranja";
  • Kako je izmišljena transakciona memorija?   
  • Zašto vrijedi istraživati ​​u oblasti distribuiranog računarstva;
  • Da li je razvoj algoritama stao i kako dalje živjeti;
  • Rad na Brown University;
  • Razlika između univerzitetskog i korporativnog istraživanja;
  • Hydra i SPTDC.

Intervjue vode:

Vitalij Aksenov — trenutno postdoktor na IST Austria i zaposlenik Odsjeka za kompjuterske tehnologije na ITMO Univerzitetu. Bavi se istraživanjem u oblasti teorije i prakse konkurentskih struktura podataka. Prije nego što se pridružio IST-u, doktorirao je na Paris Diderot univerzitetu i ITMO univerzitetu kod prof. Petra Kuznjecova.

Alexey Fedorov je producent u JUG Ru Grupi, ruskoj kompaniji koja organizuje konferencije za programere. Alexey je učestvovao u pripremi više od 50 konferencija, a njegov životopis sadrži sve od pozicije razvojnog inženjera u Oracle-u (JCK, Java Platform Group) do pozicije programera u Odnoklassniki.

Vladimir Sitnikov je inženjer u Netcrackeru. Već deset godina radi na performansama i skalabilnosti NetCracker OS-a, softvera koji koriste telekom operateri za automatizaciju procesa upravljanja mrežom i mrežnom opremom. Zanimaju me pitanja performansi Jave i Oracle baze podataka. Autor više od desetak poboljšanja performansi u zvaničnom PostgreSQL JDBC drajveru.

Interakcija između akademske zajednice i industrije

Alexey: Maurice, radiš u akademskoj zajednici jako dugo i prvo pitanje je o interakciji između akademske zajednice i industrije. Možete li nam reći kako su se interakcije između njih promijenile u posljednje vrijeme? Šta je bilo prije 20-30 godina i šta se dešava sada? 

Maurice: Uvijek sam pokušavao blisko sarađivati ​​s komercijalnim kompanijama jer imaju zanimljive izazove. Po pravilu, nisu previše zainteresirani ni za objavljivanje svojih rezultata, niti za detaljna objašnjenja svojih problema svjetskoj zajednici. Njih zanima samo rješavanje ovih problema. Radio sam za neke od ovih kompanija neko vrijeme. Proveo sam pet godina radeći puno radno vrijeme u istraživačkoj laboratoriji u kompaniji Digital Equipment Corporation, koja je nekada bila velika kompjuterska kompanija. Radio sam jedan dan u sedmici u Sunu, u Microsoftu, u Oracleu, radio sam malo na Facebooku. Sada ću ići na godišnji odmor (profesoru na američkom univerzitetu je dozvoljeno da uzme takav odmor na godinu dana otprilike jednom u šest godina) i radim u Algorand, ovo je takva kompanija za kriptovalute u Bostonu. Bliska saradnja sa kompanijama je oduvek bila zadovoljstvo, jer se tako uči o novim i zanimljivim stvarima. Općenito možete biti prva ili druga osoba koja će objaviti članak o odabranoj temi, umjesto da postepeno poboljšavate rješenja problema na kojima svi drugi već rade.

Alexey: Možete li nam reći više o tome kako se to dešava?

Maurice: Naravno. Znate, kada sam bio u Digital Equipment Corporation, ja i Elliot Moss, izmislili smo transakcionu memoriju. Bio je to vrlo plodan period kada su se svi počeli zanimati za informatičku tehnologiju. Uključena je konkurentnost, iako sistemi sa više jezgara još nisu postojali. U danima Suna i Oraclea, radio sam dosta na paralelnim strukturama podataka. U Facebooku sam bio uključen u njihov blockchain projekat, o kojem ne mogu govoriti, ali nadam se da će uskoro izaći u javnost. Sljedeće godine, u Algorandu, radit ću u istraživačkom timu koji proučava pametne ugovore.

Alexey: U posljednjih nekoliko godina, blockchain je postao vrlo popularna tema. Hoće li to pomoći vašem istraživanju? Možda će to olakšati dobijanje grantova ili omogućiti pristup resursima kompanija koje posluju u industriji?

Maurice: Već sam dobio mali grant od Ethereum fondacije. Popularnost blockchaina je veoma korisna za inspiraciju studenata da rade u ovoj oblasti. Oni su veoma zainteresovani za to i srećni što su uključeni, ali ponekad ne shvataju da istraživanje koje spolja zvuči primamljivo se ispostavi da uključuje zaista naporan rad. Međutim, veoma sam sretan što koristim svu ovu mistiku oko blockchaina, pomaže privlačenju studenata. 

Ali to nije sve. Član sam savjetodavnog odbora nekoliko blockchain startupa. Neki od njih mogu uspjeti, neki ne, ali uvijek je vrlo zanimljivo vidjeti njihove ideje, proučavati ih i savjetovati ljude. Najuzbudljivije je kada upozorite ljude da nešto ne rade. Mnoge stvari na prvi pogled izgledaju kao dobra ideja, ali jesu li zaista?

Fondacija za istraživanje blockchaina

Vitalij: Neki ljudi misle da su blockchain i njegovi algoritmi budućnost. A drugi ljudi kažu da je to samo još jedan balon. Možete li podijeliti svoje mišljenje o ovom pitanju?

Maurice: Mnogo toga što se dešava u blockchain svijetu ne funkcionira kako treba, neke su samo prevare, mnoge stvari su precijenjene. Međutim, mislim da postoji čvrsta naučna osnova za ove studije. Činjenica da je blockchain svijet pun ideoloških podjela pokazuje nivo uzbuđenja i posvećenosti. S druge strane, to nije posebno korisno za naučna istraživanja. Sada, ako objavite članak koji govori o nedostacima određenog algoritma, dobijena reakcija nije uvijek u potpunosti naučna. Ljudi često izražavaju svoje emocije. Mislim da će se nekome takva pompa u ovoj oblasti učiniti privlačnom, ali na kraju krajeva, postoje stvarna naučna i inženjerska pitanja koja tek treba da se pozabave. Ovde ima dosta kompjuterskih nauka.

Vitaliy: Dakle, pokušavate postaviti temelje za blockchain istraživanje, zar ne?

Maurice: Pokušavam da postavim temelj za čvrstu, naučno i matematički zdravu disciplinu. A dio problema je što ponekad morate proturječiti nekim preoštrim stavovima drugih ljudi, ignorirati ih. Ponekad ljudi pitaju zašto radim u oblasti za koju su zainteresovani samo teroristi i dileri droge. Takva reakcija je besmislena kao i ponašanje sljedbenika koji slijepo ponavljaju vaše riječi. Mislim da je istina negde na sredini. Blockchain tek treba da ima dubok uticaj na društvo i globalnu ekonomiju. Ali, vjerovatno se to neće dogoditi zahvaljujući modernoj tehnologiji. Moderne tehnologije će se razvijati i ono što će se u budućnosti zvati blockchain će postati veoma važno. Možda neće ni izgledati kao moderni blockchains, to je otvoreno pitanje.

Ako ljudi izmisle nove tehnologije, nastavit će to zvati blockchain. Mislim, baš kao što današnji Fortran nema nikakve veze sa Fortran jezikom iz 1960-ih, ali ga svi stalno zovu Fortran. Isto za UNIX. Ono što se zove "blockchain" tek treba da napravi svoju revoluciju. Ali sumnjam da će ovaj novi blockchain biti kao ono što svi danas vole da koriste.

Odakle dolaze revolucionarne ideje? Uticaj popularnosti

Alexey: Da li je popularnost blockchaina dovela do novih rezultata sa naučne tačke gledišta? Više interakcije, više studenata, više kompanija u ovoj oblasti. Ima li već nekih rezultata ovog rasta popularnosti?

Maurice: Zainteresovao sam se za ovo kada mi je neko dao službeni letak za kompaniju koja je upravo prikupila dosta novca. Pisala je o tome zadatak vizantijskih generalasa kojima sam više nego upoznat. Napisano u letku je očigledno tehnički netačno. Ljudi koji su ovo napisali nisu baš razumjeli model koji stoji iza problema... a ipak je ova kompanija prikupila mnogo novca. Nakon toga, kompanija je tiho zamijenila ovaj letak puno ispravnijom verzijom - i neću reći kako se zvala ova kompanija. I dalje postoje i jako dobro rade. Ovaj me slučaj uvjerio da je, prvo, blockchain samo oblik distribuiranog računarstva. Drugo, ulazni prag (u to vrijeme, prije četiri godine) bio je prilično nizak. Ljudi koji su radili u ovoj oblasti bili su veoma energični i pametni, ali nisu čitali naučne radove. Pokušali su da iznova izmisle poznate stvari i učinili su to pogrešno. Danas je drama smanjena.

Alexey: Veoma je zanimljivo, jer smo prije nekoliko godina imali drugačiji trend. To je pomalo kao front-end razvoj, gdje su programeri interfejsa pretraživača ponovo izmislili čitave tehnologije koje su u to vrijeme već bile popularne u back-endu: izgradnju sistema, kontinuiranu integraciju i slične stvari. 

Maurice: Slažem se. Ali to nije iznenađujuće, jer istinski revolucionarne ideje uvijek dolaze izvan uspostavljene zajednice. Utvrđeni istraživači, posebno autoriteti u akademskim krugovima, teško da će učiniti nešto zaista revolucionarno. Lako je napisati izvještaj za sljedeću konferenciju o tome kako ste malo poboljšali rezultate svog dosadašnjeg rada. Idite na konferenciju, okupite se sa prijateljima, razgovarajte o istim stvarima. A ljudi koji provaljuju sa revolucionarnim idejama gotovo uvijek dolaze izvana. Ne poznaju pravila, ne znaju jezik, ali ipak... Ako ste unutar etablirane zajednice, savjetujem vam da obratite pažnju na nove stvari, na nešto što se ne uklapa u veliku slika. U određenom smislu, može se pokušati kombinovati spoljašnji, fluidniji razvoj sa tehnikama koje već razumemo. Kao prvi korak, pokušajte da stvorite naučnu osnovu, a zatim je modifikujte tako da se može primeniti na nove revolucionarne ideje. Mislim da je blockchain odličan za ulogu svježe revolucionarne ideje.

Alex: Šta misliš zašto se ovo dešava? Zato što ljudi "spolja" nemaju nikakve specifične barijere svojstvene zajednici?

Maurice: Ovdje postoji obrazac. Ako čitate istoriju impresionista u slikarstvu i umetnosti uopšte, onda su svojevremeno poznati umetnici odbacili impresionizam. Rekli su da je to neka vrsta detinjstva. Generaciju kasnije, ova ranije odbačena umjetnička forma postala je standard. Ono što vidim u svom polju: izumitelje blockchaina nije zanimala moć, ukidanje publikacija i indeks citiranja, oni su samo htjeli učiniti nešto dobro. I tako su sjeli i počeli to raditi. Nedostajala im je određena tehnička dubina, ali to je popravljivo. Mnogo je teže doći do novih kreativnih ideja nego ispraviti i pojačati nedovoljno zrele. Zahvaljujući ovim izumiteljima, sada imam nešto da radim!

Alexey: Ovo je slično razlici između startupa i naslijeđenih projekata. Naslijedili smo mnoga misaona ograničenja, barijere, posebne zahtjeve i tako dalje.

Maurice: Dobra analogija je distribuirano računarstvo. Zamislite blockchain kao da je startup i distribuirano računarstvo kao velika osnovana kompanija. Distribuirano računarstvo je u procesu kupovine i spajanja s blockchainom.

Doktorirao kod Barbare Liskov

Vitaliy: Imamo još puno pitanja! Istraživali smo vašu biografiju i naišli na zanimljivu činjenicu o vašem doktoratu. Da, bilo je to davno, ali izgleda da je tema važna. Doktorirali ste pod mentorstvom Barbara Liskov! Barbara je vrlo poznata u zajednici za razvoj programskih jezika i općenito vrlo poznata osoba. Logično je da je vaše istraživanje bilo u oblasti programskih jezika. Kako ste prešli na paralelno računarstvo? Zašto ste odlučili da promijenite temu?

Maurice: U to vrijeme, Barbara i njena grupa su samo gledali na distribuirano računarstvo, što je bila vrlo nova ideja. Bilo je i onih koji su rekli da je distribuirano računarstvo glupost, komunikacija između računara je besmislena. Jedno od pitanja koje se razmatraju u distribuiranom računarstvu, koje ih razlikuje od centralizovanog računarstva, je tolerancija grešaka. Nakon mnogo istraživanja, odlučili smo da u programskom jeziku za distribuirano računanje morate imati nešto poput atomskih transakcija, jer nikada ne možete biti sigurni da će daljinski poziv uspjeti. Jednom kada imate transakcije, postoji problem kontrole konkurentnosti. Zatim je bilo dosta posla na dobijanju visoko paralelnih transakcionih struktura podataka. Onda kada sam diplomirao otišao sam u Carnegie Mellon i počeo da traži temu za posao. Palo mi je na pamet da je računarstvo prešlo sa pojedinačnih računara na mreže računara. Prirodni nastavak napretka bili bi multiprocesori - tada nije postojala riječ "multi-core". Pomislio sam: šta je ekvivalent atomskim transakcijama za sistem sa više jezgara? Definitivno nisu obične transakcije, jer su prevelike i teške. I tako sam došao na ideju linearizabilnost i tako sam došao do cijele sinhronizacije bez čekanja. Bio je to pokušaj da se odgovori na pitanje šta je analog atomskih transakcija za višeprocesorski sistem sa zajedničkom memorijom. Na prvi pogled ovo djelo može izgledati sasvim drugačije, ali zapravo je nastavak iste teme.

Svijet čeka multi-core

Vitalij: Spomenuli ste da je u to vreme bilo vrlo malo računara sa više jezgara, zar ne?

Maurice: Oni jednostavno nisu postojali. Postojalo je nekoliko takozvanih simetričnih multiprocesora, koji su u osnovi bili povezani na istu magistralu. Nije dobro funkcionisalo, jer svaki put kada bi nova kompanija napravila nešto ovako, Intel je izdao jedan procesor koji je bio bolji od multiprocesora.

Aleksej: Zar to ne znači da je u ta davna vremena to bila više teorijska studija?

Maurice: To nije bila teorijska, već spekulativna studija. Sve ovo nije bilo rad sa puno teorema, već smo postavili hipoteze o arhitekturi koja u to vreme nije postojala. Eto čemu služe istraživanja! Nijedna kompanija ovo ne bi uradila, sve je to bilo nešto iz daleke budućnosti. U stvari, to je bilo sve do 2004. godine, kada su se pojavili pravi višejezgarni procesori. Zbog činjenice da se procesori pregrijavaju, procesor možete učiniti još manjim, ali ga ne možete učiniti bržim. Zbog toga je došlo do prelaska na višejezgrene arhitekture. A onda je to značilo da je odjednom došlo do upotrebe svih koncepata koje smo razvili u prošlosti.

Alexey: Zašto mislite da su se procesori s više jezgara pojavili tek XNUMX-ih? Pa zašto tako kasno?

Maurice: To je zbog hardverskih ograničenja. Intel, AMD i druge kompanije su veoma dobre u povećanju brzine procesora. Kada bi u nekom trenutku procesori postali dovoljno mali da više nisu mogli povećati brzinu takta jer bi procesori počeli da pregorevaju. Možete ih smanjiti, ali ne i brže. Ono što je u njihovoj moći - umesto vrlo malog procesora, stane osam, šesnaest ili trideset dva procesora u istu zapreminu kućišta, gde je nekada stao samo jedan. Sada imate multithreading i brzu komunikaciju između njih jer dijele keš memorije. Ali ne možete ih natjerati da trče brže - postoji vrlo specifično ograničenje brzine. Nastavljaju da se poboljšavaju malo po malo, ali ne toliko. Zakoni fizike su stali na put.

Novi svijet, novi problemi. NUMA, NVM i hakovanje arhitekture

Aleksej: Zvuči veoma razumno. Sa novim višejezgarnim procesorima došli su i novi problemi. Da li ste Vi i Vaše kolege očekivali ove probleme? Možda ste ih unaprijed proučili? U teorijskim studijama često nije lako predvidjeti takve stvari. Kada je došlo do problema, u kojoj mjeri su ispunili vaša i očekivanja vaših kolega? Ili su bili potpuno novi i vi i vaše kolege ste morali da provedete dosta vremena rješavajući probleme kako su se pojavili?

Vitalij: Dodaću na Aleksejevo pitanje: da li ste tačno predvideli arhitekturu procesora dok ste studirali teoriju?

Maurice: Ne svih 100%. Ali mislim da smo moje kolege i ja uradili dobar posao u predviđanju višejezgrene zajedničke memorije. Mislim da smo ispravno predvidjeli poteškoće u dizajniranju paralelnih struktura podataka koje rade bez zaključavanja. Takve strukture podataka bile su važne za mnoge aplikacije, iako ne za sve, ali često vam je zaista potrebna struktura podataka bez zaključavanja. Kada smo ih izmislili, mnogi su tvrdili da je to glupost, da sve dobro funkcionira sa bravama. Sasvim dobro smo predvidjeli da će postojati gotova rješenja za mnoge probleme programiranja i probleme strukture podataka. Bilo je i složenijih problema, kao npr NUMA – Neravnomjeran pristup memoriji. U stvari, nisu ni razmatrani do pronalaska višejezgrenih procesora jer su bili previše specifični. Istraživačka zajednica radila je na pitanjima koja su generalno bila predvidljiva. Neki hardverski problemi povezani sa specifičnim arhitekturama morali su da čekaju na krilima – u stvari, pojava ovih arhitektura. Na primjer, niko nije radio na strukturama podataka specifičnim za GPU jer GPU tada nije postojao. Iako je dosta posla urađeno na tome SIMD, ovi algoritmi su bili spremni za upotrebu čim se pojavi pravi hardver. Međutim, nemoguće je sve predvidjeti.

Aleksej: Ako sam dobro razumeo, NUMA je neka vrsta kompromisa između cene, performansi i nekih drugih stvari. Imaš li ideju zašto je NUMA došla tako kasno?

Maurice: Mislim da NUMA postoji zbog problema sa hardverom koji se koristi za stvaranje memorije: što su komponente udaljenije, to im se sporije pristupa. S druge strane, druga vrijednost ove apstrakcije je uniformnost pamćenja. Stoga je jedna od karakteristika paralelnog računarstva da su sve apstrakcije blago pokvarene. Da je pristup savršeno ujednačen, sva memorija bi bila jednako udaljena, ali to je ekonomski, a možda čak i fizički nemoguće. Tako nastaje ovaj sukob. Ako napišete svoj program kao da je memorija ujednačena, onda će najvjerovatnije biti ispravan. U smislu da neće dati pogrešne odgovore. Ali nastup njenih zvijezda s neba neće zgrabiti. Slično, ako pišete spinlocks bez razumijevanja hijerarhije keša, sama brava će biti ispravna, ali možete zaboraviti na performanse. U određenom smislu, morate pisati programe koji žive na vrhu vrlo jednostavne apstrakcije, ali morate nadmudriti ljude koji su vam dali tu apstrakciju: morate znati da ispod apstrakcije postoji neka hijerarhija memorije, da postoji autobus između vas i ove memorije, i tako dalje. Dakle, postoji određeni sukob između apstrakcija koje su same po sebi korisne, što nas dovodi do vrlo specifičnih i pragmatičnih problema.

Vitalij: Šta je sa budućnošću? Možete li predvidjeti kako će se procesori dalje razvijati? Postoji ideja da je jedan od odgovora transakciona memorija. Verovatno imate još nešto na lageru.

Maurice: Pred nama je nekoliko velikih izazova. Jedna je da je koherentno pamćenje divna apstrakcija, ali počinje da se razbija u posebnim slučajevima. Tako je, na primjer, NUMA živi primjer nečega u čemu možete nastaviti da se pretvarate da postoji uniformna memorija. Zapravo - ne, predstava će vas rasplakati. U nekom trenutku, arhitekte će morati da napuste ideju ujedinjene memorijske arhitekture, ne možete se pretvarati zauvek. Biće potrebni novi modeli programiranja koji su dovoljno jednostavni za upotrebu i dovoljno moćni da osnovni hardver učine efikasnim. Ovo je vrlo težak kompromis, jer ako programerima pokažete arhitekturu koja se zapravo koristi u hardveru, oni će poludjeti. Previše je komplikovano i nije prenosivo. Ako predstavite interfejs koji je previše jednostavan, performanse će biti loše. Stoga će biti potrebno napraviti mnogo vrlo teških kompromisa kako bi se obezbijedili korisni programski modeli primjenjivi na zaista velike procesore s više jezgara. Nisam siguran da je iko osim uskog stručnjaka sposoban da programira na računaru sa 2000 jezgara. I osim ako se ne bavite veoma specijalizovanim ili naučnim računarstvom, kriptografijom ili bilo čime, još uvek nije jasno kako to da uradite kako treba. 

Drugi sličan pravac su specijalizirane arhitekture. Grafički akceleratori postoje već dugo vremena, ali su već postali neka vrsta klasičnog primjera kako možete uzeti specijalizirani tip računanja i pokrenuti ga na namjenskom čipu. Ovo dodaje svoje izazove: kako komunicirate s takvim uređajem, kako ga programirate. Nedavno sam radio na zadacima u tom području skoro memorijsko računarstvo. Uzmite mali procesor i zalijepite ga na ogroman komad memorije tako da memorija radi brzinom L1 keš memorije, a zatim komunicira s uređajem kao što je TPU - procesor je zauzet učitavanjem novih zadataka u vašu memorijsku jezgru. Razvoj struktura podataka i komunikacijskih protokola za ovu vrstu stvari je još jedan zanimljiv primjer. Stoga će specijalizovani procesori i hardver biti predmet poboljšanja još neko vrijeme.

Aleksej: Šta je sa nepromenljivom memorijom (trajna memorija)?

Maurice: Oh, to je još jedan sjajan primjer! NVM će uvelike promijeniti način na koji gledamo na stvari kao što su strukture podataka. Nepromenljiva memorija, u izvesnom smislu, obećava da će zaista ubrzati stvari. Ali to neće olakšati život, jer je većina procesora, keš memorije i registara još uvijek nestabilna. Kada se pokrenete nakon pada, vaše stanje i stanje memorije neće biti potpuno isti kao prije pada. Veoma sam zahvalan ljudima koji su uključeni u NVM - istraživači će još dugo imati šta da rade, pokušavajući da otkriju uslove ispravnosti. Proračuni su ispravni ako mogu preživjeti pad u kojem se gubi sadržaj keša i registara, ali glavna memorija ostaje netaknuta.

Kompajleri protiv CPU-a, RISC protiv CISC, dijeljena memorija naspram prosljeđivanja poruka

Vladimir: Šta mislite o dilemi kompajlera i procesora u smislu skupa instrukcija? Da objasnim za one koji nisu u ovoj temi: ako idemo na neujednačenu memoriju ili nešto slično, mogli bismo primijeniti vrlo jednostavan skup instrukcija i zamoliti kompajler da generiše složeni kod koji može iskoristiti prednosti otkrivenih prednosti. Ili možemo ići drugim putem: implementirati složene instrukcije i tražiti od procesora da promijeni redoslijed instrukcija i izvrši druge manipulacije s njima. Šta mislite o tome?

Maurice: Ja zapravo nemam odgovor na to pitanje. Ova debata traje već četiri decenije. Bilo je vreme između skraćeno skup komandi i komplikovano građanske ratove vodio je skup timova. Neko vrijeme su ljudi iz RISC-a pobjeđivali, ali je Intel ponovo izgradio njihove motore tako da je smanjeni skup instrukcija korišten unutra, a cijeli je izvezen van. Možda je to tema u kojoj svaka nova generacija mora pronaći svoje kompromise i donijeti svoje odluke. Vrlo je teško predvidjeti koja će od ovih stvari biti bolja. Tako da će svako predviđanje koje napravim biti istinito određeno vrijeme, a onda će opet neko vrijeme postati lažno, a onda opet biti istinito.

Alexey: Koliko je uobičajeno za industriju općenito da neke ideje dobiju nekoliko decenija i izgube u narednim? Postoje li drugi primjeri takvih periodičnih promjena?

Maurice: U polju distribuiranog računarstva postoje ljudi koji vjeruju u zajednička memorija i ljudi koji veruju u poruka. Prvobitno u distribuiranom računarstvu, paralelno računarstvo znači prenošenje poruka. Onda je neko otkrio da zajednička memorija znatno olakšava programiranje. Druga strana je rekla da je zajednička memorija previše komplikovana, jer im trebaju brave i slično, pa se isplati preći na jezike u kojima ništa osim prosljeđivanja poruka jednostavno ne postoji. Neko je pogledao šta je iz toga proizašlo i kaže: „vau, ova implementacija razmjene poruka izgleda vrlo slično zajedničkoj memoriji, jer kreirate mnogo, mnogo ovih malih modula, oni šalju poruke jedni drugima, i svi oni zastoj, - hajde da poboljšamo bazu podataka zajedničke memorije!". Sve se to ponavlja iznova i iznova, i nemoguće je reći da je jedna od strana nedvosmisleno u pravu. Jedna strana će uvijek dominirati, jer čim jedna od njih zamalo pobijedi, ljudi uvijek iznova izmišljaju načine da poboljšaju drugu.

Umijeće pisanja krhkog višenitnog koda

Aleksej: Ovo je veoma interesantno. Na primjer, kada pišemo kod, bez obzira na programski jezik, obično moramo kreirati apstrakcije poput ćelija koje se mogu čitati i pisati. Ali u stvari, na nekom fizičkom nivou, to može izgledati kao slanje poruke na hardverskoj magistrali između različitih računara i drugih uređaja. Ispostavilo se da postoji rad na oba nivoa apstrakcije odjednom.

Maurice: Apsolutno je tačno da je zajednička memorija izgrađena na prosljeđivanju poruka - sabirnice, keš memorije itd. Ali teško je pisati programe koristeći prenošenje poruka, tako da hardver namjerno laže, pretvarajući se da imate neku vrstu uniformne memorije. Ovo će vam olakšati pisanje jednostavnih, ispravnih programa prije nego performanse počnu padati. Onda kažete: izgleda da je vrijeme da se sprijateljite sa kešom. I tada počnete da brinete o lokaciji keša i onda krećemo. U određenom smislu, vi razbijate apstrakciju: znate da to nije samo ravna, uniformna memorija, i iskoristićete to znanje za pisanje programa prilagođenih kešu. To je ono što morate raditi u stvarnim zadacima. Ovaj sukob između lijepe jednostavne, lijepe apstrakcije koju ste dobili i užasno složene implementacije osnovnog hardvera je mjesto gdje svako pravi svoj vlastiti kompromis. Imam knjigu o multiprocesorima i sinhronizaciji, i jednog dana nameravao sam da napišem poglavlje o strukturama podataka u java.util.concurrent. Ako ih pogledate, stvari poput preskočite liste Ovo su neverovatna umetnička dela. (Napomena urednika: oni koji su upoznati sa jezikom Java trebali bi barem pogledati implementaciju ConcurrentSkipListMap, Možete pogledati na linkovima za API и izvorni kod). Ali sa moje tačke gledišta, bilo bi neodgovorno pokazivati ​​ih studentima, jer takva struktura podataka je neka vrsta momka u cirkusu koji trči na konopcu preko medvjeđe jame. Ako promijenite čak i jedan mali detalj, cijela struktura će se srušiti. Ovaj kod je vrlo brz i elegantan samo zato što je savršeno napisan, ali i najmanja promjena će dovesti do potpunog neuspjeha. Ako dam ovu šifru kao primjer studentima, oni će odmah reći: I ja to mogu! A onda će se srušiti neki avion ili će eksplodirati nuklearni reaktor, a ja ću biti kriv što im nisam dao previše informacija u pravo vrijeme.

Alexey: Kada sam bio malo mlađi, mnogo puta sam pokušavao da proučim izvorni kod Douga Leeja, na primjer, java.util.concurrent, jer je otvorenog koda, vrlo ga je lako pronaći i pokušati razumjeti šta se tamo dešava. Nije ispalo baš najbolje: često je potpuno nejasno zašto je Dag odlučio da uradi nešto na ovaj način, kada svi drugi to rade drugačije. Kako objašnjavate ove stvari svojim učenicima? Postoji li određeni ispravan način da se opisuju specifični detalji hardcore algoritma, na primjer? Kako to radiš?

Maurice: Učitelji crtanja imaju kliše koji se prvo sećaju: ako želite da crtate kao Picasso, prvo morate naučiti kako crtati jednostavne realistične slike, a tek kada upoznate pravila možete početi da ih kršite. Ako odmah počnete s kršenjem pravila, dobit ćete nered. Prvo, učim studente kako da napišu jednostavan, ispravan kod bez brige o performansama. Kažem da ovdje vrebaju složeni vremenski problemi, tako da ne brinite o keš memoriji, ne brinite o memorijskim modelima, samo se uvjerite da sve radi kako treba. Ovo je već dovoljno teško: moderno programiranje nije lako samo po sebi, posebno za nove studente. A kad imaju intuiciju kako da napišu ispravne programe, kažem: pogledajte ove dvije implementacije spinlocka: jedna je vrlo spora, a druga također nije baš dobra, ali već bolja. Međutim, matematički su ova dva algoritma ista. U stvari, jedan od njih koristi lokalizaciju keša. Jedan od njih se okreće na lokalno keširanim podacima, a drugi uzastopno izvodi operacije prolazeći kroz sabirnicu. Ne možete napisati efikasan kod ako ga ne razumijete, ako ne znate kako razbiti apstrakciju i pogledati temeljnu strukturu. Ali nećete moći odmah početi to raditi. Ima ljudi koji to odmah počnu raditi i vjeruju u vlastitu genijalnost, obično se loše završi jer ne razumiju principe. Niko ne crta kao Picasso ili ne piše programe kao Doug Lee, koji je tek završio fakultet, u svojoj prvoj sedmici. Za dostizanje ovog nivoa znanja potrebne su godine.

Aleksej: Ispada da delite problem na dva dela: prvi je ispravnost, drugi je performanse?

Maurice: Upravo tako. I to tim redosledom. Dio problema je što novi učenici ne shvaćaju da je ispravnost teško postići. Na prvi pogled kažu: ovo je očigledno tačno, ostaje samo da se ubrza. Zato im ponekad govorim o inherentno netačnom algoritmu kao da je ispravan.

Kako naučiti učenike kako da napišu složeni višenitni kod

Aleksej: Samo da vide da li mogu da naslute trik?

Maurice: Uvijek vas unaprijed upozoravam da ću ponekad smisliti pogrešne algoritme. Ne treba da obmanjujete ljude. Predlažem da budu skeptični prema informacijama. Ako nešto kažem i kažem: „gle, ovo je očito tačno“ - to je signal da vas negdje pokušavaju prevariti i da počnete postavljati pitanja. Zatim pokušavam da ohrabrim učenike da nastave da postavljaju pitanja, a zatim upitam: „šta će se desiti ako sve ostavimo kako jeste?“. I odmah vide grešku. Ali uvjeriti studente da moraju brinuti o ispravnosti teže je nego što se čini na prvi pogled. Mnogi od ovih učenika dolaze sa iskustvom programiranja u srednjoj školi, neki su već dobili posao i programirali tamo i svi su puni samopouzdanja. Ovo je nešto vojno: prvo morate promijeniti njihov način razmišljanja kako biste ih uvjerili da strpljivo pristupe rješavanju novih problema. Ili je to možda kao budistički monasi: prvo uče da razmišljaju o ispravnosti, a kada shvate načine rasuđivanja o ispravnosti, dozvoljeno im je da pređu na sledeći nivo i počnu da brinu o performansama.

Alexey: To jest, ponekad pokažete učenicima neradne primjere, zahvaljujući kojima dobijate povratnu informaciju koja pokazuje da li razumiju suštinu problema, da li mogu pronaći pogrešan kod i pogrešan rezultat. Pa, kako studenti obično ugode ili uznemire?

Maurice: Gotovo uvijek učenici na kraju pronađu grešku. Ako pretražuju presporo, postavljam sugestivna pitanja, i ovdje je važno shvatiti da će, ako ih nikada ne prevari, početi nepromišljeno doživljavati vaše riječi kao konačnu istinu. Onda im postane dosadno i zaspu čitajući Facebook na svom laptopu tokom nastave. Ali kada im unapred date do znanja da će biti prevareni i da će izgledati glupo ako ne osete trik, postaju mnogo budniji. Ovo je dobro na mnogo načina. Želio bih da učenici ne samo da dovode u pitanje svoje razumijevanje problema, već i da dovode u pitanje autoritet nastavnika. Ideja je da učenik u svakom trenutku može podići ruku i reći: Mislim da je ono što ste upravo rekli pogrešno. To je važan alat za učenje. Ne želim da bilo ko od studenata sjedi i šutke misli u sebi: sve ovo izgleda potpuna glupost, ali je previše strašno dići ruku, a zaista, on je profesor, tako da je sve što kaže istina. Stoga, ako su unaprijed upozoreni da nije nužno sve što je rečeno, oni imaju poticaj da posvete više pažnje gradivu. Izričito tvrdim da je podizanje ruke i postavljanje pitanja u redu. Vaše pitanje može zvučati glupo ili naivno, ali tako često nastaju najbolja pitanja.

Aleksej: Veoma zanimljivo. Ljudi obično imaju neku vrstu psihološke barijere koja ih sprečava da profesoru postave pitanje. Pogotovo ako je puno ljudi u prostoriji i svi se boje da će razgovor o vašem glupom pitanju oduzeti vrijeme svim tim ljudima. Postoje li trikovi za rješavanje ovoga?

Maurice: Često zastanem i postavim klasična pitanja. Da li će neka izjava biti tačna, ili kako bi oni riješili problem o kojem se raspravlja. Ovo je ključni korak, posebno na početku sesije, kada je ljudima neugodno reći i najmanju stvar. Studentima postavljate pitanje i ništa više ne kažete. Nastupi tišina, svi se malo napnu, napetost raste, onda se odjednom neko slomi, slomi i kaže odgovor. Tako razvijate situaciju: postaje teže i neugodnije šutjeti nego odgovarati! Ovo je standardni pedagoški trik. Svaki učitelj na svijetu bi trebao znati kako se to radi.

Aleksej: Sada imamo sjajan naslov za ovaj intervju: "lakše je odgovoriti nego ćutati."

Vitalij: Da te pitam još jednu stvar. Radite na topološkim dokazima. Kako ste se uopće uključili u ovo, jer distribuirano računanje i topologija su potpuno različite stvari!

Maurice: Tu postoji skrivena veza. Kada sam bio student i studirao matematiku, studirao sam čistu matematiku. Do kraja studija nisam imao pravo interesovanje za kompjutere i našao sam se u hitnoj potrebi da tražim posao. Kao student studirao sam algebarsku topologiju. Mnogo godina kasnije, dok sam radio na problemu tzv "Problem dogovora k-Set", koristio sam grafove za modeliranje problema i, kako se tada činilo, našao rješenje. Trebalo je samo sjesti i obići grofa. Pokušajte pronaći odgovarajući odgovor na ovom grafikonu. Ali moj algoritam nije funkcionisao: pokazalo se da će on uvek trčati u krug. Nažalost, ništa od ovoga se ne može objasniti formalnim jezikom teorije grafova, jezikom koji znaju svi informatičari. A onda sam se sjetio da smo prije mnogo godina, čak i na časovima topologije, koristili koncept "jednostavni kompleks", što je generalizacija grafova na više dimenzije. Tada sam se zapitao: šta se dešava ako problem preformulišemo u terminima simplicijskih kompleksa? Ovo je postalo ključ. Korišćenjem moćnijeg formalizma, problem odjednom postaje mnogo jednostavniji. Ljudi su se dugo mučili s tim, koristeći grafove, ali nisu mogli ništa. A ni sada ne mogu - tačan odgovor nije bio algoritam, već dokaz nemogućnosti rješavanja problema. Odnosno, takav algoritam jednostavno ne postoji. Ali svaki dokaz nemogućnosti temelji se ili na simplicialnim kompleksima, ili na stvarima za koje se ljudi pretvaraju da ih ne smatraju simplicialnim kompleksima. Iz činjenice da ste nešto nazvali novim imenom, to ne gubi svoju suštinu.

Vitalij: Ispada da ste samo imali sreće?

Maurice: Osim sreće, i jeste spremnost. Što znači, ne biste trebali zaboraviti "beskorisne" stvari koje ste ranije naučili. Što više beskorisnih stvari naučite, više uvida ćete moći izvući kada se suočite s novim problemom. Ova vrsta intuitivnog usklađivanja uzoraka je važna jer... Recimo, to je lanac: na početku sam otkrio da grafovi ne funkcioniraju baš ili ne funkcioniraju uopće, podsjetio me na nešto od prije osam godina i studentskih godina kada smo proučavali sve ove simplicijske komplekse. Zauzvrat, ovo mi je omogućilo da pronađem svoj stari udžbenik topologije i učitam ga nazad u svoju glavu. Ali da nije bilo tog starog znanja, nikada ne bih napravio nikakav napredak u rješavanju prvobitnog problema.

Novo izdanje Umetnosti višeprocesorskog programiranja

Aleksej: Rekli ste nekoliko reči o svojoj knjizi. Verovatno nije najveća tajna da ste napisali najpoznatiju svetsku knjigu o višenitnosti, "Umetnost višeprocesorskog programiranja". Ona već ima oko 11 godina i od tada je samo izlazila  revidirano reprint. Hoće li biti drugog izdanja?

Maurice: Dobro je što ste pitali! Biće to vrlo brzo, za tri meseca ili tako nešto. Ima još dva autora, dodali smo puno više materijala, poboljšali dio o paralelizmu fork/join, napisali dio o MapReduceu, dodali puno novih stvari i izbacili nepotrebne - nešto što je bilo jako zanimljivo u vrijeme pisanja prvo izdanje, ali danas više nije. Ispostavilo se da je to veoma ozbiljno revidirana knjiga.

Aleksej: Sve je već urađeno, ostaje samo da se oslobodi?

Maurice: Treba još poraditi na nekoliko poglavlja. Naš izdavač (mislim da nas već mrzi) još uvijek pokušava poručiti da trebamo raditi brže. Mnogo kasnimo. Teoretski, ovu knjigu smo mogli napraviti nekoliko godina ranije.

Alexey: Postoji li šansa da dobijete novu verziju knjige prije Božića?

Maurice: To je naš cilj! Ali ja sam toliko puta prognozirao pobjedu da mi više niko ne vjeruje. Vjerovatno mi ni po ovom pitanju ne biste trebali previše vjerovati.

Aleksej: U svakom slučaju, ovo je fantastična vest. Zaista mi se svidjelo prvo izdanje knjige. Moglo bi se reći da sam obožavatelj.

Maurice: Nadam se da će novo izdanje biti vrijedno vašeg žarkog entuzijazma, hvala!

Kako je izmišljena transakciona memorija

Vitalij: Sljedeće pitanje je o transakcionoj memoriji. Koliko sam shvatio, vi ste pionir u ovoj oblasti, izmislili ste to u vreme kada niko nije razmišljao o takvim stvarima. Zašto ste se odlučili preseliti u ovo područje? Zašto su vam transakcije bile važne? Da li ste mislili da će jednog dana biti oličeni u gvožđu?

Maurice: Znam za transakcije još od postdiplomskih studija.

Vitalij: Da, ali ovo su različite transakcije!

Maurice: Radio sam s Elliott Mossom na neblokirajućem sakupljanju smeća. Naš problem je bio što smo željeli atomski promijeniti nekoliko riječi u memoriji i tada bi algoritmi postali vrlo jednostavni, a barem neki od njih bi postali efikasniji. Koristeći uporedi i zameni do load-link/store-conditionalkoju pruža paralelna arhitektura, moguće je nešto učiniti, ali je vrlo neefikasno i ružno jer biste morali da se nosite sa nivoima indirektnosti. Želim promijeniti memorijske riječi i moram se prebaciti jer mogu promijeniti samo jedan pokazivač, tako da one moraju upućivati ​​na neku vrstu strukture slične direktoriju. Razgovarali smo o tome kako bi bilo sjajno kada bismo mogli promijeniti hardver tako da može snimati istovremeno. Čini se da je Elliot ovo primijetio: ako pogledate protokole koherentnosti keša, oni već pružaju većinu potrebne funkcionalnosti. U optimističnoj transakciji, protokol koherentnosti keša primijetit će prisustvo vremenskog sukoba i keš će postati nevaljano. Šta se događa ako spekulativno započnete transakciju u svojoj keš memoriji i koristite mehanizme koherentnog protokola za otkrivanje sukoba? Spekulativnu hardversku arhitekturu bilo je lako dizajnirati. Pa smo to napisali prva publikacija o transakcionoj memoriji. U isto vrijeme, kompanija za koju sam radio, Digital Equipment Corporation, gradila je novi 64-bitni procesor pod nazivom Alpha. I tako sam otišao i održao prezentaciju Alpha razvojnom timu o našoj divnoj transakcionoj memoriji, a oni su pitali: kakav će dodatni prihod naša kompanija dobiti ako sve ovo stavimo direktno u procesor? I nisam imao apsolutno nikakav odgovor na to, jer sam tehnolog, nisam marketinška osoba. Zaista nisam imao šta da kažem. Nisu bili baš impresionirani što ja ništa ne znam.

Vitalij: Milijarde! Samo reci "milijarde"!

Maurice: Da, to sam trebao reći. Sada, u eri startapa i svega toga, znam kako da napišem biznis plan. Da možete malo lagati o veličini potencijalnog profita. Ali tih dana je to izgledalo naivno, pa sam samo rekao: "Ne znam." Ako pogledate povijest publikacije o transakcijskoj memoriji, primijetit ćete da je nakon godinu dana bilo nekoliko referenci na nju, a zatim desetak godina ovaj članak uopće niko nije citirao. Citati su se pojavili oko 2004. godine, kada je nastala prava multi-core. Kada su ljudi otkrili da pisanje paralelnog koda može zaraditi novac, počela su nova istraživanja. Ravi Rajwar napisao članak, koji je na neki način uveo mainstream u koncept transakcione memorije. (Napomena urednika: Ovaj članak ima drugu verziju objavljenu 2010. godine i slobodno je dostupna kao PDF). Odjednom su ljudi shvatili kako se sve to može iskoristiti, kako mogu ubrzati tradicionalne algoritme sa bravama. Dobar primjer nečega što je u prošlosti izgledalo kao zanimljiv akademski problem. I da, da ste me tada pitali da li mislim da će sve ovo biti važno u budućnosti, rekao bih: naravno, ali kada tačno nije jasno. Možda za 50 godina? U praksi se pokazalo da je to bila samo decenija. Jako je lijepo kad nešto uradiš, a za samo deset godina ljudi to primjete.

Zašto je vrijedno istraživati ​​u oblasti distribuiranog računarstva

Vitalij: Ako govorimo o novim istraživanjima, šta biste savetovali čitaocima - distribuirano računarstvo ili višejezgarno i zašto? 

Maurice: Lako je nabaviti procesor sa više jezgara ovih dana, ali je teže postaviti pravi distribuirani sistem. Počeo sam da radim na njima jer sam želeo da uradim nešto drugačije od mog doktorata. Ovo je savjet koji uvijek dajem početnicima: nemojte pisati naknadnu disertaciju - pokušajte ići u novom smjeru. Osim toga, multithreading je jednostavan. Mogu eksperimentirati na vlastitoj viljuški koja radi na laptopu bez ustajanja iz kreveta. Ali ako bih odjednom poželeo da napravim pravi distribuirani sistem, morao bih da uradim mnogo posla, da privučem studente i tako dalje. Ja sam lijena osoba i radije bih radio na multi-core. Eksperimentisanje sa višejezgarnim sistemima je takođe lakše nego eksperimentisanje sa distribuiranim, jer čak i u glupom distribuiranom sistemu postoji previše faktora za kontrolu.

Vitaliy: Šta sada radiš, istražuješ blockchain? Na koje članke prvo treba obratiti pažnju?

Maurice: Nedavno se pojavio vrlo dobar članakkoju sam napisao sa svojim učenikom, Vikramom Sarafom, posebno za Tokenomcs konferencije u Parizu pre tri nedelje. Ovo je članak o korisnim distribuiranim sistemima u kojem predlažemo da Ethereum učinimo višenitnim. Sada se pametni ugovori (kod koji radi na blockchainu) izvršavaju sekvencijalno. Ranije smo napisali članak koji je govorio o načinu korištenja špekulativnih transakcija za ubrzanje procesa. Uzeli smo mnogo ideja iz softverske transakcijske memorije i rekli da ako ove ideje učinite dijelom Etherium virtualne mašine, onda će sve raditi brže. Ali za to je neophodno da u ugovorima nema sukoba podataka. A onda smo pretpostavili da u stvarnom životu takvih sukoba zaista nema. Ali nismo imali priliku da saznamo. Onda nam je palo na pamet da imamo skoro deset godina stvarne istorije ugovora na našim rukama, pa smo istovarili Etherium blockchain i zapitali se: šta bi se dogodilo kada bi se ovi istorijski zapisi odvijali paralelno? Otkrili smo značajno povećanje brzine. U ranim danima Etherium-a brzina je jako porasla, ali danas je sve nešto složenije, jer je manje ugovora i veća je vjerovatnoća sukoba oko podataka koji zahtijevaju serijalizaciju. Ali sve je to eksperimentalni rad sa stvarnim istorijskim podacima. Lijepa stvar kod blockchaina je to što zauvijek pamti sve, tako da se možete vratiti u prošlost i proučiti šta bi se dogodilo da koristimo druge algoritme za pokretanje koda. Kako bi se ljudima u prošlosti svidjela naša nova ideja. Mnogo je lakše i ugodnije raditi takva istraživanja, jer postoji stvar koja sve prati i sve snima. Ovo je već nešto više kao sociologija nego razvoj algoritama.

Da li je razvoj algoritama stao i kako dalje živjeti

Vitalij: Vrijeme je za posljednje teorijsko pitanje! Da li se čini da se napredak u konkurentnim strukturama podataka smanjuje svake godine? Mislite li da smo dostigli plato u našem razumijevanju struktura podataka ili će biti nekih velikih poboljšanja? Možda postoje neke pametne ideje koje mogu potpuno promijeniti sve?

Maurice: Možda smo dostigli plato u strukturama podataka za tradicionalne arhitekture. Ali strukture podataka za nove arhitekture su još uvijek vrlo obećavajuće područje. Ako želite da kreirate strukture podataka za, recimo, hardverske akceleratore, onda se strukture podataka GPU-a veoma razlikuju od struktura podataka CPU-a. Kada dizajnirate strukture podataka za blockchaine, morate heširati dijelove podataka, a zatim ih staviti u nešto poput merkle tree, kako bi se spriječilo krivotvorenje. U posljednje vrijeme došlo je do porasta aktivnosti u ovoj oblasti, mnogi rade jako dobro. Ali mislim da će se dogoditi da će nove arhitekture i nove aplikacije dovesti do novih struktura podataka. Starije aplikacije i tradicionalna arhitektura - možda više nema puno prostora za istraživanje. Ali ako skrenete sa utabane staze i pogledate preko ivice, vidjet ćete lude stvari koje mainstream ne shvaća ozbiljno – tu se zapravo dešavaju sve uzbudljive stvari.

Vitalij: Stoga, da bih bio veoma poznat istraživač, morao sam da izmislim sopstvenu arhitekturu 🙂

Maurice: Možete "ukrasti" tuđu novu arhitekturu - čini se mnogo lakše!

Radi na Univerzitetu Brown

Vitaliy: Možete li nam reći nešto više o tome Brown Universityu kojoj radite? Ne zna se mnogo o njemu u kontekstu informacionih tehnologija. Manje od MIT-a, na primjer.

Maurice: Brown University je jedan od najstarijih univerziteta u Sjedinjenim Državama. Mislim da je samo Harvard malo stariji. Brown je dio tzv lige bršljana, koji predstavlja kolekciju osam najstarijih univerziteta. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. Ovo je neka vrsta starog, malog i pomalo aristokratskog univerziteta. Fokus je na obrazovanju iz oblasti liberalnih umjetnosti. Ne pokušava da bude kao MIT, MIT je veoma specijalizovan i tehnički. Brown je odlično mjesto za proučavanje ruske književnosti ili klasičnog grčkog jezika i, naravno, računarstva. Fokusira se na sveobuhvatno obrazovanje. Većina naših studenata ide na Facebook, Apple, Google, tako da mislim da naši studenti nemaju problema da dobiju posao u industriji. Otišao sam da radim u Brown jer sam prije toga radio u Digital Equipment Corporation u Bostonu. Bila je to kompanija koja je izmislila mnogo zanimljivih stvari, ali je poricala važnost personalnih računara. Preduzeće teške sudbine, čiji su osnivači nekada bili mladi revolucionari, ništa nisu naučili i ništa nisu zaboravili, pa su se od revolucionara za desetak godina pretvorili u reakcionare. Voleli su da se šale da personalni računari pripadaju garaži - napuštenoj garaži, naravno. Sasvim je očigledno da su ih uništile fleksibilnije kompanije. Kada je postalo jasno da je kompanija u problemima, pozvao sam svog prijatelja iz Browna, koji je udaljen oko sat vremena od Bostona. U to vrijeme nisam želio napustiti Boston, jer drugi univerziteti nisu imali toliko slobodnih mjesta. Bilo je to vrijeme kada nije bilo toliko slobodnih radnih mjesta u oblasti računarstva kao sada. A Brown je imao posao, nisam morao da se iselim iz svoje kuće, nisam morao da selim svoju porodicu i zaista uživam u životu u Bostonu! Tako sam donio odluku da odem u Brown. Sviđa mi se. Učenici su odlični, tako da nikad nisam ni pokušao otići negdje drugdje. Na odmoru sam godinu dana radio u Microsoftu, godinu dana otišao u Technion u Haifi, a sada ću biti u Algorandu. Imam puno kolega posvuda i stoga fizička lokacija naših učionica nije toliko važna. Ali najvažnije su studenti, oni su ovdje najbolji. Nikada nisam pokušao da idem negde drugde, jer sam ovde prilično srećan.

Ipak, uprkos Brownovoj slavi u Sjedinjenim Državama, on je iznenađujuće nepoznat u inostranstvu. Kao što vidite, sada dajem sve od sebe da ispravim ovo stanje.

Razlika između univerzitetskog i korporativnog istraživanja

Vitaliy: U redu, sljedeće pitanje je o digitalnoj opremi. Bio si tamo istraživač. Koja je razlika između rada u R&D odjelu velike kompanije i rada na univerzitetu? Koje su prednosti i nedostaci?

Maurice: U Microsoftu sam dvadeset godina, blisko sarađujući sa ljudima u Sun Microsystems, Oracle, Facebook, a sada i Algorand. Na osnovu svega ovoga, želim da kažem da je moguće sprovesti prvoklasno istraživanje kako u kompanijama tako i na fakultetu. Bitna razlika je u tome što u kompaniji radite sa kolegama. Ako iznenada imam ideju za projekat koji još ne postoji, moram uvjeriti svoje kolege da je to dobra ideja. Ako sam u Brownu, onda mogu reći svojim studentima: hajde da radimo na antigravitaciji! Ili će otići nekom drugom ili će preuzeti projekat. Da, morat ću pronaći sredstva, trebat ću napisati aplikaciju za grant i tako dalje. U svakom slučaju, uvijek će biti mnogo učenika, a vi ćete moći jednostrano donositi odluke. Ali na fakultetu najvjerovatnije nećete raditi s ljudima vašeg nivoa. U svijetu industrijskog istraživanja, prvo morate uvjeriti sve da je vaš projekat vrijedan preuzimanja. Ne mogu ništa naručiti ni od koga. I oba ova načina rada su vrijedna, jer ako radite na nečemu stvarno ludom, a vaše kolege je teško uvjeriti, lakše je uvjeriti diplomce - pogotovo ako ih plaćate. Ako radite na nečemu što zahtijeva puno iskustva i duboku stručnost, onda su vam potrebne kolege koje mogu reći “ne, slučajno se razumijem u ovu oblast i vaša ideja je loša, od toga neće biti ništa.” Ovo je veoma korisno u smislu gubljenja vremena. Takođe, ako u industrijskim laboratorijama provodite puno vremena pišući izveštaje, onda na fakultetu ovo vreme provodite tražeći novac. Ako želim da studenti mogu da putuju negde, moram da nađem novac za to negde drugde. I što je važnija vaša pozicija na univerzitetu, više vremena morate potrošiti na prikupljanje novca. Dakle, sada znate šta ja radim - profesionalni prosjak! Kao jedan od onih monaha koji hodaju unaokolo sa tanjirom za donacije. Generalno, ove dvije aktivnosti se međusobno nadopunjuju. Zato se trudim da živim i stojim čvrsto u oba svijeta.

Vitalij: Čini se da je teže uvjeriti kompaniju nego druge naučnike.

Maurice: Teže, i mnogo više. Štaviše, u različitim oblastima je drugačije: neko provodi istraživanje u punom obimu, a neko je fokusiran na svoju temu. Kad bih otišao na Microsoft ili Facebook i rekao, hajde da uradimo antigravitaciju, teško da bi to cijenili. Ali da sam rekao potpuno istu stvar svojim diplomiranim studentima, oni bi najvjerovatnije odmah krenuli na posao, iako bih sada već imao problema - jer za ovo treba naći novac. Ali sve dok želite da uradite nešto u skladu sa ciljevima kompanije, ta kompanija može biti veoma dobro mesto za istraživanje.

Hydra i SPTDC

Vitalij: Moja pitanja su pri kraju, pa hajde da pričamo malo o predstojećem putovanju u Rusiju.

Maurice: Da, radujem se povratku u Petersburg.

Alexey: Velika mi je čast što ste ove godine sa nama. Ovo vam je drugi put u Sankt Peterburgu, zar ne?

Maurice: Već treći!

Aleksej: Shvatio, ali SPTDC - tacno drugi. Posljednji put kada je škola pozvana SPTCC, sada smo promijenili jedno slovo (C u D, Concurrent to Distributed) kako bismo naglasili da ove godine ima više područja vezanih za distribuirano računarstvo. Možete li reći nekoliko riječi o vašim prezentacijama u Školi i Hydra konferencije?

Maurice: U školi želim razgovarati o osnovama blockchaina i o tome šta možete učiniti s njim. Želio bih pokazati da su blockchains vrlo slični višenitnom programiranju koji nam je poznat, ali sa svojim nijansama i važno je razumjeti te razlike. Ako pogriješite u normalnoj web aplikaciji, to je samo neugodno. Ako napišete pogrešan kod u finansijskoj aplikaciji, neko će vam sigurno ukrasti sav novac. To je potpuno drugačiji nivo odgovornosti i posljedica. Pričat ću malo o dokazima o radu, pametnim ugovorima, transakcijama između različitih blockchaina.

Pored mene će raditi i drugi govornici, koji takođe imaju šta da kažu o blockchainu, a dogovorili smo se da se međusobno koordiniramo kako bi se naše priče dobro uklopile. Ali za govor o inženjerstvu, želim da dam jasno objašnjenje širokoj publici zašto ne biste trebali vjerovati svemu što čujete o blockchainima, zašto su blockchains sjajno polje, kako se uklapa u druge dobro poznate ideje i zašto bismo trebali hrabro gledaj u budućnost.

Aleksej: Osim toga, želim da kažem da se ovo neće odvijati u formatu sastanka ili korisničke grupe, kao što je to bilo pre dve godine. Odlučili smo da napravimo malu konferenciju u blizini škole. Razlog je taj što smo nakon razgovora sa Petrom Kuznjecovim shvatili da je škola ograničena na samo sto, možda 120 ljudi. Istovremeno, postoji mnogo inženjera koji žele da razgovaraju sa vama, prisustvuju izveštajima i generalno su zainteresovani za ovu temu. Za to smo kreirali novu konferenciju zove Hidra. Usput, imate li ideju zašto Hydra?

Maurice: Zato što će imati sedam zvučnika? I mogu im se odsjeći glave, a na njihovom mjestu će izrasti novi zvučnici?

Alexey: Odlična ideja za razvoj novih zvučnika. Ali zaista, ovdje postoji priča. Sjetite se legende o Odiseju, gdje je morao ploviti između Scila i Haribda? Hidra je nešto poput Haribde. Priča je da sam jednom govorio na konferenciji i govorio o višenitnosti. Na ovoj konferenciji su bile samo dvije pjesme. Na početku izvještaja rekao sam publici u dvorani da sada imaju izbor između Scile i Haribde. Moja duhovna životinja je Haribda, jer Haribda ima mnogo glava, a moja tema je višenitna. Ovako se pojavljuju nazivi konferencija.

U svakom slučaju, ponestalo nam je i pitanja i vremena. Zato hvala prijateljima na odličnom intervjuu i vidimo se na SPTDC i Hydra 2019!

Komunikaciju sa Mauriceom biće moguće nastaviti na konferenciji Hydra 2019, koja će se održati od 11. do 12. jula 2019. u Sankt Peterburgu. Doći će sa izvještajem «Blockchains i budućnost distribuiranog računarstva». Ulaznice se mogu kupiti na službenoj web stranici.

izvor: www.habr.com

Dodajte komentar