"Lažje je odgovoriti kot molčati" - odličen intervju z očetom transakcijskega spomina Mauriceom Herlihyjem

Maurice Herlihy - lastnica dveh Dijkstra nagrade. Prvi je namenjen delu "Sinhronizacija brez čakanja" (Univerza Brown) in drugi, novejši, - "Transakcijski pomnilnik: Arhitekturna podpora za podatkovne strukture brez zaklepanja" (Univerza Virginia Tech). Nagrado Dijkstra podeljujejo za delo, katerega pomen in vpliv sta vidna že vsaj deset let, Maurice pa je očitno eden najbolj znanih specialistov na tem področju. Trenutno dela kot profesor na univerzi Brown in ima številne dosežke, ki so dolgi odstavek. Trenutno raziskuje blockchain v kontekstu klasičnega porazdeljenega računalništva.

Pred tem je Maurice že prišel v Rusijo na SPTCC (video snemanje) in naredil odlično srečanje skupnosti razvijalcev Java JUG.ru v Sankt Peterburgu (video snemanje).

Ta habrapost je odličen intervju z Mauriceom Herlihyjem. Obravnava naslednje teme:

  • Interakcija med akademskim svetom in industrijo;
  • Foundation for Blockchain Research;
  • Od kod izvirajo prebojne ideje? Vpliv priljubljenosti;
  • doktorat pod mentorstvom Barbare Liskov;
  • Svet čaka na večjedrnost;
  • Nov svet prinaša nove težave. NVM, NUMA in vdiranje v arhitekturo;
  • Prevajalniki proti procesorjem, RISC proti CISC, skupni pomnilnik proti posredovanju sporočil;
  • Umetnost pisanja krhke večnitne kode;
  • Kako študente naučiti pisati kompleksno večnitno kodo;
  • Nova izdaja knjige “Umetnost večprocesorskega programiranja”;
  • Kako je bil izumljen transakcijski pomnilnik;   
  • Zakaj se splača raziskovati na področju porazdeljenega računalništva;
  • Se je razvoj algoritmov ustavil in kako naprej;
  • Delo na univerzi Brown;
  • Razlika med raziskovanjem na univerzi in znotraj korporacije;
  • Hydra in SPTDC.

Intervju vodi:

Vitalij Aksenov — trenutno podoktorski študij na IST Austria in zaposlen na Oddelku za računalniške tehnologije na Univerzi ITMO. Raziskuje na področju teorije in prakse konkurenčnih podatkovnih struktur. Preden je delal na IST, je doktoriral na pariški univerzi Diderot in univerzi ITMO pod mentorstvom profesorja Petra Kuznetsova.

Aleksej Fedorov - Producent v ruskem podjetju JUG Ru Group, ki organizira konference za razvijalce. Alexey je sodeloval pri pripravi več kot 50 konferenc, njegov življenjepis pa vključuje vse od položaja razvojnega inženirja pri Oracle (JCK, Java Platform Group) do položaja razvijalca pri Odnoklassniki.

Vladimir Sitnikov - Inženir pri Netcrackerju. Deset let dela na področju zmogljivosti in razširljivosti NetCracker OS, programske opreme, ki jo telekomunikacijski operaterji uporabljajo za avtomatizacijo procesov upravljanja omrežja in omrežne opreme. Zanimajo me težave z zmogljivostjo Java in Oracle Database. Avtor več kot ducata izboljšav zmogljivosti v uradnem gonilniku PostgreSQL JDBC.

Interakcija med akademskim svetom in industrijo

Alexey: Maurice, zelo dolgo ste delali v akademskem okolju in prvo vprašanje je interakcija med akademsko in industrijsko sfero. Ali lahko govorite o tem, kako so se v zadnjem času spremenile interakcije med njimi? Kaj se je dogajalo pred 20-30 leti in kaj se dogaja zdaj? 

Maurice: Vedno sem poskušal tesno sodelovati s komercialnimi podjetji, ker imajo zanimive težave. Praviloma niso preveč zainteresirani niti za objavo svojih rezultatov niti za podrobno razlago svojih težav svetovni javnosti. Zanima jih samo reševanje teh problemov. Nekaj ​​časa sem delal za takšna podjetja. Pet let sem delal s polnim delovnim časom v raziskovalnem laboratoriju pri Digital Equipment Corporation, ki je bilo včasih veliko računalniško podjetje. Delal sem en dan na teden pri Sunu, pri Microsoftu, pri Oraclu in malo delal pri Facebooku. Zdaj bom šel na sobotni dopust (profesor na ameriški univerzi si lahko vzame tak dopust za eno leto približno enkrat na šest let) in delal v Algorand, to je podjetje za kriptovalute v Bostonu. Tesno sodelovanje s podjetji je bilo vedno veselje, saj tako izveš nove in zanimive stvari. Morda ste celo prva ali druga oseba, ki je objavila članek o izbrani temi, namesto da bi postopoma izboljševala rešitve za probleme, s katerimi se vsi drugi že ukvarjajo.

Alexey: Nam lahko podrobneje poveš, kako se to zgodi?

Maurice: Seveda. Veste, ko sem delal v Digital Equipment Corporation, sva z Elliotom Mossom izumila transakcijski pomnilnik. Bilo je zelo plodno obdobje, ko so se vsi začeli zanimati za informacijsko tehnologijo. Vključno s paralelizmom, čeprav večjedrni sistemi še niso obstajali. V dneh Sun in Oracle sem veliko delal na vzporednih podatkovnih strukturah. Pri Facebooku sem delal na njihovem projektu blockchain, o katerem ne morem govoriti, a upam, da bo kmalu prišel v javnost. Naslednje leto bom pri Algorandu delal v raziskovalni skupini, ki bo preučevala pametne pogodbe.

Alexey: Blockchain je v zadnjih nekaj letih postal zelo priljubljena tema. Bo to pomagalo vaši raziskavi? Morda bo olajšal pridobivanje nepovratnih sredstev ali omogočil dostop do virov podjetij, ki delujejo v panogi?

Maurice: Od fundacije Ethereum sem že prejel majhno donacijo. Priljubljenost blockchaina je zelo koristna pri navdihovanju študentov za delo na tem področju. To jih zelo zanima in so navdušeni nad sodelovanjem, vendar se včasih ne zavedajo, da raziskave, ki se na zunaj slišijo razburljivo, izkažejo za res trdo delo. Vendar pa sem res navdušen, da lahko uporabim vso to mistiko okrog blockchaina, da privabim študente. 

A to še ni vse. Sem v svetovalnem odboru več startupov blockchain. Nekaterim morda uspe, nekaterim ne, vedno pa je zelo zanimivo videti njihove ideje, jih preučiti in ljudem svetovati. Najbolj vznemirljivo je, ko ljudi opozoriš, naj nečesa ne počnejo. Marsikaj se sprva zdi dobra ideja, a je res tako?

Foundation for Blockchain Research

Vitaly: Nekateri mislijo, da je prihodnost v blockchainu in njegovih algoritmih. In drugi pravijo, da je to le še en mehurček. Lahko delite svoje mnenje o tej zadevi?

Maurice: Veliko tega, kar se dogaja v svetu blockchaina, je napačnega, nekaj je le prevara, veliko je precenjenega. Vendar menim, da obstaja trdna znanstvena podlaga za te študije. Dejstvo, da je svet blockchaina poln ideoloških razlik, kaže na stopnjo navdušenja in predanosti. Po drugi strani pa to ni posebej koristno za znanstvene raziskave. Zdaj, če objavite članek, ki govori o pomanjkljivostih določenega algoritma, posledična reakcija ni vedno povsem znanstvena. Pogosto ljudje vržejo svoja čustva. Mislim, da se morda komu takšno vznemirjenje na tem področju zdi privlačno, a na koncu koncev obstajajo resnična znanstvena in inženirska vprašanja, ki jih je treba obravnavati. Tukaj je veliko računalništva.

