"Empīriskie rezultāti ir paredzēti tikai publicēšanai, darba patiesie motīvi ir estētiski." Lieliska intervija ar Maiklu Skotu

"Empīriskie rezultāti ir paredzēti tikai publicēšanai, darba patiesie motīvi ir estētiski." Lieliska intervija ar Maiklu Skotu Maikls Skots Sākot no uz 34 gadiem kā datorzinātņu profesors Ročesteras Universitātē un savā dzimtajā Viskonsinas–Medisonas universitātē viņš bija dekāns piecus gadus. Viņš pēta un māca studentiem par paralēlo un izplatīto programmēšanu un valodu dizainu.

Pasaule Maiklu pazīst no mācību grāmatas "Programmēšanas valodas pragmatika", kas par darbu "Algoritmi mērogojamai sinhronizācijai dalītās atmiņas daudzprocesoros" saņēma Dijkstra balvu kā viens no slavenākajiem izplatītās skaitļošanas jomā. Jūs varat arī zināt viņu kā šī algoritma autoru Maikls-Skots.

Kopā ar Dagu Lī viņš izstrādāja nebloķējošus algoritmus un sinhronās rindas, kas nodrošina Java bibliotēku darbību. Īstenošana "divējādas datu struktūras" JavaSE 6 uzlaboja veiktspēju 10 reizes ThreadPoolExecutor.

Saturs:

  • Agrīna karjera, Ročesteras Universitāte. Projekts Šarlote, Lūšu valoda;
  • IEEE mērogojams koherents interfeiss, MCS bloķēšana;
  • Izdzīvošana pastāvīgi mainīgajā pasaulē;
  • Vai studenti kļūst dumjāki? Globālās tendences, internacionalizācija;
  • Efektīvu darbu ar studentiem;
  • Kā sekot līdzi jaunu kursu un grāmatu sagatavošanai;
  • Saiknes starp uzņēmējdarbību un akadēmiskajām aprindām;
  • Praktiska ideju īstenošana. MCS, MS, CLH, JSR 166, darbs ar Dagu Lī un citiem;
  • Darījumu atmiņa;
  • Jaunas arhitektūras. Darījumu atmiņas uzvara ir tuvu;
  • Negaistošā atmiņa, Optane DIMM, īpaši ātras ierīces;
  • Nākamā lielā tendence. Dubultās datu struktūras. Hidra.

Intervijas veic:

Vitālijs Aksenovs — pašlaik ir pēcdoktors IST Austria un ITMO universitātes Datortehnoloģiju katedras loceklis. Veic pētījumus konkurētspējīgu datu struktūru teorijas un prakses jomā. Pirms darba IST viņš ieguva doktora grādu Parīzes Didro universitātē un ITMO universitātē profesora Pētera Kuzņecova vadībā.

Aleksejs Fjodorovs ir producents Krievijas uzņēmumā JUG Ru Group, kas organizē konferences izstrādātājiem. Aleksejs piedalījās vairāk nekā 50 konferenču sagatavošanā, un viņa CV ir viss, sākot no izstrādes inženiera amata Oracle (JCK, Java Platform Group) līdz izstrādātāja amatam uzņēmumā Odnoklassniki.

Vladimirs Sitņikovs ir Netcracker inženieris. Desmit gadus viņš ir strādājis pie NetCracker OS veiktspējas un mērogojamības — programmatūras, ko telekomunikāciju operatori izmanto tīkla un tīkla iekārtu pārvaldības procesu automatizēšanai. Interesē Java un Oracle Database veiktspējas problēmas. Autors vairāk nekā duci veiktspējas uzlabojumu oficiālajā PostgreSQL JDBC draiverī.

Agrīna karjera, Ročesteras Universitāte. Šarlotes projekts, Lūšu valoda.

Aleksejs: Sākumā es gribēju jums pateikt, ka Krievijā mēs visi ļoti mīlam datorzinātnes, datu zinātni un algoritmus. Tas ir galīgi neķītri. Mēs visu esam izlasījuši Kormena, Leisersona un Rivestas grāmata. Tāpēc gaidāmajai konferencei, skolai un pašai šai intervijai vajadzētu būt ļoti populārai. Šai intervijai mēs saņēmām daudz jautājumu no studentiem, programmētājiem un kopienas locekļiem, tāpēc esam ļoti pateicīgi par šo iespēju. Vai datorzinātne saņem tādu pašu mīlestību ASV?

Michael: Mūsu joma ir tik daudzveidīga, tai ir tik daudz virzienu, un tā ietekmē sabiedrību tik dažādos veidos, ka man ir grūti jums sniegt galīgu atbildi. Taču fakts ir tāds, ka pēdējo 30 gadu laikā tas ir radījis milzīgas pārmaiņas biznesā, rūpniecībā, mākslā un sabiedrībā kopumā.

Виталий: Sāksim ar kaut ko tālu. Daudzās universitātēs ir kaut kas līdzīgs specializācijai vienā noteiktā jomā. Kārnegija Melona universitātei tā ir paralēlā skaitļošana, MIT — kriptogrāfija, roboti un daudzpavedienu veidošana. Vai Ročesteras Universitātē ir šāda specializācija?

Michael: Godīgi sakot, es teiktu, ka CMU un MIT specializējas visās jomās. Mūsu nodaļa vienmēr ir pievērsusi vislielāko uzmanību mākslīgajam intelektam. Puse no mums strādājošajiem ir iesaistīti mākslīgā intelekta jeb cilvēka un datora mijiedarbībā – šī daļa ir lielāka nekā citās nodaļās, un tā vienmēr ir bijusi. Bet, kad es mācījos universitātē, man nebija AI kursu, un es nekad neesmu strādājis šajā jomā. Tātad mana nodaļa specializējas problēmā, ar kuru man nav nekāda sakara. Mierinājums ir tas, ka otra mūsu nodaļas svarīgākā problēma ir paralēlā un daudzpavedienu programmēšana, tas ir, mana specializācija.

Виталий: Jūs sākāt strādāt datorzinātnēs, kad daudzpavedienu programmēšanas joma tikai parādījās. Jūsu publikāciju saraksts liecina, ka jūsu pirmie darbi bija saistīti ar diezgan plašu jautājumu loku: atmiņas pārvaldība daudzpavedienu sistēmās, sadalītas failu sistēmas, operētājsistēmas. Kāpēc tāda daudzpusība? Vai esat mēģinājuši atrast savu vietu pētnieku aprindās?

Michael: Kā students es piedalījos Šarlotes projekts Viskonsinas Universitātē, kur tika izstrādāta viena no pirmajām izplatītajām operētājsistēmām. Tur es strādāju kopā ar Rafaelu Finkelu (Rafaels Finkels) un Mārvins Solomons (Mārvins Solomons). Mans promocijas darbs bija veltīts dalīto sistēmu sistēmas programmatūras valodas izstrādei - tagad visi par to ir aizmirsuši, un paldies Dievam. Es izveidoju Lynx programmēšanas valodu, kas bija paredzēta, lai atvieglotu serveru izveidi brīvi savienotai izplatītai operētājsistēmai. Tā kā tolaik galvenokārt nodarbojos ar operētājsistēmām, pieņēmu, ka mana karjera galvenokārt būs saistīta ar tām. Taču Ročestera bija ļoti maza universitāte, un tādēļ dažādas grupas tur ļoti cieši mijiedarbojās viena ar otru. Tur nebija duci citu operētājsistēmu cilvēku, ar kuriem es varētu runāt, tāpēc visi mani kontakti bija ar cilvēkiem, kuri strādāja pilnīgi dažādās jomās. Man ļoti patika, būt vispusīgajam man ir liela priekšrocība. Ja runājam konkrēti par daudzpavedienu datu struktūrām un sinhronizācijas algoritmiem, tad pie tiem sāku strādāt pilnīgi nejauši.

IEEE mērogojams koherents interfeiss, MCS bloķēšana.

Виталий: Vai varat pastāstīt man mazliet vairāk par šo?

