"Det Àr lÀttare att svara Àn att förbli tyst" - en bra intervju med fadern till transaktionsminnet, Maurice Herlihy

Maurice Herlihy - Àgare till tvÄ Dijkstra-priser. Den första Àr för arbete "VÀntefri synkronisering" (Brown University) och den andra, nyare, - "Transaktionsminne: arkitektoniskt stöd för lÄsfria datastrukturer" (Virginia Tech University). Dijkstrapriset delas ut för verk vars betydelse och inflytande har varit mÀrkbar i minst tio Är och, uppenbarligen, Àr Maurice en av de mest kÀnda specialisterna inom omrÄdet. Han Àr för nÀrvarande professor vid Brown University och har styckelÄnga prestationer. Nu Àr han engagerad i blockchain-forskning inom ramen för klassisk distribuerad datoranvÀndning.

Tidigare har Maurice redan kommit till Ryssland för SPTCC (videoband) och gjorde ett utmÀrkt möte med JUG.ru Java-utvecklargemenskapen i St. Petersburg (videoband).

Denna habrapost Àr en bra intervju med Maurice Herlihy. Den diskuterar följande Àmnen:

  • Interaktion mellan akademi och industri;
  • Stiftelse för blockkedjeforskning;
  • Var kommer banbrytande idĂ©er ifrĂ„n? Inflytande av popularitet;
  • PhD under ledning av Barbara Liskov;
  • VĂ€rlden vĂ€ntar pĂ„ multi-core;
  • Ny vĂ€rld, nya problem. NVM, NUMA och arkitekturhackning;
  • Kompilatorer vs CPU:er, RISC vs CISC, delat minne vs meddelandeöverföring;
  • Konsten att skriva skör flertrĂ„dig kod;
  • Hur man lĂ€r eleverna hur man skriver komplex flertrĂ„dad kod;
  • Ny upplaga av boken "Konsten att programmera flera processorer";
  • Hur uppfanns transaktionsminnet?   
  • Varför det Ă€r vĂ€rt att forska inom omrĂ„det distribuerad datoranvĂ€ndning;
  • Har utvecklingen av algoritmer stoppats, och hur ska man leva vidare;
  • Jobbar pĂ„ Brown University;
  • Skillnaden mellan universitets- och företagsforskning;
  • Hydra och SPTDC.

Intervjuer genomförs av:

Vitaly Aksenov — för nĂ€rvarande post-doc vid IST Österrike och anstĂ€lld vid avdelningen för datorteknik vid ITMO University. Han Ă€r engagerad i forskning inom omrĂ„det teori och praktik av konkurrenskraftiga datastrukturer. Innan han började pĂ„ IST disputerade han frĂ„n Paris Diderot University och ITMO University under Prof. Petr Kuznetsov.

Alexey Fedorov Àr producent pÄ JUG Ru Group, ett ryskt företag som anordnar konferenser för utvecklare. Alexey deltog i förberedelserna av mer Àn 50 konferenser, och hans CV innehÄller allt frÄn positionen som utvecklingsingenjör pÄ Oracle (JCK, Java Platform Group) till positionen som utvecklare pÄ Odnoklassniki.

Vladimir Sitnikov Àr ingenjör pÄ Netcracker. I tio Är har han arbetat med prestanda och skalbarhet hos NetCracker OS, programvara som anvÀnds av telekomoperatörer för att automatisera processer för hantering av nÀtverk och nÀtverksutrustning. Intresserad av prestandaproblem i Java och Oracle Database. Författare till över ett dussin prestandaförbÀttringar i den officiella PostgreSQL JDBC-drivrutinen.

Interaktion mellan akademi och industri

Alexey: Maurice, du har arbetat inom akademin vĂ€ldigt lĂ€nge och den första frĂ„gan handlar om samspelet mellan akademi och industri. Kan du berĂ€tta för oss hur interaktionerna mellan dem har förĂ€ndrats pĂ„ sistone? Vad var för 20-30 Ă„r sedan och vad hĂ€nder nu? 

Maurice: Jag har alltid försökt arbeta nÀra kommersiella företag eftersom de har intressanta utmaningar. I regel Àr de inte sÀrskilt intresserade vare sig av att publicera sina resultat eller av detaljerade förklaringar av sina problem för vÀrldssamfundet. De Àr bara intresserade av att lösa dessa problem. Jag arbetade för nÄgra av dessa företag ett tag. Jag tillbringade fem Är pÄ heltid i ett forskningslabb pÄ Digital Equipment Corporation, som brukade vara ett stort dataföretag. Jag jobbade en dag i veckan pÄ Sun, pÄ Microsoft, pÄ Oracle, jobbade lite pÄ Facebook. Nu ska jag gÄ pÄ sabbatsledighet (en professor vid ett amerikanskt universitet fÄr ta en sÄdan semester i ett Är ungefÀr en gÄng vart sjÀtte Är) och jobba i Algorand, det hÀr Àr ett sÄdant kryptovalutaföretag i Boston. Att arbeta nÀra företag har alltid varit ett nöje, för det Àr sÄ man lÀr sig om nya och intressanta saker. Du kan generellt vara den första eller andra personen som publicerar en artikel om ett valt Àmne, istÀllet för att gradvis förbÀttra lösningar pÄ problem som alla andra redan arbetar med.

Alexey: Kan du berÀtta mer om hur detta hÀnder?

Maurice: SjÀlvklart. Du vet, nÀr jag var pÄ Digital Equipment Corporation, jag och Elliot Moss, uppfann vi transaktionsminnet. Det var en mycket fruktbar period dÄ alla började intressera sig för informationsteknologi. Samtidighet ingÄr, Àven om flerkÀrniga system Ànnu inte existerade. Under Sun och Oracles dagar arbetade jag mycket med parallella datastrukturer. PÄ Facebook var jag involverad i deras blockchain-projekt, som jag inte kan prata om men förhoppningsvis blir offentlig snart. NÀsta Är, pÄ Algorand, kommer jag att arbeta i ett forskarteam som studerar smarta kontrakt.

Alexey: Under de senaste Ären har blockchain blivit ett mycket populÀrt Àmne. Kommer det att hjÀlpa din forskning? Kanske kommer det att göra det lÀttare att fÄ bidrag eller ge tillgÄng till resurserna hos företag verksamma i branschen?

Maurice: Jag har redan fĂ„tt ett litet bidrag frĂ„n Ethereum Foundation. Blockchains popularitet Ă€r mycket anvĂ€ndbar för att inspirera studenter att arbeta inom detta omrĂ„de. De Ă€r vĂ€ldigt intresserade av det och Ă€r gĂ€rna med, men ibland inser de inte att forskning som lĂ„ter lockande utifrĂ„n visar sig innebĂ€ra riktigt hĂ„rt arbete. Jag Ă€r dock vĂ€ldigt glad över att anvĂ€nda all denna mystik kring blockkedjan, det hjĂ€lper till att locka studenter. 

Men det Àr inte allt. Jag sitter i advisory board för flera blockchain-startups. Vissa av dem kanske lyckas, vissa kanske inte, men det Àr alltid vÀldigt intressant att se deras idéer, studera dem och ge rÄd till mÀnniskor. Det mest spÀnnande Àr nÀr man varnar folk att inte göra nÄgot. MÄnga saker verkar vara en bra idé till en början, men Àr de verkligen?

Stiftelsen för blockchain-forskning

Vitaly: Vissa mÀnniskor tror att blockchain och dess algoritmer Àr framtiden. Och andra sÀger att det bara Àr Ànnu en bubbla. Kan du dela din Äsikt i denna frÄga?

Maurice: Mycket av det som hĂ€nder i blockchain-vĂ€rlden fungerar inte som det ska, en del Ă€r bara bedrĂ€gerier, mĂ„nga saker Ă€r överskattade. Jag tror dock att det finns en solid vetenskaplig grund för dessa studier. Det faktum att blockchain-vĂ€rlden Ă€r full av ideologiska splittringar visar nivĂ„n av spĂ€nning och engagemang. Å andra sidan Ă€r det inte sĂ€rskilt fördelaktigt för vetenskaplig forskning. Nu, om du publicerar en artikel som talar om bristerna i en viss algoritm, Ă€r reaktionen inte alltid helt vetenskaplig. Ofta uttrycker mĂ€nniskor sina kĂ€nslor. Jag tror att en sĂ„dan hype pĂ„ det hĂ€r omrĂ„det kan verka attraktiv för vissa, men i slutĂ€ndan finns det riktiga vetenskapliga och tekniska frĂ„gor som Ă€nnu inte har Ă„tgĂ€rdats. Det finns mycket datavetenskap hĂ€r.

Vitaliy: SÄ du försöker lÀgga grunden för blockchain-forskning, eller hur?