Vitaly: Torej poskušate postaviti temelje za raziskave blockchaina, kajne?

Maurice: Poskušam postaviti temelje za trdno, znanstveno in matematično trdno disciplino. In del težave je, da morate včasih nasprotovati nekaterim preveč ostrim stališčem drugih ljudi in jih ignorirati. Včasih me ljudje vprašajo, zakaj delam na področju, kjer se zanimajo samo teroristi in preprodajalci mamil. Takšna reakcija je enako nesmiselna kot obnašanje sledilcev, ki slepo ponavljajo vaše besede. Mislim, da je resnica nekje na sredini. Blockchain bo imel velik vpliv na družbo in svetovno gospodarstvo. A to se verjetno zaradi sodobne tehnologije ne bo zgodilo. Sodobne tehnologije se bodo razvijale in tisto, kar se bo v prihodnosti imenovalo blockchain, bo postalo zelo pomembno. Morda sploh ni videti kot sodobne verige blokov, to je odprto vprašanje.

Če bodo ljudje iznašli nove tehnologije, bodo to še naprej imenovali blockchain. Mislim, tako kot današnji Fortran nima nobene zveze z jezikom Fortran iz šestdesetih let prejšnjega stoletja, vendar ga vsi kar naprej imenujejo Fortran. Enako za UNIX. Kar imenujemo "blockchain", bo še vedno naredilo svojo revolucijo. Toda dvomim, da bo ta nova veriga blokov podobna temu, kar vsi radi uporabljajo danes.

Od kod izvirajo prebojne ideje? Vpliv priljubljenosti

Alexey: Ali je priljubljenost blockchaina privedla do novih rezultatov z znanstvenega vidika? Več interakcije, več študentov, več podjetij na tem območju. Ali so že kakšni rezultati tega povečanja popularnosti?

Maurice: To me je začelo zanimati, ko mi je nekdo izročil uradni letak za podjetje, ki je pravkar zbralo precej denarja. Pisalo je o naloga bizantinskih generalov, ki ga več kot dobro poznam. Kar je bilo napisano v letaku, je bilo očitno tehnično napačno. Ljudje, ki so vse to napisali, v resnici niso razumeli modela, ki stoji za problemom ... pa vendar je to podjetje zbralo veliko denarja. Kasneje je podjetje tiho zamenjalo ta letak z veliko bolj pravilno različico - in ne bom povedal, kako je bilo ime tega podjetja. Še vedno so prisotni in jim gre zelo dobro. Ta dogodek me je prepričal, da je, prvič, blockchain preprosto oblika porazdeljenega računalništva. Drugič, vstopni prag (vsaj takrat, pred štirimi leti) je bil precej nizek. Ljudje, ki so delali na tem področju, so bili zelo energični in inteligentni, vendar niso brali znanstvenih člankov. Poskušali so na novo izumiti znane stvari, a naredili narobe. Danes se je drama zmanjšala.

Alexey: To je zelo zanimivo, saj smo imeli pred nekaj leti drugačen trend. To je nekoliko podobno razvoju sprednjega dela, ko so razvijalci sprednjega dela, ki temeljijo na brskalniku, na novo odkrili celotne tehnologije, ki so bile že priljubljene v zadnjem delu: gradnja sistemov, stalna integracija in podobne stvari. 

Maurice: Se strinjam. A to ni presenetljivo, saj resnično prebojne ideje vedno prihajajo izven ustaljene skupnosti. Uveljavljeni raziskovalci, zlasti uveljavljeni akademiki, verjetno ne bodo storili ničesar zares prelomnega. Za naslednjo konferenco je enostavno napisati prispevek o tem, kako ste nekoliko izboljšali rezultate svojega preteklega dela. Pojdite na konferenco, dobite se s prijatelji, pogovarjajte se o istih stvareh. In ljudje, ki planejo s prebojnimi idejami, skoraj vedno pridejo od zunaj. Ne poznajo pravil, ne poznajo jezika, a kljub temu ... Če ste v ustaljeni skupnosti, vam svetujem, da ste pozorni na novosti, na nekaj, kar ne sodi v celotno sliko. V nekem smislu je mogoče poskusiti združiti zunanji, bolj tekoči razvoj z metodami, ki jih že razumemo. Kot prvi korak poskusite vzpostaviti znanstveno osnovo, nato pa jo spremenite tako, da jo bo mogoče uporabiti za nove prodorne ideje. Mislim, da je blockchain odličen kot sveža, prelomna ideja.

Alexey: Zakaj misliš, da se to zgodi? Ker ljudje »zunaj« nimajo nobenih posebnih ovir, ki so lastne skupnosti?

Maurice: Tu se dogaja vzorec. Če preberete zgodovino impresionistov v slikarstvu in umetnosti na splošno, potem so slavni umetniki nekoč zavračali impresionizem. Rekli so, da je nekako otročje. Generacijo pozneje je ta prej zavrnjena oblika umetnosti postala standard. Kar vidim na svojem področju: izumiteljev blockchaina ni zanimala moč, večanje objav in indeksa citiranosti, hoteli so samo narediti nekaj dobrega. In tako so se usedli in začeli to delati. Manjkala jim je določena mera tehnične globine, a to je popravljivo. Veliko težje je priti do novih ustvarjalnih idej kot popravljati in utrjevati nezadostno zrele. Zahvaljujoč tem izumiteljem imam zdaj kaj početi!

Alexey: To je podobno razliki med startupi in podedovanimi projekti. Podedujemo številne omejitve mišljenja, ovire, posebne zahteve ipd.

Maurice: Dobra analogija je porazdeljeno računalništvo. Pomislite na blockchain, kot da bi šlo za zagon in porazdeljeno računalništvo kot veliko, uveljavljeno podjetje. Porazdeljeno računalništvo je v procesu pridobivanja in združevanja z verigo blokov.

doktorirala pod mentorstvom Barbare Liskov

Vitaly: Imamo še veliko vprašanj! Raziskali smo vaše ozadje in naleteli na zanimivo dejstvo o vašem doktoratu. Da, to je bilo dolgo nazaj, a zdi se, da je pomembna tema. Doktorirali ste pod lastnim vodstvom Barbara Liskov! Barbara je zelo znana v skupnosti programskih jezikov in nasploh zelo znana oseba. Logično je, da je vaše raziskovanje potekalo na področju programskih jezikov. Kako ste prešli na vzporedno računalništvo? Zakaj ste se odločili spremeniti temo?

Maurice: Takrat sta Barbara in njena skupina samo iskali porazdeljeno računalništvo, kar je bila zelo nova ideja. Bili so tudi tisti, ki so trdili, da je porazdeljeno računalništvo nesmisel in da je medsebojno komuniciranje računalnikov nesmiselno. Eno od vprašanj, obravnavanih v porazdeljenem računalništvu, ki ga razlikuje od centraliziranega računalništva, je toleranca napak. Po dolgih raziskavah smo se odločili, da mora programski jezik za porazdeljeno računalništvo imeti nekaj podobnega atomskim transakcijam, ker nikoli ne morete biti prepričani, da bo oddaljeni klic uspel. Ko imate transakcije, se pojavi problem upravljanja sočasnosti. Nato je bilo veliko dela na pridobivanju zelo vzporednih transakcijskih podatkovnih struktur. Potem, ko sem diplomiral, sem šel k Carnegie Mellon in začel iskati temo za delo. Zgodilo se mi je, da se je računalništvo preselilo iz posameznih računalnikov v omrežja računalnikov. Večprocesorji bi bili naravno nadaljevanje napredka - beseda "večjedrni" še ni obstajala. Pomislil sem: kaj je enakovredno atomskim transakcijam za večjedrni sistem? Definitivno ne običajne transakcije, ker so prevelike in težke. In tako sem prišel na idejo linearizabilnost in tako sem prišel do celotne sinhronizacije brez čakanja. To je bil poskus odgovora na vprašanje, kaj je analog atomskih transakcij za večprocesorski sistem s skupnim pomnilnikom. Na prvi pogled je to delo morda videti povsem drugačno, v resnici pa gre za nadaljevanje iste teme.