Michael: Šis ir smieklīgs stāsts, kuru es nekad nenogurstu stāstīt visiem. Tas notika konferencē ASPLOS Bostonā - tas bija 80. gadu beigās vai 90. gadu sākumā. Džons Melors-Krumijs (Džons Melors-Krūmijs), mūsu fakultātes absolvents. Es viņu pazinu, bet mēs iepriekš nebijām veikuši kopīgus pētījumus. Mērija Vernona (Mērija Vernona) no Viskonsinas runāja par daudzprocesoru sistēmu, ko viņi izstrādāja Viskonsīnā: Viskonsinas multikubs. Šim Multicube bija sinhronizācijas mehānisms aparatūras līmenī, ko sauca par Q on Sync Bit, un vēlāk tas tika pārdēvēts par Q on Lock Bit, jo tas izklausījās pēc Kolbija siera, kas bija vārdu spēle. Ja jūs interesē daudzpavedienu mehānismi, jūs droši vien zināt, ka Colby galu galā kļuva par IEEE Scalable Coherent Interface standarta sinhronizācijas dzinēju. Šis bija bloķēšanas mehānisms, kas izveidoja norādes no vienas kešatmiņas uz otru aparatūras līmenī, lai katrs slēdzenes turētājs zinātu, kura kārta ir pienākusi. Kad mēs ar Džonu par to dzirdējām, mēs paskatījāmies viens uz otru un teicām: kāpēc to darīt aparatūras līmenī? Vai to pašu nevar panākt, izmantojot salīdzināšanu un apmaiņu? Mēs paņēmām vienu no kladēs, kas gulēja klasē, un uzrakstījām uz tās MCS bloķēšana, kamēr Marija turpināja savu ziņojumu. Pēc tam mēs to īstenojām, eksperimentējām, ideja izrādījās veiksmīga, un mēs publicējām rakstu. Toreiz man šī tēma šķita tikai jautra uzmanības novēršana, pēc kuras plānoju atgriezties pie operētājsistēmām. Bet tad radās cita tāda paša veida problēma, un galu galā sinhronizācija, daudzpavedienu un datu struktūras kļuva par manu specialitāti. Kā redzat, tas viss notika nejauši.

Виталий: Ar MCS bloķēšanu esmu pazīstams jau sen, bet līdz šim nezināju, ka tas ir tavs darbs, un nesapratu, ka tas ir akronīms jūsu uzvārdiem.

Kā izdzīvot pastāvīgi mainīgajā pasaulē?

Aleksejs: Man ir jautājums par saistītu tēmu. Pirms 30 vai 40 gadiem dažādās specialitātēs bija lielāka brīvība. Ja vēlaties sākt karjeru daudzpavedienu vai izkliedētās sistēmās, laipni lūdzam, ja vēlaties iegūt operētājsistēmu, bez problēmām. Katrā jomā bija daudz atklātu jautājumu un maz ekspertu. Tagad ir parādījušās šauras specializācijas: nav tikai operētājsistēmu eksperti kopumā, ir speciālisti atsevišķās sistēmās. Tas pats ir ar daudzpavedienu un sadalītām sistēmām. Taču problēma ir tā, ka mūsu dzīve nav bezgalīga; Kā izdzīvot šajā jaunajā pasaulē?

Michael: Mēs neesam īpaši šajā ziņā, tas pats reiz notika citās jomās. Man paveicās, ka sāku strādāt datorzinātnēs, kad šī joma bija “pusaudžu” gados. Daži pamati jau bija ielikti, bet viss vēl bija ļoti nenobriedis. Šāda iespēja nenāk bieži. Elektrotehnika pastāv ļoti ilgu laiku, fizika vēl ilgāk, matemātika gandrīz kopš laika sākuma. Bet tas nenozīmē, ka neviens vairs nedara interesantus atklājumus matemātikā. Joprojām ir daudz atklātu problēmu, bet tajā pašā laikā ir jāmācās vairāk. Jūs pareizi atzīmējat, ka šobrīd ir daudz vairāk specializāciju nekā agrāk, taču tas nozīmē tikai to, ka mēs atrodamies tādā pašā situācijā kā lielākā daļa citu cilvēka darbības jomu.

Aleksejs: Mani interesē šī jautājuma praktiskākais aspekts. Man ir matemātikas pamats, un studiju laikā bieži apmeklēju konferences un strādāju pie dažādām zinātniskām tēmām. Es atklāju, ka neviens no klausītājiem nesaprot manus ziņojumus, un tāpat arī citu cilvēku ziņojumi bija saprotami tikai viņiem pašiem. Augsta līmeņa tēmās tas tā nav, bet, tiklīdz tu sāc kaut ko iedziļināties, tā publika vairs nevar tikt līdzi. Kā jūs ar to tiekat galā?

Michael: Ne vienmēr veiksmīgi. Nesen sagatavoju ziņojumu, kurā pārāk iedziļinājos tehniskajās detaļās. Sarunai turpinoties, kļuva skaidrs, ka lielākā daļa klausītāju mani nesaprot, tāpēc nācās pielāgoties situācijai lidojumā. Slaidus nevarēja nomainīt, tāpēc arī neizdevās – tātad, vispārīgi runājot, cenšos slaidus neizmantot. Kopumā mans padoms ir ņemt vērā savu auditoriju. Jums ir jāzina, ar ko jūs runājat, kāds ir viņu zināšanu līmenis un kas viņiem ir jādzird, lai novērtētu jūsu darbu.

Виталий: Vai jūs varētu mums dot mājienu, par ko bija šī lekcija?

Michael: Godīgi sakot, es labprātāk neizvērstu šo tēmu, lai atstātu attiecīgos cilvēkus anonīmus. Lieta ir tāda, ka mēs bieži pārāk iedziļināmies problēmas sarežģītībā, pie kuras strādājam, tāpēc runas sākumā mums kļūst grūti izskaidrot, kāpēc problēma ir interesanta un svarīga un kā tā ir saistīta ar problēmām, kuras auditorija jau zina. Pēc maniem novērojumiem, skolēniem šo prasmi apgūt ir visgrūtāk. Un tas arī bija mana nesenā ziņojuma vājais punkts. Pareizi strukturētam ziņojumam jau no paša sākuma jāatrod kontakts ar auditoriju, jāpaskaidro, kas tieši ir problēma un kā tā attiecas uz jau zināmām tēmām. Tas, cik tehnisks ir šis ievads, ir atkarīgs no auditorijas. Ja tas ir pavisam raibs, tad atskaite var būt daudzpakāpju. Ievadam jābūt pieejamam ikvienam, un beigās skaņdarbs var nespēt jums sekot līdzi, taču cilvēki, kas salīdzinoši labi pārzina jūsu jomu, varēs to izdomāt.

Vai studenti kļūst dumjāki? Globālās tendences, internacionalizācija.

Aleksejs: Jūs novērojat studentus vairākus gadu desmitus. Vai studenti kļūst dumjāki vai gudrāki katru gadu desmitu vai gadu no gada? Krievijā profesori pastāvīgi sūdzas, ka studenti ar katru gadu kļūst dumjāki, un īsti nav skaidrs, ko ar to darīt.

Michael: No mums, veciem cilvēkiem, tiešām var dzirdēt daudz negatīvisma. Zemapziņā mums ir tendence sagaidīt, ka studenti uzņems visu 30 gadu pieredzi, kas mums jau ir. Ja man ir dziļāka izpratne nekā 1985. gadā, kāpēc studentiem tās nav? Droši vien tāpēc, ka viņiem ir 20 gadi, kā jūs domājat? Manuprāt, būtiskākās izmaiņas pēdējo desmitgažu laikā ir notikušas demogrāfiskajā sastāvā: tagad mums ir ievērojami vairāk starptautisko studentu, izņemot kanādiešus. Kādreiz bija daudz kanādiešu, jo mēs esam ļoti tuvu Kanādas robežai, un studenti no turienes var ceļot mājās nedēļas nogalēs. Taču tagad Kanādā ir daudz labu universitāšu, un kanādieši dod priekšroku šeit studēt, ievērojami mazāk no tām ierodas ASV.

Aleksejs: Vai jūs domājat, ka tā ir vietēja vai globāla tendence?

Michael: Es precīzi neatceros kurš, bet kāds teica, ka pasaule ir plakana. Mūsu joma ir kļuvusi daudz starptautiskāka. ACM konferences Iepriekš tās notika tikai Amerikas Savienotajās Valstīs, pēc tam viņi nolēma tās rīkot reizi 4 gados citās valstīs, un tagad tās notiek visā pasaulē. Šīs izmaiņas skāra vēl vairāk IEEE, jo tā vienmēr ir bijusi starptautiskāka organizācija nekā ACM. Un ir programmu krēsli no Ķīnas, Indijas, Krievijas, Vācijas un daudzām citām valstīm, jo ​​tagad visur notiek daudz.

Aleksejs: Bet, iespējams, šādai internacionalizācijai ir daži negatīvi aspekti?

Michael: Es teiktu, ka visi negatīvie aspekti attiecas nevis uz tehnoloģijām, bet gan uz politiku. Kādreiz galvenā problēma bija fakts, ka ASV zog gudrākos un talantīgākos cilvēkus no pasaules valstīm. Un tagad galvenā problēma ir dažādu valstu politiskās spēles ap vīzām un imigrāciju.

Aleksejs: Tas ir, barjeras un tamlīdzīgas lietas. Tas ir skaidrs.

Vladimir: Mani personīgi interesē, kāda ir jūsu pieeja, mācot studentiem jaunu priekšmetu. Ir dažādas iespējas: vispirms varat mēģināt viņus iedvesmot izmēģināt kaut ko jaunu, vai arī varat pievērst lielāku uzmanību konkrētās tehnoloģijas darbības detaļām. Kam tu dod priekšroku?