Maurice: Jag försöker lÀgga grunden för en solid, vetenskapligt och matematiskt sund disciplin. Och en del av problemet Àr att man ibland mÄste motsÀga nÄgra av andra mÀnniskors alltför hÄrda stÄndpunkter för att ignorera dem. Ibland frÄgar folk varför jag jobbar inom ett omrÄde som bara terrorister och knarklangare Àr intresserade av. En sÄdan reaktion Àr lika meningslös som beteendet hos följare som blint upprepar dina ord. Jag tror att sanningen ligger nÄgonstans i mitten. Blockchain har Ànnu inte haft en djupgÄende inverkan pÄ samhÀllet och den globala ekonomin. Men förmodligen kommer detta inte att hÀnda tack vare modern teknik. Modern teknik kommer att utvecklas och det som kommer att kallas blockchain i framtiden kommer att bli mycket viktigt. Kanske kommer det inte ens att se ut som moderna blockkedjor, det Àr en öppen frÄga.

Om mÀnniskor uppfinner ny teknik kommer de att fortsÀtta kalla det blockchain. Jag menar, precis som dagens Fortran inte har nÄgot med Fortran-sprÄket frÄn 1960-talet att göra, utan alla fortsÀtter att kalla det Fortran. Samma sak för UNIX. Det som kallas "blockchain" har Ànnu inte gjort sin revolution. Men jag tvivlar pÄ att denna nya blockchain kommer att vara som alla Àlskar att anvÀnda idag.

Var kommer banbrytande idéer ifrÄn? Inflytande av popularitet

Alexey: Har blockkedjans popularitet lett till nya resultat ur vetenskaplig synvinkel? Mer interaktion, fler studenter, fler företag i omrÄdet. Finns det nÄgra resultat av denna tillvÀxt i popularitet redan?

Maurice: Jag blev intresserad av det hÀr nÀr nÄgon gav mig ett officiellt flygblad för ett företag som just hade samlat in ganska mycket pengar. Hon skrev om de bysantinska generalernas uppgiftsom jag Àr mer Àn bekant med. Skrivet i broschyren var helt klart tekniskt felaktigt. De som skrev detta förstod inte riktigt modellen bakom problemet... och ÀndÄ samlade det hÀr företaget in mycket pengar. DÀrefter ersatte företaget tyst denna broschyr med en mycket mer korrekt version - och jag kommer inte att sÀga vad det hÀr företaget hette. De finns fortfarande och har det vÀldigt bra. Det hÀr fallet övertygade mig om att för det första Àr blockchain bara en form av distribuerad datoranvÀndning. För det andra var tröskeln för intrÀde (vid den tiden för fyra Är sedan) ganska lÄg. MÀnniskor som arbetade i detta omrÄde var mycket energiska och smarta, men de lÀste inte vetenskapliga artiklar. De försökte Äteruppfinna kÀnda saker och de gjorde det fel. Idag har dramatiken minskat.

Alexey: Det Ă€r vĂ€ldigt intressant, för för nĂ„gra Ă„r sedan hade vi en annan trend. Det Ă€r lite som front-end-utveckling, dĂ€r webblĂ€sargrĂ€nssnittsutvecklare Ă„teruppfann hela teknologier som redan var populĂ€ra i back-end vid den tiden: bygga system, kontinuerlig integration och sĂ„nt. 

Maurice: Jag hÄller med. Men detta Àr inte förvÄnande, eftersom verkligt banbrytande idéer alltid kommer utanför det etablerade samhÀllet. Etablerade forskare, sÀrskilt myndigheter inom akademin, kommer sannolikt inte att göra nÄgot riktigt banbrytande. Det Àr lÀtt att skriva en rapport till nÀsta konferens om hur du förbÀttrade resultaten av ditt tidigare arbete nÄgot. GÄ pÄ en konferens, trÀffa vÀnner, prata om samma saker. Och de mÀnniskor som bryter in med banbrytande idéer kommer nÀstan alltid utifrÄn. De kan inte reglerna, de kan inte sprÄket, men ÀndÄ... Om du Àr inne i en etablerad gemenskap rÄder jag dig att vara uppmÀrksam pÄ nya saker, pÄ nÄgot som inte passar in i det stora bild. PÄ sÀtt och vis kan man försöka kombinera externa, mer flytande utvecklingar med tekniker som vi redan förstÄr. Som ett första steg, försök att skapa en vetenskaplig bas och sedan modifiera den sÄ att den kan tillÀmpas pÄ nya banbrytande idéer. Jag tror att blockkedjan Àr bra för rollen som en ny genombrottsidé.

Alexei: Varför tror du att det hÀr hÀnder? För att mÀnniskor "utanför" inte har nÄgra specifika barriÀrer inneboende i samhÀllet?

Maurice: Det finns ett mönster hÀr. Om du lÀser impressionisternas historia inom mÄleri och konst i allmÀnhet, sÄ avvisade en gÄng kÀnda konstnÀrer impressionismen. De sa att det var nÄgon sorts barnslighet. En generation senare blev denna tidigare avvisade konstform standard. Vad jag ser inom mitt omrÄde: uppfinnarna av blockkedjan var inte intresserade av makt, av att avveckla publikationer och citeringsindex, de ville bara göra nÄgot bra. Och sÄ satte de sig ner och började göra det. De saknade ett visst mÄtt av tekniskt djup, men det gÄr att fixa. Det Àr mycket svÄrare att komma pÄ nya kreativa idéer Àn att korrigera och förstÀrka otillrÀckligt mogna. Tack vare dessa uppfinnare har jag nu nÄgot att göra!

Alexey: Detta liknar skillnaden mellan startups och Àldre projekt. Vi Àrver mÄnga tankebegrÀnsningar, barriÀrer, speciella krav och sÄ vidare.

Maurice: En bra analogi Àr distribuerad datoranvÀndning. TÀnk pÄ blockchain som om det vore en startup och distribuerad datoranvÀndning som ett stort etablerat företag. Distribuerad datoranvÀndning hÄller pÄ att köpas och slÄs samman med blockchain.

PhD under Barbara Liskov

Vitaliy: Vi har fortfarande mÄnga frÄgor! Vi har undersökt din bio och hittade ett intressant faktum om din doktorsexamen. Ja, det var lÀnge sedan, men Àmnet verkar vara viktigt. Du disputerade under handledning av Barbara Liskov! Barbara Àr mycket kÀnd inom utvecklingsgemenskapen för programmeringssprÄk, och en mycket kÀnd person i allmÀnhet. Det Àr logiskt att din forskning var inom programmeringssprÄk. Hur gick du över till parallell berÀkning? Varför valde du att byta Àmne?

Maurice: Vid den tiden tittade Barbara och hennes grupp bara pÄ distribuerad datoranvÀndning, vilket var en vÀldigt ny idé. Det fanns ocksÄ de som sa att distribuerad datoranvÀndning Àr nonsens, kommunikation mellan datorer Àr meningslös. En av de frÄgor som tas upp i distribuerad datoranvÀndning, som skiljer dem frÄn centraliserad datoranvÀndning, Àr feltolerans. Efter mycket forskning bestÀmde vi oss för att i ett programmeringssprÄk för distribuerad berÀkning mÄste du ha nÄgot som liknar atomÀra transaktioner, eftersom du aldrig kan vara sÀker pÄ att ett fjÀrrsamtal kommer att lyckas. NÀr du vÀl har transaktioner finns det ett problem med samtidighetskontroll. Sedan var det mycket arbete med att fÄ fram mycket parallella transaktionsdatastrukturer. Sen nÀr jag tog examen gick jag till Carnegie Mellon och började leta efter ett Àmne för arbetet. Det slog mig att datoranvÀndning hade flyttats frÄn enskilda datorer till nÀtverk av datorer. En naturlig fortsÀttning pÄ framsteg skulle vara multiprocessorer - ordet "multi-core" fanns inte dÄ. Jag tÀnkte: vad motsvarar atomtransaktioner för ett system med flera kÀrnor? Absolut inte vanliga transaktioner, eftersom de Àr för stora och tunga. Och det var sÄ jag kom pÄ idén linjÀriserbarhet och det var sÄ jag kom fram till hela den vÀntefria synkroniseringen. Det var ett försök att svara pÄ frÄgan om vad som Àr analogen till atomÀra transaktioner för ett multiprocessorsystem med delat minne. Vid första anblicken kan det hÀr arbetet se ganska annorlunda ut, men i sjÀlva verket Àr det en fortsÀttning pÄ samma tema.

VÀrlden vÀntar pÄ multi-core

Vitaly: Du nÀmnde att det fanns vÀldigt fÄ flerkÀrniga datorer vid den tiden, eller hur?

