"Ang mga empirical na resulta ay para sa paglalathala lamang, ang tunay na motibo ng trabaho ay aesthetic." Mahusay na panayam kay Michael Scott

"Ang mga empirical na resulta ay para sa paglalathala lamang, ang tunay na motibo ng trabaho ay aesthetic." Mahusay na panayam kay Michael Scott Michael Scott - nasa 34 na taong gulang bilang isang propesor ng Computer Science sa University of Rochester, at sa kanyang tahanan University of Wisconsin–Madison siya ay dean sa loob ng limang taon. Siya ay nagsasaliksik at nagtuturo sa mga mag-aaral tungkol sa parallel at distributed programming at language design.

Kilala ng mundo si Michael mula sa aklat-aralin "Programming Language Pragmatics", paano naman ang trabaho "Mga algorithm para sa scalable na pag-synchronize sa shared-memory multiprocessors" nakatanggap ng Dijkstra Prize bilang isa sa pinakatanyag sa larangan ng distributed computing. Maaaring kilala mo rin siya bilang may-akda ng mismong algorithm na iyon Michael-Scott.

Kasama si Doug Lee, binuo niya ang mga hindi naka-block na algorithm at magkakasabay na pila na nagpapagana sa mga library ng Java. Pagpapatupad "dalawang istruktura ng data" sa JavaSE 6 ay pinahusay ang pagganap ng 10 beses ThreadPoolExecutor.

Nilalaman:

  • Maagang karera, Unibersidad ng Rochester. Project Charlotte, wikang Lynx;
  • IEEE Scalable Coherent Interface, MCS locking;
  • Kaligtasan sa isang pabago-bagong mundo;
  • Nagiging tanga ba ang mga estudyante? Mga pandaigdigang uso, internasyonalisasyon;
  • Epektibong trabaho sa mga mag-aaral;
  • Paano makasabay sa paghahanda ng mga bagong kurso at aklat;
  • Mga link sa pagitan ng negosyo at akademya;
  • Praktikal na pagpapatupad ng mga ideya. MCS, MS, CLH, JSR 166, nakikipagtulungan kay Doug Lee at higit pa;
  • Memorya ng transaksyon;
  • Mga bagong arkitektura. Ang tagumpay ng transactional memory ay malapit na;
  • Non-volatile memory, Optane DIMM, mga ultra-fast na device;
  • Ang susunod na malaking trend. Dalawang istruktura ng data. Hydra.

Ang panayam ay isinasagawa ni:

Vitaly Aksenov — kasalukuyang postdoc sa IST Austria at miyembro ng Department of Computer Technologies sa ITMO University. Nagsasagawa ng pananaliksik sa larangan ng teorya at kasanayan ng mapagkumpitensyang istruktura ng data. Bago magtrabaho sa IST, natanggap niya ang kanyang PhD mula sa Paris Diderot University at ITMO University sa ilalim ng pangangasiwa ni Propesor Peter Kuznetsov.

Alexey Fedorov - Producer sa JUG Ru Group, isang kumpanyang Ruso na nag-aayos ng mga kumperensya para sa mga developer. Lumahok si Alexey sa paghahanda ng higit sa 50 mga kumperensya, at kasama sa kanyang resume ang lahat mula sa posisyon ng isang development engineer sa Oracle (JCK, Java Platform Group) hanggang sa posisyon ng isang developer sa Odnoklassniki.

Vladimir Sitnikov - Engineer sa Netcracker. Sampung taon ng trabaho sa pagganap at scalability ng NetCracker OS, software na ginagamit ng mga operator ng telecom para i-automate ang mga proseso ng pamamahala ng network at network equipment. Interesado sa mga isyu sa pagganap ng Java at Oracle Database. May-akda ng higit sa isang dosenang mga pagpapahusay sa pagganap sa opisyal na driver ng PostgreSQL JDBC.

Maagang karera, Unibersidad ng Rochester. Proyekto ng Charlotte, wika ni Lynx.

Alexey: Upang magsimula, gusto kong sabihin sa iyo na sa Russia lahat tayo ay talagang gustung-gusto ang Computer Science, Data Science at mga algorithm. Ito ay talagang malaswa. Nabasa na namin lahat aklat ni Cormen, Leiserson at Rivest. Samakatuwid, ang paparating na kumperensya, paaralan at ang panayam na ito mismo ay dapat na napakapopular. Nakatanggap kami ng maraming tanong para sa panayam na ito mula sa mga mag-aaral, programmer, at miyembro ng komunidad, kaya lubos kaming nagpapasalamat sa pagkakataong ito. Nakukuha ba ng Computer Science ang parehong pag-ibig sa US?

Michael: Ang ating larangan ay napakaiba, ito ay may napakaraming direksyon, at ito ay nakakaapekto sa lipunan sa napakaraming iba't ibang paraan na mahirap para sa akin na bigyan ka ng tiyak na sagot. Ngunit ang katotohanan ay nagdulot ito ng napakalaking pagbabago sa negosyo, industriya, sining at lipunan sa pangkalahatan sa nakalipas na 30 taon.

Виталий: Magsimula tayo sa isang bagay na malayo. Sa maraming mga unibersidad mayroong isang bagay tulad ng espesyalisasyon sa isang partikular na lugar. Para sa Carnegie Mellon University ito ay parallel computing, para sa MIT ito ay cryptography, robots at multithreading. Mayroon bang ganitong espesyalisasyon sa Unibersidad ng Rochester?

Michael: Upang maging matapat, sasabihin ko na ang CMU at MIT ay dalubhasa sa lahat ng mga lugar. Ang aming departamento ay palaging binibigyang pansin ang artificial intelligence. Kalahati ng mga taong nagtatrabaho para sa amin ay nakikibahagi sa AI o pakikipag-ugnayan ng tao-computer - ang bahaging ito ay mas mataas kaysa sa iba pang mga departamento, at palaging ganoon. Ngunit noong ako ay nasa unibersidad, wala akong anumang mga kurso sa AI, at hindi ako nagtrabaho sa larangang ito. Kaya ang aking departamento ay nagdadalubhasa sa isang problema na wala akong kinalaman. Ang aliw ay ang pangalawang pinakamahalagang problema para sa aming departamento ay parallel at multi-threaded programming, iyon ay, ang aking espesyalisasyon.

Виталий: Nagsimula kang magtrabaho sa Computer Science noong umuusbong pa lamang ang larangan ng multi-threaded programming. Ang listahan ng iyong mga publikasyon ay nagpapakita na ang iyong mga unang gawa ay humarap sa isang medyo malawak na hanay ng mga isyu: memory management sa multi-threaded system, distributed file system, operating system. Bakit ganoong kagalingan? Sinusubukan mo bang hanapin ang iyong lugar sa komunidad ng pananaliksik?

Michael: Bilang isang mag-aaral, sumali ako Proyekto ni Charlotte sa Unibersidad ng Wisconsin, kung saan binuo ang isa sa mga unang ipinamamahaging operating system. Doon ay nagtrabaho ako kasama si Rafael Finkel (Raphael Finkel) at Marvin Solomon (Marvin Solomon). Ang aking disertasyon ay nakatuon sa pagbuo ng isang wika para sa software ng system para sa mga distributed system - ngayon ay nakalimutan na ito ng lahat, at salamat sa Diyos. Nilikha ko ang wikang programming ng Lynx, na nilayon upang gawing mas madali ang paggawa ng mga server para sa isang maluwag na pinagsamang ipinamamahaging operating system. Dahil sa oras na iyon ako ay pangunahing kasangkot sa mga operating system, ipinapalagay ko na ang aking karera ay pangunahing konektado sa kanila. Ngunit ang Rochester ay isang napakaliit na unibersidad, at dahil dito, ang iba't ibang grupo doon ay napakalapit na nakikipag-ugnayan sa isa't isa. Walang isang dosenang iba pang mga operating system na tao ang naroon para kausapin ko, kaya lahat ng aking mga contact ay sa mga taong nagtatrabaho sa ganap na magkakaibang mga lugar. Sobrang nag-enjoy ako, malaking advantage sa akin ang pagiging all-rounder. Kung partikular na pinag-uusapan natin ang tungkol sa mga multi-threaded na istruktura ng data at mga algorithm ng pag-synchronize, pagkatapos ay sinimulan kong gawin ang mga ito nang hindi sinasadya.

IEEE Scalable Coherent Interface, MCS locking.

Виталий: Maaari mo bang sabihin sa akin ng kaunti pa tungkol dito?

Michael: Ito ay isang nakakatawang kuwento na hindi ako nagsasawang sabihin sa lahat. Nangyari ito sa isang conference ASPLOS sa Boston - ito ay nasa huling bahagi ng 80s o unang bahagi ng 90s. John Mellor-Crummey (John Mellor-Crummey), nagtapos sa aming faculty. Kilala ko siya, ngunit hindi kami nagsagawa ng magkasanib na pagsasaliksik noon. Mary Vernon (Mary Vernon) mula sa Wisconsin ay nagbigay ng isang pahayag tungkol sa isang multiprocessor system na kanilang binuo sa Wisconsin: Wisconsin Multicube. Ang Multicube na ito ay may mekanismo ng pag-synchronize sa antas ng hardware na tinatawag na Q sa Sync Bit, at kalaunan ay pinalitan ito ng pangalan na Q sa Lock Bit dahil parang Colby cheese ito, na isang pun. Kung interesado ka sa mga mekanismo ng multithreading, malamang na alam mo na sa kalaunan ay naging synchronization engine ang Colby para sa pamantayan ng IEEE Scalable Coherent Interface. Ito ay isang mekanismo ng pag-lock na lumikha ng mga pointer mula sa isang cache patungo sa isa pa sa antas ng hardware upang malaman ng bawat may hawak ng lock kung kaninong turn ito. Nang marinig namin ni John ang tungkol dito, nagkatinginan kami at sinabing: bakit ginagawa ito sa antas ng hardware? Hindi ba makakamit ang parehong bagay gamit ang compare-and-swap? Kinuha namin ang isa sa mga notebook na nakalagay sa classroom at isinulat ito Pag-block ng MCS, habang ipinagpatuloy ni Mary ang kanyang ulat. Kasunod nito, ipinatupad namin ito, nag-eksperimento, naging matagumpay ang ideya, at nai-publish namin ang artikulo. Sa oras na iyon, para sa akin, ang paksang ito ay tila isang nakakatuwang pagkagambala, pagkatapos nito ay binalak kong bumalik sa mga operating system. Ngunit pagkatapos ay lumitaw ang isa pang problema kasama ang parehong mga linya, at kalaunan ay naging espesyalidad ko ang pag-synchronize, multithreading, at mga istruktura ng data. Tulad ng nakikita mo, ang lahat ng ito ay nangyari nang hindi sinasadya.