Svet čaka na večjedrnost

Vitaly: Omenili ste, da je bilo takrat zelo malo večjedrnih računalnikov, kajne?

Maurice: Enostavno jih ni bilo. Obstajalo je več tako imenovanih simetričnih multiprocesorjev, ki so bili v osnovi povezani na isto vodilo. To ni delovalo zelo dobro, ker je vsakič, ko je novo podjetje ustvarilo nekaj podobnega, Intel izdal en sam procesor, ki je bil boljši od večprocesorja.

Alexey: Ali to ne pomeni, da je bila v tistih starih časih bolj teoretična študija?

Maurice: To ni bila teoretična študija, temveč špekulativna študija. Pri vsem tem ni šlo za delo s številnimi izreki, temveč smo postavili hipoteze o arhitekturi, ki takrat še ni obstajala. Temu so namenjene raziskave! Nobeno podjetje ne bi naredilo česa takega, vse je bilo nekaj iz daljne prihodnosti. Pravzaprav je bilo tako do leta 2004, ko so se pojavili pravi večjedrni procesorji. Ker se procesorji pregrevajo, lahko procesor še zmanjšate, ne morete pa ga narediti hitrejšega. Zaradi tega je prišlo do prehoda na večjedrne arhitekture. In potem je to pomenilo, da so se nenadoma pojavili vsi koncepti, ki smo jih razvili v preteklosti.

Alexey: Zakaj mislite, da so se večjedrni procesorji pojavili šele v XNUMX-ih? Zakaj je torej tako pozno?

Maurice: To je posledica omejitev strojne opreme. Intel, AMD in druga podjetja so zelo dobri pri povečanju hitrosti procesorja. Ko so na neki točki procesorji postali dovolj majhni, da niso mogli več povečati takta, ker bi procesorji začeli pregorevati. Lahko jih naredite manjše, vendar ne hitrejše. Kaj je v njihovi moči - namesto zelo majhnega procesorja lahko v isto prostornino ohišja spravijo osem, šestnajst ali dvaintrideset procesorjev, kamor je prej lahko stal le eden. Zdaj imate med njimi večnitnost in hitro komunikacijo, ker si delijo predpomnilnike. Vendar jih ne morete prisiliti, da tečejo hitreje - obstaja zelo posebna omejitev hitrosti. Še naprej se postopoma izboljšujejo, vendar ne več toliko. Zakoni fizike so stali na poti izboljšav.

Nov svet prinaša nove težave. NUMA, NVM in vdiranje v arhitekturo

Alexey: Sliši se zelo razumno. Z novimi večjedrnimi procesorji so prišle nove težave. Ste vi in ​​vaši sodelavci te težave pričakovali? Ste jih morda preučili vnaprej? V teoretičnih študijah takšnih stvari pogosto ni enostavno predvideti. Ko so se težave vendarle pojavile, kako so izpolnile vaša in pričakovanja vaših sodelavcev? Ali pa so bili popolnoma novi in ​​ste morali vi in ​​vaši kolegi porabiti veliko časa za reševanje težav, ko so se pojavile?

Vitaly: K Alexejevemu vprašanju bom dodal: ali ste pravilno predvideli arhitekturo procesorja, ko ste študirali teorijo?

Maurice: Ne 100 %. Mislim pa, da smo s kolegi dobro opravili delo, ko smo predvideli večjedra s skupnim pomnilnikom. Mislim, da smo pravilno predvideli težave pri razvoju vzporednih podatkovnih struktur, ki delujejo brez ključavnic. Takšne podatkovne strukture so bile pomembne za številne aplikacije, čeprav ne za vse, vendar pogosto resnično potrebujete podatkovno strukturo brez zaklepanja. Ko smo jih izumili, so mnogi trdili, da je to neumnost, da s ključavnicami vse deluje dobro. Precej dobro smo predvidevali, da bodo obstajale že pripravljene rešitve za številne programske probleme in težave s strukturo podatkov. Pojavljali so se tudi kompleksnejši problemi, kot npr NUMA – neenakomeren dostop do pomnilnika. Pravzaprav jih sploh niso upoštevali, dokler niso izumili večjedrnih procesorjev, ker so bili preveč specifični. Raziskovalna skupnost se je ukvarjala z vprašanji, ki so bila na splošno predvidljiva. Nekatere težave s strojno opremo, povezane s posebnimi arhitekturami, so morale počakati na krilih - pravzaprav videz teh arhitektur. Na primer, nihče ni zares delal na podatkovnih strukturah, specifičnih za GPE, ker GPU takrat še niso obstajali. Čeprav je bilo veliko dela opravljenega na SIMD, so bili ti algoritmi pripravljeni za uporabo takoj, ko je bila na voljo ustrezna strojna oprema. Vsega pa je nemogoče predvideti.

Alexey: Če prav razumem, je NUMA nekakšen kompromis med stroški, zmogljivostjo in nekaterimi drugimi stvarmi. Imate kakšno idejo, zakaj je NUMA izšla tako pozno?

Maurice: Mislim, da NUMA obstaja zaradi težav s strojno opremo, ki se uporablja za izdelavo pomnilnika: bolj ko so komponente oddaljene, počasnejši je dostop do njih. Po drugi strani pa je druga vrednost te abstrakcije enotnost spomina. Ena od značilnosti vzporednega računalništva je torej ta, da so vse abstrakcije nekoliko zlomljene. Če bi bil dostop popolnoma enoten, bi bil ves pomnilnik enako oddaljen, vendar je to ekonomsko in morda celo fizično nemogoče. Zato nastane ta konflikt. Če napišete svoj program, kot da bi bil pomnilnik enoten, potem bo najverjetneje pravilen. V smislu, da ne bo dajal napačnih odgovorov. A tudi njen nastop ne bo lovil zvezd z neba. Enako, če pišete spinlocks Brez razumevanja hierarhije predpomnilnika bo samo zaklepanje pravilno, vendar lahko pozabite na zmogljivost. V nekem smislu morate napisati programe, ki živijo na zelo preprosti abstrakciji, vendar morate prelisičiti ljudi, ki so vam dali to abstrakcijo: vedeti morate, da je pod abstrakcijo neka hierarhija pomnilnika, da obstaja avtobus med vami in tem spominom itd. Tako obstaja nekaj konflikta med individualno uporabnimi abstrakcijami, kar nas pripelje do zelo konkretnih in pragmatičnih problemov.

Vitaly: Kaj pa prihodnost? Lahko napoveste, kako se bodo procesorji razvijali naprej? Obstaja ideja, da je eden od odgovorov transakcijski pomnilnik. Verjetno imate še kaj na zalogi.

Maurice: Pred nami je nekaj velikih izzivov. Eno je, da je koherentni spomin čudovita abstrakcija, ki pa se začne kvariti v posebnih primerih. Tako je na primer NUMA živ primer nečesa, pri čemer se lahko še naprej pretvarjate, da enoten spomin obstaja. Pravzaprav ne, produktivnost vas bo spravila v jok. Na neki točki bodo morali arhitekti opustiti zamisel o enotni spominski arhitekturi; ne morete se večno pretvarjati. Potrebni bodo novi modeli programiranja, ki bodo dovolj enostavni za uporabo in dovolj zmogljivi, da bo temeljna strojna oprema učinkovita. To je zelo težek kompromis, kajti če programerjem pokažeš arhitekturo, ki se dejansko uporablja v strojni opremi, bodo znoreli. Je preveč zapleteno in ni prenosljivo. Če predstavite vmesnik, ki je preveč preprost, bo zmogljivost slaba. Zato bo treba narediti veliko zelo težkih kompromisov, da bi zagotovili uporabne modele programiranja, ki se uporabljajo za resnično velike večjedrne procesorje. Nisem prepričan, da je kdo drug kot specialist sposoben programirati na 2000-jedrnem računalniku. In razen če se ukvarjate z zelo specializiranim ali znanstvenim računalništvom ali kriptografijo ali kaj podobnega - še vedno sploh ni jasno, kako to narediti pravilno. 