Maurice: De fanns helt enkelt inte. Det fanns flera sÄ kallade symmetriska multiprocessorer, som i princip var kopplade till samma buss. Det fungerade inte sÀrskilt bra, för varje gÄng ett nytt företag skapade nÄgot sÄdant hÀr slÀppte Intel en enda processor som övertrÀffade multiprocessorn.

Alexei: Betyder inte detta att det under de gamla tiderna var mer av en teoretisk studie?

Maurice: Det var inte en teoretisk, utan snarare en spekulativ studie. Allt detta handlade inte om att arbeta med en massa satser, snarare lade vi fram hypoteser om arkitekturen som inte fanns pÄ den tiden. Det Àr vad forskning Àr till för! Inget företag skulle ha gjort detta, allt var nÄgot frÄn en avlÀgsen framtid. Detta var faktiskt fram till 2004, dÄ riktiga flerkÀrniga processorer dök upp. PÄ grund av det faktum att processorer överhettas kan du göra processorn Ànnu mindre, men du kan inte göra den snabbare. PÄ grund av detta skedde en övergÄng till flerkÀrniga arkitekturer. Och dÄ innebar det att det helt plötsligt fanns en anvÀndning för alla koncept som vi hade utvecklat tidigare.

Alexey: Varför tror du att flerkÀrniga processorer dök upp först pÄ XNUMX-talet? SÄ varför sÄ sent?

Maurice: Det beror pĂ„ hĂ„rdvarubegrĂ€nsningar. Intel, AMD och andra företag Ă€r mycket bra pĂ„ att öka processorhastigheterna. NĂ€r processorerna vid nĂ„got tillfĂ€lle blev sĂ„ smĂ„ att de inte kunde öka klockhastigheten lĂ€ngre eftersom processorerna skulle börja brinna ut. Du kan göra dem mindre, men inte snabbare. Vad Ă€r i deras makt - istĂ€llet för en mycket liten processor, fĂ„r plats Ă„tta, sexton eller trettiotvĂ„ processorer i samma volym av fodralet, dĂ€r bara en brukade passa. Nu har du multithreading och snabb kommunikation mellan dem eftersom de delar cachar. Men du kan inte fĂ„ dem att springa snabbare – det finns en vĂ€ldigt specifik hastighetsgrĂ€ns. De fortsĂ€tter att förbĂ€ttras lite i taget, men inte sĂ„ mycket. Fysikens lagar kom i vĂ€gen.

Ny vÀrld, nya problem. NUMA, NVM och arkitekturhackning

Alexei: LÄter vÀldigt rimligt. Med nya flerkÀrniga processorer kom nya problem. FörvÀntade du och dina kollegor dessa problem? Du kanske har studerat dem i förvÀg? I teoretiska studier Àr det ofta inte sÀrskilt lÀtt att förutse sÄdana saker. NÀr problem uppstod, i vilken utstrÀckning motsvarade de dina och dina kollegors förvÀntningar? Eller var de helt nya och du och dina kollegor fick lÀgga mycket tid pÄ att lösa problem nÀr de uppstod?

Vitaliy: Jag ska lÀgga till Alexeys frÄga: förutspÄdde du korrekt arkitekturen för processorer medan du studerade teori?

Maurice: Inte alla till 100%. Men jag tycker att mina kollegor och jag gjorde ett bra jobb med att förutsĂ€ga delat minne med flera kĂ€rnor. Jag tror att vi korrekt förutspĂ„dde svĂ„righeterna med att designa parallella datastrukturer som fungerar utan lĂ„s. SĂ„dana datastrukturer har varit viktiga för mĂ„nga applikationer, dock inte för alla, men ofta behöver man verkligen en lĂ„sfri datastruktur. NĂ€r vi uppfann dem var det mĂ„nga som hĂ€vdade att det hĂ€r Ă€r nonsens, att allt fungerar bra med lĂ„s. Vi förutsĂ„g ganska vĂ€l att det skulle finnas fĂ€rdiga lösningar pĂ„ mĂ„nga programmeringsproblem och datastrukturproblem. Det fanns ocksĂ„ mer komplexa problem, som t.ex NUMA – OjĂ€mn minnesĂ„tkomst. Faktum Ă€r att de inte ens övervĂ€gdes förrĂ€n uppfinningen av flerkĂ€rniga processorer eftersom de var för specifika. ForskarvĂ€rlden arbetade med frĂ„gor som i allmĂ€nhet var förutsĂ€gbara. Vissa hĂ„rdvaruproblem associerade med specifika arkitekturer fick vĂ€nta i kulisserna - i sjĂ€lva verket utseendet pĂ„ dessa arkitekturer. Till exempel arbetade ingen riktigt med GPU-specifika datastrukturer eftersom GPU:n inte fanns dĂ„. Även om mycket arbete har gjorts pĂ„ SIMD, var dessa algoritmer redo att anvĂ€ndas sĂ„ snart rĂ€tt hĂ„rdvara dök upp. Det Ă€r dock omöjligt att förutse allt.

Alexey: Om jag förstÄr det rÀtt Àr NUMA en slags kompromiss mellan kostnad, prestanda och en del andra saker. NÄgon aning om varför NUMA kom sÄ sent?

Maurice: Jag tror att NUMA finns pĂ„ grund av ett problem med hĂ„rdvaran som anvĂ€nds för att skapa minne: ju lĂ€ngre bort komponenterna Ă€r, desto lĂ„ngsammare Ă„tkomst till dem. Å andra sidan Ă€r det andra vĂ€rdet av denna abstraktion minnets enhetlighet. DĂ€rför Ă€r en av egenskaperna hos parallell berĂ€kning att alla abstraktioner Ă€r nĂ„got brutna. Om Ă„tkomsten var helt enhetlig skulle allt minne vara pĂ„ samma avstĂ„nd, men detta Ă€r ekonomiskt och kanske till och med fysiskt omöjligt. SĂ„ den hĂ€r konflikten uppstĂ„r. Om du skriver ditt program som om minnet vore enhetligt, sĂ„ kommer det med största sannolikhet att vara korrekt. I den meningen att det inte kommer att ge fel svar. Men prestanda för hennes stjĂ€rnor frĂ„n himlen kommer inte att fĂ„nga. PĂ„ samma sĂ€tt, om du skriver spinlocks utan att förstĂ„ hierarkin av cacher kommer sjĂ€lva lĂ„set att vara korrekt, men du kan glömma prestanda. PĂ„ sĂ€tt och vis mĂ„ste du skriva program som lever ovanpĂ„ en mycket enkel abstraktion, men du mĂ„ste överlista de mĂ€nniskor som gav dig den abstraktionen: du mĂ„ste veta att under abstraktionen finns det nĂ„gon minneshierarki, att det finns en buss mellan dig och detta minne och sĂ„ vidare. Det finns alltsĂ„ en viss konflikt mellan abstraktioner som Ă€r anvĂ€ndbara i sig, vilket leder oss till mycket specifika och pragmatiska problem.

Vitaliy: Hur Àr det med framtiden? Kan du förutsÀga hur processorer kommer att utvecklas vidare? Det finns en idé om att ett av svaren Àr transaktionsminne. Du har förmodligen nÄgot annat pÄ lager.

Maurice: Det finns ett par stora utmaningar framför oss. En Ă€r att det sammanhĂ€ngande minnet Ă€r en underbar abstraktion, men det börjar gĂ„ sönder i speciella fall. SĂ„ till exempel Ă€r NUMA ett levande exempel pĂ„ nĂ„got dĂ€r man kan fortsĂ€tta lĂ„tsas att det finns ett enhetligt minne. Egentligen – nej, förestĂ€llningen kommer fĂ„ dig att grĂ„ta. Vid nĂ„gon tidpunkt kommer arkitekter att behöva överge idĂ©n om en enhetlig minnesarkitektur, du kan inte lĂ„tsas för alltid. Nya programmeringsmodeller kommer att behövas som Ă€r lĂ€tta nog att anvĂ€nda och tillrĂ€ckligt kraftfulla för att göra den underliggande hĂ„rdvaran effektiv. Detta Ă€r en mycket svĂ„r kompromiss, för om du visar programmerare arkitekturen som faktiskt anvĂ€nds i hĂ„rdvara, kommer de att bli galna. Det Ă€r för komplicerat och inte bĂ€rbart. Om du presenterar ett grĂ€nssnitt som Ă€r för enkelt blir prestandan dĂ„lig. SĂ„ledes kommer mĂ„nga mycket svĂ„ra kompromisser att behöva göras för att tillhandahĂ„lla anvĂ€ndbara programmeringsmodeller som Ă€r tillĂ€mpliga pĂ„ riktigt stora flerkĂ€rniga processorer. Jag Ă€r inte sĂ€ker pĂ„ att nĂ„gon annan Ă€n en smal specialist Ă€r kapabel att programmera pĂ„ en 2000-kĂ€rnig dator. Och om du inte gör mycket specialiserad eller vetenskaplig datoranvĂ€ndning, kryptografi eller vad som helst, Ă€r det fortfarande inte alls klart hur man gör det rĂ€tt. 