Виталий: Matagal na akong pamilyar sa pag-block ng MCS, ngunit hanggang ngayon ay hindi ko alam na ito ay iyong gawa, at hindi ko naintindihan na ito ay isang acronym para sa iyong mga apelyido.

Paano mabuhay sa isang pabago-bagong mundo?

Alexey: Mayroon akong tanong sa isang kaugnay na paksa. 30 o 40 taon na ang nakararaan nagkaroon ng higit na kalayaan sa iba't ibang mga espesyalidad. Kung gusto mong magsimula ng karera sa multithreading o distributed system, welcome ka, kung gusto mong pumasok sa mga operating system, walang problema. Sa bawat lugar mayroong maraming bukas na mga katanungan at kakaunti ang mga eksperto. Ang mga makitid na espesyalisasyon ay lumitaw na ngayon: walang mga eksperto lamang sa mga operating system sa pangkalahatan, may mga espesyalista sa mga indibidwal na system. Ito ay pareho sa multithreading at distributed system. Ngunit ang problema ay ang ating buhay ay hindi walang katapusan; Paano mabuhay sa bagong mundong ito?

Michael: Hindi tayo espesyal sa bagay na ito; ang parehong bagay ay nangyari minsan sa ibang mga lugar. Ako ay masuwerte na nagsimula akong magtrabaho sa Computer Science noong ang larangan ay nasa "teenage" years nito. Ang ilang mga pundasyon ay nailagay na, ngunit ang lahat ay napaka-immature pa rin. Ang pagkakataong ito ay hindi madalas dumarating. Matagal nang umiral ang electrical engineering, mas matagal pa ang physics, halos simula pa lang ng panahon ang matematika. Ngunit hindi ito nangangahulugan na wala nang gumagawa ng mga kawili-wiling pagtuklas sa matematika. Marami pa ring bukas na problema, ngunit kasabay nito, mas maraming kailangang matutunan. Tamang tandaan mo na marami na ngayong mga espesyalisasyon kaysa dati, ngunit nangangahulugan lamang ito na nasa parehong sitwasyon tayo tulad ng karamihan sa iba pang larangan ng aktibidad ng tao.

Alexey: Interesado ako sa mas praktikal na aspeto ng isyu dito. Mayroon akong background sa matematika, at sa panahon ng aking pag-aaral ay madalas akong dumalo sa mga kumperensya at nagtrabaho sa iba't ibang paksang pang-agham. Natuklasan ko na walang sinuman sa madla ang nakaunawa sa aking mga ulat, at sa parehong paraan, ang mga ulat ng ibang tao ay naiintindihan lamang ng kanilang mga sarili. Hindi ito ang kaso sa mga paksang may mataas na antas, ngunit sa sandaling magsimula kang magsaliksik sa isang bagay, hindi na makakasabay sa iyo ang madla. Paano mo ito haharapin?

Michael: Hindi laging matagumpay. Naghanda ako kamakailan ng isang ulat kung saan nagpunta ako ng masyadong malalim sa mga teknikal na detalye. Habang nagpapatuloy ang pag-uusap, naging malinaw na hindi ako naiintindihan ng karamihan sa mga tagapakinig, kaya kailangan kong umangkop sa sitwasyon nang mabilis. Ang mga slide ay hindi maaaring baguhin, kaya hindi ito naging maganda - kaya, sa pangkalahatan, sinusubukan kong huwag gumamit ng mga slide. Sa pangkalahatan, ang payo ko ay isaalang-alang ang iyong madla. Kailangan mong malaman kung sino ang iyong kausap, kung ano ang kanilang antas ng kaalaman, at kung ano ang kailangan nilang marinig upang pahalagahan ang iyong trabaho.

Виталий: Maaari mo bang bigyan kami ng pahiwatig kung tungkol saan ang lecture na ito?

Michael: Sa totoo lang, mas gugustuhin kong hindi palawakin ang paksang ito upang iwanang anonymous ang mga taong pinag-uusapan. Ang punto ay madalas tayong napapalalim sa mga masalimuot na problemang ating ginagawa, kaya nagiging mahirap para sa atin na ipaliwanag sa simula ng pag-uusap kung bakit kawili-wili at mahalaga ang problema at kung paano ito nauugnay sa mga isyu na alam na ng audience. Ayon sa aking mga obserbasyon, ang mga mag-aaral ang may pinakamahirap na oras sa pag-aaral ng kasanayang ito. At ito rin ang mahinang punto ng aking kamakailang ulat. Ang isang maayos na nakabalangkas na ulat ay dapat, sa simula pa lamang, ay makahanap ng pakikipag-ugnayan sa madla, ipaliwanag sa kanila kung ano ang eksaktong problema at kung paano ito nauugnay sa mga paksang alam na nito. Depende sa madla kung gaano teknikal ang pagpapakilalang ito. Kung ito ay ganap na motley, kung gayon ang ulat ay maaaring maging multi-stage. Ang pagpapakilala ay dapat na ma-access ng lahat, at sa pagtatapos ng piraso ay maaaring hindi makasabay sa iyo, ngunit ang mga taong medyo pamilyar sa iyong larangan ay malalaman ito.

Nagiging tanga ba ang mga estudyante? Global trend, internationalization.

Alexey: Ilang dekada mo nang inoobserbahan ang mga estudyante. Ang mga estudyante ba ay nagiging pipi o mas matalino mula dekada hanggang dekada o taon-taon? Sa Russia, ang mga propesor ay patuloy na nagrereklamo na ang mga mag-aaral ay nagiging dumber bawat taon, at talagang hindi malinaw kung ano ang gagawin tungkol dito.

Michael: Marami ka talagang maririnig na negativity sa aming mga matatanda. Subconsciously, mayroon tayong tendency na asahan na makukuha ng mga estudyante ang lahat ng 30 taong karanasan na mayroon na tayo. Kung mayroon akong mas malalim na pang-unawa kaysa noong 1985, bakit wala ang mga estudyante? Malamang dahil 20 years old na sila, ano sa tingin mo? Sa palagay ko ang pinakamahalagang pagbabago sa mga nakalipas na dekada ay nasa komposisyon ng demograpiko: mayroon na tayong mas maraming internasyonal na mag-aaral, maliban sa mga Canadian. Dati maraming Canadian dahil napakalapit namin sa hangganan ng Canada at ang mga mag-aaral mula doon ay maaaring umuwi kapag Sabado at Linggo. Ngunit ngayon ay maraming magagandang unibersidad sa Canada, at mas gusto ng mga Canadian na mag-aral dito nang mas kaunti sa kanila ang pumupunta sa USA.

Alexey: Sa tingin mo ba ito ay isang lokal na kalakaran o isang pandaigdigan?

Michael: Hindi ko talaga maalala kung sino, ngunit may nagsabi na ang mundo ay patag. Ang aming larangan ay naging higit na internasyonal. Mga Kumperensya ng ACM Dati, eksklusibo silang gaganapin sa loob ng Estados Unidos, pagkatapos ay nagpasya silang i-hold ang mga ito isang beses bawat 4 na taon sa ibang mga bansa, at ngayon ay gaganapin sila sa buong mundo. Ang mga pagbabagong ito ay higit na nakaapekto IEEE, dahil ito ay palaging isang mas internasyonal na organisasyon kaysa sa ACM. At may mga program chairs mula sa China, India, Russia, Germany at marami pang ibang bansa, dahil maraming nangyayari sa lahat ng dako ngayon.

Alexey: Ngunit, marahil, may ilang mga negatibong aspeto ng naturang internasyonalisasyon?

Michael: Sasabihin ko na ang lahat ng negatibong aspeto ay hindi nauugnay sa teknolohiya, ngunit sa pulitika. Noong unang panahon, ang pangunahing problema ay ang katotohanan na ang US ay nagnanakaw ng pinakamatalino at pinaka mahuhusay na tao mula sa mga bansa sa buong mundo. At ngayon ang pangunahing problema ay ang mga larong pampulitika sa pagitan ng iba't ibang bansa sa paligid ng visa at imigrasyon.

Alexey: Ibig sabihin, mga hadlang at mga bagay na katulad niyan. Malinaw na.

Vladimir: Sa personal, interesado ako sa kung anong diskarte ang gagawin mo kapag nagtuturo ng bagong paksa sa mga mag-aaral. Mayroong iba't ibang mga opsyon: maaari mong subukan muna sa lahat upang magbigay ng inspirasyon sa kanila na sumubok ng bago, o maaari mong bigyang pansin ang mga detalye kung paano gumagana ang isang partikular na teknolohiya. Ano ang mas gusto mo?

Epektibong trabaho sa mga mag-aaral

Alexey: At paano mahahanap ang mapahamak na balanse sa pagitan ng una at pangalawa?