Drugo podobno področje so specializirane arhitekture. Grafični pospeševalniki obstajajo že dolgo, vendar so postali nekaj klasičnega primera, kako lahko vzamete specializirano vrsto računalništva in ga poganjate na namenskem čipu. To doda svoje izzive: kako komunicirate s takšno napravo, kako jo programirate. Nedavno sem se ukvarjal s problemi na tem območju blizu pomnilniškega računalništva. Vzameš majhen procesor in ga prilepiš na ogromen kos pomnilnika, tako da pomnilnik deluje s hitrostjo predpomnilnika L1 in nato komunicira z napravo, kot je TPU – procesor je zaposlen z nalaganjem novih nalog v vaše pomnilniško jedro. Oblikovanje podatkovnih struktur in komunikacijskih protokolov za tovrstne stvari je še en zanimiv primer. Procesorji po meri in strojna oprema bodo torej še kar nekaj časa deležni izboljšav.

Alexey: Kaj pa obstojni pomnilnik (nehlapni spomin)?

Maurice: Oh, to je še en odličen primer! NVM bo močno spremenil naš pogled na stvari, kot so podatkovne strukture. Nehlapni pomnilnik v nekem smislu obljublja, da bo resnično pospešil stvari. Vendar to ne bo olajšalo življenja, ker je večina procesorjev, predpomnilnikov in registrov še vedno nestanovitnih. Ko začnete po trku, vaše stanje in stanje vašega spomina ne bosta popolnoma enaka kot pred trkom. Zelo sem hvaležen ljudem, ki delajo na NVM - raziskovalci bodo morali še dolgo delati veliko, ko bodo poskušali ugotoviti pogoje pravilnosti. Izračuni so pravilni, če lahko preživijo zrušitev, v kateri se vsebina predpomnilnikov in registrov izgubi, glavni pomnilnik pa ostane nedotaknjen.

Prevajalniki proti procesorjem, RISC proti CISC, skupni pomnilnik proti posredovanju sporočil

Vladimir: Kaj menite o dilemi "prevajalniki proti procesorjem" z vidika nabora ukazov? Naj razložim za tiste, ki ne vedo: če gremo na izkrivljeni pomnilnik ali kaj podobnega, lahko uporabimo zelo preprost nabor ukazov in od prevajalnika zahtevamo, da ustvari kompleksno kodo, ki lahko izkoristi nove prednosti. Lahko pa gremo v drugo smer: implementiramo zapletena navodila in prosimo procesor, naj prerazporedi navodila in izvede druge manipulacije z njimi. Kaj misliš o tem?

Maurice: Pravzaprav nimam odgovora na to vprašanje. Ta razprava traja že štiri desetletja. Bil je čas, ko je med skrajšano nabor ukazov in zapleteno državljanske vojne je vodil niz poveljstev. Nekaj ​​časa so ljudje iz RISC-ja zmagovali, potem pa je Intel obnovil svoje motorje, tako da je bil zmanjšan nabor navodil uporabljen interno, celoten nabor pa je bil izvožen navzven. Verjetno je to tema, pri kateri mora vsaka nova generacija najti svoje kompromise in se sama odločati. Zelo težko je napovedati, katera od teh stvari bo boljša. Torej bo vsaka moja napoved nekaj časa resnična, nato nekaj časa spet napačna in nato spet resnična.

Alexey: Kako običajno je v industriji, da nekatere ideje zmagujejo več desetletij in izgubijo v naslednjem? Ali obstajajo drugi primeri takih periodičnih sprememb?

Maurice: Obstajajo ljudje, ki verjamejo v porazdeljeno računalništvo skupni spomin in ljudi, ki verjamejo v izmenjavo sporočil. Sprva v porazdeljenem računalništvu vzporedno računalništvo pomeni posredovanje sporočil. Potem je nekdo ugotovil, da je veliko lažje programirati s skupnim pomnilnikom. Nasprotna stran je dejala, da je skupni pomnilnik preveč zapleten, ker zahteva ključavnice in podobno, zato se je vredno preseliti v jezike, kjer preprosto ne obstaja nič drugega kot posredovanje sporočil. Nekdo je pogledal, kaj je nastalo iz tega, in rekel: »Vau, ta implementacija sporočanja je zelo podobna skupnemu pomnilniku, ker ustvarite veliko in veliko teh majhnih modulov, pošiljajo si sporočila in vsi zakleniti"Naredimo boljšo zbirko podatkov o skupnem pomnilniku!" Vse to se ponavlja vedno znova in nemogoče je reči, da ima katera od strani zagotovo prav. Ena od strani bo vedno prevladovala, kajti takoj ko ena od njiju skoraj zmaga, ljudje znova in znova izumljajo načine, kako izboljšati drugo.

Umetnost pisanja krhke večnitne kode

Alexey: To je zelo zanimivo. Na primer, ko pišemo kodo, ne glede na programski jezik, moramo običajno ustvariti abstrakcije, kot so celice, ki jih je mogoče brati in pisati. Toda v resnici je na neki fizični ravni to lahko videti kot pošiljanje sporočila prek vodila strojne opreme med različnimi računalniki in drugimi napravami. Izkazalo se je, da delo poteka na obeh ravneh abstrakcije hkrati.

Maurice: Povsem res je, da je skupni pomnilnik zgrajen na posredovanju sporočil – vodila, predpomnilniki itd. Vendar je težko pisati programe s posredovanjem sporočil, zato strojna oprema namerno laže in se pretvarja, da imate nekakšen enoten pomnilnik. To vam bo olajšalo pisanje enostavnih, pravilnih programov, preden se zmogljivost začne slabšati. Potem boste rekli: zdi se, da je čas, da se spoprijateljite s predpomnilnikom. In potem vas začne skrbeti lokacija predpomnilnika in od tam naprej. V nekem smislu hekate abstrakcijo: veste, da to ni le raven, enoten pomnilnik, in to znanje boste uporabili za pisanje predpomnilniku prijaznih programov. To je tisto, kar boste morali narediti v resničnih težavah. Ta konflikt med sladko, preprosto, lepo abstrakcijo, ki ste jo dobili, in grozljivo zapleteno implementacijo osnovne strojne opreme je tisto, kjer bo vsak naredil svoj kompromis. Imam knjigo o večprocesorjih in sinhronizaciji in na neki točki sem nameraval napisati poglavje o podatkovnih strukturah v java.util.concurrent. Če jih pogledate, stvari, kot so seznami z izpusti To so neverjetne umetnine. (Opomba urednika: tisti, ki poznajo jezik Java, bi si morali vsaj ogledati izvedbo ConcurrentSkipListMap, si lahko ogledate na povezavah API и izvorna koda). A z mojega vidika bi bilo neodgovorno, če bi jih kazali študentom, saj je takšna podatkovna struktura nekako kot tip v cirkusu, ki teče po vrvi čez medvedjo jamo. Če spremenite vsaj en majhen detajl, se bo celotna struktura sesula. Ta koda je zelo hitra in elegantna samo zato, ker je napisana popolno, vendar bo že najmanjša sprememba pripeljala do popolne okvare. Če študentom dam to kodo za primer, bodo takoj rekli: jaz tudi to zmorem! In potem bo strmoglavilo kakšno letalo ali bo eksplodiral jedrski reaktor, jaz pa bom kriv, ker jim bom dal preveč informacij ob napačnem času.