Efektīvs darbs ar skolēniem

Aleksejs: Un kā atrast sasodīto līdzsvaru starp pirmo un otro?

Michael: Problēma ir tā, ka nodarbības ne vienmēr norit tā, kā es vēlētos. Es parasti iedodu skolēniem lasāmvielu jau iepriekš, lai viņi tajā iedziļinās, izprot pēc iespējas labāk un formulē jautājumus par tām daļām, kuras nevarēja saprast. Pēc tam klasē varat koncentrēties uz grūtākajiem brīžiem un kopīgi tos izpētīt. Tā man visvairāk patīk vadīt nodarbības. Bet, ņemot vērā slodzi, kas tagad gulstas uz studentiem, es ne vienmēr varu pārliecināties, ka viņi sagatavojas iepriekš. Līdz ar to materiāla vispārējai atstāstīšanai ir jāvelta daudz vairāk laika, nekā gribētos. Neskatoties uz to, es cenšos, lai mūsu nodarbības būtu interaktīvas. Pretējā gadījumā vienreiz ir vieglāk ierakstīt videoklipu, ko skolēni pēc tam var skatīties mājās. Dzīvo nodarbību būtība ir cilvēku mijiedarbība. Nodarbībās es labprātāk izmantoju krītu un tāfeli, nevis slaidus, izņemot atsevišķus gadījumus, kad diagramma ir pārāk sarežģīta, lai to attēlotu uz tāfeles. Pateicoties tam, man nav jāpieturas pie stingra stundu plāna. Tā kā nav stingras secības, kādā es sniedzu materiālu, tas ļauj man to pielāgot auditorijai atkarībā no saņemtajiem jautājumiem. Kopumā cenšos nodarbības veidot pēc iespējas interaktīvākas, lai materiāls, ko prezentēju, būtu atkarīgs no man uzdotajiem jautājumiem.

Vladimir: Tas ir lieliski. Manā pieredzē ir diezgan grūti panākt, lai klausītāji uzdotu jautājumus. Pat ja jūs jau iepriekš uzdodat jautājumus, neatkarīgi no tā, cik stulbi vai gudri, viņi joprojām klusē. Kā jūs ar to tiekat galā?

Michael: Tu pasmiesies, bet, ja pietiekami ilgi stāvēsi klusumā, agri vai vēlu visiem kļūs neērti un kāds uzdos jautājumu. Vai arī varat uzdot vienkāršu tehnisku jautājumu ar jā vai nē, lai noteiktu, vai cilvēki saprot tikko teikto. Piemēram, vai iepriekš minētajā piemērā ir datu sacīkstes? Kurš tā domā? Kurš domā, ka nē? Kurš vispār neko nesaprot, jo kopumā tikai puse roku pacēlās?

Виталий: Un ja tu atbildēji nepareizi, tevi izmet no klases :)

Michael: Ja jūs neko neesat atbildējis, tad jums vajadzētu uzdot jautājumu. Man ir jāsaprot, kas tieši studentam ir jāzina, lai atbildētu uz manis tikko uzdoto jautājumu. Man vajag, lai viņi man palīdzētu viņiem palīdzēt. Esmu gatavs viņiem pielāgoties, lai viņi saprastu problēmu. Bet, ja es nezinu, kas notiek viņu galvā, es to nevaru izdarīt. Un, ja jūs neliekat studentiem mieru pietiekami ilgu laiku, dažreiz viņi uzdod pareizos jautājumus, tas ir, tos, kas ļauj man redzēt, kas īsti notiek studentu galvās. 

Aleksejs: Vai šie jautājumi dažreiz noved pie idejām, par kurām jūs pats iepriekš nebijāt domājis? Vai tie ir negaidīti? Vai tie ļauj paskatīties uz problēmu jaunā gaismā?

Michael: Ir jautājumi, kas paver jaunu materiālu pasniegšanas veidu. Bieži rodas jautājumi, kas noved pie interesantām problēmām, par kurām es nebiju plānojis runāt. Studenti man bieži saka, ka man ir tendence novirzīties no tēmas, kad tas notiek. Un, pēc viņu domām, ļoti bieži šī ir nodarbības interesantākā daļa. Ļoti reti, tikai dažas reizes, studenti uzdeva jautājumus, kas rosināja jaunu virzienu pētniecībā un pārauga rakstā. Tas notiek daudz biežāk sarunās ar skolēniem, nevis stundu laikā, bet reizēm tas notika arī stundu laikā. 

Aleksejs: Tātad skolēni jums uzdeva jautājumus, uz kuru pamata pēc tam varēja publicēt rakstu?

Michael: Jā. 

Виталий: Cik bieži jums ir šīs sarunas ar studentiem? Kad viņi vēlas uzzināt vairāk par to, kas tika apskatīts nodarbības laikā?

Michael: Ar maniem maģistrantiem - visu laiku. Man viņi ir kādi 5 vai 6, un mēs ar viņiem visu laiku kaut ko apspriežam. Un šāda veida sarunas ar skolēniem, kuri vienkārši apmeklē manas nodarbības, nav īpaši izplatītas. Lai gan es vēlētos, lai tas notiktu biežāk. Man ir aizdomas, ka viņi vienkārši baidās nākt uz fakultāti darba laikā. Katru semestri dažiem studentiem izdodas pārvarēt šo psiholoģisko barjeru, un vienmēr ir ļoti interesanti ar viņiem runāt pēc stundām. Tiesa, ja visi skolēni būtu tikpat drosmīgi, man vienkārši nepietiktu laika. Tātad, iespējams, viss darbojas tā, kā vajadzētu. 

Виталий: Kā jums izdodas atrast laiku saziņai ar studentiem? Cik zinu, tad ASV skolotājiem ir daudz darba - pieteikšanās grantiem un tamlīdzīgi. 

Michael: Godīgi sakot, darbs ar studentiem ir mana darba aspekts, kas man patīk visvairāk. Tāpēc man ir pietiekami daudz motivācijas šim nolūkam. Lielāko daļu laika, ko pavadu birojā, pavadu visu veidu sanāksmēm. Tagad ir vasara, tāpēc mans grafiks ir mazāk noslogots, bet mācību gadā katru dienu no 9 līdz 17 man viss ir sapakots. Pētnieciskais darbs, apskati, granti – tam visam ir tikai vakari un nedēļas nogales. 

Kā sekot līdzi jaunu kursu un grāmatu sagatavošanai.

Aleksejs: Vai šobrīd turpini mācīt kādus kursus, kurus māci jau ilgu laiku? Kaut kas līdzīgs ievadam datorzinātnēs.

Michael: Pirmais, kas te ienāk prātā, ir programmēšanas valodu kurss. 

Aleksejs: Cik šī kursa šodienas versija atšķiras no tās, kas bija pirms 10, 20, 30 gadiem? Varbūt interesantāk šeit ir nevis konkrētā kursa detaļas, bet gan vispārīgās tendences.

Michael: Mans kurss par programmēšanas valodām bija nedaudz neparasts laikā, kad es to veidoju. Es sāku to lasīt 1980. gadu beigās, aizstājot savu kolēģi Dagu Boldvinu (Dags Boldvins). Kursa tēma bija tikai tangenciāli saistīta ar manu specialitāti, bet, kad viņš aizgāja, es biju labākā kandidāte kursa pasniegšanai. Man nepatika neviena no tajā laikā pastāvošajām mācību grāmatām, tāpēc šī kursa mācību grāmatu es uzrakstīju pati. (Redaktora piezīme: mēs runājam par grāmatu "Programmēšanas valodas pragmatika") Tagad to izmanto vairāk nekā 200 universitātēs visā pasaulē. Mana pieeja ir neparasta ar to, ka tā apzināti sajauc valodas dizaina un ieviešanas problēmas un pievērš lielu uzmanību šo aspektu mijiedarbībai visās iespējamās jomās. Pamatpieeja ir palikusi nemainīga, tāpat kā daudzi pamatjēdzieni: abstrakcijas, nosaukumu telpas, modularitāte, tipi. Taču valodu kopums, ar ko šie jēdzieni tiek demonstrēti, ir pilnībā mainījies. Kad kurss pirmo reizi tika izveidots, Paskālā bija daudz piemēru, taču šodien daudzi mani studenti par šo valodu pat nav dzirdējuši. Bet viņi zina Swift, Go, Rust, tāpēc man ir jārunā par valodām, kas tiek lietotas mūsdienās. Arī studenti tagad labi pārzina skriptu valodas, bet, kad es sāku mācīt šo kursu, tas viss bija par apkopotajām valodām. Tagad mums ir nepieciešams daudz materiālu par Python, Ruby un pat Perl, jo mūsdienās tiek rakstīts kods, un šajās valodās notiek daudz interesantu lietu, tostarp valodu dizaina jomā. 