En annan liknande riktning Àr specialiserade arkitekturer. Grafikacceleratorer har funnits lÀnge, men har redan blivit ett slags klassiskt exempel pÄ hur man kan ta en specialiserad typ av berÀkning och köra den pÄ ett dedikerat chip. Detta lÀgger till sina egna utmaningar: hur kommunicerar du med en sÄdan enhet, hur programmerar du den. Jag har nyligen arbetat med uppgifter inom omrÄdet nÀra minnesberÀkning. Du tar en liten processor och limmar fast den pÄ en stor bit minne sÄ att minnet körs med L1-cachehastighet, och sedan kommunicerar den med en enhet som t.ex. TPU - Processorn Àr upptagen med att ladda nya uppgifter till din minneskÀrna. Utvecklingen av datastrukturer och kommunikationsprotokoll för den hÀr typen av saker Àr ett annat intressant exempel. DÀrför kommer specialiserade processorer och hÄrdvara att bli föremÄl för förbÀttringar under ganska lÄng tid.

Alexey: Vad sÀgs om icke-flyktigt minne (icke-flyktigt minne)?

Maurice: Åh, det Ă€r ett annat bra exempel! NVM kommer att avsevĂ€rt förĂ€ndra hur vi ser pĂ„ saker som datastrukturer. Icke-flyktigt minne, pĂ„ sĂ€tt och vis, lovar att verkligen pĂ„skynda saker och ting. Men det kommer inte att göra livet lĂ€ttare, eftersom de flesta processorer, cachar och register fortfarande Ă€r flyktiga. NĂ€r du startar efter en krasch kommer ditt tillstĂ„nd och ditt minnestillstĂ„nd inte att vara exakt samma som före kraschen. Jag Ă€r mycket tacksam för de personer som Ă€r involverade i NVM - under lĂ„ng tid kommer forskare att ha nĂ„got att göra, och försöka ta reda pĂ„ korrekthetsvillkoren. BerĂ€kningar Ă€r korrekta om de kan överleva en krasch dĂ€r innehĂ„llet i cacharna och registren gĂ„r förlorat, men huvudminnet förblir intakt.

Kompilatorer vs CPU:er, RISC vs CISC, delat minne vs meddelandeöverföring

Vladimir: Vad tycker du om kompilatorernas och processorernas dilemmat nÀr det gÀller instruktionsuppsÀttningen? För att förklara för de som inte Àr i Àmnet: om vi gÄr till ojÀmnt minne eller nÄgot liknande kan vi tillÀmpa en mycket enkel uppsÀttning instruktioner och be kompilatorn att generera komplex kod som kan dra nytta av de upptÀckta fördelarna. Eller sÄ kan vi gÄ Ät andra hÄllet: implementera komplexa instruktioner och be processorn att ordna om instruktionerna och göra andra manipulationer med dem. Vad tycker du om det?

Maurice: Jag har egentligen inget svar pÄ den frÄgan. Denna debatt har pÄgÄtt i fyra decennier. Det gick en tid emellan förkortad kommandouppsÀttning och svÄr inbördeskrig utkÀmpades av en uppsÀttning lag. Ett tag vann RISC-folket, men sedan byggde Intel om sina motorer sÄ att ett reducerat instruktionsset anvÀndes inuti, och hela exporterades utanför. Kanske Àr detta ett Àmne dÀr varje ny generation mÄste hitta sina egna kompromisser och fatta sina egna beslut. Det Àr vÀldigt svÄrt att förutse vilken av dessa saker som kommer att bli bÀttre. SÄ alla förutsÀgelser jag gör kommer att vara sanna under en viss tid, och sedan bli falska igen ett tag, och sedan vara sanna igen.

Alexey: Hur vanligt Àr det för branschen i allmÀnhet att vissa idéer vinner över flera decennier och förlorar i nÀsta? Finns det andra exempel pÄ sÄdana periodiska förÀndringar?

Maurice: Inom omrÄdet för distribuerad databehandling finns det mÀnniskor som tror pÄ delat minne och mÀnniskor som tror pÄ meddelandeutbyte. Ursprungligen i distribuerad berÀkning betyder parallell berÀkning att meddelanden skickas. Sedan upptÀckte nÄgon att delat minne gjorde programmering mycket enklare. Den andra sidan sa att delat minne Àr för komplicerat, eftersom de behöver lÄs och liknande, sÄ det Àr vÀrt att flytta till sprÄk dÀr inget annat Àn meddelandeöverföring helt enkelt existerar. NÄgon tittade pÄ vad som kom ut ur det och sÀger: "wow, den hÀr meddelandeimplementeringen ser vÀldigt ut som delat minne, eftersom du skapar mÄnga, mÄnga av dessa smÄ moduler, de skickar meddelanden till varandra, och de alla dödlÀge, - lÄt oss göra en databas med delat minne bÀttre!". Allt detta upprepas om och om igen, och det Àr omöjligt att sÀga att en av parterna har entydigt rÀtt. En sida kommer alltid att dominera, för sÄ fort en av dem nÀstan vinner, uppfinner folk gÄng pÄ gÄng sÀtt att förbÀttra den andra.

Konsten att skriva skör flertrÄdig kod

Alexei: Det hÀr Àr vÀldigt intressant. Till exempel, nÀr vi skriver kod, oavsett vilket programmeringssprÄk, mÄste vi vanligtvis skapa abstraktioner som celler som kan lÀsas och skrivas. Men i sjÀlva verket kan det pÄ nÄgon fysisk nivÄ se ut som att skicka ett meddelande pÄ en hÄrdvarubuss mellan olika datorer och andra enheter. Det visar sig att det finns arbete pÄ bÄda abstraktionsnivÄerna samtidigt.

Maurice: Det Ă€r helt sant att delat minne bygger pĂ„ att meddelanden skickas – bussar, cachar och sĂ„ vidare. Men det Ă€r svĂ„rt att skriva program med att skicka meddelanden, sĂ„ hĂ„rdvaran ljuger medvetet och lĂ„tsas att du har nĂ„got slags enhetligt minne. Detta kommer att göra det lĂ€ttare för dig att skriva enkla, korrekta program innan prestandan börjar sjunka. DĂ„ sĂ€ger du: det ser ut som att det Ă€r dags att bli vĂ€n med cachen. Och det Ă€r dĂ„ du börjar oroa dig för platsen för cachen, och sedan kör vi. PĂ„ sĂ€tt och vis bryter du abstraktionen: du vet att det inte bara Ă€r platt, enhetligt minne, och du kommer att anvĂ€nda den kunskapen för att skriva cachevĂ€nliga program. Detta Ă€r vad du mĂ„ste göra i verkliga uppgifter. Denna konflikt mellan den fina enkla snygga abstraktionen du fick och den fruktansvĂ€rt komplexa implementeringen av den underliggande hĂ„rdvaran Ă€r dĂ€r alla gör sina egna kompromisser. Jag har en bok om multiprocessorer och synkronisering, och en dag skulle jag skriva ett kapitel om datastrukturer i java.util.samtidig. Om du tittar pĂ„ dem, saker som hoppa över listor Det hĂ€r Ă€r fantastiska konstverk. (Redaktörens anmĂ€rkning: de som Ă€r bekanta med Java-sprĂ„ket bör Ă„tminstone ta en titt pĂ„ implementeringen ConcurrentSkipListMap, Du kan titta pĂ„ lĂ€nkarna för API Đž kĂ€llkod). Men ur min synvinkel vore det oansvarigt att visa dem för eleverna, eftersom en sĂ„dan datastruktur Ă€r en sorts kille pĂ„ en cirkus som springer pĂ„ lina över en björngrop. Om du Ă€ndrar ens en liten detalj kommer hela strukturen att kollapsa. Den hĂ€r koden Ă€r vĂ€ldigt snabb och elegant bara för att den Ă€r perfekt skriven, men den minsta förĂ€ndringen kommer att leda till fullstĂ€ndigt misslyckande. Om jag ger den hĂ€r koden som exempel till eleverna kommer de genast att sĂ€ga: Jag kan ocksĂ„ göra det hĂ€r! Och dĂ„ kommer nĂ„got plan att krascha eller en kĂ€rnreaktor explodera, och det kommer att vara mitt fel att jag inte gav dem för mycket information vid rĂ€tt tidpunkt.