Alexey: Ko sem bil malo mlajši, sem velikokrat poskušal preučiti izvorno kodo Douga Leeja, na primer java.util.concurrent, ker je odprtokoden, ga je zelo enostavno najti in poskusiti razumeti, kaj se tam dogaja. Ni se dobro izkazalo: pogosto je povsem nejasno, zakaj se je Doug odločil nekaj narediti na ta način, medtem ko vsi drugi to počnejo drugače. Kako te stvari razlagate svojim študentom? Ali obstaja poseben pravilen način za opis specifičnih podrobnosti hardcore algoritma, na primer? Kako vam to uspe?

Maurice: Učitelji risanja imajo kliše, ki si ga najprej zapomnijo: če hočeš risati kot Picasso, se moraš najprej naučiti risati preproste realistične slike in šele ko poznaš pravila, jih lahko začneš kršiti. Če začneš takoj kršiti pravila, se znajdeš v zmešnjavi. Najprej učence naučim, kako napisati preprosto, pravilno kodo, ne da bi pri tem skrbeli za zmogljivost. Hočem reči, da se tukaj skrivajo zapletene težave s časovnim razporedom, zato naj vas ne skrbi za predpomnilnike, ne skrbite za pomnilniške modele, samo poskrbite, da vse deluje pravilno. Že to je dovolj težko: sodobno programiranje samo po sebi ni enostavno, še posebej za nove študente. In ko imajo intuicijo o tem, kako napisati prave programe, rečem: poglejte ti dve izvedbi spinlock: ena je zelo počasna, druga pa prav tako ne zelo, a boljša. Vendar sta matematično oba algoritma enaka. Pravzaprav eden od njih uporablja lokalnost predpomnilnika. Eden od njih deluje na lokalno predpomnjenih podatkih, drugi pa vedno znova izvaja operacije prek vodila. Ne morete napisati učinkovite kode, če ne razumete, kaj je, in ne veste, kako razbiti abstrakcijo in pogledati osnovno strukturo. Vendar tega ne boste mogli začeti izvajati takoj. Obstajajo ljudje, ki to začnejo početi takoj in verjamejo v lastno genialnost, običajno se slabo konča, ker ne razumejo principov. Nihče ne riše kot Picasso ali piše programov kot Doug Lee, ki je pravkar končal fakulteto v prvem tednu. Za doseganje te stopnje znanja so potrebna leta.

Alexey: Izkazalo se je, da problem delite na dva dela: prvi je pravilnost, drugi je uspešnost?

Maurice: Točno tako. In točno v tem vrstnem redu. Del težave je, da novi učenci ne razumejo, da je pravilnost težko doseči. Na prvi pogled pravijo: to je očitno prav, preostane le še pospešitev. Zato jim včasih povem o sprva nepravilnem algoritmu, kot da bi bil pravilen.

Kako študente naučiti pisati kompleksno večnitno kodo

Alexey: Samo zato, da vidim, ali lahko zaznajo ulov?

Maurice: Vedno vnaprej opozorim, da bom včasih predlagal napačne algoritme. Ne smeš zavajati ljudi. Predlagam, da informacije vzamejo z rezervo. Če nekaj povem in rečem: "glej, to je očitno pravilno" - to je signal, da te nekje poskušajo prevarati, zato bi moral začeti postavljati vprašanja. Nato skušam študente spodbuditi, da še naprej postavljajo vprašanja, nato pa predlagam: "Kaj se bo zgodilo, če pustimo stvari takšne, kot so?" In takoj vidijo napako. Toda prepričati študente, da morajo skrbeti za pravilnost, je veliko težje, kot se zdi na prvi pogled. Mnogi od teh učencev imajo izkušnje s programiranjem v srednji šoli, nekateri so tam dobili službo in programirali, vsi pa so samozavestni. To je nekaj podobnega vojski: najprej jim moraš spremeniti razpoloženje, da jih prepričaš, da potrpežljivo pristopijo k reševanju nastalih problemov. Ali pa je morda tako kot budistični menihi: najprej se naučijo sklepati o pravilnosti, in ko enkrat razumejo načine sklepanja o pravilnosti, jim je dovoljeno, da preidejo na naslednjo raven in začnejo skrbeti za uspešnost.

Alexey: Se pravi, včasih študentom pokažete nedelujoče primere, zahvaljujoč katerim dobite povratne informacije, ki kažejo, ali razumejo bistvo problema, ali lahko najdejo napačno kodo in napačen rezultat. Vas torej učenci običajno razveselijo ali razžalostijo?

Maurice: Učenci skoraj vedno sčasoma najdejo napako. Če iščejo prepočasi, postavljam vodilna vprašanja in tukaj je pomembno razumeti, da če jih nikoli ne prevarate, bodo vaše besede začeli brezglavo dojemati kot končno resnico. Potem jim bo postalo dolgčas in bodo med poukom začeli zaspati med branjem Facebooka na prenosniku. Ko pa jim vnaprej poveš, da bodo prevarani, in bodo videti neumni, če ne bodo zaznali trika, postanejo veliko bolj previdni. To je dobro na različne načine. Želel bi, da učenci ne dvomijo samo o svojem razumevanju problematike, ampak tudi o avtoriteti učitelja. Ideja je, da lahko študent kadar koli dvigne roko in reče: Mislim, da je to, kar ste pravkar rekli, narobe. Je pomembno učno orodje. Nočem, da kdo od študentov sedi in tiho razmišlja sam pri sebi: vse to se zdi popolna neumnost, a dvigniti roko je preveč strašljivo, in sicer je profesor, zato je vse, kar govori, resnica. Če so torej vnaprej opozorjeni, da vse povedano ni nujno res, imajo spodbudo, da se bolj posvetijo gradivu. Jasno povem, da je v redu dvigniti roko in postavljati vprašanja. Vaše vprašanje se morda sliši neumno ali naivno, a pogosto se tako pojavijo najboljša vprašanja.

Alexey: Zelo zanimivo. Ponavadi imajo ljudje nekakšno psihološko oviro, ki jim ne dovoljuje, da bi profesorju postavili vprašanje. Še posebej, če je v sobi veliko ljudi in se vsi bojijo, da bo razprava o vašem neumnem vprašanju vsem tem ljudem vzela čas. Ali obstajajo kakšni triki za reševanje tega?

Maurice: Pogosto se ustavim in postavljam klasična vprašanja. Ali bi bila izjava pravilna ali kako bi rešili problem, o katerem razpravljajo. To je ključno dejanje, še posebej na začetku lekcije, ko je ljudem nerodno povedati tudi najmanjšo stvar. Dijakom postavite vprašanje in ne poveste ničesar več. Nastane tišina, vsi postanejo malo napeti, napetost raste, potem pa nenadoma nekdo ne zdrži, se zlomi in pove odgovor. Takole obrnete situacijo: nadaljevanje molka postane težje in neprijetno od odgovora! To je standardni pedagoški trik. Vsak učitelj na svetu bi moral vedeti, kako to narediti.

Alexey: Zdaj imamo odličen naslov za ta intervju: "lažje je odgovoriti kot molčati."

Vitalij: Naj še enkrat vprašam. Delate na topoloških dokazih. Kako ste se sploh vključili v to, saj sta porazdeljeno računalništvo in topologija popolnoma različni stvari!