Виталий: Tad mans nākamais jautājums būs saistīts ar iepriekšējo. Kā sekot līdzi šajā jomā? Man ir aizdomas, ka šāda kursa atjaunināšana prasa daudz darba – jāsaprot jaunas valodas, jāsaprot galvenās domas. Kā jūs to darāt?

Michael: Es nevaru lepoties, ka man vienmēr izdodas 100%. Bet lielākoties es vienkārši daru to, ko dara visi – lasu internetu. Ja vēlos saprast Rust, es to Google, dodos uz Mozilla lapu un izlasu tur ievietoto rokasgrāmatu. Tā ir daļa no lietām, kas notiek komerciālajā attīstībā. Ja mēs runājam par zinātni, tad jums ir jāseko ziņojumiem galvenajās konferencēs. 

Saikne starp biznesu un akadēmiskajām aprindām

Виталий: Parunāsim par biznesa un zinātniskās pētniecības saistību. Jūsu darbu sarakstā es atradu vairākus rakstus par kešatmiņas saskaņotību. Es saprotu, ka kešatmiņas konsekvences algoritmi to publicēšanas laikā bija nestabili? Vai arī nav pietiekami plaši izplatīts. Cik izplatītas bija jūsu idejas praksē?

Michael: Es neesmu īsti pārliecināts, par kurām publikācijām jūs runājat. Esmu diezgan daudz strādājis ar saviem studentiem Bilu Boloski (Viljams Boloskis) un Leonīds Kontotanassis (Leonīds Kontothanassis) 1990. gadu sākumā par Neumann iekārtu atmiņas pārvaldību. Tajā laikā biznesā vēl nebija izpratnes par to, kā pareizi izveidot daudzprocesoru sistēmu: vai ir vērts izveidot atbalstu piekļuvei attālajai atmiņai aparatūras līmenī, vai ir vērts padarīt atmiņu izplatītu, vai ir iespējams ielādēt kešatmiņu no attālinātā atmiņa, vai arī ir nepieciešams pārvietot lapas operāciju zālē? Bils un Leonīds strādāja šajā jomā un pētīja pieejas bez attālas kešatmiņas ielādes. Tas nebija tieši saistīts ar kešatmiņas saskaņotību, taču tas joprojām bija darbs pie NUMA atmiņas pārvaldības, un vēlāk no tā izauga modernas pieejas lapu izvietošanai mūsdienu operētājsistēmās. Kopumā Bils un Leonīds paveica svarīgu darbu, lai gan ne visietekmīgāko šajā jomā – tajā laikā pie viena un tā paša strādāja daudzi citi cilvēki. Vēlāk es strādāju pie tēmas, kas saistīta ar kešatmiņas saskaņotību aparatūras transakciju atmiņas kontekstā. Grupa, ar kuru es strādāju pie šīs problēmas, saņēma vairākus patentus. Aiz tiem slēpjas dažas diezgan interesantas idejas, bet nedomāju, ka tās galu galā tiks īstenotas praksē. Tā vai citādi man ir grūti spriest par viņu rentabilitāti. 

Aleksejs: Šajā sakarā personiskāks jautājums: cik jums ir svarīgi, lai jūsu idejas tiktu īstenotas praksē? Vai arī tu par to nedomā?

Michael: Man patīk uzdot šo jautājumu intervijās ar citiem cilvēkiem, pretendentiem vai kandidātiem, kuri vēlas pievienoties fakultātei. Es domāju, ka uz šo jautājumu nav pareizas atbildes. Cilvēkiem, kuri dara foršas lietas, var būt ļoti dažādas motivācijas. Mani saista problēmas, jo man tās šķiet interesantas, nevis praktisko ieguvumu dēļ. Bet no otras puses, kad kāda interesanta lieta tomēr atrod pielietojumu, man ļoti patīk. Tāpēc šeit nav viegli. Taču darba sākumā mani joprojām virza nevis ideja par gala pielietojumu pasaulē, bet gan idejas harmonija un vēlme to izpētīt un redzēt, kas no tā sanāks. Ja galu galā tas dod praktiskus rezultātus, lieliski. 

Aleksejs: Jūsu izglītības un pieredzes dēļ jūs labāk nekā lielākā daļa spējat spriest par citu cilvēku ideju vērtību. Varat tos salīdzināt un noteikt, kurš ar kuru darbojas labāk. Esmu pārliecināts, ka jums ir viedoklis par lietām, kuras pašlaik praksē izmanto lielie ražotāji, piemēram, Intel. No jūsu viedokļa, cik pareizs ir šo uzņēmumu kurss?

Michael: Prakse vienmēr ir saistīta ar to, kas var būt komerciāli veiksmīgs, tas ir, radīt peļņu, un labāk par to pajautājiet kādam citam. Mans darbs pārsvarā rezultējas ar publikācijām, un operētājsistēmu jomā tās tiek vērtētas pēc veiktspējas rādītājiem: ātrums, enerģijas patēriņš, koda lielums. Bet man vienmēr šķita, ka šie empīriskie rezultāti tiek pievienoti rakstiem tikai tāpēc, lai tos varētu publicēt, un cilvēku patiesie darba motīvi ir estētiski. Pētnieki risinājumus vērtē no mākslinieciskās perspektīvas, viņiem rūp, cik elegantas ir idejas, un viņi cenšas radīt kaut ko labāku par esošajām pieejām. Pētniekus vada personīgi, subjektīvi, estētiski motīvi. Bet jūs nevarat par to rakstīt pašā rakstā; šīs lietas nav argumenti programmas komitejai. Par laimi, eleganti risinājumi bieži vien ir arī ātri un lēti. Mēs ar duci manu kolēģu apspriedām šo tēmu pirms aptuveni 15 gadiem un galu galā uzrakstījām par to rakstu. Es domāju, ka jūs joprojām varat to atrast tagad, to sauc "Kā novērtēt sistēmu izpēti" vai kaut kas tamlīdzīgs, tam ir vairāk nekā ducis autoru. Šis ir vienīgais raksts, kura autors esmu es kopā ar Saša Fedorova, tāpēc, ja jūs meklējat viņas vārdu manā publikāciju sarakstā, jūs atradīsit to, kas jums nepieciešams. Tajā ir runāts par sistēmu izpētes novērtēšanu un to, cik svarīga ir elegance. 

Aleksejs: Tātad ir atšķirība starp standartu, kas tiek uzskatīts par labu zinātnē un biznesā. Zinātne novērtē veiktspēju, enerģijas patēriņu, TDP, ieviešanas vieglumu un daudz ko citu. Vai jums ir iespēja veikt šāda veida pētījumus universitātē? Vai jums ir laboratorija ar dažādām iekārtām un dažādām arhitektūrām, kurā jūs varētu veikt eksperimentus?

Michael: Jā, mūsu nodaļā ir daudz dažādu interesantu mašīnu. Visbiežāk tie ir mazi, mums ir mazs klasteris un daudzas daudzprocesoru sistēmas ar dažādiem paātrinātājiem. Turklāt universitātes pilsētiņā ir milzīgs skaitļošanas centrs, kas apkalpo zinātniekus no vairākiem desmitiem dažādu disciplīnu. Tam ir aptuveni tūkstotis mezglu un divdesmit tūkstoši kodolu, visi operētājsistēmā Linux. Ja rodas vajadzība, jūs vienmēr varat iegādāties kādu AWS. Tāpēc mums nav nekādu būtisku aparatūras ierobežojumu. 

Aleksejs: Kā tas bija pirms trīsdesmit gadiem? Vai tad bija problēmas?

Michael: Toreiz bija nedaudz savādāk. Astoņdesmito gadu vidū un beigās tika uzskatīts, ka zinātnei trūkst skaitļošanas resursu. Lai šo situāciju labotu, Nacionālais zinātnes fonds (Nacionālais zinātnes fonds) izveidoja koordinētu eksperimentālo pētījumu programmu (Coordinated Experimental Research, CER). Programmas misija bija nodrošināt datorzinātņu katedrām skaitļošanas infrastruktūru, un tā ir panākusi būtiskas izmaiņas. Par viņas sniegto naudu mēs Ročesteras Universitātē nopirkām 1984 mezglu BBN Butterfly 128. gadā, tas bija gads pirms es tur ierados. Tajā laikā tā bija pasaulē lielākā daudzprocesoru sistēma ar koplietojamo atmiņu. Tam bija 128 procesori, katrs atsevišķā mātesplatē, un tas aizņēma četrus statīvus. Katram procesoram bija megabaits atmiņas, 128 megabaiti RAM tolaik bija neiedomājami daudz. Šajā mašīnā mēs pirmo reizi ieviesām MCS bloķēšanu. 

Aleksejs: Tātad, ja pareizi saprotu, tad šobrīd problēma ar aparatūru ir atrisināta? 