Alexey: NÀr jag var lite yngre försökte jag mÄnga gÄnger studera kÀllkoden till Doug Lee, till exempel, java.util.samtidig, eftersom det Àr öppen kÀllkod Àr det vÀldigt lÀtt att hitta det och försöka förstÄ vad som hÀnder dÀr. Det blev inte sÀrskilt bra: ofta Àr det helt oklart varför Doug bestÀmde sig för att göra nÄgot pÄ det hÀr sÀttet, nÀr alla andra gör det annorlunda. Hur förklarar du dessa saker för dina elever? Finns det nÄgot sÀrskilt korrekt sÀtt att beskriva de specifika detaljerna i en hardcore-algoritm, till exempel? Hur gör du det?

Maurice: TeckningslÀrare har en klyscha som de kommer ihÄg först: om du vill rita som Picasso mÄste du först lÀra dig att rita enkla realistiska bilder, och först nÀr du kÀnner till reglerna kan du börja bryta mot dem. Börjar man direkt med att bryta mot reglerna fÄr man en enda röra. Först lÀr jag eleverna hur man skriver enkel, korrekt kod utan att oroa sig för prestanda. Jag sÀger att det finns komplexa tidsproblem som lurar hÀr, sÄ oroa dig inte för cacher, oroa dig inte för minnesmodeller, bara se till att allt fungerar som det ska. Det Àr svÄrt nog redan: Modern programmering Àr inte lÀtt i sig, sÀrskilt för nya studenter. Och nÀr de har en intuition om hur man skriver korrekta program, sÀger jag: titta pÄ dessa tvÄ spinlock-implementationer: den ena Àr vÀldigt lÄngsam och den andra Àr inte heller sÀrskilt bra, men redan bÀttre. Men matematiskt Àr dessa tvÄ algoritmer desamma. Faktum Àr att en av dem anvÀnder cache-lokalitet. En av dem snurrar pÄ lokalt cachad data, och den andra utför upprepade operationer genom bussen. Du kan inte skriva effektiv kod om du inte förstÄr den, om du inte vet hur du ska bryta abstraktionen och titta pÄ den underliggande strukturen. Men du kommer inte att kunna börja göra det direkt. Det finns mÀnniskor som börjar göra det hÀr direkt och tror pÄ sitt eget geni, oftast slutar det illa eftersom de inte förstÄr principerna. Ingen ritar som Picasso eller skriver program som Doug Lee, nybörjare frÄn universitetet, under sin första vecka. Det tar Är att nÄ denna kunskapsnivÄ.

Alexey: Det visar sig att du delar problemet i tvÄ delar: den första Àr korrekthet, den andra Àr prestanda?

Maurice: Precis. Och i den ordningen. En del av problemet Àr att nya elever inte inser att korrekthet Àr svÄrt att uppnÄ. De sÀger vid första anblicken: detta Àr uppenbarligen korrekt, det ÄterstÄr bara att pÄskynda det. SÄ ibland berÀttar jag för dem om en inneboende felaktig algoritm som om den vore korrekt.

Hur man lÀr eleverna hur man skriver komplex flertrÄdig kod

Alexei: Bara för att se om de kan kÀnna tricket?

Maurice: Jag varnar dig alltid i förvÀg att jag ibland kommer pÄ fel algoritmer. Man ska inte lura folk. Jag föreslÄr att de Àr skeptiska till informationen. Om jag sÀger nÄgot och sÀger: "titta, det hÀr Àr uppenbarligen korrekt" - det hÀr Àr en signal om att de nÄgonstans försöker lura dig, och du bör börja stÀlla frÄgor. DÀrefter försöker jag uppmuntra eleverna att fortsÀtta stÀlla frÄgor och sedan frÄga: "vad hÀnder om vi lÀmnar allt som det Àr?". Och de ser omedelbart felet. Men att övertyga eleverna om att de behöver oroa sig för korrektheten Àr svÄrare Àn det verkar vid första anblicken. MÄnga av dessa elever kommer med programmeringserfarenhet i gymnasiet, nÄgra har redan fÄtt jobb och programmerat dÀr, och de Àr alla fulla av sjÀlvförtroende. Det hÀr Àr nÄgot militÀrt: du mÄste först Àndra deras tankesÀtt för att övertyga dem att tÄlmodigt nÀrma sig lösningen av nya problem. Eller kanske Àr det som buddhistiska munkar: först lÀr de sig att resonera om korrekthet, och nÀr de vÀl förstÄr sÀtten att resonera om korrekthet fÄr de gÄ till nÀsta nivÄ och börja oroa sig för prestation.

Alexey: Det vill sÀga, ibland visar du elever som inte fungerar exempel, tack vare vilka du fÄr feedback som visar om de förstÄr kÀrnan i problemet, om de kan hitta fel kod och fel resultat. Tja, hur brukar elever behaga eller uppröra?

Maurice: NÀstan alltid hittar eleverna till slut felet. Om de söker för lÄngsamt stÀller jag ledande frÄgor och hÀr Àr det viktigt att förstÄ att om de aldrig blir lurade kommer de att tanklöst börja uppfatta dina ord som den yttersta sanningen. Sedan blir de uttrÄkade och somnar nÀr de lÀser Facebook pÄ sin bÀrbara dator under lektionen. Men nÀr du i förvÀg lÄter dem veta att de kommer att bli lurade och att de kommer att se dumma ut om de inte kÀnner tricket, blir de mycket mer vaksamma. Det hÀr Àr bra pÄ mÄnga sÀtt. Jag skulle vilja att eleverna inte bara ifrÄgasÀtter sin förstÄelse av frÄgan, utan ocksÄ ifrÄgasÀtter lÀrarens auktoritet. Tanken Àr att eleven nÀr som helst kan rÀcka upp handen och sÀga: Jag tycker att det du nyss sa Àr fel. Det Àr ett viktigt lÀromedel. Jag vill inte att nÄgon av eleverna ska sitta och tyst tÀnka för sig sjÀlva: allt detta verkar vara fullstÀndigt nonsens, men det Àr för lÀskigt att rÀcka upp handen, och han Àr faktiskt professor, sÄ allt han sÀger Àr sant. DÀrför, om de varnas i förvÀg för att inte allt som berÀttas nödvÀndigtvis Àr sant, har de ett incitament att Àgna mer uppmÀrksamhet Ät materialet. Jag sÀger uttryckligen att det Àr okej att rÀcka upp handen och stÀlla frÄgor. Din frÄga kan lÄta dum eller naiv, men det Àr ofta sÄ de bÀsta frÄgorna kommer till.

Alexei: Mycket intressant. Vanligtvis har mÀnniskor nÄgon form av psykologisk barriÀr som hindrar dem frÄn att stÀlla en frÄga till professorn. Speciellt om det Àr mycket folk i rummet, och alla Àr rÀdda att diskutera din dumma frÄga kommer att ta tid för alla dessa mÀnniskor. Finns det nÄgra knep för att hantera detta?

Maurice: Jag stannar ofta upp och stÀller de klassiska frÄgorna. Kommer nÄgot pÄstÄende att vara korrekt, eller hur skulle de lösa problemet som diskuteras. Detta Àr ett viktigt steg, sÀrskilt i början av en session, nÀr folk skÀms över att sÀga ens den minsta sak. Du stÀller en frÄga till eleverna och sÀger inget mer. Det blir tyst, alla spÀnner sig lite, spÀnningen vÀxer, sÄ plötsligt bryter nÄgon ihop, bryter ihop och sÀger svaret. SÄ du utvecklar situationen: det blir svÄrare och obekvÀmt att tiga Àn att svara! Detta Àr ett vanligt pedagogiskt knep. Varje lÀrare i vÀrlden borde veta hur man gör detta.

Alexey: Nu har vi en bra titel för den hÀr intervjun: "det Àr lÀttare att svara Àn att förbli tyst."

Vitaly: LÄt mig frÄga dig en sak till. Du arbetar med topologiska bevis. Hur blev du ens involverad i det hÀr, för distribuerad berÀkning och topologi Àr helt olika saker!