Maurice: Tam je skrita povezava. Ko sem bil študent matematike, sem študiral čisto matematiko. Računalništvo me ni zares zanimalo, dokler se študij ni končal in sem se znašel pred nujno potrebo po iskanju službe. Kot študent sem študiral algebraično topologijo. Mnogo let kasneje, med delom na problemu, imenovanem "Težava s sporazumom k-Set", sem uporabil grafe za modeliranje problema in, kot se je takrat zdelo, sem našel rešitev. Moral si se le usesti in iti okoli štetja. Poskusite najti ustrezen odgovor na tem grafu. Toda moj algoritem ni deloval: izkazalo se je, da bo večno tekel v krogu. Na žalost vsega tega ni bilo mogoče razložiti v formalnem jeziku teorije grafov – tistem, ki ga poznajo vsi računalničarji. In potem sem se spomnil, da smo pred mnogimi leti, pri pouku topologije, uporabljali koncept "preprost kompleks", ki je posplošitev grafov na višje dimenzije. Potem sem se vprašal: kaj bi se zgodilo, če bi problem preoblikovali v smislu simplicitnih kompleksov? To je postal ključni trenutek. Z uporabo močnejšega formalizma postane problem nenadoma veliko enostavnejši. Ljudje so se dolgo borili proti temu z uporabo grafov, vendar niso mogli storiti ničesar. In tudi zdaj ne morejo - izkazalo se je, da pravilni odgovor ni algoritem, ampak dokaz nezmožnosti rešitve problema. To pomeni, da tak algoritem preprosto ne obstaja. Ampak vsak dokaz nemogočega temelji bodisi na preprostih kompleksih bodisi na stvareh, za katere so se ljudje pretvarjali, da jih ne obravnavajo kot preproste komplekse. Samo zato, ker nekaj poimenujete z novim imenom, to ne izgubi svojega bistva.

Vitaly: Izkazalo se je, da ste imeli samo srečo?

Maurice: Poleg sreče je tudi pripravljenosti. To pomeni, da ne smete pozabiti "neuporabnih" stvari, ki ste se jih naučili prej. Več neuporabnih stvari kot se naučite, več idej lahko izvlečete, ko se soočite z novim problemom. Tovrstno intuitivno ujemanje vzorcev je pomembno, ker ... Naredimo to, to je veriga: najprej sem odkril, da grafi sploh ne delujejo ali sploh ne delujejo, spomnilo me je na nekaj iz dogodkov iz osmih leta nazaj in študentska leta, ko smo študirali vse te preproste komplekse. To mi je omogočilo, da sem našel svoj stari topološki učbenik in si ga naložil nazaj v glavo. A če ne bi bilo tega starega znanja, ne bi nikoli napredoval pri reševanju prvotnega problema.

Nova izdaja knjige “Umetnost večprocesorskega programiranja”

Alexey: Povedal si nekaj besed o svoji knjigi. Verjetno ni najhujša skrivnost, da ste napisali najbolj znano knjigo na svetu o večnitnosti, "Umetnost večprocesorskega programiranja". Stara je že okoli 11 let in od takrat je samo še izšla  popravljen ponatis. Ali bo druga izdaja?

Maurice: Dobro je, da si vprašal! To bo zelo kmalu, čez kakšne tri mesece. Obstajata še dva avtorja, dodali smo veliko več gradiva, izboljšali razdelek o vzporednosti razcepa/združevanja, napisali razdelek o MapReduce, dodali veliko novih stvari in izločili nepotrebne stvari - nekaj, kar je bilo v času pisanja zelo zanimivo prvo izdajo, danes pa je ni več. Rezultat je bila zelo resno prenovljena knjiga.

Alexey: Vse je že narejeno, ostane le še, da ga izdamo?

Maurice: Za nekaj poglavij je treba še nekaj dela. Naš založnik (ki nas mislim, da že sovraži) še vedno poskuša prenesti sporočilo, da bi morali delati hitreje. Veliko zaostajamo za načrtom. Teoretično bi to knjigo lahko naredili nekaj let prej.

Alexey: Je kakšna možnost, da dobiš novo različico knjige pred božičem?

Maurice: To je naš cilj! A zmago sem že tolikokrat napovedal, da mi nihče več ne verjame. Tudi v tej zadevi mi verjetno ne bi smeli preveč zaupati.

Alexey: V vsakem primeru je to fantastična novica. Prva izdaja knjige mi je bila zelo všeč. Lahko bi rekli, da sem oboževalec.

Maurice: Upam, da bo nova izdaja vredna vašega gorečega navdušenja, hvala!

Kako je bil izumljen transakcijski pomnilnik

Vitaly: Naslednje vprašanje je o transakcijskem pomnilniku. Kolikor razumem, ste pionir na tem področju, izumili ste ga v času, ko o takšnih stvareh še nihče ni razmišljal. Zakaj ste se odločili za to področje? Zakaj so se vam transakcije zdele pomembne? Ste mislili, da bodo nekega dne implementirani v strojno opremo?

Maurice: Transakcije poznam že od svojih diplomskih raziskovalnih dni.

Vitaly: Ja, ampak to so različne transakcije!

Maurice: Delal sem z Elliottom Mossom pri neblokiranem zbiranju smeti. Naš problem je bil v tem, da smo želeli atomsko spremeniti nekaj besed v pomnilniku in potem bi algoritmi postali zelo preprosti, vsaj nekateri pa bolj učinkoviti. Uporaba primerjaj-in-zamenjaj za load-link/store-conditionalki ga zagotavlja vzporedna arhitektura, je mogoče nekaj narediti, vendar je zelo neučinkovito in grdo, ker bi se morali ukvarjati s plastmi posrednosti. Želim spremeniti spominske besede in moram preklopiti, ker lahko spremenim samo en kazalec, zato morajo kazati na nekakšno strukturo, podobno imeniku. Pogovarjali smo se o tem, kako super bi bilo, če bi lahko spremenili strojno opremo, tako da bi lahko izvajala sočasno snemanje. Zdi se, da je Elliott to opazil: če pogledate protokole koherentnosti predpomnilnika, ti že zagotavljajo večino zahtevane funkcionalnosti. V optimistični transakciji bo protokol koherentnosti predpomnilnika opazil, da obstaja časovni konflikt, in predpomnilnik bo postal neveljavno. Kaj se zgodi, če špekulativno zaženete transakcijo v svojem predpomnilniku in uporabite mehanizme protokola skladnosti za odkrivanje konfliktov? Špekulativno arhitekturo strojne opreme je bilo enostavno oblikovati. Tako smo napisali tisto prva objava o transakcijskem pomnilniku. Istočasno je podjetje Digital Equipment Corporation, za katerega sem delal, ustvarjalo nov 64-bitni procesor, imenovan Alpha. Zato sem šel in razvojni skupini Alpha predstavil naš neverjeten transakcijski pomnilnik in vprašali so: Koliko dodatnega prihodka bi naše podjetje dobilo, če bi vse to dodali neposredno v procesor? In na to nisem imel popolnoma nobenega odgovora, ker sem tehnolog, nisem strokovnjak za marketing. Res mi ni bilo kaj odgovoriti. Niso bili ravno navdušeni nad tem, da ne vem ničesar.

Vitaly: Milijarde! Samo reci milijarde!

Maurice: Ja, to bi moral reči. Zdaj, v dobi startupov in vsega, znam napisati poslovni načrt. Da lahko malo lažeš o velikosti svojega potencialnega dobička. Toda v tistih dneh se je to zdelo naivno, zato sem rekel: "Ne vem." Če pogledate zgodovino publikacije o transakcijskem pomnilniku, boste opazili, da je bilo po enem letu več sklicevanj na to, nato pa približno deset let tega prispevka sploh nihče ni citiral. Narekovaji so se pojavili okoli leta 2004, ko so se pojavili pravi večjedrniki. Ko so ljudje odkrili, da pisanje vzporedne kode lahko služi denar, so se začele nove raziskave. Ravi Rajwar napisal članek, ki je na nek način vpeljal koncept transakcijskega pomnilnika v mainstream. (Opomba urednika: obstaja druga različica tega članka, izdana leta 2010 in prosto dostopna kot PDF). Nenadoma so ljudje natančno spoznali, kako bi lahko vse to uporabili, kako bi lahko pospešili tradicionalne algoritme s ključavnicami. Dober primer nečesa, kar se je v preteklosti zdelo le zanimiv akademski problem. In ja, če bi me takrat vprašali, ali mislim, da bo vse to pomembno v prihodnosti, bi rekel: seveda, kdaj točno, pa ni jasno. Mogoče čez 50 let? V praksi se je izkazalo, da je to le desetletje. Zelo lepo je, ko nekaj narediš in že po desetih letih ljudje to opazijo.