Michael: Ang problema ay ang mga klase ay hindi palaging napupunta sa paraang gusto ko. Karaniwang binibigyan ko ang mga mag-aaral ng materyal sa pagbabasa nang maaga upang sila ay magsaliksik dito, maunawaan ito sa abot ng kanilang makakaya, at magbalangkas ng mga tanong tungkol sa mga bahaging iyon na hindi nila maintindihan. Pagkatapos sa klase maaari kang tumuon sa pinakamahirap na sandali at galugarin ang mga ito nang magkasama. Ito ang pinakagusto kong magturo sa mga klase. Ngunit dahil sa kargada na ngayon ay nakasalalay sa mga mag-aaral, hindi ko laging nakakasigurado na sila ay naghahanda nang maaga. Bilang resulta, kailangan mong maglaan ng mas maraming oras sa pangkalahatang muling pagsasalaysay ng materyal kaysa sa gusto mo. Sa kabila nito, sinisikap kong panatilihing interactive ang aming mga klase. Kung hindi, mas madaling mag-record ng video kapag mapanood na ng mga mag-aaral sa bahay. Ang punto ng mga live na klase ay pakikipag-ugnayan ng tao. Sa klase, mas gusto kong gumamit ng chalk at blackboard kaysa sa mga slide, maliban sa ilang partikular na kaso kapag ang isang diagram ay masyadong kumplikado upang ilarawan sa pisara. Dahil dito, hindi ko na kailangang manatili sa isang matibay na lesson plan. Dahil walang mahigpit na pagkakasunud-sunod kung saan ibibigay ko ang materyal, ito ay nagpapahintulot sa akin na maiangkop ito sa madla depende sa mga tanong na natatanggap ko. Sa pangkalahatan, sinusubukan kong gawing interactive ang mga klase hangga't maaari, upang ang materyal na ilalahad ko ay depende sa mga tanong na itinatanong sa akin.

Vladimir: Ang galing. Sa aking karanasan, medyo mahirap makakuha ng mga tagapakinig na magtanong. Kahit na magtanong ka nang maaga upang magtanong ng anumang mga katanungan, gaano man katanga o matalino, sila ay tahimik pa rin. Paano mo ito haharapin?

Michael: Matatawa ka, ngunit kung magtatagal ka sa katahimikan, maya-maya ay magiging hindi komportable ang lahat at may magtatanong. O maaari kang magtanong ng isang simpleng teknikal na tanong na may sagot na oo o hindi upang matukoy kung naiintindihan ng mga tao ang kakasabi lang. Halimbawa, mayroon bang data race sa halimbawa sa itaas? Sino ang nag-iisip? Sinong hindi nag-iisip? Sino ang hindi nakakaintindi ng kahit ano, dahil sa kabuuan kalahati lang ng mga kamay ang nakataas?

Виталий: At kung mali ang sagot mo, masisipa ka sa klase :)

Michael: Kung wala kang nasagot, dapat kang magtanong. Kailangan kong maunawaan kung ano ba talaga ang kailangang malaman ng estudyante para masagot ang tanong ko. Kailangan ko silang tulungan akong tulungan sila. Handa akong makibagay sa kanila para maintindihan nila ang problema. Pero kung hindi ko alam kung ano ang nasa isip nila, hindi ko magagawa. At kung hindi mo bibigyan ng kapayapaan ang mga mag-aaral sa loob ng mahabang panahon, kung minsan sa huli ay nagtatanong sila ng mga tamang tanong, iyon ay, mga bagay na nagpapahintulot sa akin na makita kung ano ang eksaktong nangyayari sa ulo ng mga mag-aaral. 

Alexey: Minsan ba ay humahantong ang mga tanong na ito sa mga ideya na hindi mo naisip noon? Hindi ba sila inaasahan? Pinapayagan ka ba nilang tingnan ang isang problema sa isang bagong liwanag?

Michael: May mga tanong na nagbubukas ng bagong paraan ng paglalahad ng materyal. Madalas may mga tanong na humahantong sa mga kagiliw-giliw na problema na hindi ko planong pag-usapan. Madalas sabihin sa akin ng mga estudyante na may tendency akong lumayo sa paksa kapag nangyari ito. At, ayon sa kanila, madalas na ito ang pinaka-kagiliw-giliw na bahagi ng aralin. Napakabihirang, ilang beses lang, nagtanong ang mga mag-aaral na nag-udyok ng bagong direksyon sa pananaliksik at naging isang artikulo. Ito ay nangyayari nang mas madalas sa mga pakikipag-usap sa mga mag-aaral kaysa sa panahon ng mga klase, ngunit paminsan-minsan ito ay nangyayari sa panahon ng mga klase. 

Alexey: Kaya tinanong ka ng mga mag-aaral sa batayan kung saan posible na mag-publish ng isang artikulo?

Michael: Oo. 

Виталий: Gaano kadalas mo itong mga pag-uusap sa mga mag-aaral? Kailan nila gustong matuto nang higit pa kaysa sa tinalakay sa aralin?

Michael: Kasama ang aking mga mag-aaral na nagtapos - sa lahat ng oras. Mayroon akong mga 5 o 6 sa kanila, at may pinag-uusapan kami sa kanila sa lahat ng oras. At ang ganitong uri ng pag-uusap sa mga mag-aaral na pumapasok lamang sa aking mga klase ay hindi karaniwan. Kahit na nais kong mangyari ito nang mas madalas. Hinala ko, takot lang silang pumunta sa faculty kapag office hours. Tuwing semestre, napapagtagumpayan ng ilang estudyante ang sikolohikal na hadlang na ito, at palaging napakainteresante na makipag-usap sa kanila pagkatapos ng klase. Totoo, kung ang lahat ng mga estudyante ay kasing tapang, wala akong sapat na oras. Kaya marahil ang lahat ay gumagana ayon sa nararapat. 

Виталий: Paano ka nakakahanap ng oras para makipag-usap sa mga mag-aaral? Sa pagkakaalam ko, sa USA ang mga guro ay maraming trabaho - nag-aaplay para sa mga gawad at iba pa. 

Michael: Sa totoo lang, ang pakikipagtulungan sa mga mag-aaral ay ang aspeto ng aking trabaho na pinaka-enjoy ko. Kaya mayroon akong sapat na motibasyon para dito. Karamihan sa mga oras na ginugugol ko sa aking opisina ay ginugugol sa mga pagpupulong ng lahat ng uri. Summer ngayon, kaya hindi gaanong busy ang schedule ko, pero kapag school year, every day from 9 to 17 I have everything pack. Trabaho sa pananaliksik, pagsusuri, mga gawad - para sa lahat ng ito mayroon lamang mga gabi at katapusan ng linggo. 

Paano makasabay sa paghahanda ng mga bagong kurso at aklat.

Alexey: Kasalukuyan ka bang nagpapatuloy sa pagtuturo ng anumang kursong matagal mo nang itinuturo? Isang bagay na tulad ng isang panimula sa Computer Science.

Michael: Ang unang bagay na pumapasok sa isip dito ay isang kurso sa mga programming language. 

Alexey: Gaano kaiba ang bersyon ngayon ng kursong ito kumpara noong 10, 20, 30 taon na ang nakararaan? Marahil ang mas kawili-wili dito ay hindi ang mga detalye ng isang partikular na kurso, ngunit ang mga pangkalahatang uso.

Michael: Ang kurso ko sa mga programming language ay medyo hindi pangkaraniwan noong nilikha ko ito. Sinimulan kong basahin ito noong huling bahagi ng dekada 1980, pinalitan ang aking kasamahan, si Doug Baldwin (Doug Baldwin). Ang paksa ng kurso ay may kaugnayan lamang sa aking espesyalidad, ngunit nang umalis siya, ako ang pinakamahusay na kandidato upang magturo ng kurso. Hindi ko gusto ang alinman sa mga aklat-aralin na umiiral noong panahong iyon, kaya ako mismo ang nagtapos sa pagsulat ng aklat-aralin para sa kursong ito. (Tala ng editor: pinag-uusapan natin ang tungkol sa libro "Programming Language Pragmatics") Ito ay ginagamit na ngayon sa higit sa 200 unibersidad sa buong mundo. Ang aking diskarte ay hindi pangkaraniwan dahil sadyang pinaghahalo nito ang mga problema sa disenyo at pagpapatupad ng wika, at binibigyang pansin ang pakikipag-ugnayan sa pagitan ng mga aspetong ito sa lahat ng posibleng lugar. Ang pangunahing diskarte ay nanatiling hindi nagbabago, tulad ng maraming mga pangunahing konsepto: abstraction, namespaces, modularity, mga uri. Ngunit ang hanay ng mga wika kung saan ipinakita ang mga konseptong ito ay ganap na nagbago. Noong unang ginawa ang kurso, maraming mga halimbawa sa Pascal, ngunit ngayon marami sa aking mga mag-aaral ay hindi pa nakakarinig ng wikang ito. Ngunit alam nila ang Swift, Go, Rust, kaya kailangan kong pag-usapan ang mga wikang ginagamit ngayon. Gayundin, ang mga mag-aaral ay bihasa na ngayon sa mga wika ng scripting, ngunit noong sinimulan kong ituro ang kursong ito, ito ay tungkol sa pinagsama-samang mga wika. Ngayon kailangan namin ng maraming materyal tungkol sa Python, Ruby at kahit Perl, dahil ito ang nakasulat sa mga araw na ito, at maraming mga kagiliw-giliw na bagay ang nangyayari sa mga wikang ito, kabilang ang larangan ng disenyo ng wika. 

Виталий: Kung gayon ang aking susunod na tanong ay nauugnay sa nauna. Paano panatilihing up sa lugar na ito? Pinaghihinalaan ko na ang pag-update ng naturang kurso ay nangangailangan ng maraming trabaho - kailangan mong maunawaan ang mga bagong wika, maunawaan ang mga pangunahing ideya. Paano mo ito ginagawa?