Maurice: Det finns en dold relation dÀr. NÀr jag var student och lÀste matematik lÀste jag ren matematik. Jag hade inget verkligt intresse för datorer förrÀn i slutet av mina studier och jag befann mig i ett akut behov av att söka jobb. Som student studerade jag algebraisk topologi. MÄnga Är senare, medan du arbetar pÄ ett problem kallas "k-Set Agreement Problem", jag anvÀnde grafer för att modellera problemet och, som det verkade dÄ, hittade jag en lösning. Det var bara att sÀtta sig ner och gÄ runt grafen. Försök att hitta ett passande svar pÄ denna graf. Men min algoritm fungerade inte: det visade sig att han alltid skulle springa i cirklar. TyvÀrr kunde inget av detta förklaras pÄ grafteorins formella sprÄk, det sprÄk som alla datavetare kan. Och sÄ kom jag ihÄg att vi för mÄnga Är sedan, Àven i topologiklasser, anvÀnde konceptet "enkelt komplex", som Àr en generalisering av grafer till högre dimensioner. Sedan frÄgade jag mig sjÀlv: vad hÀnder om vi omformulerar problemet i termer av förenklade komplex? Detta blev nyckeln. Genom att anvÀnda en kraftfullare formalism blir problemet plötsligt mycket enklare. Folk kÀmpade med det lÀnge och anvÀnde grafer, men de kunde inte göra nÄgonting. Och Àven nu kan de inte - det korrekta svaret var inte algoritmen, utan beviset pÄ omöjligheten att lösa problemet. Det vill sÀga, en sÄdan algoritm existerar helt enkelt inte. Men alla bevis pÄ omöjlighet baseras antingen pÄ enkla komplex, eller pÄ saker som folk lÄtsas inte betrakta som enkla komplex. FrÄn det faktum att du kallade nÄgot med ett nytt namn, förlorar det inte sin essens.

Vitaliy: Det visar sig att du bara hade tur?

Maurice: Förutom tur Àr det ocksÄ beredskap. Det betyder att du inte ska glömma de "onyttiga" sakerna du har lÀrt dig tidigare. Ju mer onödiga saker du lÀr dig, desto fler insikter kommer du att kunna extrahera nÀr du stÄr inför ett nytt problem. Den hÀr typen av intuitiv mönstermatchning Àr viktig eftersom... LÄt oss bara sÀga att det Àr en kedja: i början upptÀckte jag att grafer inte riktigt fungerade eller inte fungerade alls, det pÄminde mig om nÄgot frÄn Ätta Är sedan och studentÄr nÀr vi studerade alla dessa enkla komplex. Detta gjorde i sin tur att jag kunde hitta min gamla topologilÀrobok och ladda tillbaka den i mitt huvud. Men om det inte vore för den gamla kunskapen, hade jag aldrig gjort nÄgra framsteg med att lösa det ursprungliga problemet.

Ny upplaga av The Art of Multiprocessor Programming

Alexei: Du sa nĂ„gra ord om din bok. Det Ă€r förmodligen inte den största hemligheten att du skrev vĂ€rldens mest kĂ€nda bok om multithreading, "Konsten att programmera flera processorer". Hon Ă€r redan cirka 11 Ă„r och sedan dess bara kommit ut  reviderad nytryckning. Kommer det en andra upplaga?

Maurice: Det Ă€r bra att du frĂ„gade! Det kommer att vara vĂ€ldigt snart, om tre mĂ„nader eller sĂ„. Det finns tvĂ„ författare till, vi har lagt till mycket mer material, förbĂ€ttrat avsnittet om gaffel/anslutningsparallellism, skrivit ett avsnitt om MapReduce, lagt till en massa nya saker och slĂ€ngt ut onödiga – nĂ„got som var vĂ€ldigt intressant i skrivande stund första upplagan, men finns inte lĂ€ngre idag. Det visade sig vara en mycket seriöst reviderad bok.

Alexei: Allt har redan gjorts, det ÄterstÄr bara att slÀppa?

Maurice: Ett par kapitel behöver fortfarande bearbetas. VÄr förlÀggare (jag tror att han hatar oss redan) försöker fortfarande förmedla att vi borde arbeta snabbare. Vi ligger lÄngt efter schemat. Teoretiskt sett kunde vi ha gjort den hÀr boken ett par Är tidigare.

Alexey: Finns det nÄgon chans att fÄ en ny version av boken innan jul?

Maurice: Det Àr vÄrt mÄl! Men jag har förutspÄtt seger sÄ mÄnga gÄnger att ingen tror mig lÀngre. Du ska nog inte lita för mycket pÄ mig i den hÀr frÄgan heller.

Alexei: Det hÀr Àr i alla fall fantastiska nyheter. Jag gillade verkligen den första upplagan av boken. Man kan sÀga att jag Àr ett fan.

Maurice: Jag hoppas att den nya utgÄvan kommer att vara vÀrd din entusiasm, tack!

Hur transaktionsminnet uppfanns

Vitaly: NÀsta frÄga handlar om transaktionsminne. SÄvitt jag förstÄr Àr du en pionjÀr pÄ detta omrÄde, du uppfann det i en tid dÄ ingen tÀnkte pÄ sÄdant. Varför valde du att flytta in i det hÀr omrÄdet? Varför var transaktioner viktiga för dig? Trodde du att de en dag kommer att förkroppsligas i jÀrn?

Maurice: Jag har kÀnt till transaktioner sedan min forskarutbildning.

Vitaliy: Ja, men det hÀr Àr olika transaktioner!

Maurice: Jag arbetade med Elliott Moss om icke-blockerande sophÀmtning. VÄrt problem var att vi ville atomiskt Àndra nÄgra ord i minnet och dÄ skulle algoritmerna bli vÀldigt enkla, och Ätminstone nÄgra av dem skulle bli mer effektiva. AnvÀnder sig av jÀmföra-and-swap för load-link/store-conditionalsom tillhandahÄlls av den parallella arkitekturen Àr det möjligt att göra nÄgot, men det Àr vÀldigt ineffektivt och fult eftersom du skulle behöva hantera nivÄer av inriktning. Jag vill Àndra minnesorden och jag mÄste byta eftersom jag bara kan Àndra en pekare, sÄ de mÄste peka pÄ nÄgon form av katalogliknande struktur. Vi pratade om hur bra det skulle vara om vi kunde Àndra hÄrdvaran sÄ att den kunde spela in samtidigt. Elliot verkar ha mÀrkt detta: om du tittar pÄ cachekoherensprotokollen tillhandahÄller de redan det mesta av den funktionalitet som krÀvs. I en optimistisk transaktion kommer cachekoherensprotokollet att mÀrka nÀrvaron av en tidskonflikt och cachen kommer att bli ogiltig. Vad hÀnder om du spekulativt startar en transaktion pÄ din cache och anvÀnder koherensprotokollets mekanismer för att upptÀcka konflikter? Den spekulativa hÄrdvaruarkitekturen var lÀtt att designa. SÄ vi skrev det allra första publicering om transaktionsminne. Samtidigt byggde företaget jag arbetade för, Digital Equipment Corporation, en ny 64-bitars processor som heter Alpha. Och sÄ gick jag och höll en presentation för Alphas utvecklingsteam om vÄrt underbara transaktionsminne, och de frÄgade: vilka ytterligare intÀkter kommer vÄrt företag att fÄ om vi lÀgger allt detta direkt i processorn? Och jag hade absolut inget svar pÄ det, eftersom jag Àr teknolog, jag Àr ingen marknadsföringsspecialist. Jag hade verkligen ingenting att sÀga. De var inte sÀrskilt imponerade över att jag inte visste nÄgonting.

Vitaly: Miljarder! SĂ€g bara "miljarder"!

Maurice: Ja, det Àr vad jag borde ha sagt. Nu, i en tid prÀglad av startups och allt det dÀr, vet jag hur man skriver en affÀrsplan. Att man kan ljuga lite om storleken pÄ den potentiella vinsten. Men pÄ den tiden verkade det naivt, sÄ jag sa bara: "Jag vet inte." Om du tittar pÄ historien om publikationen om transaktionsminne, kommer du att mÀrka att det efter ett Är fanns flera referenser till den, och sedan i ungefÀr tio Är citerade ingen den hÀr artikeln alls. Citaten dök upp runt 2004, nÀr Àkta multi-core kom till. NÀr folk upptÀckte att skriva parallell kod kunde tjÀna pengar började ny forskning. Ravi Rajwar skrev en artikel, som pÄ nÄgot sÀtt introducerade mainstream till konceptet transaktionsminne. (Redaktörens anmÀrkning: Den hÀr artikeln har en andra version slÀppt 2010 och Àr fritt tillgÀnglig som PDF). Helt plötsligt insÄg folk hur exakt allt detta kan anvÀndas, hur de kan pÄskynda traditionella algoritmer med lÄs. Ett bra exempel pÄ nÄgot som tidigare verkade vara bara ett intressant akademiskt problem. Och ja, om du hade frÄgat mig vid det tillfÀllet om jag trodde att allt detta skulle vara viktigt i framtiden, sÄ hade jag sagt: visst, men exakt nÀr Àr inte klart. Kanske om 50 Är? I praktiken visade det sig att det bara var ett decennium. Det Àr vÀldigt trevligt nÀr man gör nÄgot, och pÄ bara tio Är mÀrker folk det.

Varför det Àr vÀrt att forska inom omrÄdet distribuerad datoranvÀndning