Zakaj se splača izvajati raziskave na področju porazdeljenega računalništva

Vitaly: Če govorimo o novih raziskavah, kaj bi svetoval bralcem - porazdeljeno računalništvo ali večjedrno in zakaj? 

Maurice: Danes je lahko dobiti večjedrni procesor, težje pa je vzpostaviti pravi porazdeljeni sistem. Začel sem jih delati, ker sem želel narediti nekaj drugačnega od doktorske disertacije. To je nasvet, ki ga vedno dam novim študentom: ne napišite nadaljevanja svoje disertacije – poskusite iti v novo smer. Poleg tega je večnitnost enostavna. Lahko eksperimentiram z lastnimi vilicami, ki delujejo na mojem prenosniku, ne da bi vstal iz postelje. Če pa bi nenadoma želel ustvariti pravi porazdeljeni sistem, bi moral opraviti veliko dela, privabiti študente itd. Sem len človek in bi raje delal na večjedrnih. Eksperimentiranje na večjedrnih sistemih je prav tako lažje kot izvajanje eksperimentov na porazdeljenih sistemih, saj je tudi v neumnem porazdeljenem sistemu preveč dejavnikov, ki jih je treba nadzorovati.

Vitaly: Kaj počnete zdaj, raziskujete blockchain? Na katere člene morate biti najprej pozorni?

Maurice: Pred kratkim se je pojavil zelo dober članek, ki sem ga napisal skupaj z mojim študentom Vikramom Sarafom, posebej za pogovor na Konferenca Tokenomcs v Parizu pred tremi tedni. To je članek o praktičnih porazdeljenih sistemih, v katerem predlagamo, da Ethereum postane večniten. Trenutno se pametne pogodbe (koda, ki deluje v verigi blokov) izvajajo zaporedno. Prej smo napisali članek, ki je govoril o načinu uporabe špekulativnih transakcij za pospešitev postopka. Vzeli smo veliko idej iz transakcijskega pomnilnika programske opreme in rekli, da če te ideje naredite del virtualnega stroja Etherium, bo vse delovalo hitreje. Toda za to je potrebno, da v pogodbah ni navzkrižij podatkov. In potem smo domnevali, da v resničnem življenju teh konfliktov res ni. Vendar nismo mogli izvedeti. Potem se nam je zazdelo, da imamo skoraj desetletje zgodovine resničnih pogodb, zato smo opustili blokovno verigo Ethereum in se vprašali: kaj bi se zgodilo, če bi te zgodovinske zapise izvajali vzporedno? Ugotovili smo znatno povečanje hitrosti. V zgodnjih dneh Ethereuma se je hitrost zelo povečala, danes pa je vse nekoliko bolj zapleteno, ker je manj pogodb in verjetnost konfliktov glede podatkov, ki zahtevajo serializacijo, je postala večja. A vse to je eksperimentalno delo z resničnimi zgodovinskimi podatki. Dobra stvar pri blockchainu je, da si vse zapomni za vedno, tako da se lahko vrnemo v preteklost in preučimo, kaj bi se zgodilo, če bi za izvajanje kode uporabili drugačne algoritme. Kako bi bila ljudem v preteklosti všeč naša nova ideja? Takšno raziskovanje je veliko lažje in prijetnejše, saj obstaja stvar, ki vse spremlja in beleži. To je že nekaj bolj podobnega sociologiji kot razvoju algoritmov.

Se je razvoj algoritmov ustavil in kako naprej?

Vitaly: Čas je za zadnje teoretično vprašanje! Se vam zdi, da se napredek v konkurenčnih podatkovnih strukturah vsako leto zmanjšuje? Ali menite, da smo dosegli plato v našem razumevanju podatkovnih struktur ali bo prišlo do večjih izboljšav? Mogoče obstajajo kakšne pametne ideje, ki lahko popolnoma spremenijo vse?

Maurice: Morda smo dosegli plato v podatkovnih strukturah za tradicionalne arhitekture. Toda podatkovne strukture za nove arhitekture so še vedno zelo obetavno področje. Če želite ustvariti podatkovne strukture za, recimo, strojne pospeševalnike, se podatkovne strukture za GPE zelo razlikujejo od podatkovnih struktur za CPE. Ko razvijate podatkovne strukture za verige blokov, morate zgostiti dele podatkov in jih nato dati v nekaj podobnega Merklovo drevo, za preprečevanje ponarejanja. V zadnjem času je prišlo do povečane dejavnosti na tem področju, pri čemer mnogi delajo zelo dobro. Ampak mislim, da se bo zgodilo, da bodo nove arhitekture in nove aplikacije vodile do novih podatkovnih struktur. Podedovane aplikacije in tradicionalna arhitektura – morda ne bo več veliko prostora za raziskovanje. Če pa se odpravite z utečenih poti in pogledate čez robove, boste videli nore stvari, ki jih mainstream ne jemlje resno – tam se v resnici zgodijo vse vznemirljive stvari.

Vitaly: Zato sem moral izumiti svojo lastno arhitekturo, da bi bil zelo znan raziskovalec :)

Maurice: Lahko "ukradeš" novo arhitekturo nekoga drugega - zdi se veliko lažje!

Delo na univerzi Brown

Vitaly: Nam lahko poveste več o tem Univerza Brownkje delaš? O njem v kontekstu informacijske tehnologije ni veliko znanega. Manj kot na MIT, na primer.

Maurice: Univerza Brown je ena najstarejših univerz v ZDA. Mislim, da je samo Harvard malo starejši. Rjava je del t.i Ivy League, ki je zbirka osmih najstarejših univerz. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. Nekako stara, majhna in malce aristokratska univerza. Glavni poudarek je na izobraževanju svobodnih umetnosti. Ne poskuša biti kot MIT, MIT je zelo specializiran in tehničen. Brown je odličen kraj za študij ruske književnosti ali klasične grščine in seveda računalništva. Osredotoča se na celovito izobraževanje. Večina naših študentov hodi na Facebook, Apple, Google – zato mislim, da naši študenti nimajo težav z iskanjem zaposlitve v industriji. V Brown sem šel delati, ker sem prej delal v Digital Equipment Corporation v Bostonu. To je bilo podjetje, ki je izumilo marsikaj zanimivega, vendar je zanikalo pomen osebnih računalnikov. Podjetje s težko usodo, katerega ustanovitelji so bili nekoč mladi revolucionarji, se niso ničesar naučili in ničesar pozabili in tako so se iz revolucionarjev v približno ducatu let spremenili v reakcionarje. Radi so se šalili, da osebni računalniki sodijo v garažo - zapuščeno garažo, seveda. Povsem očitno je, da so jih uničila bolj fleksibilna podjetja. Ko je postalo jasno, da je podjetje v težavah, sem poklical prijatelja v Brown, ki je približno eno uro stran od Bostona. Takrat nisem želel zapustiti Bostona, ker na drugih univerzah ni bilo veliko prostih mest. To je bil čas, ko na področju računalništva ni bilo toliko služb kot jih je zdaj. In Brown je imel priložnost, ni mi bilo treba preseliti svojega doma, ni mi bilo treba preseliti svoje družine in res rad živim v Bostonu! Tako sem se odločil, da grem v Brown. Všeč mi je. Učenci so čudoviti, zato nikoli nisem niti poskušal iti kam drugam. Med dopustom sem eno leto delal pri Microsoftu, za eno leto šel na Technion v Haifi, zdaj pa bom v Algorandu. Povsod imam veliko kolegov in zato fizična lokacija naših učilnic ni tako pomembna. Najpomembnejši pa so študenti, ti so tukaj najboljši. Nikoli nisem poskušal iti drugam, ker sem tukaj zelo srečen.

