- eier av to. Den fÞrste er for arbeid med (Brown University) og den andre, nyere, - (Virginia Tech University). Dijkstra-prisen gis for arbeid hvis betydning og innflytelse har vÊrt synlig i minst ti Är og Maurice er Äpenbart en av de mest kjente spesialistene pÄ feltet. Han jobber for tiden som professor ved Brown University og har en rekke prestasjoner som er et avsnitt langt. Han forsker for tiden pÄ blokkjede i sammenheng med klassisk distribuert databehandling.
Tidligere hadde Maurice allerede kommet til Russland for SPTCC () og gjorde et utmerket mĂžte med JUG.ru Java-utviklerfellesskapet i St. Petersburg ().
Denne habraposten er et flott intervju med Maurice Herlihy. Den diskuterer fĂžlgende emner:
- Samspill mellom akademia og industri;
- Foundation for Blockchain Research;
- Hvor kommer banebrytende ideer fra? PÄvirkning av popularitet;
- PhD under veiledning av Barbara Liskov;
- Verden venter pÄ multi-core;
- En ny verden gir nye problemer. NVM, NUMA og arkitekturhacking;
- Kompilatorer vs prosessorer, RISC vs CISC, delt minne vs meldingsoverfĂžring;
- Kunsten Ä skrive skjÞr flertrÄdskode;
- Hvordan lÊre elevene Ä skrive kompleks flertrÄdskode;
- Ny utgave av boken «The Art of Multiprocessor Programming»;
- Hvordan transaksjonsminne ble oppfunnet;
- Hvorfor det er verdt Ă„ forske innen distribuert databehandling;
- Har utviklingen av algoritmer stoppet, og hvordan gÄ videre;
- Jobber ved Brown University;
- Forskjellen mellom forskning ved et universitet og innenfor et selskap;
- Hydra og SPTDC.
Intervjuet er utfĂžrt av:
Vitaly Aksenov â for tiden post-doc ved IST Ăsterrike og ansatt ved Institutt for datateknologi ved ITMO University. UtfĂžrer forskning innen teori og praksis av konkurrerende datastrukturer. FĂžr han jobbet ved IST, mottok han sin doktorgrad fra Paris Diderot University og ITMO University under veiledning av professor Peter Kuznetsov.
Alexey Fedorov - Produsent ved JUG Ru Group, et russisk selskap som arrangerer konferanser for utviklere. Alexey deltok i utarbeidelsen av mer enn 50 konferanser, og CV-en hans inkluderer alt fra stillingen som utviklingsingeniĂžr hos Oracle (JCK, Java Platform Group) til stillingen som utvikler hos Odnoklassniki.
Vladimir Sitnikov - IngeniÞr hos Netcracker. Ti Ärs arbeid med ytelsen og skalerbarheten til NetCracker OS, programvare som brukes av telekomoperatÞrer for Ä automatisere administrasjonsprosesser for nettverk og nettverksutstyr. Interessert i ytelsesproblemer i Java og Oracle Database. Forfatter av mer enn et dusin ytelsesforbedringer i den offisielle PostgreSQL JDBC-driveren.
Samspill mellom akademia og industri
Alexey: Maurice, du har jobbet i et akademisk miljÞ i veldig lang tid, og det fÞrste spÞrsmÄlet er samspillet mellom den akademiske og industrielle sfÊren. Kan du snakke om hvordan interaksjonene mellom dem har endret seg i det siste? Hva skjedde for 20-30 Är siden og hva skjer nÄ?
Maurice: Jeg har alltid prÞvd Ä jobbe tett med kommersielle selskaper fordi de har interessante problemer. De er som regel ikke sÊrlig interessert verken i Ä publisere resultatene sine eller i detaljerte forklaringer av problemene deres til verdenssamfunnet. De er bare interessert i Ä lÞse disse problemene. Jeg jobbet for slike selskaper en stund. Jeg brukte fem Är pÄ fulltid i et forskningslaboratorium hos Digital Equipment Corporation, som pleide Ä vÊre et stort dataselskap. Jeg jobbet en dag i uken hos Sun, hos Microsoft, hos Oracle, og jobbet litt pÄ Facebook. NÄ skal jeg ut pÄ sabbatspermisjon (en professor ved et amerikansk universitet har lov til Ä ta en slik permisjon i ett Är omtrent en gang hvert sjette Är) og jobbe i , dette er et kryptovalutaselskap i Boston. à jobbe tett med bedrifter har alltid vÊrt en fornÞyelse fordi det er slik man lÊrer om nye og interessante ting. Du kan til og med vÊre den fÞrste eller andre personen som publiserer en artikkel om et valgt emne, i stedet for Ä jobbe med gradvis Ä forbedre lÞsninger pÄ problemer som alle andre allerede jobber med.
Alexey: Kan du fortelle oss mer detaljert hvordan dette skjer?
Maurice: SelvfÞlgelig. Du vet, da jeg jobbet i Digital Equipment Corporation, jeg og Elliot Moss, oppfant vi transaksjonsminne. Det var en veldig fruktbar periode da alle begynte Ä interessere seg for informasjonsteknologi. Parallellisme, inkludert, selv om flerkjernesystemer ennÄ ikke eksisterte. I lÞpet av Sun- og Oracle-dagene jobbet jeg mye med parallelle datastrukturer. PÄ Facebook jobbet jeg med blokkjedeprosjektet deres, som jeg ikke kan snakke om, men jeg hÄper det blir offentlig snart. Neste Är, pÄ Algorand, skal jeg jobbe i en forskningsgruppe som studerer smarte kontrakter.
Alexey: Blockchain har blitt et veldig populÊrt tema de siste Ärene. Vil dette hjelpe forskningen din? Kanskje vil det gjÞre det lettere Ä fÄ tilskudd eller gi tilgang til ressurser fra bedrifter som opererer i bransjen?
Maurice: Jeg har allerede mottatt et lite stipend fra Ethereum Foundation. Populariteten til blockchain er svÊrt nyttig for Ä inspirere studenter til Ä jobbe med dette feltet. De er veldig interessert i det og er spente pÄ Ä engasjere seg, men noen ganger skjÞnner de ikke at forskningen som hÞres spennende ut pÄ utsiden viser seg Ä involvere hardt arbeid. Jeg er imidlertid veldig spent pÄ Ä bruke all denne mystikken rundt blockchain for Ä tiltrekke studenter.
Men det er ikke alt. Jeg sitter i advisory board for flere blockchain-oppstart. Noen av dem kan lykkes, noen av dem kanskje ikke, men det er alltid veldig interessant Ä se ideene deres, studere dem og gi rÄd til folk. Det mest spennende er nÄr du advarer folk mot Ä gjÞre noe. Mange ting virker som en god idé i begynnelsen, men er de virkelig?
Foundation for Blockchain Research
Vitaly: Noen tror at fremtiden ligger hos blokkjeden og dens algoritmer. Og andre sier at det bare er en ny boble. Kan du dele din mening om denne saken?
Maurice: Mye av det som skjer i blokkjedeverdenen er feil, noe er bare svindel, mye er overvurdert. Jeg tror imidlertid det er et solid vitenskapelig grunnlag for disse studiene. Det faktum at blockchain-verdenen er full av ideologiske forskjeller viser nivÄet av spenning og dedikasjon. PÄ den annen side er ikke dette spesielt gunstig for vitenskapelig forskning. NÄ, hvis du publiserer en artikkel som snakker om manglene til en bestemt algoritme, er den resulterende reaksjonen ikke alltid fullstendig vitenskapelig. Ofte kaster folk ut fÞlelsene sine. Jeg tror at denne typen spenning i dette omrÄdet kan virke attraktiv for noen, men til syvende og sist er det virkelige vitenskapelige og tekniske problemer som mÄ tas opp. Det er mye informatikk her.
Vitaly: SĂ„ du prĂžver Ă„ legge grunnlaget for blockchain-forskning, ikke sant?
Maurice: Jeg prÞver Ä legge grunnlaget for en solid, vitenskapelig og matematisk forsvarlig disiplin. Og en del av problemet er at noen ganger mÄ du motsi noen av de altfor harde posisjonene til andre mennesker og ignorere dem. Noen ganger spÞr folk hvorfor jeg jobber i et omrÄde der bare terrorister og narkotikasmuglere er interessert. En slik reaksjon er like meningslÞs som oppfÞrselen til fÞlgere som blindt gjentar ordene dine. Jeg tror sannheten ligger et sted i midten. Blockchain vil ha en dyp innvirkning pÄ samfunnet og den globale Þkonomien. Men dette vil sannsynligvis ikke skje takket vÊre moderne teknologi. Moderne teknologier vil utvikle seg og det som vil bli kalt blockchain i fremtiden vil bli svÊrt viktig. Det ser kanskje ikke engang ut som moderne blokkjeder, det er et Äpent spÞrsmÄl.
Hvis folk finner opp nye teknologier, vil de fortsette Ä kalle det blockchain. Jeg mener, akkurat som dagens Fortran ikke har noe med Fortran-sprÄket fra 1960-tallet Ä gjÞre, men alle fortsetter Ä kalle det Fortran. Samme for UNIX. Det som kalles "blockchain" vil fortsatt gjÞre sin revolusjon. Men jeg tviler pÄ at denne nye blokkjeden vil vÊre noe som alle liker Ä bruke i dag.
Hvor kommer banebrytende ideer fra? PÄvirkning av popularitet
Alexey: Har populariteten til blockchain fÞrt til nye resultater fra et vitenskapelig synspunkt? Mer samhandling, flere studenter, flere bedrifter i omrÄdet. Er det allerede noen resultater fra denne Þkningen i popularitet?
Maurice: Jeg ble interessert i dette da noen ga meg en offisiell flyer for et selskap som nettopp hadde samlet inn ganske mye penger. Den skrev om , som jeg er mer enn kjent med. Det som sto i brosjyren var tydeligvis teknisk feil. De som skrev alt dette forsto egentlig ikke modellen bak problemet... og likevel samlet dette selskapet inn mye penger. Deretter byttet selskapet i det stille ut denne brosjyren med en mye mer korrekt versjon - og jeg vil ikke si hva navnet pÄ dette selskapet var. De er fortsatt rundt og har det veldig bra. Denne hendelsen overbeviste meg om at for det fÞrste er blockchain ganske enkelt en form for distribuert databehandling. For det andre var inngangsterskelen (i hvert fall for fire Är siden) ganske lav. Menneskene som jobbet i dette feltet var veldig energiske og intelligente, men de leste ikke vitenskapelige artikler. De prÞvde Ä gjenoppfinne kjente ting og gjorde det feil. I dag har dramatikken blitt mindre.
Alexey: Dette er veldig interessant, for for noen Är siden hadde vi en annen trend. Det er litt som frontend-utvikling, da nettleserbaserte frontend-utviklere gjenoppfant hele teknologier som allerede var populÊre i back-end: bygge systemer, kontinuerlig integrasjon, slike ting.
Maurice: Jeg er enig. Men dette er ikke overraskende, for virkelig banebrytende ideer kommer alltid utenfor det etablerte samfunnet. Etablerte forskere, spesielt etablerte akademikere, vil neppe gjÞre noe virkelig banebrytende. Det er lett Ä skrive en artikkel til neste konferanse om hvordan du forbedret resultatene av tidligere arbeid litt. GÄ pÄ en konferanse, kom sammen med venner, snakk om de samme tingene. Og menneskene som bryter inn med banebrytende ideer kommer nesten alltid utenfra. De kan ikke reglene, de kan ikke sprÄket, men likevel... Hvis du er innenfor et etablert fellesskap, rÄder jeg deg til Ä ta hensyn til nye ting, til noe som ikke passer inn i helhetsbildet. PÄ en mÄte kan man forsÞke Ä kombinere eksterne, mer flytende utviklinger med metoder som vi allerede forstÄr. Som et fÞrste skritt, prÞv Ä etablere et vitenskapelig grunnlag, og endre det sÄ slik at det kan brukes pÄ nye gjennombruddsideer. Jeg tror at blockchain er flott for Ä vÊre en frisk, forstyrrende idé.
Alexey: Hvorfor tror du dette skjer? Fordi folk "utenfor" ikke har noen spesifikke barrierer iboende i samfunnet?
Maurice: Det er et mÞnster pÄ gang her. Hvis du leser historien til impresjonistene innen maleri og kunst generelt, sÄ avviste kjente kunstnere en gang impresjonismen. De sa det var litt barnslig. En generasjon senere ble denne tidligere avviste kunstformen standarden. Det jeg ser i mitt felt: oppfinnerne av blockchain var ikke interessert i makt, i Þkende publikasjoner og sitasjonsindeks, de ville bare gjÞre noe bra. SÄ de satte seg ned og begynte Ä gjÞre det. De manglet en viss mengde teknisk dybde, men det kan fikses. Det er mye vanskeligere Ä komme opp med nye kreative ideer enn Ä korrigere og styrke utilstrekkelig modne. Takket vÊre disse oppfinnerne har jeg nÄ noe Ä gjÞre!
Alexey: Dette ligner pÄ forskjellen mellom startups og eldre prosjekter. Vi arver mange begrensninger for tenkning, barrierer, spesielle krav og sÄ videre.
Maurice: En god analogi er distribuert databehandling. Tenk pÄ blockchain som om det var en oppstart og distribuert databehandling som et stort, etablert selskap. Distribuert databehandling er i ferd med Ä bli anskaffet og slÄtt sammen med blockchain.
PhD under veiledning av Barbara Liskov
Vitaly: Vi har fortsatt mange spÞrsmÄl! Vi undersÞkte bakgrunnen din og kom over et interessant faktum om doktorgraden din. Ja, dette var lenge siden, men det ser ut til Ä vÊre et viktig tema. Du mottok doktorgraden din under veiledning av deg selv ! Barbara er veldig godt kjent i programmeringssprÄkmiljÞet, og en veldig kjent person generelt. Det er logisk at forskningen din var innen programmeringssprÄk. Hvordan byttet du til parallell databehandling? Hvorfor bestemte du deg for Ä endre tema?
Maurice: PÄ den tiden sÄ Barbara og gruppen hennes bare pÄ distribuert databehandling, som var en veldig ny idé. Det var ogsÄ de som sa at distribuert databehandling var tull og at datamaskiner som kommuniserte med hverandre var meningslÞst. Et av problemene som tas opp i distribuert databehandling som skiller det fra sentralisert databehandling er feiltoleranse. Etter mye forskning bestemte vi oss for at et distribuert programmeringssprÄk for databehandling mÄtte ha noe som atomtransaksjoner fordi du aldri kan vÊre sikker pÄ at en ekstern samtale vil lykkes. NÄr du har transaksjoner, oppstÄr problemet med samtidighetshÄndtering. Deretter var det mye arbeid med Ä skaffe svÊrt parallelle transaksjonelle datastrukturer. SÄ, da jeg ble uteksaminert, dro jeg til og begynte Ä lete etter et emne Ä jobbe med. Det gikk opp for meg at databehandling har flyttet fra individuelle datamaskiner til nettverk av datamaskiner. Multiprosessorer ville vÊre en naturlig fortsettelse av fremgangen - ordet "multi-core" eksisterte ennÄ ikke. Jeg tenkte: hva tilsvarer atomtransaksjoner for et flerkjernesystem? Definitivt ikke vanlige transaksjoner fordi de er for store og tunge. Og det var slik jeg kom pÄ ideen og det var slik jeg kom opp med hele den ventefrie synkroniseringen. Dette var et forsÞk pÄ Ä svare pÄ spÞrsmÄlet om hva som er analogen til atomtransaksjoner for et multiprosessorsystem med delt minne. Ved fÞrste Þyekast kan dette verket se helt annerledes ut, men faktisk er det en fortsettelse av samme tema.
Verden venter pÄ multi-core
Vitaly: Du nevnte at det pÄ den tiden var veldig fÄ multi-core datamaskiner, ikke sant?
Maurice: De var bare ikke der. Det var flere sÄkalte symmetriske multiprosessorer, som i utgangspunktet var koblet til samme buss. Dette fungerte ikke veldig bra fordi hver gang et nytt selskap opprettet noe lignende, ville Intel gi ut en enkelt prosessor som var overlegen multiprosessoren.
Alexey: Betyr ikke dette at det i de gamle tider var mer et teoretisk studium?
Maurice: Det var ikke en teoretisk studie, men snarere en spekulativ studie. Alt dette handlet ikke om Ä jobbe med mange teoremer; snarere la vi frem hypoteser om en arkitektur som ikke eksisterte pÄ den tiden. Det er dette forskning er til for! Ingen bedrift ville ha gjort noe slikt; det hele var noe fra en fjern fremtid. Faktisk var dette tilfellet frem til 2004, da ekte flerkjerneprosessorer dukket opp. Fordi prosessorer overopphetes, kan du gjÞre prosessoren enda mindre, men du kan ikke gjÞre den raskere. PÄ grunn av dette var det en overgang til flerkjernearkitekturer. Og sÄ betydde det at det plutselig var bruk for alle konseptene vi hadde utviklet tidligere.
Alexey: Hvorfor tror du flerkjerneprosessorer dukket opp fÞrst pÄ XNUMX-tallet? SÄ hvorfor er det sÄ sent?
Maurice: Dette skyldes maskinvarebegrensninger. Intel, AMD og andre selskaper er veldig flinke til Ă„ Ăžke prosessorhastigheten. NĂ„r prosessorene pĂ„ et tidspunkt ble smĂ„ nok til at de ikke lenger kunne Ăžke klokkehastigheten fordi prosessorene ville begynne Ă„ brenne ut. Du kan gjĂžre dem mindre, men ikke raskere. Hva er i deres makt - i stedet for en veldig liten prosessor, kan de fĂ„ plass til Ă„tte, seksten eller trettito prosessorer i samme volum av kabinettet, der tidligere bare Ă©n kunne passe. NĂ„ har du multithreading og rask kommunikasjon mellom dem fordi de deler cacher. Men du kan ikke tvinge dem til Ă„ lĂžpe fortere â det er en helt bestemt fartsgrense. De fortsetter Ă„ forbedre seg litt etter litt, men ikke sĂ„ mye lenger. Fysikkens lover sto i veien for forbedringer.
En ny verden gir nye problemer. NUMA, NVM og arkitekturhacking
Alexey: HÞres veldig fornuftig ut. Med nye multi-core prosessorer kom nye problemer. Forventet du og kollegene dine disse problemene? Kanskje du studerte dem pÄ forhÄnd? I teoretiske studier er det ofte ikke sÄ lett Ä forutsi slike ting. NÄr problemer oppsto, hvordan oppfylte de forventningene dine og kollegene dine? Eller var de helt nye, og du og kollegene dine mÄtte bruke mye tid pÄ Ä lÞse problemer slik de dukket opp?
Vitaly: Jeg vil legge til Alexeys spÞrsmÄl: spÄdde du prosessorarkitekturen riktig mens du studerte teorien?
Maurice: Ikke 100 %. Men jeg synes kollegene mine og jeg har gjort en god jobb med Ă„ forutsi multikjerner med delt minne. Jeg tror vi riktig forutsĂ„ vanskelighetene med Ă„ utvikle parallelle datastrukturer som opererer uten lĂ„ser. Slike datastrukturer har vĂŠrt viktige for mange applikasjoner, selv om ikke alle, men ofte er det man egentlig trenger en ikke-lĂ„sende datastruktur. Da vi fant opp dem var det mange som hevdet at dette var tull, at alt fungerte bra med lĂ„ser. Vi spĂ„dde ganske godt at det ville vĂŠre ferdige lĂžsninger for mange programmeringsproblemer og datastrukturproblemer. Det var ogsĂ„ mer komplekse problemer, som f.eks â ujevn tilgang til minne. Faktisk ble de ikke engang vurdert fĂžr flerkjerneprosessorer ble oppfunnet fordi de var for spesifikke. ForskermiljĂžet jobbet med spĂžrsmĂ„l som generelt var forutsigbare. Noen maskinvareproblemer knyttet til spesifikke arkitekturer mĂ„tte vente i kulissene - faktisk utseendet til disse arkitekturene. For eksempel jobbet ingen egentlig med GPU-spesifikke datastrukturer fordi GPUer ikke eksisterte den gang. Selv om det er gjort mye arbeid med , var disse algoritmene klare til bruk sĂ„ snart passende maskinvare ble tilgjengelig. Det er imidlertid umulig Ă„ forutse alt.
Alexey: Hvis jeg forstÄr det riktig, er NUMA et slags kompromiss mellom kostnader, ytelse og noen andre ting. Noen ideer om hvorfor NUMA kom ut sÄ sent?
Maurice: Jeg tror at NUMA eksisterer pÄ grunn av problemer med maskinvaren som brukes til Ä produsere minne: jo lenger unna komponentene er, jo tregere er det Ä fÄ tilgang til dem. PÄ den annen side er den andre verdien av denne abstraksjonen minneensartethet. SÄ en av egenskapene til parallell databehandling er at alle abstraksjonene er litt Þdelagte. Hvis tilgangen var helt ensartet, ville all hukommelse vÊrt like langt, men dette er Þkonomisk, og kanskje til og med fysisk, umulig. Derfor oppstÄr denne konflikten. Hvis du skriver programmet ditt som om minnet var ensartet, vil det mest sannsynlig vÊre riktig. I den forstand at det ikke vil gi feil svar. Men opptredenen hennes vil heller ikke fange stjernene fra himmelen. PÄ samme mÄte hvis du skriver Uten Ä forstÄ cachehierarkiet vil selve blokkeringen vÊre riktig, men du kan glemme ytelsen. PÄ en mÄte mÄ du skrive programmer som lever pÄ toppen av en veldig enkel abstraksjon, men du mÄ overliste menneskene som ga deg den abstraksjonen: du mÄ vite at under abstraksjonen er det et eller annet hierarki av minne, at det er en buss mellom deg og dette minnet, og sÄ videre. Dermed er det en viss konflikt mellom individuelt nyttige abstraksjoner, noe som fÞrer oss til veldig konkrete og pragmatiske problemer.
Vitaly: Hva med fremtiden? Kan du forutsi hvordan prosessorer vil utvikle seg neste gang? Det er en ide om at et av svarene er transaksjonsminne. Du har sikkert noe annet pÄ lager.
Maurice: Det er et par store utfordringer fremover. Den ene er at sammenhengende hukommelse er en fantastisk abstraksjon, men den begynner Ä bryte sammen i spesielle tilfeller. SÄ, for eksempel, er NUMA et levende eksempel pÄ noe der du kan fortsette Ä late som om det eksisterer enhetlig hukommelse. Egentlig nei, produktivitet vil fÄ deg til Ä grÄte. PÄ et tidspunkt vil arkitekter mÄtte forlate ideen om en enkelt minnearkitektur; du kan ikke late som for alltid. Det vil vÊre behov for nye programmeringsmodeller som er enkle nok Ä bruke og kraftige nok til Ä gjÞre den underliggende maskinvaren effektiv. Dette er et veldig vanskelig kompromiss, for hvis du viser programmerere arkitekturen som faktisk brukes i maskinvaren, blir de gale. Det er for komplisert og ikke bÊrbart. Hvis du presenterer et grensesnitt som er for enkelt, blir ytelsen dÄrlig. Derfor vil mange svÊrt vanskelige avveininger mÄtte gjÞres for Ä gi nyttige programmeringsmodeller som kan brukes for virkelig store flerkjerneprosessorer. Jeg er ikke sikker pÄ at andre enn en spesialist er i stand til Ä programmere pÄ en 2000-kjerners datamaskin. Og med mindre du driver med veldig spesialisert eller vitenskapelig databehandling eller kryptografi eller noe sÄnt - er det fortsatt ikke helt klart hvordan du gjÞr det riktig.
Et annet lignende omrĂ„de er spesialiserte arkitekturer. Grafikkakseleratorer har eksistert lenge, men de har blitt noe av et klassisk eksempel pĂ„ hvordan du kan ta en spesialisert type databehandling og kjĂžre den pĂ„ en dedikert brikke. Dette gir sine egne utfordringer: hvordan du kommuniserer med en slik enhet, hvordan du programmerer den. Jeg har nylig jobbet med problemer i omrĂ„det . Du tar en liten prosessor og limer den til en stor del av minnet slik at minnet kjĂžrer med L1 cache-hastighet og deretter kommuniserer med en enhet som f.eks. â prosessoren er opptatt med Ă„ laste nye oppgaver inn i minnekjernen din. Ă designe datastrukturer og kommunikasjonsprotokoller for denne typen ting er et annet interessant eksempel. SĂ„ tilpassede prosessorer og maskinvare vil fortsette Ă„ se forbedringer i en stund.
Alexey: Hva med ikke-flyktig minne ()?
Maurice: à , det er nok et godt eksempel! NVM vil i stor grad endre mÄten vi ser pÄ ting som datastrukturer. Ikke-flyktig minne, pÄ en mÄte, lover Ä virkelig fÄ fart pÄ ting. Men det vil ikke gjÞre livet enklere fordi de fleste prosessorer, cacher og registre fortsatt er flyktige. NÄr du starter etter en krasj, vil ikke tilstanden og minnetilstanden din vÊre nÞyaktig den samme som fÞr krasj. Jeg er veldig takknemlig for de som jobber pÄ NVM - det vil vÊre mye for forskere Ä gjÞre i lang tid for Ä finne ut riktighetsforhold. Beregninger er korrekte hvis de kan overleve et krasj der innholdet i cacher og registre gÄr tapt, men hovedminnet forblir intakt.
Kompilatorer vs prosessorer, RISC vs CISC, delt minne vs meldingsoverfĂžring
Vladimir: Hva synes du om "kompilatorer vs. prosessorer"-dilemmaet fra et instruksjonssett synspunkt? La meg forklare for de som ikke vet: Hvis vi gÄr til skjevt minne eller noe lignende, kan vi bruke et veldig enkelt sett med kommandoer og be kompilatoren generere kompleks kode som kan dra nytte av de nye fordelene. Eller vi kan gÄ den andre veien: implementere komplekse instruksjoner og be prosessoren om Ä omorganisere instruksjonene og gjÞre andre manipulasjoner med dem. Hva synes du om det?
Maurice: Jeg har egentlig ikke noe svar pÄ det spÞrsmÄlet. Denne debatten har pÄgÄtt i fire tiÄr. Det var en tid da mellom et sett med kommandoer og borgerkriger ble utkjempet av et sett med kommandoer. En stund vant RISC-folket, men sÄ bygget Intel om motorene sine slik at et redusert sett med instruksjoner ble brukt internt, og hele settet ble eksportert eksternt. Dette er sannsynligvis et tema der hver ny generasjon mÄ finne sine egne kompromisser og ta sine egne beslutninger. Det er veldig vanskelig Ä forutsi hvilke av disse tingene som vil bli bedre. SÄ enhver spÄdom jeg kommer med vil vÊre sann i en viss tid, og deretter falsk igjen en stund, og sÄ sann igjen.
Alexey: Hvor vanlig er det for industrien at noen ideer vinner i flere tiÄr og taper i de neste? Finnes det andre eksempler pÄ slike periodiske endringer?
Maurice: PÄ temaet distribuert databehandling er det folk som tror pÄ og folk som tror pÄ . Til Ä begynne med, i distribuert databehandling, betyr parallell databehandling at meldinger sendes. SÄ oppdaget noen at det var mye lettere Ä programmere med delt minne. Den motsatte siden sa at delt minne er for komplisert, fordi det krever lÄser og lignende, sÄ det er verdt Ä flytte til sprÄk der ingenting annet enn meldingsoverfÞring bare eksisterer. Noen sÄ pÄ hva som kom ut av dette og sa, "wow, denne meldingsimplementeringen ser mye ut som delt minne, fordi du lager mange og mange av disse smÄ modulene, de sender meldinger til hverandre, og de alle "La oss lage en bedre database for delt minne!" Alt dette gjentas om og om igjen, og det er umulig Ä si at en av partene definitivt har rett. En av sidene vil alltid dominere fordi sÄ snart en av dem nesten vinner, finner folk opp igjen og igjen mÄter Ä forbedre den andre pÄ.
Kunsten Ä skrive sprÞ flertrÄdskode
Alexey: Dette er veldig interessant. For eksempel, nÄr vi skriver kode, uansett hvilket programmeringssprÄk, mÄ vi vanligvis lage abstraksjoner som celler som kan leses og skrives. Men faktisk, pÄ et fysisk nivÄ, kan dette se ut som Ä sende en melding over en maskinvarebuss mellom forskjellige datamaskiner og andre enheter. Det viser seg at arbeid skjer pÄ begge abstraksjonsnivÄer samtidig.
Maurice: Det er helt sant at delt minne er bygget pĂ„ meldingsoverfĂžring â busser, cacher og sĂ„ videre. Men det er vanskelig Ă„ skrive programmer ved Ă„ bruke meldingsoverfĂžring, sĂ„ maskinvaren lyver bevisst og later som om du har en slags enhetlig hukommelse. Dette vil gjĂžre det lettere for deg Ă„ skrive enkle, riktige programmer fĂžr ytelsen begynner Ă„ bli dĂ„rligere. Da vil du si: det ser ut som det er pĂ„ tide Ă„ bli venner med cachen. Og sĂ„ begynner du Ă„ bekymre deg for plasseringen av cachen, og derfra gĂ„r det. PĂ„ en mĂ„te hacker du abstraksjonen: du vet at det ikke bare er flatt, enhetlig minne, og du kommer til Ă„ bruke den kunnskapen til Ă„ skrive cache-vennlige programmer. Dette er hva du mĂ„ gjĂžre i reelle problemer. Denne konflikten mellom den sĂžte, enkle, fine abstraksjonen du har fĂ„tt og den fryktelig komplekse implementeringen av den underliggende maskinvaren er der alle vil inngĂ„ sitt eget kompromiss. Jeg har en bok om multiprosessorer og synkronisering, og pĂ„ et tidspunkt skulle jeg skrive et kapittel om datastrukturer i java.util.samtidig. Hvis du ser pĂ„ dem, f.eks Dette er fantastiske kunstverk. (RedaktĂžrens merknad: De som er kjent med Java-sprĂ„ket bĂžr i det minste ta en titt pĂ„ implementeringen Concurrent SkipListMap, du kan se pĂ„ lenkene pĂ„ Đž ). Men fra mitt stĂ„sted ville det vĂŠrt uansvarlig Ă„ vise dem til studenter, for en slik datastruktur er pĂ„ en mĂ„te som en fyr i et sirkus som lĂžper pĂ„ stram tau over en bjĂžrnegrop. Hvis du endrer bare en liten detalj, vil hele strukturen kollapse. Denne koden er veldig rask og elegant bare fordi den er skrevet perfekt, men den minste endringen vil fĂžre til fullstendig feil. Hvis jeg gir denne koden som eksempel til studenter, vil de umiddelbart si: Det kan jeg ogsĂ„! Og sĂ„ vil et fly havarere eller en atomreaktor eksplodere, og jeg vil vĂŠre skyldig i Ă„ gi dem for mye informasjon til feil tid.
Alexey: Da jeg var litt yngre, prÞvde jeg mange ganger Ä studere Doug Lees kildekode, for eksempel, java.util.samtidig, fordi det er Äpen kildekode, er det veldig enkelt Ä finne og prÞve Ä forstÄ hva som skjer der. Det viste seg ikke veldig bra: ofte er det helt uklart hvorfor Doug bestemte seg for Ä gjÞre noe pÄ denne mÄten nÄr alle andre gjÞr det annerledes. Hvordan forklarer du disse tingene til elevene dine? Er det en spesiell korrekt mÄte Ä beskrive spesifikke detaljer om en hardcore-algoritme, for eksempel? Hvordan gjÞr du dette?
Maurice: TegnelÊrere har en klisjé som de husker fÞrst: Hvis du vil tegne som Picasso, mÄ du fÞrst lÊre Ä tegne enkle realistiske bilder, og fÞrst nÄr du kjenner reglene kan du begynne Ä bryte dem. Begynner du med Ä bryte reglene med en gang, havner du i et rot. FÞrst lÊrer jeg elevene hvordan de skriver enkel, riktig kode uten Ä bekymre seg for ytelsen. Det jeg sier er at det er komplekse tidsproblemer som lurer her, sÄ ikke bekymre deg for cacher, ikke bekymre deg for minnemodeller, bare sÞrg for at alt fungerer som det skal. Dette er allerede vanskelig nok: moderne programmering er ikke lett i seg selv, spesielt for nye studenter. Og nÄr de har en intuisjon om hvordan de skal skrive de riktige programmene, sier jeg: se pÄ disse to spinlock-implementeringene: den ene er veldig treg, og den andre er heller ikke veldig, men bedre. Matematisk er imidlertid de to algoritmene de samme. Faktisk bruker en av dem cache-lokalitet. En av dem kjÞrer pÄ lokalt bufrede data, og den andre utfÞrer gjentatte ganger operasjoner pÄ tvers av bussen. Du kan ikke skrive effektiv kode hvis du ikke forstÄr hva det er, og ikke vet hvordan du skal bryte abstraksjonen og se pÄ den underliggende strukturen. Men du vil ikke kunne begynne Ä gjÞre dette med en gang. Det er folk som begynner Ä gjÞre dette med en gang og tror pÄ sitt eget geni, vanligvis ender det dÄrlig fordi de ikke forstÄr prinsippene. Ingen tegner som Picasso eller skriver programmer som Doug Lee som er fersk fra college den fÞrste uken. Det tar Är Ä nÄ dette kunnskapsnivÄet.
Alexey: Det viser seg at du deler problemet i to deler: den fĂžrste er korrekthet, den andre er ytelse?
Maurice: Akkurat. Og akkurat i den rekkefÞlgen. Noe av problemet er at nye elever ikke forstÄr at korrekthet er vanskelig Ä oppnÄ. Ved fÞrste Þyekast sier de: dette er Äpenbart riktig, det gjenstÄr bare Ä fÄ fart pÄ det. SÄ noen ganger forteller jeg dem om en opprinnelig feil algoritme som om den var riktig.
Hvordan lÊre elevene Ä skrive kompleks flertrÄdskode
Alexey: Bare for Ă„ se om de kan fornemme fangsten?
Maurice: Jeg advarer alltid pÄ forhÄnd om at noen ganger vil jeg foreslÄ feil algoritmer. Du bÞr ikke lure folk. Jeg foreslÄr at de tar informasjonen med en klype salt. Hvis jeg forteller noe og sier: "se, dette er Äpenbart riktig" - dette er et signal om at et sted prÞver de Ä lure deg, og du bÞr begynne Ä stille spÞrsmÄl. Deretter prÞver jeg Ä oppmuntre elevene til Ä fortsette Ä stille spÞrsmÄl, og sÄ foreslÄr jeg: «Hva vil skje hvis vi lar ting vÊre som de er?» Og de ser umiddelbart feilen. Men Ä overbevise elevene om at de trenger Ä bekymre seg for riktigheten er mye vanskeligere enn det ser ut ved fÞrste Þyekast. Mange av disse elevene kommer med programmeringserfaring pÄ videregÄende, noen har fÄtt jobb og har drevet med programmering der, og de er alle fulle av selvtillit. Dette er noe sÄnt som hÊren: du mÄ fÞrst endre humÞret deres for Ä overbevise dem om Ä tÄlmodig nÊrme seg Ä lÞse problemer som oppstÄr. Eller kanskje det er som buddhistiske munker: fÞrst lÊrer de Ä resonnere om korrekthet, og nÄr de fÞrst forstÄr mÄtene Ä resonnere om korrekthet pÄ, fÄr de lov til Ä gÄ videre til neste nivÄ og begynne Ä bekymre seg for ytelse.
Alexey: Det vil si at noen ganger viser du studenter eksempler som ikke fungerer, takket vÊre at du fÄr tilbakemelding som viser om de forstÄr essensen av problemet, om de kan finne feil kode og feil resultat. SÄ gjÞr studenter deg vanligvis glad eller trist?
Maurice: Studenter finner nesten alltid feilen til slutt. Hvis de sÞker for sakte, stiller jeg ledende spÞrsmÄl, og her er det viktig Ä forstÄ at hvis du aldri lurer dem, vil de begynne Ä tankelÞst oppfatte ordene dine som den ultimate sannheten. Da vil de kjede seg og begynne Ä sovne mens de leser Facebook pÄ den bÊrbare datamaskinen i timen. Men nÄr du forteller dem pÄ forhÄnd at de vil bli lurt, og de vil se dumme ut hvis de ikke aner et triks, blir de mye mer ÄrvÄkne. Dette er bra pÄ forskjellige mÄter. Jeg vil gjerne at elevene ikke bare stiller spÞrsmÄl ved deres forstÄelse av problemstillingen, men ogsÄ stiller spÞrsmÄl ved lÊrerens autoritet. Tanken er at en elev nÄr som helst kan rekke opp hÄnden og si: Jeg synes det du nettopp sa er feil. Det er et viktig lÊringsverktÞy. Jeg vil ikke at noen av studentene skal sitte og tenke stille for seg selv: alt dette virker fullstendig tull, men Ä rekke opp hÄnden er for skummelt, og uansett er han professor, sÄ alt han sier er sannheten. Derfor, hvis de pÄ forhÄnd blir advart om at ikke alt som fortelles nÞdvendigvis er sant, har de et insentiv til Ä vÊre mer oppmerksom pÄ materialet. Jeg gjÞr det klart at det er greit Ä rekke opp hÄnden og stille spÞrsmÄl. SpÞrsmÄlet ditt kan hÞres dumt eller naivt ut, men det er ofte slik de beste spÞrsmÄlene oppstÄr.
Alexey: Veldig interessant. Vanligvis har folk en slags psykologisk barriere som ikke tillater dem Ä stille et spÞrsmÄl til en professor. Spesielt hvis det er mange mennesker i rommet, og alle er redde for at det Ä diskutere det dumme spÞrsmÄlet ditt vil ta all tid til disse menneskene. Finnes det noen triks for Ä takle dette?
Maurice: Jeg stopper ofte opp og stiller klassiske spÞrsmÄl. Om en pÄstand ville vÊre riktig, eller hvordan de ville lÞse problemet som diskuteres. Dette er en nÞkkelhandling, spesielt i begynnelsen av en leksjon nÄr folk er flaue over Ä si selv den minste ting. Du stiller elevene et spÞrsmÄl og sier ikke noe mer. Det er stillhet, alle blir litt anspente, spenningen vokser, sÄ er det plutselig noen som ikke tÄler det, bryter sammen og sier svaret. Slik snur du situasjonen: à fortsette Ä tie blir vanskeligere og upraktisk enn Ä svare! Dette er et standard pedagogisk triks. Hver lÊrer i verden bÞr vite hvordan dette skal gjÞres.
Alexey: NĂ„ har vi en utmerket tittel for dette intervjuet: "det er lettere Ă„ svare enn Ă„ tie."
Vitaly: La meg spĂžrre igjen. Du jobber med topologiske bevis. Hvordan ble du i det hele tatt involvert i dette, for distribuert databehandling og topologi er helt forskjellige ting!
Maurice: Det er en skjult forbindelse der. Da jeg var student og studerte matematikk, studerte jeg ren matematikk. Jeg hadde ingen reell interesse for datamaskiner fĂžr studiene tok slutt, og jeg ble mĂžtt med det presserende behovet for Ă„ sĂžke jobb. Som student studerte jeg algebraisk topologi. Mange Ă„r senere, mens du arbeider med et problem kalt , brukte jeg grafer for Ă„ modellere problemet, og som det sĂ„ ut pĂ„ den tiden, hadde jeg funnet en lĂžsning. Du mĂ„tte bare sette deg ned og gĂ„ rundt tellingen. PrĂžv Ă„ finne et passende svar pĂ„ denne grafen. Men algoritmen min fungerte ikke: det viste seg at han ville lĂžpe i sirkler for alltid. Dessverre kunne ikke alt dette forklares pĂ„ grafteoriens formelle sprĂ„k â det som alle dataforskere kjenner. Og sĂ„ husket jeg at for mange Ă„r siden, tilbake i topologitimer, brukte vi konseptet , som er en generalisering av grafer til hĂžyere dimensjoner. SĂ„ spurte jeg meg selv: hva ville skje hvis vi omformulerte problemet i form av enkle komplekser? Dette ble nĂžkkelĂžyeblikket. Ved Ă„ bruke en kraftigere formalisme blir problemet plutselig mye enklere. Folk kjempet mot det i lang tid ved Ă„ bruke grafer, men de kunne ikke gjĂžre noe. Og selv nĂ„ kan de ikke - det riktige svaret viste seg Ă„ ikke vĂŠre en algoritme, men et bevis pĂ„ umuligheten av Ă„ lĂžse problemet. Det vil si at en slik algoritme rett og slett ikke eksisterer. Men basert enten pĂ„ enkle komplekser eller pĂ„ ting som folk lot som om de ikke betraktet enkle komplekser. Bare fordi du kaller noe et nytt navn, mister det ikke essensen.
Vitaly: Det viser seg at du bare var heldig?
Maurice: Foruten flaks, er det det ogsÄ beredskap. Dette betyr at du ikke bÞr glemme de "unyttige" tingene du har lÊrt tidligere. Jo flere unyttige ting du lÊrer, jo flere ideer kan du trekke ut nÄr du stÄr overfor et nytt problem. Denne typen intuitiv mÞnstertilpasning er viktig fordi... La oss gjÞre dette, dette er en kjede: fÞrst oppdaget jeg at grafene ikke fungerte i det hele tatt eller ikke fungerte i det hele tatt, det minnet meg om noe fra hendelsene i Ätte Är siden og mine studentÄr, da vi studerte alle disse enkle kompleksene. Dette tillot meg igjen Ä finne min gamle topologi-lÊrebok og laste den inn i hodet mitt igjen. Men hvis det ikke var for den gamle kunnskapen, ville jeg aldri ha gjort noen fremskritt i Ä lÞse det opprinnelige problemet.
Ny utgave av boken "The Art of Multiprocessor Programming"
Alexey: Du sa noen ord om boken din. Det er sannsynligvis ikke den verste hemmeligheten at du skrev verdens mest kjente bok om multithreading, . Den er allerede rundt 11 Är gammel og siden den gang har den bare blitt utgitt . Kommer det en andre utgave?
Maurice: Det er bra du spurte! Det vil vĂŠre veldig snart, om tre mĂ„neder eller sĂ„. Det er to forfattere til, vi la til mye mer materiale, forbedret avsnittet om gaffel/skjĂžteparallellisme, skrev et avsnitt om MapReduce, la til mye nytt og kastet ut unĂždvendige ting â noe som var veldig interessant i skrivende stund den fĂžrste utgaven, men finnes ikke lenger i dag. Resultatet ble en svĂŠrt seriĂžst revidert bok.
Alexey: Alt er allerede gjort, alt som gjenstÄr er Ä gi det ut?
Maurice: Et par kapitler trenger fortsatt litt arbeid. Utgiveren vÄr (som jeg tror allerede hater oss) prÞver fortsatt Ä fÄ frem budskapet om at vi bÞr jobbe raskere. Vi ligger langt bak skjema. Teoretisk sett kunne vi ha gjort denne boken et par Är tidligere.
Alexey: Noen sjanse til Ä fÄ en ny versjon av boken fÞr jul?
Maurice: Dette er mÄlet vÄrt! Men jeg har spÄdd seier sÄ mange ganger at ingen tror meg lenger. Du bÞr nok ikke stole for mye pÄ meg i denne saken heller.
Alexey: I alle fall er dette fantastiske nyheter. Jeg likte den fĂžrste utgaven av boken veldig godt. Du kan si at jeg er en fan.
Maurice: Jeg hÄper den nye utgaven vil vÊre verdig din inderlige entusiasme, takk!
Hvordan transaksjonsminne ble oppfunnet
Vitaly: Det neste spÞrsmÄlet handler om transaksjonsminne. SÄ vidt jeg forstÄr er du en pioner pÄ dette feltet, du fant det opp i en tid da ingen tenkte pÄ slike ting. Hvorfor bestemte du deg for Ä flytte inn pÄ dette feltet? Hvorfor virket transaksjoner viktige for deg? Trodde du at de en dag ville bli implementert i maskinvare?
Maurice: Jeg har visst om transaksjoner siden studiedagene mine.
Vitaly: Ja, men dette er forskjellige transaksjoner!
Maurice: Jeg jobbet med Elliott Moss om ikke-blokkerende sÞppelinnsamling. Problemet vÄrt var at vi Þnsket Ä atomisk endre noen fÄ ord i minnet, og da ville algoritmene bli veldig enkle, og i det minste noen av dem ville bli mer effektive. Ved hjelp av for gitt av den parallelle arkitekturen, er det mulig Ä gjÞre noe, men det er veldig ineffektivt og stygt fordi du mÄ forholde deg til lag med indirekte. Jeg vil endre minneord og jeg mÄ bytte fordi jeg bare kan endre én peker, sÄ de mÄ peke pÄ en slags kataloglignende struktur. Vi snakket om hvor flott det ville vÊre om vi kunne endre maskinvaren slik at den kunne gjÞre samtidige opptak. Elliott ser ut til Ä ha lagt merke til dette: Hvis du ser pÄ protokoller for cache-koherens, gir de allerede det meste av den nÞdvendige funksjonaliteten. I en optimistisk transaksjon vil cache-koherensprotokollen legge merke til at det er en tidskonflikt og cachen vil bli . Hva skjer hvis du spekulativt kjÞrer en transaksjon pÄ hurtigbufferen din og bruker koherensprotokollmekanismene for Ä oppdage konflikter? Spekulativ maskinvarearkitektur var enkel Ä designe. SÄ vi skrev den om transaksjonsminne. Samtidig laget selskapet jeg jobbet for, Digital Equipment Corporation, en ny 64-bits prosessor kalt Alpha. SÄ jeg gikk og holdt en presentasjon for Alpha-utviklingsgruppen om vÄrt fantastiske transaksjonsminne, og de spurte: Hvor mye ekstra inntekt ville selskapet vÄrt fÄ hvis vi la alt dette direkte til prosessoren? Og jeg hadde absolutt ikke noe svar pÄ dette, fordi jeg er teknolog, jeg er ingen markedsfÞringsspesialist. Jeg hadde egentlig ingenting Ä svare pÄ. De var ikke veldig imponert over at jeg ikke visste noe.
Vitaly: Milliarder! Bare si milliarder!
Maurice: Ja, det er det jeg burde ha sagt. NÄ, i en tid med startups og alt mulig, vet jeg hvordan jeg skal skrive en forretningsplan. At du kan lyve litt om stÞrrelsen pÄ din potensielle fortjeneste. Men pÄ den tiden virket det naivt, sÄ jeg sa bare: "Jeg vet ikke." Hvis du ser pÄ historien til publikasjonen om transaksjonsminne, vil du legge merke til at det etter et Är var flere referanser til den, og i omtrent ti Är var det ingen som siterte denne artikkelen i det hele tatt. Sitatene dukket opp rundt 2004, da ekte multikjerner dukket opp. Da folk oppdaget at det Ä skrive parallell kode kunne tjene penger, begynte ny forskning. Ravi Rajwar , som pÄ en eller annen mÄte introduserte konseptet transaksjonsminne til mainstream. (RedaktÞrens merknad: Det er en andre versjon av denne artikkelen, utgitt i 2010 og fritt tilgjengelig ). Plutselig innsÄ folk nÞyaktig hvordan alt dette kunne brukes, hvordan tradisjonelle algoritmer med lÄser kunne akselereres. Et godt eksempel pÄ noe som tidligere virket som et interessant akademisk problem. Og ja, hvis du hadde spurt meg pÄ det tidspunktet om jeg trodde at alt dette ville bli viktig i fremtiden, ville jeg ha sagt: selvfÞlgelig, men nÞyaktig nÄr er ikke klart. Kanskje om 50 Är? I praksis viste dette seg Ä vÊre bare et tiÄr. Det er veldig hyggelig nÄr man gjÞr noe og etter bare ti Är legger folk merke til det.
Hvorfor det er verdt Ă„ forske innen distribuert databehandling
Vitaly: Hvis vi snakker om ny forskning, hva vil du rĂ„de leserne til â distribuert databehandling eller multi-core og hvorfor?
Maurice: I disse dager er det enkelt Ă„ fĂ„ en flerkjerneprosessor, men det er vanskeligere Ă„ sette opp et ekte distribuert system. Jeg begynte Ă„ jobbe med dem fordi jeg Ăžnsket Ă„ gjĂžre noe annet enn doktorgradsavhandlingen min. Dette er rĂ„det jeg alltid gir til nye studenter: ikke skriv en fortsettelse av avhandlingen din â prĂžv Ă„ gĂ„ i en ny retning. Og multithreading er ogsĂ„ enkelt. Jeg kan eksperimentere med min egen gaffel som kjĂžrer pĂ„ den bĂŠrbare datamaskinen uten Ă„ komme meg ut av sengen. Men hvis jeg plutselig ville lage et reelt distribuert system, mĂ„tte jeg gjĂžre mye arbeid, tiltrekke meg studenter og sĂ„ videre. Jeg er en lat person og vil heller jobbe med multi-core. Eksperimentering pĂ„ flerkjernesystemer er ogsĂ„ enklere enn Ă„ gjĂžre eksperimenter pĂ„ distribuerte systemer, fordi selv i et dumt distribuert system er det for mange faktorer som mĂ„ kontrolleres.
Vitaly: Hva gjÞr du nÄ, forsker pÄ blockchain? Hvilke artikler bÞr du vÊre oppmerksom pÄ fÞrst?
Maurice: Dukket nylig opp , som jeg skrev sammen med min elev, Vikram Saraf, spesielt for en samtale kl i Paris for tre uker siden. Dette er en artikkel om praktiske distribuerte systemer, der vi foreslÄr Ä gjÞre Ethereum flertrÄdet. For tiden utfÞres smarte kontrakter (kode som kjÞrer pÄ blokkjeden) sekvensielt. Vi skrev en artikkel tidligere som snakket om en mÄte Ä bruke spekulative transaksjoner for Ä fremskynde prosessen. Vi tok mange ideer fra programvaretransaksjonsminnet og sa at hvis du gjÞr disse ideene til en del av den virtuelle Etherium-maskinen, vil alt fungere raskere. Men for dette er det nÞdvendig at det ikke er datakonflikter i kontraktene. Og sÄ antok vi at i det virkelige liv er det egentlig ingen slike konflikter. Men vi hadde ingen mÄte Ä finne ut av det. SÄ gikk det opp for oss at vi hadde nesten et tiÄr med ekte kontraktshistorie pÄ hendene, sÄ vi dumpet Ethereum-blokkjeden og spurte oss selv: hva ville skje hvis disse historiske postene ble utfÞrt parallelt? Vi fant en betydelig hastighetsÞkning. I de tidlige dagene av Ethereum Þkte hastigheten veldig mye, men i dag er alt noe mer komplisert, fordi det er fÊrre kontrakter og sannsynligheten for konflikter om data som krever serialisering har blitt hÞyere. Men alt dette er eksperimentelt arbeid med ekte historiske data. Det fine med blokkjeden er at den husker alt for alltid, slik at vi kan gÄ tilbake i tid og studere hva som ville ha skjedd hvis vi hadde brukt forskjellige algoritmer for Ä kjÞre koden. Hvordan ville folk tidligere ha likt vÄr nye idé? Slik forskning er mye enklere og morsommere Ä gjÞre, fordi det er en ting som overvÄker alt og registrerer alt. Dette ligner allerede noe mer pÄ sosiologi enn pÄ utvikling av algoritmer.
Har utviklingen av algoritmer stoppet og hvordan gÄ videre?
Vitaly: Tid for det siste teoretiske spÞrsmÄlet! FÞles det som om fremgangen i konkurrerende datastrukturer avtar hvert Är? Tror du vi har nÄdd et platÄ i vÄr forstÄelse av datastrukturer eller vil det bli noen store forbedringer? Kanskje det er noen smarte ideer som kan endre alt fullstendig?
Maurice: Vi kan ha nĂ„dd et platĂ„ i datastrukturer for tradisjonelle arkitekturer. Men datastrukturer for nye arkitekturer er fortsatt et svĂŠrt lovende omrĂ„de. Hvis du vil lage datastrukturer for for eksempel maskinvareakseleratorer, sĂ„ er datastrukturene for en GPU svĂŠrt forskjellige fra datastrukturene for en CPU. NĂ„r du utvikler datastrukturer for blokkjeder, mĂ„ du hash biter av data og deretter sette dem inn i noe som , for Ă„ forhindre forfalskning. Det har vĂŠrt en bĂžlge av aktivitet pĂ„ dette omrĂ„det i det siste, med mange som har gjort veldig godt arbeid. Men jeg tror det som vil skje er at nye arkitekturer og nye applikasjoner vil fĂžre til nye datastrukturer. Eldre applikasjoner og tradisjonell arkitektur - det er kanskje ikke mye rom for utforskning lenger. Men hvis du gĂ„r utenfor allfarvei og ser utover kantene, vil du se sprĂž ting som mainstream ikke tar pĂ„ alvor â det er der alle de spennende tingene virkelig skjer.
Vitaly: Derfor, for Ä vÊre en veldig kjent forsker, mÄtte jeg finne opp min egen arkitektur :)
Maurice: Du kan "stjele" andres nye arkitektur - det virker mye enklere!
Jobber ved Brown University
Vitaly: Kan du fortelle oss mer om hvor jobber du? Ikke mye er kjent om ham i sammenheng med informasjonsteknologi. Mindre enn om MIT, for eksempel.
Maurice: Brown University er et av de eldste universitetene i USA. Jeg tror bare Harvard er litt eldre. Brown er en del av den sĂ„kalte , som er en samling av Ă„tte eldste universiteter. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. Det er liksom et gammelt, lite og litt aristokratisk universitet. Hovedfokuset er pĂ„ liberal kunstutdanning. Det prĂžver ikke Ă„ vĂŠre som MIT, MIT er veldig spesialisert og teknisk. Brown er et flott sted Ă„ studere russisk litteratur eller klassisk gresk, og selvfĂžlgelig informatikk. Den fokuserer pĂ„ omfattende utdanning. De fleste av studentene vĂ„re gĂ„r til Facebook, Apple, Google â sĂ„ jeg tror studentene vĂ„re ikke har noen problemer med Ă„ finne en jobb i bransjen. Jeg gikk pĂ„ jobb hos Brown fordi jeg tidligere hadde jobbet i Digital Equipment Corporation i Boston. Dette var et selskap som fant opp mange interessante ting, men benektet viktigheten av personlige datamaskiner. Et selskap med en vanskelig skjebne, hvis grunnleggere en gang var unge revolusjonĂŠre, de lĂŠrte ingenting og glemte ingenting, og sĂ„ gikk de fra revolusjonĂŠre til reaksjonĂŠre i lĂžpet av et dusin Ă„r. De likte Ă„ spĂžke med at personlige datamaskiner hĂžrte hjemme i garasjen - en forlatt garasje, selvfĂžlgelig. Det er helt Ă„penbart at de ble Ăždelagt av mer fleksible selskaper. Da det ble klart at selskapet var i trĂžbbel, ringte jeg en venn av meg i Brown, som ligger omtrent en time utenfor Boston. Jeg Ăžnsket ikke Ă„ forlate Boston pĂ„ den tiden fordi det ikke var mange Ă„pninger ved andre universiteter. Dette var en tid da det ikke var sĂ„ mange jobber innen informatikk som det er nĂ„. Og Brown hadde en Ă„pning, jeg trengte ikke Ă„ flytte hjem, jeg trengte ikke Ă„ flytte familien min, og jeg elsker virkelig Ă„ bo i Boston! Det var slik jeg bestemte meg for Ă„ gĂ„ til Brown. Jeg liker det. Elevene er fantastiske, sĂ„ jeg har aldri prĂžvd Ă„ gĂ„ et annet sted. I lĂžpet av sabbatsperioden jobbet jeg i Microsoft i ett Ă„r, gikk pĂ„ Technion i Haifa i et Ă„r, og nĂ„ skal jeg vĂŠre i Algorand. Jeg har mange kolleger overalt og derfor er ikke den fysiske plasseringen av klasserommene vĂ„re sĂ„ viktig. Men det viktigste er elevene, de er best her. Jeg har aldri prĂžvd Ă„ gĂ„ et annet sted fordi jeg er ganske fornĂžyd her.
Til tross for Browns berÞmmelse i USA, er han overraskende ukjent i utlandet. Som du kan se, gjÞr jeg nÄ alt jeg kan for Ä rette opp denne tilstanden.
Forskjellen mellom forskning ved et universitet og innenfor et selskap
Vitaly: Ok, neste spÞrsmÄl er om digitalt utstyr. Du var der som forsker. Hva er forskjellen mellom Ä jobbe i FoU-avdelingen i et stort selskap og Ä jobbe ved et universitet? Hva er fordelene og ulempene?
Maurice: I tjue Ă„r jobbet jeg i Microsoft, jobbet tett med ansatte i Sun Microsystems, Oracle, Facebook og nĂ„ Algorand. PĂ„ bakgrunn av alt dette vil jeg si at det er mulig Ă„ drive fĂžrsteklasses forskning bĂ„de i bedrifter og ved universiteter. Den viktige forskjellen er at man i en bedrift jobber med kollegaer. Hvis jeg plutselig har en idĂ© til et prosjekt som ennĂ„ ikke eksisterer, mĂ„ jeg overbevise mine jevnaldrende om at dette er en god idĂ©. Hvis jeg er pĂ„ Brown, kan jeg fortelle elevene mine: la oss jobbe med antigravitasjon! De vil enten reise til noen andre eller ta pĂ„ seg et prosjekt. Ja, jeg mĂ„ finne finansiering, jeg mĂ„ skrive en stipendsĂžknad og sĂ„ videre. Uansett vil det alltid vĂŠre mange studenter, og man vil kunne ta avgjĂžrelser ensidig. Men pĂ„ universitetet vil du mest sannsynlig ikke jobbe med folk pĂ„ ditt nivĂ„. I en verden av industriell forskning mĂ„ du fĂžrst overbevise alle om at prosjektet ditt er verdt Ă„ ta fatt pĂ„. Jeg kan ikke bestille noe til noen. Og begge disse mĂ„tene Ă„ jobbe pĂ„ er verdifulle, for hvis du jobber med noe virkelig sprĂžtt og kollegene dine er vanskelige Ă„ overbevise, er det lettere Ă„ overbevise avgangsstudenter â spesielt hvis du betaler dem. Hvis du jobber med noe som krever mye erfaring og dyp ekspertise, sĂ„ trenger du kollegaer som kan si «nei, det hender at jeg forstĂ„r pĂ„ dette omrĂ„det og ideen din er dĂ„rlig, den vil ikke fungere.» Dette er veldig nyttig med tanke pĂ„ Ă„ kaste bort tid. Dessuten, hvis du i industrielle laboratorier bruker mye tid pĂ„ Ă„ skrive rapporter, bruker du denne tiden pĂ„ et universitet pĂ„ Ă„ finne penger. Hvis jeg vil at studenter skal kunne gĂ„ et sted, mĂ„ jeg finne pengene til det et annet sted. Og jo viktigere posisjonen din ved universitetet er, jo mer tid mĂ„ du bruke pĂ„ Ă„ samle inn penger. SĂ„ nĂ„ vet du hva jeg jobber for - en profesjonell tigger! Som en av de munkene som gĂ„r rundt med en offerplate. Generelt utfyller disse to aktivitetene hverandre. Det er derfor jeg prĂžver Ă„ leve og holde fĂžttene pĂ„ bakken i begge verdener.
Vitaly: Det ser ut til at det er vanskeligere Ă„ overbevise et selskap enn Ă„ overbevise andre forskere.
Maurice: Vanskeligere, og mye mer. Dessuten er det forskjellig pÄ forskjellige omrÄder: noen driver fullskala forskning, mens andre fokuserer pÄ emnet sitt. Hvis jeg gikk til Microsoft eller Facebook og sa: la oss lage antigravitasjon, ville de neppe satt pris pÄ det. Men hvis jeg sa nÞyaktig det samme til avgangsstudentene mine, ville de mest sannsynlig komme i jobb med en gang, selv om jeg nÄ ville fÄ problemer - jeg mÄ tross alt finne penger til dette. Men sÄ lenge du Þnsker Ä gjÞre noe som er i trÄd med selskapets mÄl, kan det selskapet vÊre et veldig bra sted Ä forske.
Hydra og SPTDC
Vitaly: SpÞrsmÄlene mine nÊrmer seg slutten, sÄ la oss snakke litt om den kommende turen til Russland.
Maurice: Ja, jeg gleder meg til Ă„ reise tilbake til St. Petersburg.
Alexey: Jeg er beĂŠret over Ă„ ha deg med oss ââi Ă„r. Dette er andre gang du er i St. Petersburg, ikke sant?
Maurice: Allerede den tredje!
Alexey: Jeg forstĂ„r, men â definitivt den andre. Sist gang ble skolen ringt , har vi nĂ„ endret Ă©n bokstav (C til D, Concurrent to Distributed) for Ă„ understreke at det er flere omrĂ„der spesielt knyttet til distribuert databehandling i Ă„r. Kan du si noen ord om rapportene dine pĂ„ skolen og ?
Maurice: PÄ skolen vil jeg snakke om det grunnleggende om blokkjede og hva du kan gjÞre med det. Jeg vil gjerne vise at blokkjeder ligner veldig pÄ den flertrÄdede programmeringen vi er kjent med, men med sine egne nyanser, og disse forskjellene er viktige Ä forstÄ. Hvis du gjÞr en feil i en vanlig nettapplikasjon, er det bare irriterende. Hvis du skriver buggy-kode i en finansapplikasjon, vil noen definitivt stjele alle pengene dine. Dette er helt forskjellige nivÄer av ansvar og konsekvenser. Jeg skal snakke litt om proof-of-work, om smarte kontrakter, om transaksjoner mellom ulike blokkjeder.
Det vil vÊre andre foredragsholdere som jobber ved siden av meg som ogsÄ har noe Ä si om blockchain, og vi ble enige om Ä koordinere med hverandre slik at historiene vÄre passer godt sammen. Men for ingeniÞrrapporten vil jeg fortelle et bredt publikum en forstÄelig forklaring pÄ hvorfor du ikke skal tro alt du hÞrer om blokkjeder, hvorfor blokkjeder er et flott felt, hvordan det passer inn med andre kjente ideer, og hvorfor vi frimodig bÞr se til fremtiden.
Alexey: I tillegg vil jeg si at dette ikke vil finne sted i formatet til en treff- eller brukergruppe, slik det var for to Är siden. Vi bestemte oss for Ä holde en liten konferanse i nÊrheten av skolen. à rsaken er at etter Ä ha kommunisert med Peter Kuznetsov, innsÄ vi at skolen er begrenset til bare hundre, kanskje 120 personer. Samtidig er det mange ingeniÞrer som Þnsker Ä kommunisere med deg, delta pÄ presentasjoner og generelt er interessert i temaet. Derfor har vi opprettet en ny konferanse . Forresten, noen ideer om hvorfor Hydra?
Maurice: Fordi det blir syv foredragsholdere? Og hodene deres kan kuttes av, og nye hĂžyttalere vil vokse i stedet for dem?
Alexey: Flott idé for Ä utvikle nye hÞyttalere. Men faktisk er det en historie her. Husk legenden om Odyssevs, hvor han mÄtte seile mellom ? Hydra er noe sÄnt som Charybdis. Historien er at jeg en gang snakket pÄ en konferanse og snakket om multithreading. Det var bare to spor pÄ denne konferansen. I begynnelsen av reportasjen fortalte jeg publikum i salen at de nÄ har et valg mellom Scylla og Charybdis. à ndedyret mitt er Charybdis fordi Charybdis har mange hoder og temaet mitt er flertrÄding. Slik vises navn pÄ konferanser.
Vi har uansett gÄtt tom for spÞrsmÄl og tid. SÄ takk, venner, for et flott intervju, og vi sees pÄ SPTDC School og Hydra 2019!
Du kan fortsette samtalen med Maurice pÄ Hydra 2019-konferansen, som avholdes 11.-12. juli 2019 i St. Petersburg. Han kommer med en rapport . Billetter kan kjÞpes .
Kilde: www.habr.com