Vitaly: Om vi ​​pratar om ny forskning, vad skulle du rĂ„da lĂ€sare - distribuerad datoranvĂ€ndning eller multi-core och varför? 

Maurice: Det Ă€r lĂ€tt att fĂ„ en flerkĂ€rnig processor nu för tiden, men det Ă€r svĂ„rare att sĂ€tta upp ett riktigt distribuerat system. Jag började arbeta med dem för att jag ville göra nĂ„got annat Ă€n min doktorsexamen. Det hĂ€r Ă€r rĂ„det jag alltid ger till nybörjare: skriv inte en uppföljande avhandling – försök gĂ„ i en ny riktning. Dessutom Ă€r multithreading enkelt. Jag kan experimentera pĂ„ min egen gaffel som körs pĂ„ en bĂ€rbar dator utan att gĂ„ upp ur sĂ€ngen. Men om jag plötsligt skulle vilja skapa ett riktigt distribuerat system sĂ„ skulle jag behöva göra mycket arbete, locka studenter och sĂ„ vidare. Jag Ă€r en lat person och skulle föredra att arbeta pĂ„ multi-core. Att experimentera med flerkĂ€rniga system Ă€r ocksĂ„ lĂ€ttare Ă€n att experimentera med distribuerade, för Ă€ven i ett dumt distribuerat system finns det för mĂ„nga faktorer att kontrollera.

Vitaliy: Vad gör du nu och forskar om blockchain? Vilka artiklar bör du vara uppmÀrksam pÄ först?

Maurice: Dök upp nyligen mycket bra artikelsom jag skrev med min elev, Vikram Saraf, specifikt för Tokenomcs-konferenser i Paris för tre veckor sedan. Det hÀr Àr en artikel om anvÀndbara distribuerade system dÀr vi föreslÄr att göra Ethereum flertrÄdigt. Nu exekveras smarta kontrakt (kod som körs pÄ blockkedjan) sekventiellt. Vi skrev en artikel tidigare som talade om ett sÀtt att anvÀnda spekulativa transaktioner för att pÄskynda processen. Vi tog mÄnga idéer frÄn programvarans transaktionsminne och sa att om du gör dessa idéer till en del av den virtuella Etherium-maskinen sÄ kommer allt att fungera snabbare. Men för detta Àr det nödvÀndigt att det inte finns nÄgra datakonflikter i kontrakten. Och dÄ antog vi att det verkligen inte finns nÄgra sÄdana konflikter i verkligheten. Men vi har inte haft en chans att ta reda pÄ det. Sedan kom det upp för oss att vi hade nÀstan tio Är av verklig kontraktshistoria pÄ vÄra hÀnder, sÄ vi lastade av Etherium-blockkedjan och undrade: vad skulle hÀnda om dessa historiska rekord löpte parallellt? Vi hittade en markant ökning av hastigheten. Under Etheriums tidiga dagar ökade hastigheten vÀldigt mycket, men idag Àr allt nÄgot mer komplicerat, eftersom det finns fÀrre kontrakt och sannolikheten för konflikter kring data som krÀver serialisering har blivit högre. Men allt detta Àr experimentellt arbete med verkliga historiska data. Det fina med blockchain Àr att den kommer ihÄg allt för alltid, sÄ du kan gÄ tillbaka i tiden och studera vad som skulle hÀnda om vi anvÀnde andra algoritmer för att köra koden. Hur folk tidigare skulle ha gillat vÄr nya idé. Det Àr mycket lÀttare och trevligare att göra sÄdan forskning, för det finns en sak som övervakar allt och registrerar allt. Detta liknar redan nÄgot mer sociologi Àn utvecklingen av algoritmer.

Har utvecklingen av algoritmer avstannat och hur man kan leva vidare

Vitaly: Dags för den sista teoretiska frÄgan! KÀnns det som att framstegen inom konkurrenskraftiga datastrukturer krymper för varje Är? Tror du att vi har nÄtt en platÄ i vÄr förstÄelse av datastrukturer, eller kommer det att bli nÄgra stora förbÀttringar? Kanske finns det nÄgra smarta idéer som helt kan förÀndra allt?

Maurice: Vi kan ha nĂ„tt en platĂ„ i datastrukturer för traditionella arkitekturer. Men datastrukturer för nya arkitekturer Ă€r fortfarande ett mycket lovande omrĂ„de. Om du vill skapa datastrukturer för till exempel hĂ„rdvaruacceleratorer, sĂ„ skiljer sig GPU-datastrukturer mycket frĂ„n CPU-datastrukturer. NĂ€r du designar datastrukturer för blockkedjor mĂ„ste du hasha bitar av data och sedan lĂ€gga in dem i nĂ„got som merkle trĂ€d, för att förhindra förfalskning. Det har varit en kraftig ökning av aktiviteten pĂ„ det hĂ€r omrĂ„det den senaste tiden, mĂ„nga gör ett mycket bra jobb. Men jag tror att det som kommer att hĂ€nda Ă€r att nya arkitekturer och nya applikationer kommer att leda till nya datastrukturer. Äldre applikationer och traditionell arkitektur – kanske finns det inte sĂ„ mycket utrymme för forskning lĂ€ngre. Men om du gĂ„r utanför allfartsvĂ€garna och tittar över kanten sĂ„ ser du galna saker som mainstreamen inte tar pĂ„ allvar – det Ă€r dĂ€r alla spĂ€nnande saker faktiskt hĂ€nder.

Vitaly: DĂ€rför, för att vara en mycket kĂ€nd forskare, var jag tvungen att uppfinna min egen arkitektur 🙂

Maurice: Du kan "stjÀla" nÄgon annans nya arkitektur - det verkar mycket lÀttare!

Jobbar pÄ Brown University

Vitaliy: Kan du berÀtta mer om Brown UniversitydÀr jobbar du? Det Àr inte mycket kÀnt om honom i informationstekniksammanhang. Mindre Àn om MIT, till exempel.

Maurice: Brown University Ă€r ett av de Ă€ldsta universiteten i USA. Jag tror bara Harvard Ă€r lite Ă€ldre. Brown Ă€r en del av den sk murgrönaligor, som Ă€r en samling av Ă„tta Ă€ldsta universitet. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. Det hĂ€r Ă€r ett slags gammalt, litet och lite aristokratiskt universitet. Fokus ligger pĂ„ liberal arts utbildning. Det Ă€r inte att försöka vara som MIT, MIT Ă€r vĂ€ldigt specialiserat och tekniskt. Brown Ă€r ett bra stĂ€lle att studera rysk litteratur eller klassisk grekisk och, naturligtvis, datavetenskap. Den fokuserar pĂ„ heltĂ€ckande utbildning. De flesta av vĂ„ra elever gĂ„r till Facebook, Apple, Google, sĂ„ jag tror att vĂ„ra elever inte har nĂ„gra problem med att fĂ„ jobb i branschen. Jag gick till jobbet pĂ„ Brown för innan dess arbetade jag pĂ„ Digital Equipment Corporation i Boston. Det var ett företag som uppfann mĂ„nga intressanta saker, men förnekade vikten av persondatorer. Ett företag med ett svĂ„rt öde, vars grundare en gĂ„ng var unga revolutionĂ€rer, de lĂ€rde sig ingenting och glömde ingenting, och dĂ€rför övergick de frĂ„n revolutionĂ€rer till reaktionĂ€rer inom ungefĂ€r ett decennium. De gillade att skĂ€mta om att persondatorer hörde hemma i ett garage – ett övergivet garage, förstĂ„s. Det Ă€r ganska uppenbart att de förstördes av mer flexibla företag. NĂ€r det stod klart att företaget hade problem ringde jag min vĂ€n frĂ„n Brown, som ligger ungefĂ€r en timme frĂ„n Boston. Jag ville inte lĂ€mna Boston dĂ„, eftersom andra universitet inte hade mĂ„nga lediga platser. Det var en tid dĂ„ det inte fanns sĂ„ mĂ„nga lediga tjĂ€nster inom datavetenskap som nu. Och Brown hade ett jobb, jag behövde inte flytta hemifrĂ„n, jag behövde inte flytta min familj och jag trivs verkligen med att bo i Boston! SĂ„ jag tog beslutet att gĂ„ till Brown. Jag gillar det. Eleverna Ă€r jĂ€ttebra, sĂ„ jag har aldrig ens försökt gĂ„ nĂ„gon annanstans. PĂ„ ett sabbatsĂ„r jobbade jag pĂ„ Microsoft i ett Ă„r, gick pĂ„ Technion i Haifa i ett Ă„r och nu ska jag vara pĂ„ Algorand. Jag har mĂ„nga kollegor överallt och dĂ€rför Ă€r den fysiska placeringen av vĂ„ra klassrum inte sĂ„ viktig. Men det viktigaste Ă€r eleverna, de Ă€r bĂ€st hĂ€r. Jag har aldrig försökt gĂ„ nĂ„gon annanstans, för jag Ă€r ganska nöjd hĂ€r.