Michael: Hindi ko maipagmamalaki na palagi akong nagtatagumpay 100%. Ngunit kadalasan ginagawa ko lang ang ginagawa ng iba - magbasa ng Internet. Kung gusto kong intindihin ang Rust, i-Google ko ito, pumunta sa Mozilla page at basahin ang manual na naka-post doon. Ito ay bahagi ng mga bagay na nangyayari sa komersyal na pag-unlad. Kung pinag-uusapan natin ang tungkol sa agham, kailangan mong sundin ang mga ulat sa mga pangunahing kumperensya. 

Link sa pagitan ng negosyo at akademya

Виталий: Pag-usapan natin ang koneksyon sa pagitan ng negosyo at siyentipikong pananaliksik. Sa iyong listahan ng mga gawa, nakakita ako ng ilang artikulo tungkol sa pagkakaugnay ng cache. Naiintindihan ko na ang mga algorithm ng pagkakapare-pareho ng cache ay hindi matatag sa oras na nai-publish ang mga ito? O hindi sapat na kalat na kalat. Gaano kadalas ang iyong mga ideya sa pagsasanay?

Michael: Hindi ako sigurado kung aling mga publikasyon ang iyong pinag-uusapan. Medyo marami na akong nagawa kasama ang aking mga mag-aaral na si Bill Bolosky (William Bolosky) at Leonidas Kontotanassis (Leonidas Kontothanassis) noong unang bahagi ng 1990s sa pamamahala ng memorya ng mga makina ng Neumann. Sa oras na iyon, ang negosyo ay wala pang pag-unawa sa kung paano maayos na gumawa ng isang multiprocessor system: sulit ba ang paglikha ng suporta para sa pag-access ng malayong memorya sa antas ng hardware, sulit ba na ipamahagi ang memorya, posible bang i-load ang cache mula sa malayong memorya, o kailangan bang ilipat ang mga pahina sa operating room? Parehong nagtrabaho sina Bill at Leonidas sa lugar na ito at nag-explore ng mga diskarte nang hindi naglo-load ng malayong cache. Hindi ito direktang nauugnay sa pagkakaugnay-ugnay ng cache, ngunit gumagana pa rin ito sa pamamahala ng memorya ng NUMA, at pagkatapos nito ay lumago ang mga modernong diskarte sa paglalagay ng pahina sa mga modernong operating system. Sa pangkalahatan, gumawa sina Bill at Leonidas ng mahalagang gawain, kahit na hindi ang pinaka-maimpluwensyang lugar na ito - marami pang ibang tao ang nagtatrabaho sa parehong bagay noong panahong iyon. Nang maglaon, nagtrabaho ako sa isang paksa na may kaugnayan sa cache coherence sa konteksto ng memorya ng transactional ng hardware. Ang grupong nakatrabaho ko sa problemang ito ay nauwi sa pagtanggap ng ilang mga patent. Mayroong ilang mga medyo kawili-wiling ideya sa likod ng mga ito, ngunit sa palagay ko ay hindi sila mapapatupad sa pagsasanay. Sa isang paraan o iba pa, mahirap para sa akin na hatulan ang kanilang kakayahang kumita. 

Alexey: Sa bagay na ito, isang mas personal na tanong: gaano kahalaga sa iyo na ang iyong mga ideya ay maisabuhay? O hindi mo iniisip ito?

Michael: Gusto kong itanong ang tanong na ito sa mga panayam sa ibang tao, aplikante o kandidatong gustong sumali sa faculty. Sa palagay ko ay walang tamang sagot sa tanong na ito. Ang mga taong gumagawa ng mga cool na bagay ay maaaring magkaroon ng ibang motibasyon. Naaakit ako sa mga problema dahil personal kong nakikita ang mga ito na kawili-wili, hindi dahil sa kanilang mga praktikal na benepisyo. Ngunit sa kabilang banda, kapag ang ilang kawili-wiling bagay ay nakahanap pa rin ng aplikasyon, talagang gusto ko ito. Kaya hindi madali dito. Ngunit sa simula ng aking trabaho, hindi pa rin ako hinihimok ng ideya ng isang pangwakas na paggamit sa mundo, ngunit sa pagkakaisa ng ideya at pagnanais na tuklasin ito at makita kung ano ang nanggagaling dito. Kung sa huli ay nagbibigay ito ng mga praktikal na resulta, mahusay. 

Alexey: Dahil sa iyong edukasyon at karanasan, mas kaya mong husgahan ang halaga ng mga ideya ng ibang tao kaysa sa karamihan. Maaari mong ihambing ang mga ito at matukoy kung alin ang mas mahusay kung alin. Sigurado ako na mayroon kang opinyon tungkol sa mga bagay na kasalukuyang ginagamit sa pagsasanay ng malalaking tagagawa tulad ng Intel. Sa iyong pananaw, gaano katama ang kursong kinukuha ng mga kumpanyang ito?

Michael: Ang pagsasanay ay palaging umiikot sa kung ano ang maaaring maging matagumpay sa komersyo, iyon ay, lumikha ng kita, at mas mabuting magtanong ka sa iba tungkol diyan. Ang aking trabaho ay kadalasang nagreresulta sa mga publikasyon, at sa larangan ng mga operating system ang mga ito ay sinusuri batay sa mga tagapagpahiwatig ng pagganap: bilis, pagkonsumo ng enerhiya, laki ng code. Ngunit palaging tila sa akin na ang mga empirikal na resultang ito ay idinaragdag sa mga artikulo lamang upang mai-publish ang mga ito, at ang tunay na motibo ng mga tao para sa trabaho ay aesthetic. Sinusuri ng mga mananaliksik ang mga solusyon mula sa isang artistikong pananaw, pinapahalagahan nila kung gaano ka-elegante ang mga ideya, at sinusubukan nilang lumikha ng isang bagay na mas mahusay kaysa sa mga kasalukuyang diskarte. Ang mga mananaliksik ay hinihimok ng personal, subjective, aesthetic motives. Ngunit hindi mo maaaring isulat ang tungkol dito sa mismong artikulo; ang mga bagay na ito ay hindi mga argumento para sa komite ng programa. Sa kabutihang palad, ang mga eleganteng solusyon ay madalas ding mabilis at mura. Isang dosena ng aking mga kasamahan at tinalakay ko ang paksang ito mga 15 taon na ang nakalilipas at nagtapos sa pagsulat ng isang artikulo tungkol dito. Sa tingin ko ay mahahanap mo pa rin ito ngayon, ito ay tinatawag "Paano suriin ang mga sistema ng pananaliksik" o isang bagay na tulad nito, mayroon itong higit sa isang dosenang mga may-akda. Ito ang tanging artikulo kung saan kasama ko ang may-akda Sasha Fedorova, kaya kung hahanapin mo ang kanyang pangalan sa aking listahan ng mga publikasyon, makikita mo ang kailangan mo. Pinag-uusapan nito ang tungkol sa pagsusuri sa pagsasaliksik ng mga system at kung gaano kahalaga ang kagandahan. 

Alexey: Kaya may pagkakaiba sa pagitan ng pamantayan ng kung ano ang itinuturing na mabuti sa agham at sa negosyo. Sinusuri ng agham ang pagganap, pagkonsumo ng kuryente, TDP, kadalian ng pagpapatupad, at marami pa. May pagkakataon ka bang magsagawa ng ganitong uri ng pananaliksik sa unibersidad? Mayroon ka bang laboratoryo na may iba't ibang makina at iba't ibang arkitektura kung saan maaari kang magsagawa ng mga eksperimento?

Michael: Oo, ang aming departamento ay may maraming iba't ibang kawili-wiling mga makina. Kadalasan ang mga ito ay maliit, mayroon kaming isang maliit na kumpol at maraming mga multiprocessor system na may iba't ibang mga accelerator. Bilang karagdagan, ang campus ay may malaking computing center na nagsisilbi sa mga siyentipiko mula sa ilang dosenang iba't ibang mga disiplina. Mayroon itong halos isang libong node at dalawampung libong core, lahat ay nasa Linux. Kung kinakailangan, maaari kang palaging bumili ng ilang AWS. Kaya wala kaming makabuluhang paghihigpit sa hardware. 

Alexey: Ano ang nangyari tatlumpung taon na ang nakalipas? May mga problema ba noon?

Michael: Medyo iba noon. Sa kalagitnaan ng huling bahagi ng 1980s, ang agham ay itinuturing na kulang sa mga mapagkukunan sa pag-compute. Upang malunasan ang sitwasyong ito, ang National Science Foundation (National Science Foundation) lumikha ng isang programa ng coordinated experimental research (Coordinated Experimental Research, CER). Ang misyon ng programa ay magbigay ng imprastraktura ng computing para sa mga departamento ng Computer Science, at nakamit nito ang makabuluhang pagbabago. Sa perang ibinigay niya, kami sa University of Rochester ay bumili ng 1984-knot BBN Butterfly noong 128, ito ay isang taon bago ako nakarating doon. Noong panahong iyon, ito ang pinakamalaking multiprocessor system sa mundo na may shared memory. Mayroon itong 128 na mga processor, bawat isa sa isang hiwalay na motherboard, at sinakop ang apat na rack. Ang bawat processor ay may isang megabyte ng memorya, 128 megabytes ng RAM ay isang hindi maisip na halaga sa oras na iyon. Sa machine na ito, ipinatupad namin ang MCS locking sa unang pagkakataon. 

Alexey: Kaya, kung naiintindihan kita nang tama, pagkatapos ay sa sandaling ang problema sa hardware ay nalutas na? 

