“Lakše je odgovoriti nego šutjeti” - veliki intervju s ocem transakcijske memorije, Mauriceom Herlihyjem

Maurice Herlihy - vlasnik dva Dijkstra nagrade. Prvi je za posao "Sinkronizacija bez čekanja" (Brown University) i drugi, noviji, - "Transakcijska memorija: Arhitektonska podrška za strukture podataka bez zaključavanja" (Sveučilište Virginia Tech). Nagrada Dijkstra dodjeljuje se za radove čiji su značaj i utjecaj vidljivi najmanje deset godina, a Maurice je očito jedan od najpoznatijih stručnjaka u tom području. Trenutačno je profesor na Sveučilištu Brown i ima postignuća duga 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 kaseta) i napravio izvrstan sastanak JUG.ru Java developer zajednice u St. Petersburgu (video kaseta).

Ovaj habrapost je sjajan intervju s Mauriceom Herlihyjem. Raspravlja o sljedećim temama:

  • Interakcija između akademske zajednice i industrije;
  • Temelj za istraživanje blockchaina;
  • Odakle dolaze revolucionarne ideje? Utjecaj popularnosti;
  • dr. sc. pod vodstvom Barbare Liskov;
  • Svijet čeka multi-core;
  • Novi svijet, novi problemi. NVM, NUMA i hakiranje arhitekture;
  • Kompajleri vs CPU-i, RISC vs CISC, dijeljena memorija vs prosljeđivanje poruka;
  • Umijeće pisanja krhkog višenitnog koda;
  • Kako naučiti učenike kako napisati složeni višenitni kod;
  • Novo izdanje knjige "Umijeće višeprocesorskog programiranja";
  • Kako je izumljena transakcijska memorija?   
  • Zašto se isplati baviti se istraživanjem u području distribuiranog računarstva;
  • Je li stao razvoj algoritama i kako živjeti dalje;
  • Rad na Sveučilištu Brown;
  • Razlika između sveučilišnog i korporativnog istraživanja;
  • Hydra i SPTDC.

Razgovore vode:

Vitalij Aksenov — trenutno post-doc na IST Austria i zaposlenik Odjela za računalne tehnologije na Sveučilištu ITMO. Bavi se istraživanjem u području teorije i prakse konkurentskih struktura podataka. Prije nego što se pridružio IST-u, doktorirao je na sveučilištu Paris Diderot i ITMO pod vodstvom prof. Petra Kuznetsova.