Toda kljub Brownovi slavi v Združenih državah je v tujini presenetljivo neznan. Kot lahko vidite, zdaj delam vse, kar je v moji moči, da popravim to stanje.

Razlika med raziskovanjem na univerzi in znotraj korporacije

Vitaly: V redu, naslednje vprašanje je o digitalni opremi. Tam ste bili kot raziskovalec. Kakšna je razlika med delom v oddelku za raziskave in razvoj velikega podjetja in delom na univerzi? Kakšne so prednosti in slabosti?

Maurice: Dvajset let sem delal pri Microsoftu, tesno sodeloval z zaposlenimi v Sun Microsystems, Oracle, Facebook in zdaj Algorand. Na podlagi vsega tega želim povedati, da je mogoče izvajati prvovrstne raziskave tako v podjetjih kot na univerzah. Pomembna razlika je v tem, da v podjetju delaš s sodelavci. Če se mi nenadoma porodi ideja za projekt, ki še ne obstaja, moram svoje vrstnike prepričati, da je to dobra ideja. Če sem pri Brownu, potem lahko rečem svojim študentom: delajmo na antigravitaciji! Ali bodo odšli k nekomu drugemu ali pa se bodo lotili projekta. Da, moral bom najti sredstva, napisati vlogo za nepovratna sredstva in tako naprej. Vsekakor bo študentov vedno veliko in se boste lahko odločali enostransko. Toda na univerzi najverjetneje ne boste delali z ljudmi vaše ravni. V svetu industrijskih raziskav morate najprej vse prepričati, da se je vašega projekta vredno lotiti. Nikomur ne morem ničesar naročiti. In oba načina dela sta dragocena, saj če delaš na nečem res norem in je tvoje kolege težko prepričati, je lažje prepričati podiplomske študente – še posebej, če jih plačaš. Če delaš na nečem, kar zahteva veliko izkušenj in globokega strokovnega znanja, potem potrebuješ sodelavce, ki znajo reči "ne, slučajno se razumem na tem področju in je tvoja ideja slaba, ne bo delovalo." To je zelo koristno v smislu izgube časa. Poleg tega, če v industrijskih laboratorijih porabite veliko časa za pisanje poročil, potem na univerzi ta čas porabite za iskanje denarja. Če hočem, da bodo študentje lahko kam šli, moram denar za to najti nekje drugje. In bolj ko je vaš položaj na univerzi pomemben, več časa morate porabiti za zbiranje denarja. Tako zdaj veste, za kaj delam - poklicni berač! Kot eden tistih menihov, ki hodi naokoli z daritvenim krožnikom. Na splošno se ti dve dejavnosti dopolnjujeta. Zato se trudim živeti in ostati na tleh v obeh svetovih.

Vitaly: Zdi se, da je prepričati podjetje težje kot prepričati druge znanstvenike.

Maurice: Težje in veliko več. Poleg tega je na različnih področjih drugače: nekateri izvajajo obsežne raziskave, drugi pa se osredotočajo na svojo temo. Če bi šel v Microsoft ali Facebook in rekel: naredimo antigravitacijo, bi to komaj cenili. Če pa bi popolnoma isto rekel svojim diplomantom, bi se najverjetneje takoj lotili dela, čeprav bi zdaj imel težave - navsezadnje je treba najti denar za to. Toda dokler želite narediti nekaj, kar je v skladu s cilji podjetja, je to podjetje lahko zelo dobro mesto za raziskovanje.

Hydra in SPTDC

Vitaly: Moja vprašanja se bližajo koncu, zato se pogovorimo malo o prihajajočem potovanju v Rusijo.

Maurice: Da, veselim se vrnitve v Sankt Peterburg.

Alexey: V čast mi je, da si letos z nami. To je vaš drugič v Sankt Peterburgu, kajne?

Maurice: Že tretji!

Alexey: Razumem, ampak SPTDC – zagotovo drugo. Nazadnje so poklicali šolo SPTCC, smo zdaj spremenili eno črko (C v D, sočasno s porazdeljenim), da bi poudarili, da je letos več področij, povezanih posebej s porazdeljenim računalništvom. Lahko poveste nekaj besed o svojih poročilih na Šoli in Hydra konferenca?

Maurice: V šoli želim govoriti o osnovah blockchaina in o tem, kaj lahko storite z njim. Rad bi pokazal, da so verige blokov zelo podobne večnitnemu programiranju, ki ga poznamo, vendar z lastnimi odtenki, in te razlike je pomembno razumeti. Če naredite napako v običajni spletni aplikaciji, je to samo nadležno. Če v finančni aplikaciji napišete kodo z napakami, vam bo nekdo zagotovo ukradel ves denar. Gre za popolnoma različne stopnje odgovornosti in posledic. Malo bom govoril o proof-of-work, o pametnih pogodbah, o transakcijah med različnimi verigami blokov.

Poleg mene bodo delali še govorci, ki imajo prav tako kaj povedati o blockchainu, in dogovorili smo se, da se bomo med seboj usklajevali, da se naše zgodbe dobro ujamejo. Za inženirsko poročilo pa želim širokemu občinstvu povedati razumljivo razlago, zakaj ne bi smeli verjeti vsemu, kar slišite o verigah blokov, zakaj so verige blokov odlično področje, kako se ujema z drugimi znanimi idejami in zakaj bi morali pogumno pogledati v prihodnost.

Alexey: Poleg tega želim povedati, da to ne bo potekalo v obliki srečanja ali uporabniške skupine, kot je bilo pred dvema letoma. Odločili smo se, da bomo v bližini šole organizirali manjšo konferenco. Razlog je v tem, da smo po komunikaciji s Petrom Kuznetsovom ugotovili, da je šola omejena na samo sto, morda 120 ljudi. Hkrati je veliko inženirjev, ki želijo komunicirati z vami, obiskovati predstavitve in jih tema na splošno zanima. Iz tega razloga smo ustvarili novo konferenco imenovano Hydra. Mimogrede, kakšna ideja, zakaj Hydra?

Maurice: Ker bo sedem govorcev? In njihove glave je mogoče odrezati, na njihovem mestu pa bodo zrasli novi zvočniki?

Alexey: Odlična ideja za rast novih zvočnikov. Toda v resnici je tukaj zgodba. Spomnite se legende o Odiseju, kjer je moral pluti med Scila in Haribda? Hidra je nekaj podobnega kot Haribda. Zgodba je, da sem nekoč govoril na konferenci in govoril o večnitnosti. Na tej konferenci sta bili le dve progi. Na začetku poročila sem občinstvu v dvorani povedal, da imajo zdaj izbiro med Scilo in Haribdo. Moja duhovna žival je Haribda, ker ima Haribda veliko glav in moja tema je večnitna. Tako se pojavljajo imena konferenc.

V vsakem primeru nam je zmanjkalo vprašanj in časa. Torej, hvala vam, prijatelji, za odličen intervju in se vidimo na SPTDC School in Hydra 2019!

Pogovor z Mauriceom lahko nadaljujete na konferenci Hydra 2019, ki bo 11. in 12. julija 2019 v St. Prišel bo s poročilom "Blockchains in prihodnost porazdeljenega računalništva". Vstopnice je mogoče kupiti na uradni spletni strani.

Vir: www.habr.com

Dodaj komentar