Michael: Kopumā jā. Ir daži brīdinājumi: pirmkārt, ja jūs veidojat datora arhitektūru mikroshēmu līmenī, to ir grūti izdarīt akadēmiskā vidē, jo ir daudz labāki rīki, lai to paveiktu biznesā. Ja jums ir nepieciešams kaut kas mazāks par 10 nanometriem, jums tas būs jāpasūta no kāda cita. Šajā jomā ir daudz vieglāk būt Intel pētniekam. Ja strādājat ar optiskajiem sakariem mikroshēmās vai cietvielu atmiņā, biznesā atradīsit tehnoloģijas, kas vēl nav zinātnē, tāpēc jums ir jāveido alianses. Piemēram, Stīvens Svonsons (Stīvens Svonsons) izveidots šāda partnerība jaunām atmiņas tehnoloģijām. Šī forma ne vienmēr darbojas, bet dažos gadījumos tā var būt diezgan veiksmīga. Turklāt zinātnē jaudīgāko skaitļošanas sistēmu izstrāde ir grūtāka. Lielākie superdatoru projekti šobrīd ASV, Japānā un Ķīnā ir vērsti uz uzņēmējdarbību. 

Praktiska ideju īstenošana. MCS, MS, CLH, JSR 166, darbs ar Dagu Lī un citiem.

Виталий: Jūs jau runājāt par to, kā sākāt strādāt pie sinhronizācijas algoritmiem. Jums ir divi ļoti slaveni raksti par MCS bloķēšana и Maikla-Skota rinda (MS), kas savā ziņā tika ieviesti Java. (Redaktora piezīme: visas publikācijas var apskatīt по ссылке). Tur šī bloķēšana tika ieviesta ar dažām izmaiņām un izrādījās CLH slēdzene, un rinda tika ieviesta, kā paredzēts. Taču no jūsu rakstu publicēšanas līdz to praktiskajai izmantošanai pagāja daudzi gadi. 

Aleksejs: Šķiet, ka rindas gadījumā ir apmēram 10 gadi.

Michael: Pirms šīs funkcijas parādījās Java standarta bibliotēkā?

Виталий: Jā. Ko jūs darījāt, lai tas notiktu? Vai arī viņi neko nedarīja?

Michael: Es varu pastāstīt, kā MS Queue iekļuva Java 5. Dažus gadus pirms tā iznākšanas es strādāju ar Marka Moijera grupu Sun Microsystems viņu laboratorijā netālu no Bostonas. Viņš organizēja semināru cilvēkiem, kurus viņš pazīst, kuri strādāja pie interesantām problēmām daudzpavedienu jomā, jo viņš vēlējās atrast tēmas, kuras varētu pārdot viņu uzņēmumam. Tur es pirmo reizi satiku Dagu Lea. Dags un es un vēl aptuveni 25 cilvēki no Sun kopā apspriedām Daga prezentāciju par tēmu JSR 166, kas vēlāk kļuva par java.util.concurrent. Pa ceļam Dags teica, ka vēlētos izmantot MS rindu, taču šim nolūkam viņam bija nepieciešams interfeisa rindā esošo elementu skaita skaitītājs. Tas ir, tas bija jādara ar atsevišķu metodi, atomu, precīzu un ātru. Es ierosināju vienkārši pievienot mezgliem sērijas numurus, paņemot pirmā un pēdējā mezgla numuru un atņemot vienu no otra. Dags saskrāpēja galvu, teica "kāpēc ne," un beidzās tieši tā. Mēs apspriedām šīs pieejas ieviešanu bibliotēkā, bet Dags lielāko daļu darba veica pats. Rezultātā viņam izdevās izveidot lielisku daudzpavedienu atbalstu Java. 

Aleksejs: Tātad, ja es pareizi saprotu, .size() metodei vajadzēja būt daļai no standarta rindas interfeisa, un tai vajadzēja būt O(1) algoritmiskajai sarežģītībai?

Michael: Jā, un papildus tam ir nepieciešams atsevišķs skaitītājs.

Aleksejs: Jo, ja Java izsauc .size() metodi, rezultāts būs pieejams nekavējoties, nevis pamatojoties uz kolekcijas faktisko lielumu. Es redzu, paldies.

Michael: Dažus gadus vēlāk es kopā ar savu studentu Bilu Šēreru strādāju pie dubultām datu struktūrām — patiesībā es runāšu par to. ziņojums par Hydra. Dags pienāca pie mums un teica, ka varētu tos izmantot Java Executor Framework. Kopā ar Bilu viņi izveidoja divas implementācijas, tā sauktās godīgās un negodīgās rindas. Es viņus konsultēju par šo projektu, lai gan es nepiedalījos īstā koda rakstīšanā. Līdz ar to ir ievērojami pieaudzis izpildītāju ātrums. 

Vladimir: vai esat saskāries ar nepareizu algoritmu ieviešanu vai jaunu funkciju pievienošanas pieprasījumiem? Kopumā praksei jāsakrīt ar teoriju, taču diezgan bieži tās atšķiras. Pieņemsim, ka esat uzrakstījis algoritmu un uz papīra tas darbojas, bet cilvēki, kas ir iesaistīti ieviešanā, sāka lūgt jums papildu funkcijas vai kaut kādus algoritma pielāgojumus. Vai jums kādreiz ir bijušas šādas situācijas?

Michael: Vienīgais piemērs, kad kāds pie manis atnāca un jautāja “kā to īstenot”, bija Daga jautājums, par kuru es jau runāju. Taču ir bijuši daži gadījumi, kad ir veiktas interesantas izmaiņas, lai tās atbilstu praktiskām vajadzībām. Piemēram, IBM K42 komanda pārveidoja MCS slēdzeni un padarīja to par standarta interfeisu, tāpēc nebija nepieciešams nodot rindas mezglu uz priekšu un atpakaļ, lai iegūtu un atbrīvotu rutīnas. Pateicoties šim standarta interfeisam, ideja, kas teorētiski bija skaista, sāka darboties praksē. Tas ir pārsteidzoši, ka viņi nekad nav publicējuši rakstu par to, un, lai gan viņi saņēma patentu, viņi vēlāk no tā atteicās. Ideja bija brīnišķīga, un es cenšos par to runāt, kad vien iespējams. 

Ir bijuši arī citi gadījumi, kad cilvēki ir uzlabojuši manis publicētos algoritmus. Piemēram, MS rindā ir divpakāpju instalācijas mehānisms, kas nozīmēja, ka rindas kritiskajā ceļā atradās divi CAS. Vecākiem auto CAS bija diezgan dārgi. Intel un citi ražotāji pēdējā laikā tos ir diezgan labi optimizējuši, taču kādreiz tās bija 30 ciklu instrukcijas, tāpēc kritiskajā ceļā nebija vēlams būt vairāk par vienu. Rezultātā tika izveidota cita rinda, kas bija līdzīga MS rindai, bet kurai kritiskajā ceļā bija tikai viena atomu darbība. Tas tika panākts, pateicoties tam, ka noteiktā laika periodā operācija varēja aizņemt O(n) laiku, nevis O(1). Tas bija maz ticams, bet iespējams. Tas notika tāpēc, ka noteiktos brīžos algoritms šķērsoja rindu no sākuma līdz pašreizējai pozīcijai šajā rindā. Kopumā algoritms izrādījās ļoti veiksmīgs. Cik man zināms, tas nav īpaši plaši izmantots, daļēji tāpēc, ka atomu operācijām ir nepieciešams ievērojami mazāk resursu nekā iepriekš. Bet ideja bija lieliska. Man ļoti patīk arī Deiva Disa darbs no Oracle. Viss, ko viņš dara, ir ļoti praktiski, un viņš ļoti gudri izmanto dzelzi. Viņam bija roku liela daļa no NUMA zināmiem sinhronizācijas algoritmiem un daudzpavedienu datu struktūrām. 

Vladimir: Rakstot algoritmus vai mācot studentus, jūsu darba rezultāts nav uzreiz redzams. Kopienai ir vajadzīgs zināms laiks, lai iepazītos, piemēram, ar jaunu rakstu. Jaunais algoritms uzreiz neatrod pielietojumu. 