Men trots Browns berömmelse i USA Àr han förvÄnansvÀrt okÀnd utomlands. Som ni kan se gör jag nu mitt bÀsta för att rÀtta till denna situation.

Skillnaden mellan universitets- och företagsforskning

Vitaliy: Okej, nÀsta frÄga handlar om digital utrustning. Du var forskare dÀr. Vad Àr skillnaden mellan att arbeta pÄ FoU-avdelningen pÄ ett stort företag och att arbeta pÄ ett universitet? Vilka Àr fördelarna och nackdelarna?

Maurice: Jag har varit pĂ„ Microsoft i tjugo Ă„r och arbetat nĂ€ra mĂ€nniskor pĂ„ Sun Microsystems, Oracle, Facebook och nu Algorand. UtifrĂ„n allt detta vill jag sĂ€ga att det gĂ„r att bedriva förstklassig forskning bĂ„de i företag och pĂ„ universitetet. Den viktiga skillnaden Ă€r att man i ett företag arbetar med kollegor. Om jag plötsligt har en idĂ© till ett projekt som Ă€nnu inte finns, mĂ„ste jag övertyga mina kamrater om att det hĂ€r Ă€r en bra idĂ©. Om jag Ă€r pĂ„ Brown, dĂ„ kan jag sĂ€ga till mina elever: lĂ„t oss arbeta med antigravitation! De gĂ„r antingen till nĂ„gon annan eller tar sig an projektet. Ja, jag kommer att behöva hitta finansiering, jag kommer att behöva skriva en bidragsansökan och sĂ„ vidare. Det kommer i alla fall alltid att vara mĂ„nga elever, och man kommer att kunna fatta beslut ensidigt. Men pĂ„ universitetet kommer du med största sannolikhet inte att arbeta med mĂ€nniskor pĂ„ din nivĂ„. I en vĂ€rld av industriell forskning mĂ„ste du först övertyga alla om att ditt projekt Ă€r vĂ€rt att anta. Jag kan inte bestĂ€lla nĂ„got frĂ„n nĂ„gon. Och bĂ„da dessa sĂ€tt att arbeta Ă€r vĂ€rdefulla, för om du jobbar med nĂ„got riktigt galet och dina kollegor Ă€r svĂ„ra att övertyga, Ă€r det lĂ€ttare att övertyga doktorander – speciellt om du betalar dem. Om du jobbar med nĂ„got som krĂ€ver mycket erfarenhet och djup expertis, dĂ„ behöver du kollegor som kan sĂ€ga "nej, det rĂ„kar vara sĂ„ att jag förstĂ„r det hĂ€r omrĂ„det och din idĂ© Ă€r dĂ„lig, det kommer ingenting av det." Detta Ă€r mycket anvĂ€ndbart nĂ€r det gĂ€ller att slösa tid. Och Ă€ven, om du i industrilaboratorier spenderar mycket tid pĂ„ att skriva rapporter, sĂ„ spenderar du den hĂ€r tiden pĂ„ universitetet med att hitta pengar. Om jag vill att studenter ska kunna resa nĂ„gonstans mĂ„ste jag hitta pengarna till det nĂ„gon annanstans. Och ju viktigare du Ă€r pĂ„ universitetet, desto mer tid mĂ„ste du lĂ€gga pĂ„ att samla in pengar. SĂ„, nu vet du vad jag jobbar som - en professionell tiggare! Som en av de dĂ€r munkarna som gĂ„r runt med en donationsskylt. Generellt sett kompletterar dessa tvĂ„ aktiviteter varandra. Det Ă€r dĂ€rför jag försöker leva och stĂ„ stadigt i bĂ„da vĂ€rldarna.

Vitaliy: Det verkar som att det Àr svÄrare att övertyga ett företag Àn att övertyga andra forskare.

Maurice: SvÄrare, och mycket mer. Dessutom Àr det olika inom olika omrÄden: nÄgon bedriver fullskalig forskning och nÄgon Àr fokuserad pÄ sitt Àmne. Om jag gick till Microsoft eller Facebook och sa, lÄt oss göra antigravitation, skulle de knappast uppskatta det. Men om jag sa exakt samma sak till mina doktorander sÄ skulle de med största sannolikhet komma igÄng direkt, fast nu skulle jag redan ha problem - för du mÄste hitta pengar till detta. Men sÄ lÀnge du vill göra nÄgot i linje med företagets mÄl kan det företaget vara ett vÀldigt bra stÀlle att göra research pÄ.

Hydra och SPTDC

Vitaliy: Mina frÄgor nÀrmar sig sitt slut, sÄ lÄt oss prata lite om den kommande resan till Ryssland.

Maurice: Ja, jag ser fram emot att ÄtervÀnda till Petersburg.

Alexey: Det Ă€r en stor Ă€ra för mig att du Ă€r med oss ​​i Ă„r. Det Ă€r andra gĂ„ngen du Ă€r i St. Petersburg, eller hur?

Maurice: Redan den tredje!

Alexei: FörstÄr, men SPTDC - exakt den andra. Senast skolan kallades SPTCC, nu har vi Àndrat en bokstav (C till D, Concurrent to Distributed) för att betona att det finns fler omrÄden relaterade till distribuerad datoranvÀndning i Är. Kan du sÀga nÄgra ord om dina presentationer pÄ Skolan och Hydra konferenser?

Maurice: PÄ skolan vill jag prata om grunderna i blockchain och vad du kan göra med det. Jag skulle vilja visa att blockkedjor Àr vÀldigt lika den flertrÄdiga programmering vi Àr bekanta med, men med sina egna nyanser, och det Àr viktigt att förstÄ dessa skillnader. Om du gör fel i en vanlig webbapplikation Àr det bara irriterande. Om du skriver buggykod i en finansapp kommer nÄgon definitivt att stjÀla alla dina pengar. Detta Àr en helt annan nivÄ av ansvar och konsekvenser. Jag ska prata lite om proof-of-work, smarta kontrakt, transaktioner mellan olika blockkedjor.

Andra talare kommer att arbeta bredvid mig, som ocksÄ har nÄgot att sÀga om blockkedjan, och vi kom överens om att samordna oss sjÀlva sÄ att vÄra berÀttelser passar bra. Men till ingenjörsföredraget vill jag ge en tydlig förklaring till en bred publik varför man inte ska tro pÄ allt man hör om blockkedjor, varför blockkedjor Àr ett bra omrÄde, hur det passar in med andra vÀlkÀnda idéer och varför vi ska se djÀrvt in i framtiden.

Alexey: Dessutom vill jag sÀga att detta inte kommer att Àga rum i formatet av en trÀff eller en anvÀndargrupp, som det var för tvÄ Är sedan. Vi bestÀmde oss för att göra en liten konferens nÀra skolan. Anledningen Àr att efter att ha pratat med Peter Kuznetsov insÄg vi att skolan Àr begrÀnsad till endast hundra, kanske 120 personer. Samtidigt finns det mÄnga ingenjörer som vill prata med dig, delta i rapporter och Àr allmÀnt intresserade av Àmnet. För detta har vi skapat en ny konferens kallas Hydra. Förresten, nÄgon aning om varför Hydra?

Maurice: För att den kommer att ha sju högtalare? Och de kan skÀras av huvudet, och nya högtalare kommer att vÀxa i deras stÀlle?

Alexey: Bra idé för att odla nya högtalare. Men egentligen finns det en historia hÀr. Minns legenden om Odysseus, dÀr han var tvungen att segla mellan Scylla och Charybdis? Hydra Àr nÄgot som Charybdis. Historien Àr att jag en gÄng talade pÄ en konferens och pratade om multithreading. Det fanns bara tvÄ spÄr pÄ denna konferens. I början av reportaget sa jag till publiken i salen att de nu har ett val mellan Scylla och Charybdis. Mitt andedjur Àr Charybdis, eftersom Charybdis har mÄnga huvuden, och mitt tema Àr multitrÄdning. SÄ hÀr visas namnen pÄ konferenserna.

Vi har i alla fall slut pÄ bÄde frÄgor och tid. SÄ tack vÀnner för en bra intervju och vi ses pÄ SPTDC och Hydra 2019!

Det kommer att vara möjligt att fortsÀtta kommunikationen med Maurice pÄ konferensen Hydra 2019, som hÄlls den 11-12 juli 2019 i St. Petersburg. Han kommer med en rapport "Blockkedjor och framtiden för distribuerad datoranvÀndning". Biljetter kan köpas pÄ den officiella webbplatsen.

KĂ€lla: will.com

LĂ€gg en kommentar