Aleksej Fedorov je producent u JUG Ru Group, ruskoj tvrtki koja organizira konferencije za programere. Alexey je sudjelovao u pripremi više od 50 konferencija, a njegov životopis sadrži sve od pozicije razvojnog inženjera u Oracleu (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 telekom operateri koriste za automatizaciju procesa upravljanja mrežom i mrežnom opremom. Zanimaju me problemi s performansama Java i Oracle baze podataka. Autor više od desetak poboljšanja performansi u službenom PostgreSQL JDBC upravljačkom programu.

Interakcija između akademske zajednice i industrije

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

Maurice: Uvijek sam pokušavao blisko surađivati ​​s komercijalnim tvrtkama jer imaju zanimljive izazove. U pravilu nisu previše zainteresirani ni za objavu svojih rezultata niti za detaljna objašnjenja svojih problema svjetskoj javnosti. Njih samo zanima rješavanje tih problema. Neko sam vrijeme radio za neke od tih tvrtki. Proveo sam pet godina radeći puno radno vrijeme u istraživačkom laboratoriju u Digital Equipment Corporation, koja je nekoć bila velika računalna tvrtka. Radio sam jedan dan u tjednu u Sunu, u Microsoftu, u Oracleu, radio sam malo na Facebooku. Sad ću otići na godišnji odmor (profesor na jednom američkom sveučilištu smije uzeti takav godišnji odmor otprilike jednom u šest godina) i raditi u Algorand, ovo je takva tvrtka za kriptovalute u Bostonu. Bliska suradnja s tvrtkama oduvijek je bila užitak jer se na taj način uči o novim i zanimljivim stvarima. Općenito možete biti prva ili druga osoba koja je objavila članak o odabranoj temi, umjesto da postupno 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 događa?

Maurice: Naravno. Znate, kad sam bio u Digital Equipment Corporationu, ja i Elliot Moss, izumili smo transakcijsku memoriju. Bilo je to vrlo plodno razdoblje kada su se svi počeli zanimati za informacijsku tehnologiju. Uključena je istovremenost, iako višejezgreni sustavi još nisu postojali. U doba Suna i Oraclea puno sam radio na paralelnim strukturama podataka. U Facebooku sam bio uključen u njihov blockchain projekt, 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 olakšati dobivanje bespovratnih sredstava ili omogućiti pristup resursima tvrtki koje posluju u industriji?

Maurice: Već sam dobio malu potporu od Ethereum Foundationa. Popularnost blockchaina vrlo je korisna za inspiriranje studenata da rade u ovom području. Oni su jako zainteresirani za to i rado sudjeluju, ali ponekad ne shvaćaju da istraživanje koje izvana zvuči primamljivo, ispadne da zahtijeva doista naporan rad. Međutim, vrlo sam sretan što koristim svu ovu mistiku oko blockchaina, pomaže privući studente. 

Ali to nije sve. Ja sam u savjetodavnom odboru nekoliko blockchain startupa. Neki od njih možda uspiju, neki ne, ali uvijek je vrlo zanimljivo vidjeti njihove ideje, proučavati ih i savjetovati ljude. Najuzbudljivije je kad ljude upozoriš da nešto ne rade. Puno toga se na prvu čini kao dobra ideja, no jesu li doista?

Temelj za istraživanje blockchaina

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

Maurice: Puno toga što se događa u svijetu blockchaina ne funkcionira kako treba, neke su samo prijevare, mnoge stvari su precijenjene. Međutim, mislim da postoji čvrsta znanstvena osnova za te studije. Činjenica da je svijet blockchaina pun ideoloških podjela pokazuje razinu uzbuđenja i predanosti. S druge strane, nije osobito koristan za znanstvena istraživanja. Sada, ako objavite članak koji govori o nedostacima određenog algoritma, dobivena reakcija nije uvijek potpuno znanstvena. Ljudi često izražavaju svoje emocije. Mislim da se takva pompa na ovom području može nekome činiti privlačnom, ali na kraju, postoje stvarna znanstvena i inženjerska pitanja koja tek treba riješiti. Ovdje ima puno informatike.

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

Maurice: Pokušavam postaviti temelje za čvrstu, znanstveno i matematički zdravu disciplinu. A dio problema je u tome što ponekad morate proturječiti nekim preoštrim stavovima drugih ljudi, ignorirati ih. Ponekad me ljudi pitaju zašto radim u oblasti koja zanima samo teroriste i dilere droge. Takva reakcija je besmislena kao i ponašanje pratitelja koji slijepo ponavljaju vaše riječi. Mislim da je istina negdje u sredini. Blockchain tek treba imati dubok utjecaj na društvo i globalnu ekonomiju. No, vjerojatno 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 vrlo važno. Možda neće ni izgledati kao moderni blockchaini, to je otvoreno pitanje.

Ako ljudi izmisle nove tehnologije, nastavit će to zvati blockchain. Mislim, baš kao što današnji Fortran nema nikakve veze s Fortran jezikom iz 1960-ih, ali svi ga i dalje zovu Fortran. Isto za UNIX. Ono što se naziva "blockchain" tek treba napraviti svoju revoluciju. Ali sumnjam da će ovaj novi blockchain biti poput onoga što svi danas vole koristiti.

Odakle dolaze revolucionarne ideje? Utjecaj popularnosti

Alexey: Je li popularnost blockchaina dovela do novih rezultata sa znanstvenog gledišta? Više interakcije, više studenata, više tvrtki u tom području. Ima li već kakvih rezultata ovog rasta popularnosti?

Maurice: Ovo me zainteresiralo kad mi je netko dao službeni letak za tvrtku koja je upravo prikupila dosta novca. Pisala je o zadatak bizantskih generalas kojim sam više nego upoznat. Napisano u letku očito je tehnički netočno. Ljudi koji su ovo napisali nisu baš razumjeli model iza problema... a ipak je ova tvrtka prikupila mnogo novca. Naknadno je tvrtka tiho zamijenila ovaj letak mnogo ispravnijom verzijom - a neću reći kako se ta tvrtka zvala. Još uvijek postoje i jako im dobro ide. 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 na ovom području bili su vrlo energični i pametni, ali nisu čitali znanstvene radove. Pokušali su izmisliti poznate stvari i učinili su to pogrešno. Danas je drama smanjena.

Alexey: Vrlo je zanimljivo, jer smo prije nekoliko godina imali drugačiji trend. To je pomalo poput front-end razvoja, gdje su programeri sučelja preglednika ponovno izumili čitave tehnologije koje su do tog vremena već bile popularne u back-endu: izgradnja sustava, kontinuirana integracija i slične stvari. 

Maurice: Slažem se. Ali to ne čudi, jer istinski prodorne ideje uvijek dolaze izvan uspostavljene zajednice. Etablirani istraživači, osobito autoriteti u akademskoj zajednici, vjerojatno neće učiniti ništa istinski revolucionarno. Lako je napisati izvješće za iduću konferenciju o tome kako ste malo popravili rezultate dosadašnjeg rada. Otiđite na konferenciju, okupite se s prijateljima, razgovarajte o istim stvarima. A ljudi koji probijaju s prodornim idejama gotovo uvijek dolaze izvana. Ne znaju pravila, ne znaju jezik, ali svejedno... Ako ste unutar uspostavljene zajednice, savjetujem vam da obratite pozornost na nove stvari, na nešto što se ne uklapa u veliku slika. U određenom smislu, može se pokušati kombinirati vanjski, fluidniji razvoj s tehnikama koje već razumijemo. Kao prvi korak pokušajte stvoriti znanstvenu bazu, a zatim je modificirajte tako da se može primijeniti na nove revolucionarne ideje. Mislim da je blockchain izvrstan za ulogu svježe revolucionarne ideje.

Aleksej: Zašto misliš da se ovo događa? Zato što ljudi "vani" nemaju nikakve specifične barijere svojstvene zajednici?

Maurice: Ovdje postoji obrazac. Ako čitate povijest impresionista u slikarstvu i umjetnosti općenito, onda su svojedobno slavni umjetnici odbacivali impresionizam. Rekli su da je to neka djetinjarija. Generaciju kasnije, ova prethodno odbačena umjetnička forma postala je standard. Ono što vidim u svom području: izumitelje blockchaina nije zanimala moć, gašenje publikacija i indeksa citiranja, samo su htjeli učiniti nešto dobro. I tako su sjeli i počeli to raditi. Nedostajalo im je određene tehničke dubine, ali to se može popraviti. Puno je teže doći do novih kreativnih ideja nego ispraviti i proširiti one nedovoljno zrele. Zahvaljujući ovim izumiteljima, sada imam što raditi!

Alexey: Ovo je slično razlici između startupa i naslijeđenih projekata. Nasljeđujemo mnoga ograničenja mišljenja, barijere, posebne zahtjeve i tako dalje.

Maurice: Dobra analogija je distribuirano računalstvo. Razmišljajte o blockchainu kao o startupu i distribuiranom računalstvu kao velikoj etabliranoj tvrtki. Distribuirano računalstvo je u procesu kupovine i spajanja s blockchainom.

Doktorirala Barbara Liskov

Vitaliy: Još uvijek imamo puno pitanja! Istraživali smo vašu biografiju i naišli na zanimljivu činjenicu o vašem doktoratu. Da, bilo je to davno, ali tema je izgleda bitna. Doktorirali ste pod mentorstvom Barbara Liskov! Barbara je vrlo poznata u zajednici razvijača programskih jezika i općenito vrlo poznata osoba. Logično je da su vaša istraživanja bila u području programskih jezika. Kako ste prešli na paralelno računanje? Zašto ste odlučili promijeniti temu?

Maurice: U to su vrijeme Barbara i njezina grupa samo gledali na distribuirano računalstvo, što je bila vrlo nova ideja. Bilo je i onih koji su govorili da je distribuirano računalstvo besmislica, komunikacija između računala besmislena. Jedno od pitanja koje se razmatra u distribuiranom računalstvu, a koje ga razlikuje od centraliziranog računalstva, je tolerancija na greške. Nakon mnogo istraživanja, odlučili smo da u programskom jeziku za distribuirano računalstvo morate imati nešto poput atomskih transakcija, jer nikada ne možete biti sigurni da će udaljeni poziv uspjeti. Nakon što imate transakcije, javlja se problem kontrole istovremenosti. Zatim je bilo puno posla na dobivanju vrlo paralelnih transakcijskih podatkovnih struktura. Onda kada sam diplomirao otišao sam u Carnegie Mellon i počeo tražiti temu za rad. Palo mi je na pamet da se računalstvo preselilo s pojedinačnih računala na mreže računala. Prirodni nastavak napretka bili bi multiprocesori - riječ "višejezgreni" tada nije postojala. Pomislio sam: što je ekvivalent atomskih transakcija za višejezgreni sustav? Definitivno ne obične transakcije, jer su prevelike i teške. I tako sam došao na ideju linearizabilnost i tako sam smislio cijelu sinkronizaciju bez čekanja. Bio je to pokušaj da se odgovori na pitanje što je analog atomskih transakcija za višeprocesorski sustav sa zajedničkom memorijom. Na prvi pogled ovaj rad može izgledati sasvim drugačije, ali zapravo je nastavak iste teme.

Svijet čeka multi-core

Vitaly: Spomenuli ste da je u to vrijeme bilo vrlo malo višejezgrenih računala, zar ne?

Maurice: Oni jednostavno nisu postojali. Postojalo je nekoliko takozvanih simetričnih multiprocesora, koji su u osnovi bili spojeni na istu sabirnicu. Nije baš dobro funkcioniralo, jer svaki put kad bi nova tvrtka stvorila nešto poput ovoga, Intel je izdao jedan procesor koji je bio bolji od multiprocesora.

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

Maurice: To nije bila teorijska, već spekulativna studija. Ovdje se nije radilo o radu s puno teorema, nego smo iznijeli hipoteze o arhitekturi koja u to vrijeme nije postojala. Tome služe istraživanja! Niti jedna tvrtka ovo ne bi napravila, sve je to nešto iz daleke budućnosti. Zapravo je to bilo do 2004. godine, kada su se pojavili pravi višejezgreni 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 prijelaza na višejezgrene arhitekture. A onda je to značilo da su se odjednom pojavile koristi za sve koncepte koje smo razvili u prošlosti.

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

Maurice: To je zbog hardverskih ograničenja. Intel, AMD i druge tvrtke vrlo su dobre u povećanju brzine procesora. Kad bi u nekom trenutku procesori postali dovoljno mali da više ne bi mogli povećati radni takt jer bi procesori počeli izgarati. Možete ih napraviti manje, ali ne brže. Što je u njihovoj moći - umjesto vrlo malog procesora, u istu zapreminu kućišta smjestite osam, šesnaest ili trideset dva procesora, gdje je prije stajao samo jedan. Sada imate multithreading i brzu komunikaciju između njih jer dijele predmemorije. Ali ne možete ih natjerati da trče brže - postoji vrlo specifično ograničenje brzine. Nastavljaju se poboljšavati malo po malo, ali ne toliko. Zakoni fizike stali su na put.

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

Alexei: Zvuči vrlo razumno. S novim višejezgrenim procesorima došli su i novi problemi. Jeste li vi i vaši kolege očekivali ove probleme? Možda ste ih proučili unaprijed? U teoretskim studijama često nije lako predvidjeti takve stvari. Kada su problemi i nastupili, u kojoj su mjeri ispunili vaša i očekivanja vaših kolega? Ili su bili potpuno novi pa ste vi i vaši kolege morali potrošiti puno vremena na rješavanje problema koji su se pojavili?

Vitaliy: Dodat ću Alexeyevom pitanju: jeste li točno predvidjeli arhitekturu procesora dok ste studirali teoriju?

Maurice: Ne svih 100%. Ali mislim da smo moji kolege i ja napravili dobar posao u predviđanju višejezgrenih sustava 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 stvarno potrebna struktura podataka bez zaključavanja. Kad smo ih izmislili, mnogi su tvrdili da je to besmislica, da s bravama sve dobro funkcionira. Prilično smo dobro predvidjeli da će postojati gotova rješenja za mnoge programerske probleme i probleme strukture podataka. Bilo je i složenijih problema, kao npr NUMA – Neravnomjeran pristup memoriji. Zapravo, nisu ni razmatrani sve do izuma višejezgrenih procesora jer su bili previše specifični. Istraživačka zajednica radila je na pitanjima koja su općenito bila predvidljiva. Neki hardverski problemi povezani s određenim arhitekturama morali su pričekati - zapravo, pojavu tih arhitektura. Na primjer, nitko nije stvarno radio na GPU specifičnim podatkovnim strukturama jer GPU tada nije postojao. Iako se mnogo radilo na SIMD, ti su algoritmi bili spremni za upotrebu čim se pojavio pravi hardver. Međutim, nemoguće je sve predvidjeti.

Alexey: Ako sam dobro shvatio, NUMA je neka vrsta kompromisa između cijene, performansi i nekih drugih stvari. Imate li ideju zašto je NUMA došao tako kasno?

Maurice: Mislim da NUMA postoji zbog problema s hardverom koji se koristi za stvaranje memorije: što su komponente dalje, to im se sporije pristupa. S druge strane, druga vrijednost ove apstrakcije je uniformnost sjećanja. Stoga je jedna od karakteristika paralelnog računanja da su sve apstrakcije malo polomljene. Kad bi pristup bio savršeno uniforman, sva bi memorija 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 uniformna, tada će najvjerojatnije biti ispravan. U smislu da neće davati krive odgovore. Ali nastup njezine zvijezde s neba neće zgrabiti. Slično, ako pišete spinlockovi bez razumijevanja hijerarhije predmemorija, samo zaključavanje će biti ispravno, ali možete zaboraviti na performanse. U određenom smislu, morate napisati 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 ovog sjećanja, i tako dalje. Dakle, postoji određeni sukob između apstrakcija koje su korisne same po sebi, što nas dovodi do vrlo specifičnih i pragmatičnih problema.

Vitaliy: Što je s budućnošću? Možete li predvidjeti kako će se procesori dalje razvijati? Postoji ideja da je jedan od odgovora transakcijska memorija. Vjerojatno imate još nešto na zalihi.

Maurice: Pred nama je nekoliko velikih izazova. Jedna je da je koherentno pamćenje prekrasna apstrakcija, ali počinje se kvariti u posebnim slučajevima. Tako je, na primjer, NUMA živući primjer nečega gdje se možete pretvarati da jednoobrazno pamćenje postoji. Zapravo – ne, nastup će vas rasplakati. U nekom trenutku, arhitekti će morati napustiti ideju jedinstvene memorijske arhitekture, ne možete se pretvarati zauvijek. Bit će potrebni novi modeli programiranja koji su dovoljno jednostavni za korištenje i dovoljno snažni da temeljni hardver učine učinkovitim. Ovo je vrlo težak kompromis, jer ako programerima pokažete arhitekturu koja se zapravo koristi u hardveru, oni će poludjeti. Previše je komplicirano i nije prenosivo. Ako predstavite sučelje koje je previše jednostavno, performanse će biti loše. Stoga će biti potrebno napraviti mnogo vrlo teških kompromisa kako bi se osigurali korisni programski modeli primjenjivi na stvarno velike višejezgrene procesore. Nisam siguran da je itko osim uskog stručnjaka sposoban programirati na računalu s 2000 jezgri. I osim ako se ne bavite vrlo specijaliziranim ili znanstvenim računalstvom, kriptografijom ili bilo čim, još uvijek uopće nije jasno kako to učiniti kako treba. 

Drugi sličan smjer su specijalizirane arhitekture. Grafički akceleratori prisutni su već dugo, ali su već postali klasičan primjer kako možete uzeti specijaliziranu vrstu računanja i pokrenuti ga na namjenskom čipu. To dodaje svoje izazove: kako komunicirati s takvim uređajem, kako ga programirati. Nedavno sam radio na zadacima u tom području gotovo memorijsko računanje. Uzmete mali procesor i zalijepite ga na ogroman komad memorije tako da memorija radi brzinom predmemorije L1, a zatim komunicira s uređajem kao što je TPU - procesor je zauzet učitavanjem novih zadataka u vašu memorijsku jezgru. Razvoj podatkovnih struktura i komunikacijskih protokola za takve stvari još je jedan zanimljiv primjer. Stoga će specijalizirani procesori i hardver još dugo biti podložni poboljšanjima.

Alexey: Što je s trajnom memorijom (nehlapljiva memorija)?

Maurice: Oh, to je još jedan sjajan primjer! NVM će uvelike promijeniti način na koji gledamo na stvari poput podatkovnih struktura. Nepostojana memorija, u određenom smislu, obećava da će stvarno ubrzati stvari. Ali to neće olakšati život jer je većina procesora, predmemorija i registara još uvijek nepostojana. Kada se pokrenete nakon pada, vaše stanje i stanje vaše memorije neće biti potpuno isti kao prije pada. Vrlo sam zahvalan ljudima koji su uključeni u NVM - još dugo će istraživači imati što raditi, pokušavajući otkriti uvjete ispravnosti. Računanja su točna ako mogu preživjeti pad u kojem se gubi sadržaj predmemorije i registara, ali glavna memorija ostaje netaknuta.

Kompajleri vs CPU-i, RISC vs CISC, dijeljena memorija vs prosljeđivanje poruka

Vladimir: Što mislite o dilemi kompajleri protiv procesora u smislu skupa instrukcija? Da objasnim za one koji nisu u temi: ako odemo do neujednačene memorije ili nečeg sličnog, mogli bismo primijeniti vrlo jednostavan skup uputa i tražiti od kompajlera da generira složeni kod koji može iskoristiti otkrivene prednosti. Ili možemo ići drugim putem: implementirati složene instrukcije i tražiti od procesora da promijeni redoslijed instrukcija i vrši druge manipulacije s njima. Što mislite o tome?

Maurice: Zapravo nemam odgovor na to pitanje. Ova rasprava traje već četiri desetljeća. Bilo je vrijeme između skraćeno skup naredbi i komplicirano građanske ratove vodio je skup timova. Neko su vrijeme ljudi iz RISC-a pobjeđivali, ali onda je Intel obnovio svoje motore tako da se smanjeni skup instrukcija koristio unutra, a cijeli je izvezen van. Možda je to tema u kojoj svaka nova generacija mora pronaći svoje kompromise i donijeti vlastite odluke. Vrlo je teško predvidjeti što će od toga ispasti bolje. Dakle, svako moje predviđanje bit će istinito određeno vrijeme, a zatim će opet postati lažno na neko vrijeme, a zatim opet biti istinito.

Alexey: Koliko je uobičajeno za industriju općenito da neke ideje pobjeđuju tijekom nekoliko desetljeća i gube u sljedećim? Postoje li drugi primjeri takvih periodičnih promjena?

Maurice: U polju distribuiranog računarstva postoje ljudi koji vjeruju u to zajednička memorija i ljudi koji vjeruju u poruka. Izvorno u distribuiranom računalstvu, paralelno računalstvo znači prosljeđivanje poruka. Onda je netko otkrio da zajednička memorija znatno olakšava programiranje. Druga strana je rekla da je zajednička memorija prekomplicirana, jer trebaju brave i slično, pa se isplati prijeći na jezike gdje jednostavno ne postoji ništa osim prolaska poruka. Netko je pogledao što je iz toga proizašlo i kaže: "vau, ova implementacija razmjene poruka izgleda vrlo slično zajedničkoj memoriji, jer stvorite mnogo, mnogo ovih malih modula, oni šalju poruke jedni drugima, i svi zastoj, - učinimo bazu podataka zajedničke memorije boljom!". Sve se to ponavlja iznova i iznova i nemoguće je reći da je jedna od strana jednoznačno u pravu. Jedna će strana uvijek dominirati, jer čim jedna od njih gotovo pobijedi, ljudi uvijek iznova izmišljaju načine kako poboljšati drugu.

Umijeće pisanja krhkog višenitnog koda

Alexei: Ovo je vrlo zanimljivo. Na primjer, kada pišemo kod, bez obzira na programski jezik, obično moramo stvoriti apstrakcije poput ćelija koje se mogu čitati i pisati. Ali zapravo, na nekoj fizičkoj razini, to može izgledati kao slanje poruke na hardverskoj sabirnici između različitih računala i drugih uređaja. Ispada da postoji rad na obje razine apstrakcije odjednom.

Maurice: Apsolutno je točno da je zajednička memorija izgrađena na prijenosu poruka - sabirnice, predmemorije, itd. Ali teško je pisati programe koristeći prijenos poruka, tako da hardver namjerno laže, pretvarajući se da imate neku vrstu uniformne memorije. To će vam olakšati pisanje jednostavnih, ispravnih programa prije nego što izvedba počne padati. Zatim kažete: izgleda da je vrijeme da se sprijateljite s cacheom. I tada počnete brinuti o lokaciji predmemorije, i onda krećemo. U određenom smislu, razbijate apstrakciju: znate da to nije samo ravna, uniformna memorija, i to ćete znanje upotrijebiti za pisanje programa prilagođenih predmemoriji. To je ono što morate učiniti u stvarnim zadacima. Ovaj sukob između lijepe jednostavne lijepe apstrakcije koju ste dobili i užasno složene implementacije temeljnog hardvera je mjesto gdje svatko radi vlastiti kompromis. Imam knjigu o multiprocesorima i sinkronizaciji i jednog dana sam namjeravao napisati poglavlje o strukturama podataka u java.util.concurrent. Ako ih pogledate, stvari poput liste za preskakanje Ovo su nevjerojatna umjetnička djela. (Napomena urednika: oni koji su upoznati s Java jezikom trebali bi barem pogledati implementaciju ConcurrentSkipListMap, Možete pogledati poveznice za API и izvorni kod). No, s moje točke gledišta, bilo bi neodgovorno pokazivati ​​ih studentima, jer je takva struktura podataka vrsta tipa u cirkusu koji trči na užetu preko medvjeđe jame. Ako promijenite čak i jedan mali detalj, cijela će se struktura srušiti. Ovaj kod je vrlo brz i elegantan samo zato što je savršeno napisan, ali najmanja promjena će dovesti do potpunog kvara. Ako ovu šifru dam kao primjer studentima, odmah će reći: mogu i ja to! 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: Kad sam bio malo mlađi, mnogo sam puta pokušavao proučavati izvorni kod Douga Leeja, na primjer, java.util.concurrent, budući da je otvorenog koda, vrlo ga je lako pronaći i pokušati razumjeti što se tamo događa. Nije ispalo baš najbolje: često je potpuno nejasno zašto je Doug odlučio nešto učiniti na ovaj način, kad svi drugi to rade drugačije. Kako te stvari objašnjavate svojim učenicima? Postoji li određeni ispravan način za opisivanje specifičnih detalja hardcore algoritma, na primjer? Kako to radiš?

Maurice: Učitelji crtanja imaju klišej kojeg se prvi sjete: ako želiš crtati kao Picasso, prvo moraš naučiti crtati jednostavne realistične slike, a tek kad znaš pravila, možeš ih početi kršiti. Ako odmah krenete s kršenjem pravila, dobit ćete nered. Prvo, učim studente kako napisati jednostavan, točan kod bez brige o izvedbi. Kažem da ovdje vrebaju složeni problemi s vremenom, pa ne brinite o predmemorijama, ne brinite se o memorijskim modelima, samo se pobrinite da sve radi kako treba. Već je dovoljno teško: moderno programiranje nije lako samo po sebi, pogotovo za nove studente. A kada imaju intuiciju o tome kako napisati ispravne programe, ja kažem: pogledajte ove dvije spinlock implementacije: jedna je vrlo spora, a druga također nije baš dobra, ali je već bolja. Međutim, matematički ova dva algoritma su ista. Zapravo, jedan od njih koristi lokalitet predmemorije. Jedan od njih vrti lokalno predmemorirane podatke, a drugi opetovano izvodi operacije prolazeći kroz sabirnicu. Ne možete napisati učinkovit kod ako ga ne razumijete, ako ne znate kako razbiti apstrakciju i pogledati temeljnu strukturu. Ali nećete to moći odmah početi raditi. Postoje ljudi koji to odmah počnu raditi i vjeruju u vlastitu genijalnost, obično to loše završi jer ne razumiju principe. Nitko ne crta kao Picasso niti piše programe kao Doug Lee, tek izašao sa sveučilišta, u svom prvom tjednu. Do ove razine znanja potrebne su godine.

Alexey: Ispada da problem dijelite na dva dijela: prvi je ispravnost, drugi je izvedba?

Maurice: Točno. I, tim redom. Dio problema je u tome što novi učenici ne shvaćaju da je ispravnost teško postići. Na prvi pogled kažu: ovo je očito točno, ostaje samo ubrzati. Stoga im ponekad govorim o inherentno netočnom algoritmu kao da je točan.

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

Alexei: Samo da vidim mogu li osjetiti trik?

Maurice: Uvijek vas unaprijed upozoravam da ću ponekad smisliti pogrešne algoritme. Ne treba varati ljude. Predlažem im da budu skeptični prema informacijama. Ako nešto kažem i kažem: "gle, ovo je očito točno" - to je signal da vas negdje pokušavaju prevariti i trebali biste početi postavljati pitanja. Zatim pokušavam potaknuti učenike da nastave postavljati pitanja, a zatim ih pitam: “što će se dogoditi ako sve ostavimo kako jest?”. I odmah vide grešku. Ali uvjeriti učenike da se trebaju brinuti o ispravnosti teže je nego što se na prvi pogled čini. Mnogi od ovih učenika dolaze s programerskim iskustvom u srednjoj školi, neki su se već zaposlili i tamo programirali, a svi su puni samopouzdanja. To je nešto vojno: prvo im morate promijeniti način razmišljanja kako biste ih uvjerili da strpljivo pristupe rješavanju novonastalih problema. Ili je to možda poput budističkih redovnika: prvo nauče rasuđivati ​​o ispravnosti, a nakon što shvate načine rasuđivanja o ispravnosti, dopušteno im je prijeći na sljedeću razinu i početi brinuti o učinku.

Alexey: To jest, ponekad studentima pokazujete neradne primjere, zahvaljujući kojima dobivate povratnu informaciju koja pokazuje razumiju li suštinu problema, mogu li pronaći pogrešan kod i pogrešan rezultat. Pa, kako studenti obično udovoljavaju ili uzrujavaju?

Maurice: Gotovo uvijek učenici na kraju pronađu pogrešku. Ako traže presporo, postavljam sugestivna pitanja, a ovdje je važno razumjeti da će, ako se nikada ne prevare, početi nepromišljeno doživljavati vaše riječi kao konačnu istinu. Onda im postane dosadno i zaspu čitajući Facebook na laptopu tijekom nastave. Ali kada im unaprijed date do znanja da će biti prevareni i da će izgledati glupo ako ne osjete trik, postaju mnogo oprezniji. Ovo je dobro na više načina. Želio bih da učenici ne samo propituju svoje razumijevanje problematike, već i da propituju autoritet nastavnika. Ideja je da učenik može podići ruku u bilo kojem trenutku 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 koji student sjedi i šutke misli u sebi: sve ovo izgleda potpuna besmislica, ali prestrašno je dići ruku, a on je profesor, pa je sve što kaže istina. Stoga, ako su unaprijed upozoreni da nije sve što je rečeno nužno istinito, imaju poticaj posvetiti 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 često tako nastaju najbolja pitanja.

Aleksej: Vrlo zanimljivo. Obično ljudi imaju nekakvu psihološku barijeru koja ih sprječava da profesoru postave pitanje. Pogotovo ako je u prostoriji puno ljudi i svi se boje da će rasprava o vašem glupom pitanju oduzeti vrijeme svim tim ljudima. Postoje li neki trikovi za rješavanje ovoga?

Maurice: Često stanem i postavim klasična pitanja. Hoće li neka izjava biti točna ili kako bi 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. Postavite učenicima pitanje i ne kažete više ništa. Nastane tišina, svi se malo napinju, napetost raste, onda se odjednom netko slomi, slomi i kaže odgovor. Tako raspletate situaciju: postaje teže i neugodnije šutjeti nego odgovarati! Ovo je standardni pedagoški trik. Svaki učitelj na svijetu trebao bi znati kako to učiniti.

Alexey: Sada imamo sjajan naslov za ovaj intervju: "lakše je odgovoriti nego šutjeti."

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

Maurice: Tu postoji skrivena veza. Kad sam bio student i studirao matematiku, studirao sam čistu matematiku. Računala me nisu zanimala do kraja studija i našla sam se u hitnoj potrebi za traženjem posla. Kao student studirao sam algebarsku topologiju. Mnogo godina kasnije, radeći na problemu tzv "K-Set sporazum problem", koristio sam grafove za modeliranje problema i, kako se tada činilo, našao sam rješenje. Trebalo je samo sjesti i obići brojanje. Pokušajte pronaći odgovarajući odgovor na ovom grafikonu. Ali moj algoritam nije radio: pokazalo se da bi on uvijek trčao u krug. Nažalost, ništa od ovoga ne može se objasniti formalnim jezikom teorije grafova, jezikom koji poznaju svi računalni znanstvenici. A onda sam se sjetio da smo prije mnogo godina, čak i na satovima topologije, koristili taj koncept "jednostavni kompleks", što je generalizacija grafova na više dimenzije. Zatim sam se zapitao: što se događa ako preformuliramo problem u terminima simplicitnih kompleksa? Ovo je postalo ključno. Korištenjem snažnijeg formalizma, problem odjednom postaje puno jednostavniji. Ljudi su se dugo borili s tim, koristeći grafikone, ali nisu mogli učiniti ništa. A ni sada ne mogu - točan odgovor nije bio algoritam, već dokaz nemogućnosti rješenja problema. Odnosno, takav algoritam jednostavno ne postoji. Ali svaki dokaz nemogućnosti temelji se ili na jednostavnim kompleksima ili na stvarima za koje se ljudi pretvaraju da ih ne smatraju jednostavnim kompleksima. Od činjenice da ste nešto nazvali novim imenom, to ne gubi svoju bit.

Vitaliy: Ispada da ste samo imali sreće?

Maurice: Osim sreće, također je spremnost. Što znači, ne biste trebali zaboraviti "beskorisne" stvari koje ste prije naučili. Što više beskorisnih stvari naučite, to ćete više uvida moći izvući kad se suočite s novim problemom. Ova vrsta intuitivnog povezivanja uzoraka važna je jer... Recimo samo, to je lanac: u početku sam otkrio da grafikoni ne rade baš ili uopće ne rade, to me podsjetilo na nešto od prije osam godina i studentskih godina kada smo proučavali sve te simplicijske komplekse . Zauzvrat, to mi je omogućilo da pronađem svoj stari udžbenik topologije i učitam ga natrag u svoju glavu. Ali da nije bilo tog starog znanja, nikad ne bih napredovao u rješavanju izvornog problema.

Novo izdanje Umijeća višeprocesorskog programiranja

Aleksej: Rekli ste nekoliko riječi o svojoj knjizi. Vjerojatno nije najveća tajna da ste napisali najpoznatiju knjigu na svijetu o višenitnosti, "Umjetnost višeprocesorskog programiranja". Već ima oko 11 godina i od tada samo izlazi  revidirani pretisak. Hoće li biti drugog izdanja?

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

Alexei: Sve je već učinjeno, ostaje samo pustiti?

Maurice: Još treba raditi na nekoliko poglavlja. Naš izdavač (mislim da nas već mrzi) i dalje pokušava poručiti da bismo trebali raditi brže. Mnogo kasnimo s rasporedom. Teoretski, ovu smo knjigu mogli napraviti nekoliko godina ranije.

Alexey: Ima li šanse da dobijemo novu verziju knjige prije Božića?

Maurice: To je naš cilj! No, toliko sam puta prognozirao pobjedu da mi više nitko ne vjeruje. Vjerojatno mi ne biste trebali previše vjerovati ni po ovom pitanju.

Alexei: U svakom slučaju, ovo su fantastične vijesti. Prvo izdanje knjige mi se jako svidjelo. Moglo bi se reći da sam fan.

Maurice: Nadam se da će novo izdanje biti dostojno vašeg gorljivog entuzijazma, hvala!

Kako je izumljena transakcijska memorija

Vitaly: Sljedeće je pitanje o transakcijskoj memoriji. Koliko sam shvatio, ti si pionir na tom polju, izmislio si to u vrijeme kada nitko 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? Jeste li mislili da će jednog dana biti utjelovljeni u željezu?

Maurice: Znam za transakcije još od diplomskog studija.

Vitaliy: Da, ali to su različite transakcije!

Maurice: Radio sam s Elliottom Mossom na sakupljanju smeća bez blokiranja. Naš problem je bio što smo htjeli atomski promijeniti nekoliko riječi u memoriji i tada bi algoritmi postali vrlo jednostavni, a barem neki od njih bi postali učinkovitiji. Korištenje usporedi-i-zamijeni za load-link/store-conditionalkoju pruža paralelna arhitektura, moguće je nešto učiniti, ali je vrlo neučinkovito i ružno jer biste se morali nositi s razinama neizravnosti. Želim promijeniti memorijske riječi i trebam se prebaciti jer mogu promijeniti samo jedan pokazivač, pa moraju pokazivati ​​na neku vrstu strukture nalik 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 predmemorije, oni već pružaju većinu potrebnih funkcija. U optimističnoj transakciji, protokol koherentnosti predmemorije primijetit će prisutnost vremenskog sukoba i predmemorija će postati nevaljano. Što se događa ako spekulativno pokrenete transakciju u svom predmemoriju i koristite mehanizme protokola koherentnosti za otkrivanje sukoba? Spekulativnu hardversku arhitekturu bilo je lako dizajnirati. Pa smo to napisali prva objava o transakcijskoj memoriji. U isto vrijeme, tvrtka za koju sam radio, Digital Equipment Corporation, gradila je novi 64-bitni procesor nazvan Alpha. I tako sam otišao i održao prezentaciju Alpha razvojnom timu o našoj prekrasnoj transakcijskoj memoriji, a oni su me pitali: koji će dodatni prihod naša tvrtka dobiti ako sve to stavimo izravno u procesor? A na to nisam imao apsolutno nikakav odgovor, jer ja sam tehnolog, nisam marketing stručnjak. Stvarno nisam imao što reći. Nije ih se baš dojmilo što ništa ne znam.

Vitalij: Milijarde! Samo recite "milijarde"!

Maurice: Da, to sam trebao reći. Sada, u eri startupa i svega toga, znam napisati poslovni plan. Da možete malo lagati o veličini potencijalnog profita. Ali tada 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 onda desetak godina nitko uopće nije citirao ovaj članak. Navodnici su se pojavili oko 2004. godine, kada je nastala prava višejezgrenost. Kad su ljudi otkrili da se pisanjem paralelnog koda može zaraditi novac, započela su nova istraživanja. Ravi Rajwar napisao članak, koji je na neki način uveo mainstream u koncept transakcijske memorije. (Napomena urednika: Ovaj članak ima drugu verziju objavljenu 2010. i besplatno je dostupna kao PDF). Odjednom su ljudi shvatili kako se sve to točno može iskoristiti, kako se pomoću brava može ubrzati tradicionalni algoritam. Dobar primjer nečega što se u prošlosti činilo kao zanimljiv akademski problem. I da, da ste me tada pitali mislim li da će sve to biti važno u budućnosti, rekao bih: naravno, ali kada točno, nije jasno. Možda za 50 godina? U praksi se pokazalo da je to samo desetljeće. Jako je lijepo kad nešto napraviš, a za samo deset godina ljudi to primijete.

Zašto se isplati baviti se istraživanjem u području distribuiranog računarstva

Vitaly: Ako govorimo o novim istraživanjima, što biste savjetovali čitateljima - distribuirano računalstvo ili višejezgreno računalstvo i zašto? 

Maurice: Danas je lako nabaviti višejezgreni procesor, ali je teže postaviti pravi distribuirani sustav. Počeo sam raditi na njima jer sam želio raditi nešto drugačije od doktorata. Ovo je savjet koji uvijek dajem početnicima: nemojte pisati naknadnu disertaciju – pokušajte ići u novom smjeru. Osim toga, višenitnost je jednostavna. Mogu eksperimentirati na vlastitoj vilici koja radi na prijenosnom računalu bez ustajanja iz kreveta. Ali ako bih odjednom poželio stvoriti pravi distribuirani sustav, morao bih puno raditi, privući studente i tako dalje. Ja sam lijena osoba i radije bih radio na multi-core. Eksperimentiranje s višejezgrenim sustavima također je lakše nego eksperimentiranje s distribuiranim, jer čak i u glupom distribuiranom sustavu postoji previše faktora koje treba kontrolirati.

Vitaliy: Što sada radite, istražujete blockchain? Na koje članke prvo treba obratiti pozornost?

Maurice: Nedavno se pojavio vrlo dobar članakkoju sam napisao sa svojim učenikom, Vikramom Sarafom, posebno za Tokenomcs konferencije u Parizu prije tri tjedna. Ovo je članak o korisnim distribuiranim sustavima u kojima predlažemo da Ethereum bude višenitni. Sada se pametni ugovori (kod koji radi na blockchainu) izvršavaju sekvencijalno. Ranije smo napisali članak koji je govorio o načinu korištenja spekulativnih transakcija za ubrzavanje procesa. Uzeli smo mnogo ideja iz softverske transakcijske memorije i rekli da ako te ideje učinite dijelom Etherium virtualnog stroja, tada će sve raditi brže. Ali za to je potrebno da u ugovorima ne postoje sukobi podataka. A onda smo pretpostavili da u stvarnom životu takvih sukoba doista nema. Ali nismo imali priliku saznati. Onda nam je palo na pamet da imamo gotovo deset godina stvarne povijesti ugovora, pa smo rasteretili Etherium blockchain i zapitali se: što bi se dogodilo da se ti povijesni zapisi pokreću paralelno? Utvrdili smo značajno povećanje brzine. U ranim danima Etheriuma brzina je jako porasla, ali danas je sve nešto kompliciranije, jer ima manje ugovora i vjerojatnost sukoba oko podataka koji zahtijevaju serijalizaciju postala je veća. Ali sve je to eksperimentalni rad sa stvarnim povijesnim podacima. Lijepa stvar kod blockchaina je to što pamti sve zauvijek, tako da se možete vratiti u prošlost i proučiti što bi se dogodilo da koristimo druge algoritme za pokretanje koda. Kako bi se ljudima u prošlosti svidjela naša nova ideja. Puno je lakše i ugodnije raditi takva istraživanja, jer postoji stvar koja sve prati i sve bilježi. Ovo je već nešto više kao sociologija nego razvoj algoritama.

Je li stao razvoj algoritama i kako živjeti dalje

Vitaly: Vrijeme je za posljednje teorijsko pitanje! Čini li se da se napredak u konkurentskim podatkovnim strukturama svake godine smanjuje? Mislite li da smo dosegli plato u našem razumijevanju struktura podataka ili će biti nekih većih poboljšanja? Možda postoje neke pametne ideje koje mogu potpuno promijeniti sve?

Maurice: Možda smo dosegli plato u strukturama podataka za tradicionalne arhitekture. No strukture podataka za nove arhitekture još uvijek su područje koje obećava. Ako želite stvoriti podatkovne strukture za, recimo, hardverske akceleratore, tada se GPU podatkovne strukture jako razlikuju od CPU podatkovnih struktura. Kada dizajnirate podatkovne strukture za blockchaine, trebate hashirati dijelove podataka i zatim ih staviti u nešto poput stablo merkle, kako bi se spriječilo krivotvorenje. U posljednje vrijeme je došlo do porasta aktivnosti na ovom području, mnogi rade jako dobar posao. 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 s utabane staze i pogledate preko ruba, vidjet ćete lude stvari koje mainstream ne shvaća ozbiljno - tamo se zapravo događaju sve uzbudljive stvari.

Vitaly: Stoga, da bih bio vrlo poznat istraživač, morao sam izmisliti vlastitu arhitekturu 🙂

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

Raditi na Sveučilištu Brown

Vitaliy: Možete li nam reći nešto više o tome Sveučilište Brownu kojoj radis? O njemu se u informatičkom kontekstu ne zna mnogo. Manje nego o MIT-u, na primjer.

Maurice: Sveučilište Brown jedno je od najstarijih sveučilišta u Sjedinjenim Državama. Mislim da je jedino Harvard malo stariji. Smeđa je dio tzv lige bršljana, koji je skup osam najstarijih sveučilišta. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. Ovo je neka vrsta starog, malog i pomalo aristokratskog sveučilišta. Fokus je na slobodnom umjetničkom obrazovanju. Ne pokušava biti kao MIT, MIT je vrlo specijaliziran i tehnički. Brown je odlično mjesto za proučavanje ruske književnosti ili klasičnog grčkog i, naravno, informatike. Fokusira se na sveobuhvatno obrazovanje. Većina naših studenata ide na Facebook, Apple, Google, tako da mislim da naši studenti nemaju problema sa zapošljavanjem u industriji. Otišao sam raditi u Brown jer sam prije toga radio u Digital Equipment Corporation u Bostonu. Bila je to tvrtka koja je izmislila mnogo zanimljivih stvari, ali je poricala važnost osobnih računala. Tvrtka teške sudbine, čiji su osnivači nekada bili mladi revolucionari, ništa nisu naučili i ništa nisu zaboravili, pa su se u desetak godina od revolucionara pretvorili u reakcionare. Voljeli su se šaliti da je osobnim računalima mjesto u garaži - napuštenoj garaži, naravno. Sasvim je očito da su ih uništile fleksibilnije tvrtke. Kad je postalo jasno da je tvrtka u problemima, nazvao sam svog prijatelja iz Browna, koji je oko sat vremena od Bostona. U to vrijeme nisam želio napustiti Boston jer druga sveučilišta nisu imala toliko slobodnih mjesta. Bilo je to vrijeme kada nije bilo toliko slobodnih radnih mjesta na području informatike kao sada. A Brown je imao posao, nisam se morala iseliti iz svoje kuće, nisam morala preseliti svoju obitelj i stvarno uživam živjeti u Bostonu! Pa sam odlučio otići u Brown. Sviđa mi se. Studenti su super, tako da nikad nisam ni pokušao otići negdje drugdje. Na odmoru sam godinu dana radio u Microsoftu, godinu dana išao na Technion u Haifi, a sada ću biti u Algorandu. Imam mnogo kolega posvuda i stoga fizička lokacija naših učionica nije toliko važna. Ali najvažniji su studenti, oni su ovdje najbolji. Nikada nisam pokušao otići negdje drugdje, jer sam ovdje jako sretan.

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

Razlika između sveučilišnog i korporativnog istraživanja

Vitaliy: U redu, sljedeće pitanje je o digitalnoj opremi. Tamo ste bili istraživač. Koja je razlika između rada u odjelu istraživanja i razvoja velike tvrtke i rada na sveučilištu? Koje su prednosti i nedostaci?

Maurice: U Microsoftu sam već dvadeset godina, blisko surađujem s ljudima iz Sun Microsystemsa, Oraclea, Facebooka, a sada i Algoranda. Na temelju svega ovoga želim reći da je moguće provoditi prvorazredna istraživanja kako u tvrtkama tako i na sveučilištu. Bitna je razlika što u tvrtki radite s kolegama. Ako mi se odjednom pojavi ideja za projekt koji još ne postoji, moram uvjeriti svoje kolege da je to dobra ideja. Ako sam na Brownu, onda mogu reći svojim studentima: idemo raditi na antigravitaciji! Ili će otići nekom drugom ili preuzeti projekt. Da, morat ću pronaći sredstva, morat ću napisati zahtjev za potporu i tako dalje. U svakom slučaju, studenata će uvijek biti mnogo, a vi ćete moći jednostrano donositi odluke. Ali na sveučilištu najvjerojatnije nećete raditi s ljudima vaše razine. U svijetu industrijskog istraživanja prvo morate sve uvjeriti da se vaš projekt isplati prihvatiti. Ne mogu ništa naručiti ni od koga. I oba ova načina rada su vrijedna, jer ako radite na nečemu što je stvarno ludo i vaše kolege je teško uvjeriti, lakše je uvjeriti studente na diplomskim studijama – pogotovo ako ih plaćate. Ako radite na nečemu što zahtijeva veliko iskustvo i duboku stručnost, onda vam trebaju kolege koji mogu reći “ne, slučajno se razumijem u to područje, a vaša ideja je loša, od toga neće biti ništa”. Ovo je vrlo korisno u smislu gubljenja vremena. I također, ako u industrijskim laboratorijima provodite puno vremena pišući izvješća, onda na sveučilištu to vrijeme provodite tražeći novac. Ako želim da studenti mogu negdje otputovati, moram naći novac za to negdje drugdje. I što vam je važniji položaj na fakultetu, to više vremena morate potrošiti na prikupljanje novca. Dakle, sada znate što radim kao - profesionalni prosjak! Kao jedan od onih redovnika koji hodaju okolo s pločicom za donacije. Općenito, ove dvije aktivnosti se nadopunjuju. Zato se trudim živjeti i čvrsto stajati u oba svijeta.

Vitaliy: Čini se da je uvjeriti tvrtku teže nego uvjeriti druge znanstvenike.

Maurice: Teže, i mnogo više. Štoviše, u različitim područjima je drugačije: netko provodi sveobuhvatno istraživanje, a netko je usredotočen na svoju temu. Kad bih otišao u Microsoft ili Facebook i rekao, idemo napraviti antigravitaciju, teško da bi to cijenili. Ali kad bih potpuno istu stvar rekao svojim maturantima, vrlo vjerojatno bi odmah prionuli na posao, iako bih već sada imao problema - jer za to treba naći novaca. Ali sve dok želite učiniti nešto u skladu s ciljevima tvrtke, ta tvrtka može biti vrlo dobro mjesto za istraživanje.

Hydra i SPTDC

Vitaliy: Mojim se pitanjima bliži kraj, pa popričajmo malo o nadolazećem putovanju u Rusiju.

Maurice: Da, veselim se povratku u Petersburg.

Alexey: Velika mi je čast što ste ove godine s nama. Ovo vam je drugi put u St. Petersburgu, zar ne?

Maurice: Već treći!

Aleksej: Shvaćam, ali SPTDC - upravo drugi. Posljednji put je škola pozvana SPTCC, sada smo promijenili jedno slovo (C u D, paralelno s distribuiranim) kako bismo naglasili da ove godine postoji više područja povezanih s distribuiranim računalstvom. Možete li reći nekoliko riječi o svojim prezentacijama u Školi i Hydra konferencije?

Maurice: U školi želim govoriti o osnovama blockchaina i o tome što možete učiniti s njim. Želio bih pokazati da su lanci blokova vrlo slični višenitnom programiranju s kojim smo upoznati, 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 buggy kod u financijskoj aplikaciji, netko će sigurno ukrasti sav vaš novac. To je sasvim druga razina odgovornosti i posljedica. Govorit ću malo o proof-of-worku, pametnim ugovorima, transakcijama između različitih blockchaina.

Uz mene će raditi i drugi govornici koji također imaju što reći o blockchainu, a dogovorili smo se da ćemo se međusobno koordinirati kako bi nam se priče dobro uklopile. Ali što se tiče govora o inženjerstvu, želim dati jasno objašnjenje širokoj publici zašto ne biste trebali vjerovati svemu što čujete o lancima blokova, zašto su lanci blokova odlično područje, kako se uklapa u druge dobro poznate ideje i zašto bismo trebali hrabro gledaj u budućnost.

Alexey: Osim toga, želim reći da se ovo neće odvijati u formatu susreta ili korisničke grupe, kao što je to bilo prije dvije godine. Odlučili smo napraviti malu konferenciju u blizini škole. Razlog je to što smo nakon razgovora s Peterom Kuznetsovom shvatili da je škola ograničena na samo stotinjak, možda 120 ljudi. U isto vrijeme ima puno inženjera koji žele s vama razgovarati, prisustvovati referatima i općenito ih zanima tema. Za to smo kreirali novu konferenciju zvan Hidra. Usput, imaš li ideju zašto Hydra?

Maurice: Zato što će imati sedam zvučnika? I njima se može odrezati glava, a na njihovom će mjestu rasti novi govornici?

Alexey: Sjajna ideja za razvoj novih zvučnika. Ali zapravo, tu postoji jedna 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 multithreadingu. Na ovoj konferenciji bile su samo dvije staze. Na početku reportaže 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šenitnost. Ovako se pojavljuju nazivi konferencija.

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

Bit će moguće nastaviti komunikaciju s Mauriceom na konferenciji Hydra 2019, koja će se održati 11. i 12. srpnja 2019. u Sankt Peterburgu. Doći će s izvješćem «Blockchains i budućnost distribuiranog računarstva». Ulaznice se mogu kupiti na službenoj web stranici.

Izvor: www.habr.com

Dodajte komentar