Michael: Ne tuvu nav skaidrs, vai raksts būs nozīmīgs vai nē. Es domāju, ka būtu interesanti izpētīt referātus, kas ir ieguvuši godalgotas konferences. Tas ir, paskatieties uz tiem rakstiem, kurus cilvēki programmu komitejās savulaik uzskatīja par labākajiem. Jāmēģina pēc saišu skaita un ietekmes uz biznesu izrēķināt, cik šie raksti patiesībā izrādījās ietekmīgi 10, 20, 25 gadu laikā. Es šaubos, vai starp abiem būtu spēcīga korelācija. Tas nebūs nulle, bet visticamāk tas būs daudz vājāks, nekā mēs vēlētos. Daudzas idejas paliek nepieprasītas ilgu laiku, pirms tās kļūst plaši izplatītas. Piemēram, ņemsim transakciju atmiņu. Kopš sākotnējā raksta publicēšanas brīža līdz brīdim, kad cilvēki sāka ar to būvēt mašīnas, pagāja vairāk nekā 10 gadi. Un pirms šīs atmiņas parādīšanās komerciālajos produktos - un visi 20. Ļoti ilgu laiku neviens nepievērsa uzmanību rakstam, un tad saišu skaits uz to strauji palielinājās. To iepriekš būtu grūti paredzēt. No otras puses, dažreiz idejas uzreiz atrod realizāciju. Pirms dažiem gadiem es uzrakstīju rakstu ar Džo Izraelevicu DISC, kurā tika ierosināta jauna formāla derīguma definīcija pastāvīgām datu struktūrām, kuras varētu izmantot pēc tam, kad dators, kurā tās darbojas, avarēja. Raksts man patika jau no paša sākuma, bet tas izrādījās daudz populārāks nekā biju gaidījis. To izmantoja vairākas dažādas grupas, un galu galā tā kļuva par noturības struktūru standarta definīciju. Kas, protams, ir jauki.

Vladimir: Vai ir kādi paņēmieni, ko izmantojat novērtēšanai? Vai jūs pat mēģināt novērtēt savus rakstus un savus studentus? Runājot par to, vai jūsu mācītais cilvēks iet pareizajā virzienā.

Michael: Tāpat kā visi citi, es vairāk pievēršu uzmanību tam, ko es šobrīd daru. Atkal, tāpat kā visi citi, es laiku pa laikam pārbaudu Google Scholar, lai redzētu, vai mani iepriekšējie raksti tiek citēti, taču tas ir vairāk ziņkārības dēļ. Lielākoties esmu iegrimusi tajā, ko tagad dara mani studenti. Runājot par pašreizējā darba izvērtēšanu, daļa no tā ir estētiskie apsvērumi, kas ir elegants un kas nav. Un ikdienas līmenī atvērtiem jautājumiem ir liela nozīme. Piemēram, pie manis atnāk skolēns ar dažu rezultātu grafiku, un mēs cenšamies saprast, no kurienes radusies kāda dīvaina grafika uzvedība. Kopumā savā darbā mēs nepārtraukti cenšamies saprast lietas, kuras mēs vēl nesaprotam. 

Darījumu atmiņa

Виталий: Varbūt varam nedaudz parunāt par transakciju atmiņu?

Michael: Es domāju, ka ir vērts pateikt vismaz nedaudz, jo es pielieku daudz pūļu. Šī ir tēma, par kuru man ir vairāk publikāciju nekā par jebkuru citu. Bet tajā pašā laikā, dīvainā kārtā, es vienmēr biju ļoti skeptisks par darījumu atmiņu. Pēc manām domām, Herlihy un Moss raksts (M. Herlihy, J. E. B. Moss) tika izdots apsteidzot savu laiku. Deviņdesmito gadu sākumā viņi ierosināja, ka transakciju atmiņa varētu palīdzēt talantīgiem programmētājiem strādāt pie daudzpavedienu datu struktūrām, lai parastie programmētāji šīs struktūras varētu izmantot kā bibliotēkas. Tas nozīmē, ka tas palīdzētu Dagam Lī, veicot savu JSR 1990. Taču transakciju atmiņa nebija paredzēta, lai atvieglotu daudzpavedienu programmēšanu. Bet tieši tā to sāka uztvert 166. gadu sākumā, kad tas kļuva plaši izplatīts. Tas tika reklamēts kā veids, kā atrisināt paralēlās programmēšanas problēmu. Šāda pieeja man vienmēr ir šķitis bezcerīga. Darījumu atmiņa varētu tikai atvieglot paralēlu datu struktūru rakstīšanu. Tas, man šķiet, ir tas, ko viņa sasniedza. 

Par grūtībām rakstīt vairāku pavedienu kodu

Aleksejs: Ļoti interesanti. Šķiet, ka pastāv zināma barjera starp parastajiem programmētājiem un tiem, kas var rakstīt daudzpavedienu kodu. Pagājušajā gadā es vairākas reizes runāju ar cilvēkiem, kuri ieviesa kādu algoritmisko sistēmu. Piemēram, ar Martinu Tomsonu, kā arī ar programmētājiem, kas strādā pie daudzpavedienu bibliotēkām. (Redaktora piezīme: Martins Tompsons ir ļoti slavens izstrādātājs, viņš rakstīja Traucētājs и Aeron. Un viņam arī ir Ziņot mūsu Joker 2015 konferencē, video ieraksts pieejams pakalpojumā YouTube. Viņš ir tāds pats atvērts šī konference pamatnostādnes ieraksts pieejams arī). Viņi saka, ka galvenais izaicinājums ir padarīt algoritmus gan ātrus, gan viegli lietojamus. Tas ir, viņi cenšas pārvarēt šo barjeru un piesaistīt pēc iespējas vairāk cilvēku šajā jomā. Ko tu par to domā?

Michael: Šī ir galvenā daudzpavedienu problēma: kā sasniegt augstu veiktspēju, nepalielinot sistēmas sarežģītību. 

Aleksejs: Jo, kad viņi cenšas izvairīties no sarežģītības, algoritms kļūst mazāk universāls.

Michael: Galvenais šeit ir pareizi izstrādātas abstrakcijas. Man šķiet, ka datorsistēmām kā jomai tas vispār ir galvenais. Batleram Lampsonam patīk lietot šo terminu, un viņš mūs sauc par "abstrakciju tirgotājiem". Vienkāršas tehnoloģijas mūsdienās nepastāv. Mūsu izmantotajos procesoros ir 10 miljardi tranzistoru — par vienkāršību nevar runāt. Tajā pašā laikā ISA ir daudz vienkāršāka nekā procesors, jo mēs ļoti ilgi strādājām, lai nodrošinātu tai augstu veiktspēju un salīdzinoši vienkāršu saskarni. Bet arī ar viņu ne viss ir gludi. Tāda pati problēma ir ar paātrinātājiem, kas tagad parādās tirgū. Rodas jautājumi – kā izveidot pareizo interfeisu GPU, šifrēšanas mehānismu, kompresiju, pārkodēšanas mehānismu, lineārās algebras mehānismu vai pat elastīgāku FPGA. Kā izveidot interfeisu, kas padara rīku viegli lietojamu un slēpj sarežģītību? Tas no tā neatbrīvosies, bet gan paslēps to no vienkārša programmētāja. 

Aleksejs: Kā es saprotu, mums joprojām ir barjera abstrakciju izpratnē. Ņemsim atmiņas modeli mūsu zinātnes un tehnikas attīstības stadijā, tā ir viena no galvenajām abstrakcijām. Pateicoties tam, visi programmētāji ir sadalīti divās grupās: lielākā daļa ir tie, kas to nesaprot, un mazākā daļa ir tie, kas saprot vai domā, ka saprot. 

Michael: Tas ir labs jautājums - vai kāds no mums patiešām saprot atmiņas modeli?

Виталий: Īpaši C++.

Michael: Parunājiet kādreiz ar Hansu Bēmu. Viņš ir viens no gudrākajiem cilvēkiem, ko pazīstu, vadošais atmiņas modeļu eksperts. Viņš jums uzreiz pateiks, ka daudz ko viņš nesaprot. Bet, ja atgriežamies pie abstrakciju jautājuma, tad, manuprāt, tika pausta pēdējo 30 gadu svarīgākā doma atmiņas modeļu jomā. Saritas Adves disertācijā. (Redaktora piezīme: ir pieejams pilns publikāciju saraksts по ссылке).

Aleksejs: Mans jautājums ir: vai šī barjera izriet no pašas koncepcijas būtības? 

Michael: Nē. Sarita nonāca pie secinājuma, ka ar pareizo pieeju jūs varat veiksmīgi noslēpt visu sarežģītību, iegūt augstu veiktspēju un dot programmētājam vienkāršu API. Un, ja sekojat šai API, varat sasniegt konsekventu konsekvenci. Es domāju, ka šis ir pareizais modelis. Rakstiet kodu bez datu sacīkstēm un iegūstiet secīgu konsekvenci. Protams, lai samazinātu sacīkšu iespējamību, ir nepieciešami speciāli instrumenti, bet tas ir cits jautājums. 

Vladimir: Vai jūsu karjerā ir bijuši gadījumi, kad problēma, kas šķita atrisināta, pēkšņi pārvērtās par katastrofu, vai arī izrādījās, ka šī problēma nav atrisināma? Piemēram, teorētiski jūs varat faktorēt jebkuru skaitli vai noteikt, vai kāds skaitlis ir galvenais. Bet praksē to var būt grūti izdarīt, izmantojot pašreizējo aparatūru, ir grūti noteikt skaitļus. Vai ar jums ir noticis kas līdzīgs?