Michael: Sa pangkalahatan, oo. Mayroong ilang mga babala: una, kung gumagawa ka ng arkitektura ng computer sa antas ng chip, mahirap gawin sa isang kapaligirang pang-akademiko dahil may mas mahusay na mga tool para sa paggawa nito sa negosyo. Kung kailangan mo ng anumang bagay na mas maliit sa 10 nanometer, kakailanganin mong i-order ito sa iba. Sa lugar na ito, mas madaling maging researcher sa Intel. Kung nagtatrabaho ka sa mga optical na komunikasyon sa mga chips o sa solid-state na memorya, makakahanap ka ng mga teknolohiya sa negosyo na wala pa sa agham, kaya kailangan mong lumikha ng mga alyansa. Halimbawa, si Stephen Swanson (Steven Swanson) nilikha ganyang partnership para sa mga bagong teknolohiya ng memorya. Ang form na ito ay hindi palaging gumagana, ngunit sa ilang mga kaso maaari itong maging matagumpay. Bilang karagdagan, ang pagbuo ng pinakamakapangyarihang mga sistema ng computing sa agham ay mas mahirap. Ang pinakamalaking supercomputer na proyekto na kasalukuyang nasa US, Japan at China ay nakatuon lahat sa negosyo. 

Praktikal na pagpapatupad ng mga ideya. MCS, MS, CLH, JSR 166, nakikipagtulungan kay Doug Lee at higit pa.

Виталий: Napag-usapan mo na kung paano ka nagsimulang magtrabaho sa mga algorithm ng pag-synchronize. Mayroon kang dalawang napaka sikat na artikulo tungkol sa Pag-block ng MCS и Michael-Scott queue (MS), na sa isang kahulugan ay ipinatupad sa Java. (Tala ng editor: lahat ng publikasyon ay maaaring matingnan по ссылке). Doon ipinatupad ang pagharang na ito na may ilang mga pagbabago at ito pala CLH lock, at ang pila ay ipinatupad ayon sa nilalayon. Ngunit maraming taon ang lumipas sa pagitan ng paglalathala ng iyong mga artikulo at ng kanilang praktikal na aplikasyon. 

Alexey: Parang mga 10 years sa kaso ng pila.

Michael: Bago lumabas ang mga feature na ito sa Java standard library?

Виталий: Oo. Ano ang ginawa mo para mangyari ito? O wala silang ginawa?

Michael: Masasabi ko sa iyo kung paano nakapasok ang MS Queue sa Java 5. Ilang taon bago ito lumabas, nagtrabaho ako sa grupo ni Mark Moyers sa Sun Microsystems sa kanilang lab malapit sa Boston. Nag-organisa siya ng workshop para sa mga taong kilala niya na gumagawa ng mga kagiliw-giliw na problema sa multithreading dahil gusto niyang makahanap ng mga paksa na maaari niyang ibenta sa kanilang kumpanya. Doon ko unang nakilala si Doug Lea. Kami ni Doug at ang tungkol sa 25 iba pang mga tao mula sa Sun ay magkasamang tinatalakay ang presentasyon ni Doug sa JSR 166, na kalaunan ay naging java.util.concurrent. Sa daan, sinabi ni Doug na gusto niyang gamitin ang MS queue, ngunit para dito kailangan niya ng counter para sa bilang ng mga elemento sa queue para sa interface. Iyon ay, ito ay dapat na ginawa sa pamamagitan ng isang hiwalay na pamamaraan, atomic, tumpak at mabilis. Iminungkahi ko na magdagdag lamang ng mga serial number sa mga node, kunin ang numero ng unang node at ang huli at ibawas ang isa mula sa isa. Napakamot si Doug ng kanyang ulo, sinabing "bakit hindi," at natapos na gawin iyon. Tinalakay namin ang pagpapatupad ng diskarteng ito sa silid-aklatan, ngunit si Doug mismo ang gumawa ng karamihan sa gawain. Bilang resulta, nagawa niyang magtatag ng mahusay na suporta sa multithreading sa Java. 

Alexey: Kaya, kung naiintindihan ko nang tama, ang .size() na paraan ay dapat na bahagi ng karaniwang interface ng queue, at ito ay dapat magkaroon ng algorithmic complexity ng O(1)?

Michael: Oo, at bilang karagdagan dito, kinakailangan ang isang hiwalay na counter.

Alexey: Dahil kung tatawagin mo ang .size() na pamamaraan sa Java, inaasahang makukuha kaagad ang resulta at hindi batay sa aktwal na laki ng koleksyon. Nakikita ko, salamat.

Michael: Makalipas ang ilang taon, nagtatrabaho ako sa dalawahang istruktura ng data kasama ang aking mag-aaral na si Bill Scherer - sa katunayan, ito ang pag-uusapan ko ulat sa Hydra. Lumapit sa amin si Doug at sinabing magagamit niya ang mga ito sa Java Executor Framework. Kasama ni Bill, gumawa sila ng dalawang pagpapatupad, ang tinatawag na patas at hindi patas na pila. Pinayuhan ko sila sa proyektong ito, kahit na hindi ako nakilahok sa pagsulat ng aktwal na code. Bilang isang resulta, ang bilis ng mga tagapagpatupad ay tumaas nang malaki. 

Vladimir: Nakatagpo ka ba ng mga maling pagpapatupad ng iyong mga algorithm o mga kahilingang magdagdag ng mga bagong feature? Sa pangkalahatan, ang pagsasanay ay dapat na tumutugma sa teorya, ngunit madalas na naiiba ang mga ito. Ipagpalagay na nagsulat ka ng isang algorithm, at sa papel ay gumagana ito, ngunit ang mga taong kasangkot sa pagpapatupad ay nagsimulang humingi sa iyo ng higit pang mga tampok o ilang uri ng pag-aayos ng algorithm. Nakaranas ka na ba ng mga ganitong sitwasyon?

Michael: Ang tanging halimbawa kung saan may lumapit sa akin at nagtanong "kung paano ito ipatupad" ay ang tanong ni Doug, na napag-usapan ko na. Ngunit may ilang mga kaso kung saan ang mga kagiliw-giliw na pagbabago ay ginawa upang umangkop sa mga praktikal na pangangailangan. Halimbawa, na-convert ng K42 team sa IBM ang MCS lock at ginawa itong karaniwang interface kaya hindi na kailangang ipasa ang queue node nang pabalik-balik sa pagkuha at pagpapalabas na mga gawain. Salamat sa karaniwang interface na ito, isang ideya na maganda sa teorya ay nagsimulang gumana sa pagsasanay. Nakapagtataka na hindi sila nag-publish ng isang artikulo tungkol dito, at bagama't nakatanggap sila ng isang patent, kalaunan ay inabandona nila ito. Napakaganda ng ideya, at sinusubukan kong pag-usapan ito hangga't maaari. 

Mayroong iba pang mga kaso kung saan ang mga tao ay gumawa ng mga pagpapabuti sa mga algorithm na aking nai-publish. Halimbawa, ang MS queue ay may dalawang-hakbang na mekanismo ng pag-install, na nangangahulugang mayroong dalawang CAS sa kritikal na landas ng pila. Sa mas lumang mga kotse, ang CAS ay medyo mahal. Ang Intel at iba pang mga tagagawa ay na-optimize ang mga ito kamakailan, ngunit minsan ang mga ito ay 30-cycle na mga tagubilin, kaya ang pagkakaroon ng higit sa isa sa kritikal na landas ay hindi kanais-nais. Bilang resulta, nabuo ang ibang pila na katulad ng MS queue, ngunit mayroon lamang isang atomic na operasyon sa kritikal na landas. Nakamit ito dahil sa katotohanan na sa isang tiyak na tagal ng panahon ang operasyon ay maaaring tumagal ng O(n) oras, sa halip na O(1). Ito ay hindi malamang, ngunit posible. Nangyari ito dahil sa ang katunayan na sa ilang sandali ay binagtas ng algorithm ang pila mula sa simula hanggang sa kasalukuyang posisyon sa pila na ito. Sa pangkalahatan, ang algorithm ay naging matagumpay. Sa pagkakaalam ko, ito ay hindi masyadong malawak na ginagamit, bahagyang dahil ang mga atomic na operasyon ay nangangailangan ng mas kaunting mapagkukunan kaysa dati. Ngunit ang ideya ay mahusay. Gusto ko rin talaga ang gawa ni Dave Dice mula sa Oracle. Napakapraktikal ng lahat ng ginagawa niya at napakatalino niyang gumamit ng bakal. Siya ay may isang kamay sa karamihan ng NUMA-aware synchronization algorithm at multi-threaded na mga istruktura ng data. 

Vladimir: Kapag sumulat ka ng mga algorithm o nagtuturo sa mga mag-aaral, hindi agad makikita ang resulta ng iyong trabaho. Ang komunidad ay nangangailangan ng ilang oras upang maging pamilyar sa, sabihin, isang bagong artikulo. Ang bagong algorithm ay hindi agad nakahanap ng aplikasyon. 

Michael: Ito ay malayo sa agad na malinaw kung ang artikulo ay magiging makabuluhan o hindi. Sa tingin ko magiging kawili-wiling gawin ang pag-aaral ng mga papeles na nanalo ng mga parangal sa mga kumperensya. Iyon ay, tingnan ang mga artikulo na ang mga tao sa mga komite ng programa sa isang pagkakataon ay itinuturing na pinakamahusay. Kailangan mong subukang kalkulahin sa pamamagitan ng bilang ng mga link at ang epekto sa negosyo kung gaano kaimpluwensya ang mga artikulong ito sa loob ng 10, 20, 25 taon. Duda ako na magkakaroon ng malakas na ugnayan sa pagitan ng dalawa. Hindi ito magiging zero, ngunit malamang na mas mahina ito kaysa sa gusto natin. Maraming mga ideya ang nananatiling hindi inaangkin sa loob ng mahabang panahon bago sila maging laganap. Halimbawa, kunin natin ang transactional memory. Mahigit sa 10 taon ang lumipas mula noong nai-publish ang orihinal na artikulo hanggang sa aktwal na nagsimula ang mga tao sa paggawa ng mga makina gamit ito. At bago ang hitsura ng memorya na ito sa mga komersyal na produkto - at lahat ng 20. Sa napakatagal na panahon walang sinuman ang nagbigay pansin sa artikulo, at pagkatapos ay ang bilang ng mga link dito ay tumaas nang husto. Mahirap hulaan ito nang maaga. Sa kabilang banda, kung minsan ang mga ideya ay nakahanap kaagad ng pagpapatupad. Ilang taon na ang nakalilipas, nagsulat ako ng isang papel kasama si Joe Izraelevitz para sa DISC na nagmungkahi ng bagong pormal na kahulugan ng validity para sa patuloy na mga istruktura ng data na maaaring magamit pagkatapos mag-crash ang computer na nagpapatakbo sa kanila. Nagustuhan ko ang artikulo mula pa sa simula, ngunit ito ay naging mas sikat kaysa sa inaasahan ko. Ginamit ito ng maraming iba't ibang grupo at kalaunan ay naging karaniwang kahulugan ng mga istruktura ng pagtitiyaga. Na, siyempre, ay maganda.

Vladimir: Mayroon bang anumang mga pamamaraan na ginagamit mo para sa pagtatasa? Sinusubukan mo bang suriin ang iyong mga artikulo at ang iyong mga mag-aaral? Sa mga tuntunin kung ang taong tinuruan mo ay patungo sa tamang direksyon.

Michael: Tulad ng iba, mas binibigyang pansin ko ang ginagawa ko sa ngayon. Muli, tulad ng iba, paminsan-minsan ay sinusuri ko ang Google Scholar upang makita kung ang aking mga nakaraang papel ay binanggit, ngunit iyon ay higit pa sa kuryusidad. Mostly na-absorb ako sa ginagawa ng mga estudyante ko ngayon. Pagdating sa pagsusuri sa kasalukuyang gawain, bahagi nito ang mga aesthetic na pagsasaalang-alang, kung ano ang elegante at kung ano ang hindi. At sa pang-araw-araw na antas, ang mga bukas na tanong ay may malaking papel. Halimbawa, lumapit sa akin ang isang mag-aaral na may dalang graph ng ilang resulta, at sinusubukan naming maunawaan kung saan nagmula ang ilang kakaibang gawi ng graph. Sa pangkalahatan, sa ating gawain ay patuloy nating sinisikap na maunawaan ang mga bagay na hindi pa natin naiintindihan. 

Memorya ng transaksyon

Виталий: Siguro maaari nating pag-usapan ang tungkol sa transactional memory?

Michael: Sa tingin ko ito ay nagkakahalaga ng pagsasabi ng kahit kaunti dahil naglagay ako ng maraming pagsisikap dito. Ito ay isang paksa kung saan mayroon akong mas maraming publikasyon kaysa sa iba. Ngunit sa parehong oras, sapat na kakatwa, palagi akong nag-aalinlangan tungkol sa transactional memory. Sa aking opinyon, artikulo ni Herlihy at Moss (M. Herlihy, J. E. B. Moss) ay nai-publish nang mas maaga sa panahon nito. Noong unang bahagi ng 1990s, iminungkahi nila na ang transactional memory ay maaaring makatulong sa mga mahuhusay na programmer na magtrabaho sa mga multi-threaded na istruktura ng data, upang ang mga istrukturang ito ay maaaring magamit bilang mga aklatan ng mga ordinaryong programmer. Ibig sabihin, magiging tulong ito para kay Doug Lee sa paggawa ng kanyang JSR 166. Ngunit ang transactional memory ay hindi nilayon upang gawing madali ang multi-threaded programming. Ngunit ito ay eksakto kung paano ito nagsimulang makita noong unang bahagi ng 2000s, nang ito ay naging laganap. Ito ay na-advertise bilang isang paraan upang malutas ang problema ng parallel programming. Ang diskarte na ito ay palaging tila walang pag-asa sa akin. Mapapadali lang ng transactional memory ang pagsulat ng mga parallel na istruktura ng data. Ito, tila sa akin, ay kung ano ang kanyang nakamit. 

Tungkol sa kahirapan ng pagsulat ng multi-threaded code

Alexey: Napaka-interesante. Tila mayroong isang tiyak na hadlang sa pagitan ng mga regular na programmer at ng mga maaaring magsulat ng multi-threaded code. Noong nakaraang taon, ilang beses akong nakipag-usap sa mga taong nagpapatupad ng ilang algorithmic framework. Halimbawa, kay Martin Thomson, gayundin sa mga programmer na nagtatrabaho sa mga multi-threaded na aklatan. (Tala ng editor: Si Martin Thompson ay isang sikat na developer, isinulat niya Disruptor и Aeron. At meron din siya ulat sa aming Joker 2015 conference, video recording available sa YouTube. Ganun din siya binuksan kumperensyang ito keynote recording magagamit din). Ang pangunahing hamon, sabi nila, ay ang paggawa ng mga algorithm na parehong mabilis at madaling gamitin. Iyon ay, sinusubukan nilang malampasan ang hadlang na ito at makaakit ng maraming tao hangga't maaari sa lugar na ito. Ano sa tingin mo?

Michael: Ito ang pangunahing problema ng multithreading: kung paano makamit ang mataas na pagganap nang hindi nadaragdagan ang pagiging kumplikado ng system. 

Alexey: Dahil kapag sinubukan nilang iwasan ang pagiging kumplikado, nagiging hindi gaanong unibersal ang algorithm.

Michael: Ang susi dito ay maayos na idinisenyong abstraction. Tila sa akin na ito ay karaniwang ang pangunahing bagay para sa mga sistema ng computer bilang isang larangan. Gustong gamitin ni Butler Lampson ang terminong ito, at tinawag niya kaming "mga mangangalakal ng abstraction." Ang mga simpleng teknolohiya ay hindi umiiral ngayon. Ang mga processor na ginagamit namin ay mayroong 10 bilyong transistor—ang pagiging simple ay wala sa tanong. Kasabay nito, ang ISA ay mas simple kaysa sa processor, dahil nagtrabaho kami ng napakatagal na panahon upang mabigyan ito ng mataas na pagganap at medyo simpleng interface. Pero hindi rin maayos ang lahat sa kanya. Ang parehong problema ay sa mga accelerators na lumalabas na ngayon sa merkado. Bumangon ang mga tanong - kung paano gumawa ng tamang interface para sa GPU, isang mekanismo ng pag-encrypt, compression, isang mekanismo ng transcoding, isang linear na mekanismo ng algebra, o kahit isang mas nababaluktot na FPGA. Paano lumikha ng isang interface na ginagawang madaling gamitin ang tool at nagtatago ng pagiging kumplikado? Hindi nito mapupuksa ito, ngunit sa halip ay itago ito mula sa isang simpleng programmer. 

Alexey: Sa pagkakaintindi ko, mayroon pa rin tayong hadlang sa pag-unawa sa mga abstraction. Kunin natin ang modelo ng memorya sa ating yugto ng pag-unlad ng agham at teknolohiya, ito ay isa sa mga pangunahing abstraction. Salamat dito, ang lahat ng mga programmer ay nahahati sa dalawang grupo: ang mas malaking bahagi ay ang mga hindi nakakaunawa nito, at ang mas maliit na bahagi ay ang mga nakakaunawa, o nag-iisip na naiintindihan nila. 

Michael: Iyan ay isang magandang tanong - mayroon ba sa atin na talagang naiintindihan ang modelo ng memorya?

Виталий: Lalo na sa C++.

Michael: Kausapin si Hans Boehm minsan. Isa siya sa pinakamatalinong taong kilala ko, isang nangungunang eksperto sa mga modelo ng memorya. Sasabihin niya kaagad sa iyo na marami siyang hindi naiintindihan. Ngunit kung babalik tayo sa isyu ng mga abstraction, kung gayon, sa palagay ko, ang pinakamahalagang ideya sa larangan ng mga modelo ng memorya sa nakalipas na 30 taon ay ipinahayag. sa disertasyon ni Sarita Adve. (Tala ng editor: isang kumpletong listahan ng mga publikasyon ay magagamit по ссылке).

Alexey: Ang tanong ko ay: nagmula ba ang hadlang na ito sa mismong kalikasan ng konsepto? 

Michael: Hindi. Napagpasyahan ni Sarita na sa tamang diskarte, maaari mong matagumpay na itago ang lahat ng pagiging kumplikado, makakuha ng mataas na pagganap at bigyan ang programmer ng isang simpleng API. At kung susundin mo ang API na ito, makakamit mo ang pare-parehong pagkakapare-pareho. Sa tingin ko ito ang tamang modelo. Sumulat ng code nang walang mga karera ng data at makakuha ng sequential consistency. Siyempre, upang mabawasan ang posibilidad ng karera, kailangan ang mga espesyal na tool, ngunit iyon ay ibang bagay. 

Vladimir: May mga pagkakataon ba sa iyong karera na ang isang problema na tila nalutas ay biglang naging isang sakuna, o ito ay naging hindi malulutas ang problemang ito? Halimbawa, sa teorya maaari mong i-factor ang anumang numero o matukoy kung ang anumang numero ay prime. Ngunit sa pagsasagawa, mahirap itong gawin sa kasalukuyang hardware na mahirap i-factor ang mga numero. May nangyari bang katulad sa iyo?