Michael: Es uzreiz neko tādu neatceros. Ir bijušas reizes, kad man ir šķitis, ka noteiktā jomā vairs nav ko darīt, bet tad tur notika kaut kas jauns un interesants. Piemēram, es domāju, ka neierobežotās rindas zona jau ir sasniegusi briedumu. Pēc vairākiem MNS rindas uzlabojumiem nekas īpaši vairs nenotika. Un tad Morisons (Ādams Morisons) un Afeks (Yehuda Afek) izgudroja LCRQ rinda. Kļuva skaidrs, ka ir iespējama neierobežota daudzpavedienu rinda, kur lielāko daļu laika bija tikai ieneses un palielināšanas instrukcija uz kritiskā ceļa. Un tas ļāva sasniegt par lielumu labāku veiktspēju. Nav tā, ka mēs nezinām, ka ienese un palielināšana ir ļoti noderīga lieta. Ēriks Freidentāls par to rakstīja savā darbā par Ultracomputer kopā ar Allan Gottlieb 1980. gadu beigās, taču tas bija par ierobežotām rindām. Morisons un Afeks varēja izmantot ieneses un palielināšanas funkciju neierobežotā rindā.

Jaunas arhitektūras. Vai darījumu atmiņas uzvara ir tuvu?

Vladimir: Vai meklējat jaunus arhitektūras risinājumus, kas varētu būt noderīgi algoritmiem? 

Michael: Protams, ir daudzas lietas, kuras es vēlētos redzēt īstenotas. 

Vladimir: Kāda veida, piemēram?

Michael: Pirmkārt, daži vienkārši paplašinājumi mūsu aparatūras līmeņa transakciju atmiņai Intel un IBM procesoros. Jo īpaši es vēlētos, lai ar darījumu nesaistītā slodze un veikals, kas tikko radās, būtu uzreiz pieejams darījumos. Tie nekavējoties noved pie cilpām secībā, kas notiek pirms, tāpēc tās var būt sarežģītas. Bet, ja saglabājat abstrakcijas slāņus, ir daudz ļoti interesantu lietu, ko varat darīt ārpus darījuma, kamēr tas notiek. Es nezinu, cik grūti to būtu īstenot, bet tas būtu ļoti noderīgi. 

Vēl viena noderīga lieta ir kešatmiņas ielāde no attālās atmiņas. Es domāju, ka agrāk vai vēlāk tas tiks darīts. Šī tehnoloģija ļaus izveidot sistēmas ar dezagregētu atmiņu. Plauktā būtu iespējams saglabāt, teiksim, 100 terabaitus nemainīgas atmiņas, un pati operētājsistēma dinamiski izlemtu, kurām šīs atmiņas sadaļām jāatbilst procesoru fiziskajai adrešu telpai. Tas būtu ārkārtīgi noderīgi mākoņdatošanai, jo ļautu nodrošināt lielu atmiņas apjomu uzdevumiem, kuriem tas ir nepieciešams. Es domāju, ka kāds to izdarīs.

Виталий: Lai beigtu runāt par transakciju atmiņu, man ir vēl viens jautājums par šo tēmu. Vai darījumu atmiņa galu galā aizstās standarta daudzpavedienu datu struktūras?

Michael: Nē. Darījumi ir spekulatīvs mehānisms. Programmēšanas līmenī tās ir atomslēdzenes, bet iekšpusē tās ir spekulācijas. Šāda prognozēšana darbojas, ja lielākā daļa minējumu ir pareizi. Tāpēc transakciju atmiņa darbojas labi, ja pavedieni gandrīz nedarbojas viens ar otru, un jums vienkārši jāpārliecinās, ka nav mijiedarbības. Bet, ja ziņojums sākas starp pavedieniem, darījumi ir maz lietderīgi. Paskaidrošu, mēs runājam par gadījumu, kad darījumi tiek apvilkti ap visu atomu darbību. Tos joprojām var veiksmīgi izmantot kā komponentus daudzpavedienu datu struktūrām. Piemēram, ja jums ir nepieciešams trīs vārdu CAS, un jums ir nepieciešams vairākpavedienu izveidot trīs mazas lietas patiesi daudzpavedienu algoritma vidū, kas vienlaikus darbojas ar divdesmit pavedieniem. Kopumā transakcijas var būt noderīgas, taču tās nenovērsīs nepieciešamību pareizi izstrādāt daudzpavedienu datu struktūras. 

Negaistoša atmiņa, Optane DIMM, īpaši ātras ierīces.

Виталий: Pēdējais, par ko es vēlētos runāt, ir jūsu pašreizējā pētījuma tēma: nepastāvīga atmiņa. Ko mēs varam sagaidīt šajā jomā tuvākajā nākotnē? Varbūt jūs zināt kādu efektīvu ieviešanu, kas jau pastāv? 

Michael: Es neesmu aparatūras eksperts, zinu tikai to, ko lasu ziņās un ko man stāsta kolēģi. Visi jau ir dzirdējuši, ka Intel pārdod Optane DIMM, kuriem ir aptuveni 3 reizes lielāks lasīšanas latentums un 10 reizes lielāks rakstīšanas latentums nekā dinamiskajai RAM. Drīzumā tie būs pieejami ļoti liela apjoma versijās. Ir smieklīgi domāt, ka jums varētu būt klēpjdators ar vairākiem baitiem adresētu RAM. Visticamāk, ka pēc 10 gadiem mēs izlemsim izmantot šo jauno tehnoloģiju, jo mēs izmantojam DRAM - vienkārši palieliniet skaļumu. Taču, pateicoties enerģētiskajai neatkarībai, mums paveras pilnīgi jaunas iespējas. Mēs varam būtiski mainīt krātuves steku tā, lai nebūtu atdalīšanas starp baitiem adresējamo darba atmiņu un bloku strukturēto pastāvīgo atmiņu. Tādējādi mums nevajadzēs serializēt visu, kas jāpārsūta no vienas programmas uz citu, bloku strukturētos failos. No tā mēs varam iegūt daudzus svarīgus principus, kas ietekmē operētājsistēmas, izpildlaika vidi un izkliedētos datu krātuves. Šajā jomā ir ļoti interesanti strādāt. Man personīgi ir grūti paredzēt, pie kā tas viss novedīs, taču problēmas šeit ir ārkārtīgi izklaidējošas. Šeit var būt revolucionāras izmaiņas, un tās ļoti dabiski izriet no darba pie daudzpavedienu izveides, jo kļūmju atkopšana ir "daudzpavedienu" process līdztekus normālai sistēmas darbībai. 

Otra galvenā tēma, pie kuras es šobrīd strādāju, ir īpaši ātru ierīču pārvaldība un droša piekļuve ierīcēm no lietotāja telpas ar sistēmisku politikas kontroli. Pēdējos gados ir bijusi tendence pārvietot piekļuvi ierīcei uz lietotāja telpu. Tas tiek darīts, jo TCP-IP kodola steks nevar darboties virs tīkla interfeisa, kam ir nepieciešama jauna pakete ik pēc 5 mikrosekundēm, tā vienkārši nedarbosies. Tāpēc ražotāji nodrošina tiešu piekļuvi ierīcēm. Bet tas nozīmē, ka operētājsistēma zaudē kontroli pār procesu un nevar nodrošināt pareizu piekļuvi ierīcei konkurējošām lietojumprogrammām. Mūsu pētnieku komanda uzskata, ka no šī trūkuma var izvairīties. Šomēnes mums būs raksts par to USENIX ATC. Tas ir saistīts ar darbu pie noturības, jo ilgstoša baitu adresējamā pastāvīgā atmiņa būtībā ir ierīce ar īpaši ātru I/O, kurai ir jāpiekļūst lietotāja telpā. Šis pētījums ļauj izmantot jaunas pieejas mikrokodolu, eksokernelu un citiem tradicionāliem mēģinājumiem droši pārvietot funkcionalitāti no OS kodola uz lietotāja telpu. 

Vladimir: Baitu adresējamā atmiņa ir lieliska, taču ir fizisks ierobežojums – gaismas ātrums. Tas nozīmē, ka, mijiedarbojoties ar ierīci, neizbēgami būs aizkave. 

Michael: Pilnīga taisnība.

Vladimir: Vai pietiks jaudas, lai tiktu galā ar jaunajām slodzēm?

Michael: Šis ir lielisks jautājums, bet man būs grūti atbildēt. Ideja par apstrādi atmiņā pastāv jau ilgu laiku, tā ir ļoti interesanta, bet arī ļoti sarežģīta. Es neesmu strādājis šajā jomā, bet būtu lieliski, ja tur tiktu veikti kādi atklājumi. Baidos, ka man vairs nav ko piebilst. 

Vladimir: Ir vēl viena problēma. Jaunus, ievērojami lielākus operatīvās atmiņas apjomus CPU nevarēs ievietot. Tāpēc fizisko ierobežojumu dēļ šī RAM ir jāizolē. 