Michael: Wala akong maalala agad na ganyan. May mga pagkakataon na tila sa akin ay wala nang magagawa sa isang partikular na lugar, ngunit pagkatapos ay may bago at kawili-wiling nangyari doon. Halimbawa, naisip ko na ang lugar ng walang limitasyong pagpila ay umabot na sa kapanahunan. Pagkatapos ng ilang pagpapabuti sa pila ng MNS, wala nang masyadong nangyari. At pagkatapos ay naimbento sina Morrison (Adam Morrison) at Afek (Yehuda Afek). LCRQ pila. Naging malinaw na posible ang isang walang limitasyong multi-threaded queue, kung saan kadalasan ay mayroon lamang isang fetch-and-increment na pagtuturo sa kritikal na landas. At ginawa nitong posible na makamit ang isang order ng magnitude na mas mahusay na pagganap. Hindi naman sa hindi natin alam na ang fetch-and-increment ay isang napaka-kapaki-pakinabang na bagay. Isinulat ito ni Eric Freudenthal sa kanyang trabaho sa Ultracomputer kasama si Allan Gottlieb noong huling bahagi ng 1980s, ngunit ito ay tungkol sa limitadong mga pila. Nagamit nina Morrison at Afek ang fetch-and-increment sa isang walang hangganang pila.

Mga bagong arkitektura. Malapit na ba ang tagumpay ng transactional memory?

Vladimir: Naghahanap ka ba ng mga bagong solusyon sa arkitektura na maaaring maging kapaki-pakinabang para sa mga algorithm? 

Michael: Siyempre, maraming bagay na gusto kong makitang ipinatupad. 

Vladimir: Anong uri, halimbawa?

Michael: Una sa lahat, ilang simpleng extension sa aming memorya sa antas ng hardware na transactional sa mga processor ng Intel at IBM. Sa partikular, gusto kong ang hindi-transaksyunal na pag-load at tindahan na katatapos lang ay maging available kaagad sa loob ng mga transaksyon. Agad silang humahantong sa mga loop sa mga pangyayari-bago na pagkakasunud-sunod, kaya maaari silang maging mahirap. Ngunit kung nagpapanatili ka ng mga layer ng abstraction, maraming napaka-interesante na bagay ang magagawa mo sa labas ng transaksyon habang nangyayari ito. Hindi ko alam kung gaano kahirap itong ipatupad, ngunit ito ay magiging lubhang kapaki-pakinabang. 

Ang isa pang kapaki-pakinabang na bagay ay ang paglo-load ng cache mula sa malayong memorya. Sa tingin ko sooner or later ito ay gagawin. Ang teknolohiyang ito ay magbibigay-daan sa paglikha ng mga system na may disaggregated memory. Magiging posible na panatilihin, sabihin, 100 terabytes ng nonvolatile memory sa isang rack, at ang operating system mismo ay dynamic na magpapasya kung aling mga seksyon ng memorya ang dapat tumugma sa pisikal na address space ng mga processor. Ito ay magiging lubhang kapaki-pakinabang para sa cloud computing, dahil ito ay magbibigay-daan sa malaking halaga ng memorya na maibigay sa mga gawaing nangangailangan nito. Sa tingin ko may gagawa nito.

Виталий: Upang matapos ang pakikipag-usap tungkol sa transactional memory, mayroon akong isa pang tanong sa paksang ito. Papalitan ba ng transactional memory ang karaniwang mga multi-threaded na istruktura ng data?

Michael: Hindi. Ang mga transaksyon ay isang speculative na mekanismo. Sa antas ng programming ito ay mga atomic lock, ngunit sa loob ay mga haka-haka. Gumagana ang gayong pagtataya kung tama ang karamihan sa mga hula. Samakatuwid, gumagana nang maayos ang transactional memory kapag halos hindi nakikipag-ugnayan ang mga thread sa isa't isa, at kailangan mo lang tiyakin na walang mga pakikipag-ugnayan. Ngunit kung ang isang mensahe ay magsisimula sa pagitan ng mga thread, ang mga transaksyon ay walang gaanong pakinabang. Hayaan akong ipaliwanag, pinag-uusapan natin ang kaso kapag ang mga transaksyon ay nakabalot sa buong atomic operation. Maaari pa ring matagumpay na magamit ang mga ito bilang mga bahagi para sa mga multi-threaded na istruktura ng data. Halimbawa, kung kailangan mo ng tatlong-salitang CAS, at kailangan mong mag-multread ng tatlong maliliit na bagay sa gitna ng isang tunay na multithreaded na algorithm na gumagana sa dalawampung thread nang sabay-sabay. Sa pangkalahatan, maaaring maging kapaki-pakinabang ang mga transaksyon, ngunit hindi nito aalisin ang pangangailangan na maayos na magdisenyo ng mga multi-threaded na istruktura ng data. 

Non-volatile memory, Optane DIMM, mga ultra-fast na device.

Виталий: Ang huling bagay na nais kong pag-usapan ay ang paksa ng iyong kasalukuyang pananaliksik: non-volatile memory. Ano ang maaari nating asahan sa lugar na ito sa malapit na hinaharap? Marahil ay may alam ka bang anumang epektibong pagpapatupad na mayroon na? 

Michael: Hindi ako eksperto sa hardware, alam ko lang kung ano ang nababasa ko sa balita at kung ano ang sinasabi sa akin ng mga kasamahan ko. Narinig na ng lahat na nagbebenta ang Intel Optane DIMM, na may humigit-kumulang 3 beses ang read latency at 10 beses ang write latency kaysa sa dynamic na RAM. Malapit nang maging available ang mga ito sa napakalaking dami ng mga bersyon. Nakakatuwang isipin na maaari kang magkaroon ng laptop na may ilang terabytes ng byte-addressable na RAM. Malamang na sa 10 taon ay magpapasya kaming gamitin ang bagong teknolohiyang ito, dahil gumagamit kami ng DRAM - dagdagan lang ang volume. Ngunit salamat sa pagsasarili sa enerhiya, ganap na bagong pagkakataon ang nagbubukas para sa atin. Sa panimula ay maaari nating baguhin ang storage stack upang walang paghihiwalay sa pagitan ng byte-addressable working memory at block-structured persistent memory. Kaya, hindi namin kakailanganing i-serialize ang lahat ng kailangang ilipat mula sa isang programa na tumakbo patungo sa isa pa sa mga block-structured na file. Mula dito maaari tayong makakuha ng maraming mahahalagang prinsipyo na nakakaapekto sa mga operating system, runtime environment, at mga distributed na data store. Ang lugar na ito ay napaka-interesante na magtrabaho. Sa personal, mahirap para sa akin na hulaan kung ano ang hahantong sa lahat ng ito, ngunit ang mga problema dito ay lubos na nakakaaliw. Maaaring may mga rebolusyonaryong pagbabago dito, at natural na sumusunod ang mga ito mula sa gawain sa multithreading, dahil ang failure recovery ay isang "multithreading" na proseso sa tabi ng normal na operasyon ng system. 

Ang pangalawang pangunahing paksa na kasalukuyang ginagawa ko ay ang pamamahala ng mga napakabilis na device at secure na access sa mga device mula sa userspace na may systemic na kontrol sa patakaran. Sa mga nakalipas na taon, nagkaroon ng trend na ilipat ang access sa device sa userspace. Ginagawa ito dahil hindi maaaring gumana ang TCP-IP kernel stack sa ibabaw ng isang network interface na nangangailangan ng bagong packet bawat 5 microseconds; Samakatuwid, ang mga tagagawa ay nagbibigay ng direktang pag-access sa mga device. Ngunit nangangahulugan ito na nawawalan ng kontrol ang operating system sa proseso at hindi ito makapagbibigay ng wastong pag-access sa device para sa mga nakikipagkumpitensyang aplikasyon. Naniniwala ang aming research team na maiiwasan ang pagkukulang na ito. Magkakaroon kami ng artikulo tungkol dito sa USENIX ATC ngayong buwan. Ito ay nauugnay sa trabaho sa pagpupursige, dahil ang matagal na byte-addressable na persistent memory ay, sa esensya, isang device na may napakabilis na I/O na kailangang ma-access sa userspace. Ginagawang posible ng pananaliksik na ito ang mga bagong diskarte sa microkernels, exokernels, at iba pang tradisyonal na pagtatangka upang ligtas na ilipat ang functionality mula sa OS kernel patungo sa userspace. 

Vladimir: Ang byte-addressable memory ay mahusay, ngunit mayroong pisikal na limitasyon - ang bilis ng liwanag. Nangangahulugan ito na hindi maiiwasang magkaroon ng pagkaantala kapag nakikipag-ugnayan sa device. 

Michael: Ganap na tama.

Vladimir: Magkakaroon ba ng sapat na kapasidad upang makayanan ang mga bagong karga?

Michael: Ito ay isang mahusay na tanong, ngunit ito ay magiging mahirap para sa akin upang sagutin. Ang ideya ng pagproseso sa memorya ay medyo matagal na, ito ay napaka-interesante, ngunit napaka-kumplikado din. Hindi ako nagtrabaho sa lugar na ito, ngunit ito ay magiging mahusay kung ang ilang mga pagtuklas ay ginawa doon. Natatakot ako na wala na akong maidadagdag. 

Vladimir: May isa pang problema. Ang bago, makabuluhang mas malaking halaga ng RAM ay imposibleng magkasya sa CPU. Samakatuwid, dahil sa mga pisikal na limitasyon, ang RAM na ito ay dapat na ihiwalay. 

Michael: Ang lahat ay nakasalalay sa bilang ng mga depekto sa paggawa ng mga integrated circuit. Kung posible na lumikha ng mga wafer ng semiconductor na ganap na walang mga depekto, kung gayon posible na gumawa ng isang buong microcircuit mula dito. Ngunit ngayon hindi namin alam kung paano gumawa ng mga microcircuit na mas malaki kaysa sa mga selyo ng selyo. 

Vladimir: Ngunit pinag-uusapan pa rin natin ang tungkol sa malalaking sukat, mga sentimetro. Ito ay tiyak na may epekto sa latency. 

Michael: Oo. Wala kang magagawa sa bilis ng liwanag. 

Vladimir: Sa kasamaang palad. 

Ang susunod na malaking trend. Dalawang istruktura ng data. Hydra.

Виталий: Sa pagkakaintindi ko, mabilis kang nakakakuha ng mga bagong uso. Isa ka sa mga unang nagtrabaho sa transactional memory, at isa sa mga unang nagtrabaho sa non-volatile memory. Ano sa palagay mo ang susunod na malaking trend? O baka naman sikreto?

Michael: To be honest, hindi ko alam. Sana ay mapansin ko kapag may bagong dumating. Hindi ako pinalad na makapag-imbento ng anumang bagong larangan sa aking sarili, ngunit nagkaroon ako ng kaunting suwerte at nakapagsimula akong magtrabaho nang maaga sa mga bagong larangang nilikha ng iba. Umaasa ako na magagawa ko ito sa hinaharap.

Alexey: Ang huling tanong sa panayam na ito ay tungkol sa iyong pagganap sa Hydra at sa iyong mga aktibidad sa paaralan. Kung naiintindihan ko nang tama, ang ulat sa paaralan ay tungkol sa mga algorithm na walang pag-block, at sa kumperensya tungkol sa mga istruktura ng dobleng data. Maaari ka bang magsabi ng ilang salita tungkol sa mga ulat na ito?

Michael: Sa bahagi, nasabi na namin sa iyo ang mga paksang ito sa panayam na ito. Tungkol ito sa gawaing ginawa ko kasama ang aking estudyanteng si Bill Scherer. Sumulat siya ng isang thesis tungkol dito, at nag-ambag din si Doug Lee dito, at kalaunan ay naging bahagi ito ng multi-threaded synchronous queues sa Java library. Ipagpalagay natin na ang istraktura ng data ay binabasa at isinulat nang walang pagharang, iyon ay, ang bawat operasyon ay may limitadong bilang ng mga tagubilin sa kritikal na landas. Kung susubukan mong mag-alis ng data mula sa isang walang laman na lalagyan, o subukang mag-alis ng ilang partikular na data na wala sa lalagyang ito, agad mong sasabihin na hindi ito magagawa. Ngunit maaaring hindi katanggap-tanggap ang pag-uugaling ito kung talagang kailangan ng thread ang data na ito. Kung gayon ang unang bagay na nasa isip ay ang lumikha ng isang loop na patuloy na magtatanong kung ang kinakailangang data ay lumitaw. Ngunit pagkatapos ay mayroong panghihimasok para sa lahat. Bilang karagdagan, sa diskarteng ito, maaari kang maghintay ng 10 minuto, at pagkatapos ay darating ang ibang thread, at hindi sinasadyang matatanggap muna ang kinakailangang data. Ang mga istruktura ng dalawahang data ay wala pa ring mga lock, ngunit pinapayagan nila ang mga thread na maghintay nang maayos. Ang terminong "double" ay nangangahulugan na ang istraktura ay naglalaman ng alinman sa data o mga kahilingan para sa data, tawagin natin silang anti-data. Kaya kung susubukan mong kunin ang isang bagay mula sa isang walang laman na lalagyan, isang kahilingan ang ilalagay sa lalagyan sa halip. Ngayon ang thread ay maaaring maghintay para sa isang kahilingan nang hindi nakakagambala sa sinuman. Bukod pa rito, ang istraktura ng data ay nagtatalaga ng mga priyoridad sa mga kahilingan upang kapag natanggap, ipapasa nito ang mga ito sa tamang tao. Ang resulta ay isang non-locking na mekanismo na mayroon pa ring pormal na detalye at mahusay na pagganap sa pagsasanay. 

Alexey: Ano ang iyong mga inaasahan mula sa istruktura ng data na ito? Mapapabuti ba nito ang pagganap sa lahat ng karaniwang kaso, o mas angkop ba ito para sa ilang partikular na sitwasyon? 

Michael: Ito ay kapaki-pakinabang kung, una, kailangan mo ng isang lalagyan nang walang pagla-lock, at, pangalawa, kailangan mong maghintay sa isang sitwasyon kung saan kailangan mong kunin ang data mula sa lalagyan na wala dito. Sa abot ng aking kaalaman, ang aming balangkas ay nagbibigay ng pinakamainam na pag-uugali kapag natugunan ang dalawang kundisyong ito. Samakatuwid, sa mga kasong ito, inirerekumenda kong gamitin ito. Ang pangunahing bentahe ng mga lockless na istruktura ng data ay ang pag-iwas sa mga problema sa pagganap. At ang paghihintay ay napakahalaga sa maraming algorithm kung ang data ay ililipat mula sa isang thread patungo sa isa pa.

Виталий: Hayaan akong linawin: pag-uusapan ba ninyo ang parehong bagay sa paaralan at sa kumperensya?

Michael: Sa paaralan magsasalita ako sa pangkalahatan tungkol sa mga multi-threaded na istruktura ng data, na may mga pangunahing prinsipyo na nakabalangkas sa simula ng aralin. Ipinapalagay ko na alam ng madla kung ano ang mga thread at pamilyar sa mga kandado. Batay sa pangunahing kaalamang ito, magsasalita ako tungkol sa mga istruktura ng data na walang lock. Magbibigay ako ng pangkalahatang-ideya ng pinakamahahalagang problema sa lugar na ito, tungkol sa mga paksa tulad ng pamamahala ng memorya. Sa palagay ko ay hindi magkakaroon ng anumang mas kumplikado kaysa sa MS queue.

Alexey: Nagpaplano ka bang magturo tungkol sa dalawahang istruktura ng data sa pagtatapos ng iyong klase sa paaralan?

Michael: Babanggitin ko sila, ngunit hindi ako gugugol ng maraming oras sa kanila. Ang ulat ng Hydra ay ilalaan sa kanila. Sasaklawin nito ang proyekto na sa kalaunan ay nakapasok sa Java, pati na rin ang pakikipagtulungan kay Joe Israelevich upang lumikha ng dalawahang variant ng LCRQ queue, at paglikha ng isang halos unibersal na disenyo para sa dalawahang istruktura ng data.

Alexey: Kaya't ang panayam sa paaralan ay maaaring irekomenda para sa mga nagsisimula, at ang panayam sa double data structures sa Hydra - para sa mga taong mayroon nang karanasan?

Michael: Iwasto mo ako kung mali ako, ngunit ang madla sa Hydra ay magiging magkakaiba, kabilang ang maraming eksperto sa Java, at sa pangkalahatan ay mga taong hindi partikular na kasangkot sa multi-threaded programming. 

Виталий: Oo totoo.

Alexey: At least umaasa tayo.

Michael: Sa kasong ito, haharap ako sa parehong problema kung saan sinimulan namin ang panayam na ito: kung paano gumawa ng ulat na parehong sapat na mayaman sa mga teknikal na detalye at naa-access ng lahat ng mga tagapakinig.

Виталий: Magbibigay ka ba ng ulat sa parehong paraan ng pagbibigay mo ng mga lektura? Ibig sabihin, makipag-usap sa madla at umangkop sa sitwasyon?

Michael: Natatakot ako na hindi ito gagana sa ganoong paraan, dahil ang ulat ay magkakaroon ng mga slide. Mahalaga ang mga slide kapag ang mga tagapakinig sa simula ay nagsasalita ng iba't ibang wika. Maraming tao ang mahihirapang intindihin ako sa Ingles, lalo na kung masyadong mabilis akong magsalita. Pinili ko ang mga paksang ito dahil Peter Kuznetsov hiniling sa akin na pag-usapan ang tungkol sa mga istruktura ng data na walang lock sa SPTDC School; at pagkatapos ay kailangan ko ng isang ulat para sa isang Java user group conference, at gusto kong pumili ng isang bagay na partikular na interesado sa mga Java programmer. Ang pinakamadaling paraan ay ang pag-usapan ang tungkol sa mga bagay na iyon sa library ng Java na mayroon akong kamay sa isang paraan o iba pa. 

Alexey: Ipinapalagay namin na ang madla sa Hydra ay may alam na tungkol sa lock-free na programming at marahil ay may ilang karanasan sa lugar na ito. Ngunit ito ay isang palagay lamang; ang sitwasyon ay magiging mas malinaw sa mismong kumperensya. Anyway, salamat sa oras mo. Sigurado ako na ang panayam ay magiging lubhang kawili-wili para sa aming mga mambabasa. Maraming salamat!

Виталий: Salamat. 

Michael: Ikalulugod kong makilala ka sa St. Petersburg. 

Alexey: Kami rin, mayroon kaming magandang lungsod. Nakapunta ka na ba dito?

Michael: Hindi, hindi pa ako nakapunta sa Russia. Ngunit ang St. Petersburg ay palaging nasa listahan ng mga lugar kung saan hindi ko pa napupuntahan, ngunit kung saan ko talagang gustong pumunta, kaya napakasaya ko tungkol sa imbitasyon. 

Alexey: Oo nga pala, magkakaroon tayo ng program of excursion para sa mga speaker. Maraming salamat sa panayam, at magandang araw!

Maaari mong ipagpatuloy ang iyong pakikipag-usap kay Michael sa kumperensya ng Hydra 2019, na gaganapin sa Hulyo 11-12, 2019 sa St. Petersburg. Darating siya na may dalang report "Mga istruktura ng dalawahang data". Maaaring mabili ang mga tiket sa opisyal na website.

Pinagmulan: www.habr.com

Magdagdag ng komento