Michael: Viss ir atkarīgs no defektu skaita integrālo shēmu ražošanā. Ja būtu iespējams izveidot pusvadītāju vafeles pilnīgi bez defektiem, tad no tā būtu iespējams izveidot visu mikroshēmu. Bet tagad mēs nezinām, kā padarīt mikroshēmas lielākas par pastmarkām. 

Vladimir: Bet mēs joprojām runājam par milzīgiem izmēriem, par centimetriem. Tas neizbēgami ietekmē latentumu. 

Michael: Jā. Ar gaismas ātrumu jūs neko nevarat darīt. 

Vladimir: Diemžēl. 

Nākamā lielā tendence. Dubultās datu struktūras. Hidra.

Виталий: Cik es saprotu, jūs ļoti ātri uztverat jaunas tendences. Jūs bijāt viens no pirmajiem, kas strādāja transakciju atmiņā, un viens no pirmajiem, kas strādāja nemainīgajā atmiņā. Kāda, jūsuprāt, būs nākamā lielā tendence? Vai varbūt tas ir noslēpums?

Michael: Godīgi sakot, es nezinu. Cerams, ka varēšu pamanīt, kad parādīsies kaut kas jauns. Man pašam nav laimējies izdomāt nevienu jaunu jomu, taču man ir nedaudz paveicies un varēju diezgan agri sākt strādāt jaunās, citu radītās jomās. Ceru, ka man tas izdosies arī turpmāk.

Aleksejs: Pēdējais jautājums šajā intervijā būs par jūsu sniegumu Hydra un jūsu aktivitātēm skolā. Ja pareizi saprotu, tad skolā referāts būs par bezbloķēšanas algoritmiem, bet konferencē par dubulto datu struktūrām. Vai jūs varētu pateikt dažus vārdus par šiem ziņojumiem?

Michael: Daļēji šīm tēmām ar jums jau esam pieskārušies šajā intervijā. Tas ir par darbu, ko es darīju kopā ar savu studentu Bilu Šereru. Viņš par to uzrakstīja disertāciju, un arī Dags Lī piedalījās tajā, un galu galā tas kļuva par daļu no Java bibliotēkas daudzpavedienu sinhronajām rindām. Pieņemsim, ka datu struktūra tiek nolasīta un rakstīta bez bloķēšanas, tas ir, katrai darbībai kritiskajā ceļā ir ierobežots instrukciju skaits. Ja mēģināt noņemt datus no tukša konteinera vai mēģināt noņemt noteiktus datus, kas nav šajā konteinerā, jūs nekavējoties tiekat informēts, ka to nevar izdarīt. Taču šāda rīcība var nebūt pieņemama, ja pavedienam patiešām ir nepieciešami šie dati. Tad pirmais, kas nāk prātā, ir izveidot cilpu, kas pastāvīgi jautās, vai ir parādījušies nepieciešamie dati. Bet tad ir iejaukšanās visiem pārējiem. Turklāt, izmantojot šo pieeju, jūs varat pagaidīt 10 minūtes, un tad nāks kāds cits pavediens, un tas nejauši vispirms saņems nepieciešamos datus. Dubultajām datu struktūrām joprojām nav bloķētāju, taču tās ļauj pavedieniem pareizi nogaidīt. Termins "dubults" nozīmē, ka struktūra satur vai nu datus, vai datu pieprasījumus, sauksim tos par antidatiem. Tātad, ja mēģināt izgūt kaut ko no tukša konteinera, konteinerā tiks ievietots pieprasījums. Tagad pavediens var gaidīt pieprasījumu, netraucējot nevienam citam. Turklāt datu struktūra piešķir pieprasījumiem prioritātes, lai pēc saņemšanas tos nodotu pareizajai personai. Rezultāts ir nebloķējošs mehānisms, kam joprojām ir formāla specifikācija un laba veiktspēja praksē. 

Aleksejs: Kādas ir jūsu cerības no šīs datu struktūras? Vai tas uzlabos veiktspēju visos izplatītajos gadījumos, vai arī tas ir labāk piemērots noteiktām situācijām? 

Michael: Tas ir noderīgi, ja, pirmkārt, jums ir nepieciešams konteiners bez bloķēšanas, un, otrkārt, jums ir jāgaida situācijā, kad jums ir nepieciešams izgūt datus no konteinera, kas tajā nav. Cik man ir zināms, mūsu sistēma nodrošina optimālu darbību, ja ir izpildīti šie divi nosacījumi. Tāpēc šajos gadījumos iesaku to lietot. Bezslēgtu datu struktūru galvenā priekšrocība ir tā, ka tās novērš veiktspējas problēmas. Un gaidīšana ir ļoti svarīga daudzos algoritmos, ja dati tiek pārsūtīti no viena pavediena uz otru.

Виталий: Precizēšu: vai jūs runāsiet par vienu un to pašu gan skolā, gan konferencē?

Michael: Skolā ES runāšu vispārīgi par daudzpavedienu datu struktūrām, ar pamatprincipiem, kas izklāstīti nodarbības sākumā. Es pieņemu, ka auditorija zina, kas ir pavedieni, un ir pazīstami ar slēdzenēm. Pamatojoties uz šīm pamatzināšanām, es runāšu par datu struktūrām bez bloķēšanas. Es sniegšu pārskatu par svarīgākajām problēmām šajā jomā, pieskaroties tādām tēmām kā atmiņas pārvaldība. Domāju, ka nekas sarežģītāks par MS rindu nebūs.

Aleksejs: Vai plānojat mācīt par duālām datu struktūrām klases beigās?

Michael: Es tos pieminēšu, bet netērēšu tiem daudz laika. Tiem būs veltīts Hidras ziņojums. Tas aptvers projektu, kas galu galā kļuva par Java, kā arī darbu ar Džo Israeleviču, lai izveidotu LCRQ rindas dubulto variantu un izveidotu gandrīz universālu dizainu dubultām datu struktūrām.

Aleksejs: Tātad lekciju skolā var ieteikt iesācējiem, bet lekciju par dubultdatu struktūrām par Hidra - cilvēkiem, kuriem jau ir kāda pieredze?

Michael: Labojiet mani, ja kļūdos, bet Hydra auditorija būs diezgan dažāda, tostarp daudzi Java eksperti un vispār cilvēki, kas nav īpaši saistīti ar daudzpavedienu programmēšanu. 

Виталий: Jā tā ir taisnība.

Aleksejs: Vismaz mēs tā ceram.

Michael: Šajā gadījumā es saskaršos ar to pašu problēmu, ar kuru mēs sākām šo interviju: kā padarīt reportāžu gan pietiekami bagātu ar tehniskām detaļām, gan pieejamu visiem klausītājiem.

Виталий: Vai jūs sniegsiet referātu tāpat kā lekcijas? Tas ir, runāt ar auditoriju un pielāgoties situācijai?

Michael: Baidos, ka tā neizdosies, jo atskaitē būs slaidi. Slaidi ir svarīgi, ja klausītāji sākotnēji runā dažādās valodās. Daudziem cilvēkiem būs grūti mani saprast angļu valodā, it īpaši, ja runāju pārāk ātri. Es izvēlējos šīs tēmas, jo Pēteris Kuzņecovs lūdza man runāt par datu struktūrām bez bloķēšanas SPTDC skolā; un tad man vajadzēja ziņojumu Java lietotāju grupas konferencei, un es gribēju izvēlēties kaut ko tādu, kas interesētu tieši Java programmētājus. Vienkāršākais veids bija runāt par tām lietām Java bibliotēkā, kas man bija vienā vai otrā veidā. 

Aleksejs: Mēs pieņemam, ka Hydra auditorija jau kaut ko zina par programmēšanu bez bloķēšanas un, iespējams, ir zināma pieredze šajā jomā. Bet tas ir tikai pieņēmums, ka situācija kļūs skaidrāka pašā konferencē. Jebkurā gadījumā paldies par jūsu laiku. Esmu pārliecināts, ka intervija būs ļoti interesanta mūsu lasītājiem. Liels paldies!

Виталий: Paldies. 

Michael: Priecāšos jūs satikt Sanktpēterburgā. 

Aleksejs: Mums arī ir skaista pilsēta. Vai jūs kādreiz esat šeit bijis?

Michael: Nē, es vispār nekad neesmu bijis Krievijā. Bet Sanktpēterburga vienmēr ir bijusi to vietu sarakstā, kur vēl neesmu bijusi, bet uz kurieni ļoti gribas aizbraukt, tāpēc ļoti priecājos par uzaicinājumu. 

Aleksejs: Starp citu, mums būs ekskursiju programma runātājiem. Liels paldies par interviju un jauku dienu!

Sarunu ar Maiklu varat turpināt konferencē Hydra 2019, kas notiks 11. gada 12. – 2019. jūlijā Sanktpēterburgā. Viņš nāks ar ziņojumu "Dubultās datu struktūras". Biļetes var iegādāties oficiālajā tīmekļa vietnē.

Avots: www.habr.com

Pievieno komentāru