"Mas madaling sumagot kaysa manatiling tahimik" - isang mahusay na pakikipanayam sa ama ng transactional memory, si Maurice Herlihy

Maurice Herlihy - may-ari ng dalawa Mga Premyo ng Dijkstra. Ang una ay para sa trabaho "Wait-Free Synchronization" (Brown University) at ang pangalawa, mas bago, - "Transactional Memory: Architectural Support para sa Lock-Free Data Structure" (Virginia Tech University). Ang Dijkstra Prize ay ibinibigay para sa trabaho na ang kahalagahan at impluwensya ay nakikita nang hindi bababa sa sampung taon at si Maurice ay malinaw na isa sa mga pinakasikat na espesyalista sa larangan. Siya ay kasalukuyang nagtatrabaho bilang isang propesor sa Brown University at may maraming mga nagawa na isang talata ang haba. Siya ay kasalukuyang nagsasaliksik ng blockchain sa konteksto ng classical distributed computing.

Dati, pumunta na si Maurice sa Russia para sa SPTCC (pag-record ng video) at gumawa ng mahusay na pagpupulong ng JUG.ru Java developer community sa St. Petersburg (pag-record ng video).

Ang habrapost na ito ay isang magandang panayam kay Maurice Herlihy. Tinatalakay nito ang mga sumusunod na paksa:

  • Pakikipag-ugnayan sa pagitan ng akademya at industriya;
  • Foundation para sa Blockchain Research;
  • Saan nagmumula ang mga ideya ng tagumpay? Ang impluwensya ng kasikatan;
  • PhD sa ilalim ng pangangasiwa ni Barbara Liskov;
  • Ang mundo ay naghihintay para sa multi-core;
  • Ang isang bagong mundo ay nagdadala ng mga bagong problema. NVM, NUMA at pag-hack ng arkitektura;
  • Compiler vs processors, RISC vs CISC, shared memory vs message passing;
  • Ang sining ng pagsulat ng marupok na multi-threaded code;
  • Paano turuan ang mga mag-aaral na magsulat ng kumplikadong multi-threaded code;
  • Bagong edisyon ng aklat na "The Art of Multiprocessor Programming";
  • Paano naimbento ang transactional memory;   
  • Bakit sulit na magsagawa ng pananaliksik sa larangan ng distributed computing;
  • Huminto ba ang pagbuo ng mga algorithm, at kung paano magpatuloy;
  • Nagtatrabaho sa Brown University;
  • Ang pagkakaiba sa pagitan ng pananaliksik sa isang unibersidad at sa loob ng isang korporasyon;
  • Hydra at SPTDC.

Ang panayam ay isinasagawa ni:

Vitaly Aksenov β€” sa kasalukuyan, post-doc sa IST Austria at empleyado 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.

Pakikipag-ugnayan sa pagitan ng akademya at industriya

Alexey: Maurice, matagal ka nang nagtrabaho sa isang akademikong kapaligiran at ang unang tanong ay ang pakikipag-ugnayan sa pagitan ng akademiko at industriyal na larangan. Maaari mo bang pag-usapan kung paano nagbago ang mga pakikipag-ugnayan sa pagitan nila kamakailan? Ano ang nangyari 20-30 taon na ang nakalilipas at ano ang nangyayari ngayon? 

Maurice: Palagi kong sinubukang makipagtulungan nang malapit sa mga komersyal na kumpanya dahil mayroon silang mga kagiliw-giliw na problema. Sila, bilang panuntunan, ay hindi masyadong interesado sa pag-publish ng kanilang mga resulta o sa mga detalyadong paliwanag ng kanilang mga problema sa komunidad ng mundo. Interesado lamang silang lutasin ang mga problemang ito. Nagtrabaho ako sa mga ganitong kumpanya nang ilang panahon. Limang taon akong nagtatrabaho nang buong oras sa isang research lab sa Digital Equipment Corporation, na dati ay isang malaking kumpanya ng kompyuter. Nagtrabaho ako isang araw sa isang linggo sa Sun, sa Microsoft, sa Oracle, at gumawa ng kaunting trabaho sa Facebook. Ngayon ay pupunta ako sa isang sabbatical leave (isang propesor sa isang unibersidad sa Amerika ay pinahihintulutan na kumuha ng ganoong bakasyon sa loob ng isang taon mga isang beses bawat anim na taon) at magtrabaho sa Algorithm, ito ay isang kumpanya ng cryptocurrency sa Boston. Ang pakikipagtulungan nang malapit sa mga kumpanya ay palaging isang kasiyahan dahil sa kung paano ka natututo tungkol sa mga bago at kawili-wiling bagay. Maaari ka pa ngang maging una o pangalawang tao na mag-publish ng isang artikulo sa isang napiling paksa, sa halip na magtrabaho sa unti-unting pagpapahusay ng mga solusyon sa mga problema na ginagawa na ng iba.

Alexey: Maaari mo bang sabihin sa amin nang mas detalyado kung paano ito nangyayari?

Maurice: Oo naman. Alam mo, noong nagtatrabaho ako sa Digital Equipment Corporation, ako at si Elliot Moss, nag-imbento kami ng transactional memory. Ito ay isang napaka-mabungang panahon kapag ang lahat ay nagsimulang maging interesado sa teknolohiya ng impormasyon. Paralelismo, kabilang ang, kahit na ang mga multi-core system ay hindi pa umiiral. Sa mga araw ng Araw at Oracle, marami akong nagtrabaho sa mga parallel na istruktura ng data. Sa Facebook ay nagtrabaho ako sa kanilang blockchain project, na hindi ko mapag-usapan, ngunit sana ay maisapubliko ito sa lalong madaling panahon. Sa susunod na taon, sa Algorand, magtatrabaho ako sa isang research group na nag-aaral ng mga smart contract.

Alexey: Ang Blockchain ay naging isang napaka-tanyag na paksa sa nakalipas na ilang taon. Makakatulong ba ito sa iyong pananaliksik? Marahil ay gagawin nitong mas madali ang pagkuha ng mga gawad o magbigay ng access sa mga mapagkukunan mula sa mga kumpanyang nagpapatakbo sa industriya?

Maurice: Nakatanggap na ako ng maliit na grant mula sa Ethereum Foundation. Ang katanyagan ng blockchain ay lubhang nakakatulong sa pagbibigay inspirasyon sa mga mag-aaral na magtrabaho sa larangang ito. Interesado sila dito at nasasabik silang makilahok, ngunit kung minsan ay hindi nila napagtanto na ang pananaliksik na mukhang kapana-panabik sa labas ay lumalabas na may kinalaman talaga sa pagsusumikap. Gayunpaman, talagang nasasabik akong gamitin ang lahat ng mystique na ito sa paligid ng blockchain upang makatulong na maakit ang mga mag-aaral. 

Ngunit hindi lang iyon. Ako ay nasa advisory board ng ilang mga blockchain startup. Ang ilan sa kanila ay maaaring magtagumpay, ang ilan sa kanila ay maaaring hindi, ngunit ito ay palaging napaka-interesante upang makita ang kanilang mga ideya, pag-aralan ang mga ito at payuhan ang mga tao. Ang pinaka-kapana-panabik na bagay ay kapag binabalaan mo ang mga tao na huwag gumawa ng isang bagay. Maraming bagay ang tila magandang ideya sa simula, ngunit ito ba talaga?

Foundation para sa Blockchain Research

Vitaly: Iniisip ng ilang tao na ang hinaharap ay nakasalalay sa blockchain at mga algorithm nito. At ang ibang tao ay nagsasabi na ito ay isa pang bula. Maaari mo bang ibahagi ang iyong opinyon sa bagay na ito?

Maurice: Ang daming nangyayari sa mundo ng blockchain ay mali, ang iba ay scam lang, marami ang overrated. Gayunpaman, sa palagay ko ay may matibay na batayan sa siyensya para sa mga pag-aaral na ito. Ang katotohanan na ang mundo ng blockchain ay puno ng mga pagkakaiba sa ideolohiya ay nagpapakita ng antas ng kaguluhan at dedikasyon. Sa kabilang banda, hindi ito partikular na kapaki-pakinabang para sa siyentipikong pananaliksik. Ngayon, kung mag-publish ka ng isang artikulo na nagsasalita tungkol sa mga pagkukulang ng isang partikular na algorithm, ang resultang reaksyon ay hindi palaging ganap na siyentipiko. Kadalasan ang mga tao ay naglalabas ng kanilang mga damdamin. Sa tingin ko, ang ganitong uri ng kaguluhan sa lugar na ito ay maaaring mukhang kaakit-akit sa ilan, ngunit sa pagtatapos ng araw, may mga tunay na isyu sa agham at engineering na kailangang tugunan. Maraming Computer Science dito.

Vitaly: Kaya sinusubukan mong maglatag ng pundasyon para sa pananaliksik sa blockchain, tama ba?

Maurice: Sinusubukan kong maglatag ng pundasyon para sa isang matatag, siyentipiko at mathematically sound na disiplina. At bahagi ng problema ay kung minsan kailangan mong kontrahin ang ilan sa mga sobrang malupit na posisyon ng ibang tao at huwag pansinin ang mga ito. Minsan nagtatanong ang mga tao kung bakit ako nagtatrabaho sa isang lugar kung saan ang mga terorista at drug traffickers lang ang interesado. Ang ganitong reaksyon ay walang kabuluhan gaya ng pag-uugali ng mga tagasunod na bulag na inuulit ang iyong mga salita. Sa tingin ko ang katotohanan ay nasa gitna. Magkakaroon ng malalim na epekto ang Blockchain sa lipunan at sa pandaigdigang ekonomiya. Ngunit malamang na hindi ito mangyayari salamat sa makabagong teknolohiya. Ang mga modernong teknolohiya ay bubuo at ang tatawaging blockchain sa hinaharap ay magiging napakahalaga. Maaaring hindi ito mukhang mga modernong blockchain, iyon ay isang bukas na tanong.

Kung ang mga tao ay nag-imbento ng mga bagong teknolohiya, patuloy nilang tatawagin itong blockchain. Ibig kong sabihin, tulad ng Fortran ngayon ay walang kinalaman sa wikang Fortran mula noong 1960s, ngunit ang lahat ay patuloy na tinatawag itong Fortran. Pareho para sa UNIX. Ang tinatawag na "blockchain" ay gagawa pa rin ng rebolusyon nito. Ngunit duda ako na ang bagong blockchain na ito ay magiging katulad ng kung ano ang tinatangkilik ng lahat sa paggamit ngayon.

Saan nagmumula ang mga ideya ng tagumpay? Epekto ng kasikatan

Alexey: Ang katanyagan ba ng blockchain ay humantong sa mga bagong resulta mula sa isang pang-agham na pananaw? Mas maraming interaksyon, mas maraming estudyante, mas maraming kumpanya sa lugar. Mayroon na bang anumang mga resulta mula sa pagtaas na ito ng katanyagan?

Maurice: Naging interesado ako dito nang may mag-abot sa akin ng isang opisyal na flyer para sa isang kumpanya na kakaipon lang ng malaking pera. Isinulat nito ang tungkol sa gawain ng mga heneral ng Byzantine, kung saan ako ay higit sa pamilyar. Ang nakasulat sa leaflet ay malinaw na teknikal na hindi tama. Ang mga taong sumulat ng lahat ng ito ay hindi talaga nauunawaan ang modelo sa likod ng problema... at gayon pa man ang kumpanyang ito ay nakalikom ng maraming pera. Kasunod nito, tahimik na pinalitan ng kumpanya ang leaflet na ito ng mas tamang bersyon - at hindi ko sasabihin kung ano ang pangalan ng kumpanyang ito. Nasa paligid pa rin sila at napakahusay. Ang pangyayaring ito ay nakakumbinsi sa akin na, una, ang blockchain ay isang paraan lamang ng distributed computing. Pangalawa, ang entry threshold (hindi bababa sa noon, apat na taon na ang nakakaraan) ay medyo mababa. Ang mga taong nagtatrabaho sa larangang ito ay napakasigla at matalino, ngunit hindi sila nagbasa ng mga siyentipikong papel. Sinubukan nilang muling likhain ang mga kilalang bagay at ginawa itong mali. Ngayon nabawasan na ang drama.

Alexey: Ito ay napaka-interesante, dahil ilang taon na ang nakalipas ay nagkaroon kami ng ibang trend. Ito ay medyo tulad ng front-end na pag-unlad, noong ang browser-based na front-end na mga developer ay muling nag-imbento ng mga buong teknolohiya na sikat na sa back-end: bumuo ng mga system, tuluy-tuloy na pagsasama, mga bagay na tulad niyan. 

Maurice: Sumasang-ayon ako. Ngunit ito ay hindi nakakagulat, dahil ang tunay na mga ideya ng tagumpay ay palaging nagmumula sa labas ng itinatag na komunidad. Ang mga itinatag na mananaliksik, lalo na ang mga itinatag na akademya, ay malamang na hindi gumawa ng anumang bagay na tunay na groundbreaking. Madaling magsulat ng papel para sa susunod na kumperensya tungkol sa kung paano mo bahagyang napabuti ang mga resulta ng iyong nakaraang trabaho. Pumunta sa isang kumperensya, makipagkita sa mga kaibigan, pag-usapan ang parehong mga bagay. At ang mga taong sumambulat sa mga ideya ng tagumpay ay halos palaging nagmumula sa labas. Hindi nila alam ang mga patakaran, hindi nila alam ang wika, ngunit gayunpaman... Kung ikaw ay nasa loob ng isang matatag na komunidad, ipinapayo ko sa iyo na bigyang pansin ang mga bagong bagay, sa isang bagay na hindi akma sa pangkalahatang larawan. Sa isang kahulugan, ang isang pagtatangka ay maaaring gawin upang pagsamahin ang panlabas, mas tuluy-tuloy na mga pag-unlad sa mga pamamaraan na naiintindihan na natin. Bilang unang hakbang, subukang magtatag ng isang siyentipikong batayan, at pagkatapos ay baguhin ito upang mailapat ito sa mga bagong ideya ng tagumpay. Sa tingin ko ang blockchain ay mahusay para sa pagiging isang bago, nakakagambalang ideya.

Alexey: Bakit sa tingin mo ito nangyayari? Dahil ang mga tao sa "labas" ay walang anumang partikular na hadlang na likas sa komunidad?

Maurice: May pattern na nangyayari dito. Kung nabasa mo ang kasaysayan ng mga impresyonista sa pagpipinta at sining sa pangkalahatan, sa isang pagkakataon ay tinanggihan ng mga sikat na artista ang impresyonismo. Sabi nila medyo childish. Pagkaraan ng isang henerasyon, naging pamantayan ang dati nang tinanggihang anyo ng sining. Ang nakikita ko sa aking larangan: ang mga imbentor ng blockchain ay hindi interesado sa kapangyarihan, sa pagtaas ng mga publikasyon at index ng pagsipi, gusto lang nilang gumawa ng isang bagay na mabuti. At kaya umupo na sila at nagsimulang gawin ito. Kulang sila ng ilang teknikal na lalim, ngunit naaayos iyon. Higit na mas mahirap na makabuo ng mga bagong malikhaing ideya kaysa itama at palakasin ang mga hindi sapat na mature. Salamat sa mga imbentor na ito, mayroon na akong gagawin!

Alexey: Ito ay katulad ng pagkakaiba sa pagitan ng mga startup at mga legacy na proyekto. Nagmana tayo ng maraming limitasyon ng pag-iisip, mga hadlang, mga espesyal na pangangailangan, at iba pa.

Maurice: Ang isang magandang pagkakatulad ay distributed computing. Isipin ang blockchain na parang ito ay isang startup at ipinamahagi ang computing bilang isang malaki, itinatag na kumpanya. Ang distributed computing ay nasa proseso ng pagkuha at pagsasanib sa blockchain.

PhD sa ilalim ng pangangasiwa ni Barbara Liskov

Vitaly: Marami pa tayong tanong! Tinitingnan namin ang iyong background at nakatagpo kami ng isang kawili-wiling katotohanan tungkol sa iyong titulo ng doktor. Oo, matagal na ito, ngunit tila ito ay isang mahalagang paksa. Natanggap mo ang iyong PhD sa ilalim ng gabay ng iyong sarili Barbara Liskov! Si Barbara ay kilala sa komunidad ng programming language, at isang napakakilalang tao sa pangkalahatan. Lohikal na ang iyong pananaliksik ay nasa larangan ng mga programming language. Paano ka lumipat sa parallel computing? Bakit mo naisipang baguhin ang paksa?

Maurice: Noong panahong iyon, tinitingnan lang ni Barbara at ng kanyang grupo ang distributed computing, na isang napakabagong ideya. May mga nagsabi rin na kalokohan ang distributed computing at walang kabuluhan ang mga kompyuter na nakikipag-ugnayan sa isa't isa. Isa sa mga isyung tinutugunan sa distributed computing na nagpapaiba dito sa centralized computing ay fault tolerance. Pagkatapos ng maraming pananaliksik, napagpasyahan namin na ang isang distributed computing programming language ay kailangang magkaroon ng isang bagay tulad ng mga atomic na transaksyon dahil hindi ka makatitiyak na ang isang malayuang tawag ay magtatagumpay. Kapag mayroon kang mga transaksyon, lumitaw ang problema sa pamamahala ng concurrency. Pagkatapos ay nagkaroon ng maraming trabaho sa pagkuha ng mataas na parallel transactional data structures. Tapos, nung naka-graduate ako, pumunta ako sa Carnegie Mellon at nagsimulang maghanap ng paksang gagawin. Naisip ko na ang computing ay lumipat mula sa mga indibidwal na computer patungo sa mga network ng mga computer. Ang mga multiprocessor ay magiging natural na pagpapatuloy ng pag-unlad - ang salitang "multi-core" ay hindi pa umiiral. Naisip ko: ano ang katumbas ng mga atomic na transaksyon para sa isang multi-core system? Talagang hindi regular na transaksyon dahil napakalaki at mabigat. At iyon ang naging ideya ko linearizability at iyan ay kung paano ko naisip ang buong pag-synchronize na walang paghihintay. Ito ay isang pagtatangka upang sagutin ang tanong kung ano ang analogue ng atomic na mga transaksyon para sa isang multiprocessor system na may nakabahaging memorya. Sa unang sulyap, ang gawaing ito ay maaaring magmukhang ganap na naiiba, ngunit sa katunayan ito ay isang pagpapatuloy ng parehong tema.

Ang mundo ay naghihintay para sa multi-core

Vitaly: Nabanggit mo na noong panahong iyon ay kakaunti ang mga multi-core na computer, tama ba?

Maurice: Wala lang sila. Mayroong ilang mga tinatawag na simetriko multiprocessor, na karaniwang konektado sa parehong bus. Hindi ito gumana nang maayos dahil sa tuwing may bagong kumpanya na lumikha ng katulad na bagay, ang Intel ay maglalabas ng isang processor na mas mataas kaysa sa multiprocessor.

Alexey: Hindi ba ito nangangahulugan na sa mga sinaunang panahon ito ay higit pa sa isang teoretikal na pag-aaral?

Maurice: Ito ay hindi isang teoretikal na pag-aaral, ngunit sa halip ay isang haka-haka na pag-aaral. Ang lahat ng ito ay hindi tungkol sa pagtatrabaho sa maraming theorems; sa halip, naglagay kami ng mga hypotheses tungkol sa isang arkitektura na wala pa noong panahong iyon. Ito ay para sa pananaliksik! Walang kumpanya ang gagawa ng ganito; lahat ito ay isang bagay mula sa malayong hinaharap. Sa katunayan, ito ang nangyari hanggang 2004, nang lumitaw ang mga tunay na multi-core processor. Dahil nag-overheat ang mga processor, maaari mong gawing mas maliit ang processor, ngunit hindi mo ito mapapabilis. Dahil dito, nagkaroon ng paglipat sa mga multi-core na arkitektura. At pagkatapos ay nangangahulugan iyon na biglang nagkaroon ng paggamit para sa lahat ng mga konsepto na binuo namin sa nakaraan.

Alexey: Bakit sa palagay mo ang mga multi-core na processor ay lumitaw lamang noong XNUMXs? Kaya bakit huli na?

Maurice: Ito ay dahil sa mga limitasyon sa hardware. Ang Intel, AMD at iba pang mga kumpanya ay napakahusay sa pagpapataas ng bilis ng processor. Kapag sa isang punto ang mga processor ay naging sapat na maliit na hindi na nila mapataas ang bilis ng orasan dahil ang mga processor ay magsisimulang masunog. Maaari mong gawing mas maliit ang mga ito, ngunit hindi mas mabilis. Ano ang nasa kanilang kapangyarihan - sa halip na isang napakaliit na processor, maaari silang magkasya sa walo, labing-anim o tatlumpu't dalawang mga processor sa parehong dami ng kaso, kung saan dati isa lamang ang maaaring magkasya. Ngayon ay mayroon kang multithreading at mabilis na komunikasyon sa pagitan nila dahil nagbabahagi sila ng mga cache. Ngunit hindi mo sila mapipilit na tumakbo nang mas mabilis - mayroong isang tiyak na limitasyon ng bilis. Patuloy silang umuunlad nang paunti-unti, ngunit hindi na gaanong. Ang mga batas ng pisika ay tumayo sa paraan ng mga pagpapabuti.

Ang isang bagong mundo ay nagdadala ng mga bagong problema. NUMA, NVM at pag-hack ng arkitektura

Alexey: Napaka-makatwiran. Sa mga bagong multi-core na processor ay dumating ang mga bagong problema. Inaasahan mo ba at ng iyong mga kasamahan ang mga problemang ito? Marahil ay pinag-aralan mo ang mga ito nang maaga? Sa mga teoretikal na pag-aaral ay kadalasang hindi masyadong madaling hulaan ang mga ganitong bagay. Kapag nagkaroon ng mga problema, paano nila naabot ang mga inaasahan mo at ng iyong mga kasamahan? O sila ba ay ganap na bago, at ikaw at ang iyong mga kasamahan ay kailangang gumugol ng maraming oras sa paglutas ng mga problema sa kanilang paglitaw?

Vitaly: Dadagdagan ko ang tanong ni Alexey: tama ba ang hula mo sa arkitektura ng processor habang pinag-aaralan mo ang teorya?

Maurice: Hindi 100%. Ngunit sa tingin ko ang aking mga kasamahan at ako ay gumawa ng isang mahusay na trabaho sa paghula ng mga multi-core na may nakabahaging memorya. Sa tingin ko, tama naming hinulaan ang mga kahirapan sa pagbuo ng mga parallel na istruktura ng data na gumagana nang walang mga lock. Ang ganitong mga istruktura ng data ay naging mahalaga para sa maraming mga application, bagaman hindi lahat, ngunit kadalasan ang talagang kailangan mo ay isang hindi nakaka-lock na istraktura ng data. Nang imbento namin ang mga ito, marami ang nagtalo na ito ay walang kapararakan, na ang lahat ay gumagana nang maayos sa mga kandado. Mahusay naming hinulaan na magkakaroon ng mga handa na solusyon para sa maraming problema sa programming at mga problema sa istruktura ng data. Nagkaroon din ng mas kumplikadong mga problema, tulad ng SA – hindi pantay na pag-access sa memorya. Sa katunayan, hindi sila isinasaalang-alang hanggang sa naimbento ang mga multi-core na processor dahil masyadong tiyak ang mga ito. Ang komunidad ng pananaliksik ay nagtatrabaho sa mga tanong na karaniwang mahuhulaan. Ang ilang mga problema sa hardware na nauugnay sa mga partikular na arkitektura ay kailangang maghintay sa mga pakpak - sa katunayan, ang hitsura ng mga arkitektura na ito. Halimbawa, walang talagang gumawa sa mga istruktura ng data na partikular sa GPU dahil wala pa ang mga GPU noon. Bagaman maraming trabaho ang nagawa SIMD, ang mga algorithm na ito ay handa nang gamitin sa sandaling maging available ang angkop na hardware. Gayunpaman, imposibleng mahulaan ang lahat.

Alexey: Kung naiintindihan ko nang tama, ang NUMA ay isang uri ng kompromiso sa pagitan ng gastos, pagganap at ilang iba pang bagay. Any ideas kung bakit late na lumabas ang NUMA?

Maurice: Sa palagay ko ay umiral ang NUMA dahil sa mga problema sa hardware na ginagamit para makagawa ng memory: kung mas malayo ang mga bahagi, mas mabagal ang pag-access sa mga ito. Sa kabilang banda, ang pangalawang halaga ng abstraction na ito ay pagkakapareho ng memorya. Kaya ang isa sa mga katangian ng parallel computing ay ang lahat ng abstraction ay bahagyang nasira. Kung ang pag-access ay ganap na pare-pareho, ang lahat ng memorya ay magiging katumbas ng distansya, ngunit ito ay matipid, at maaaring maging pisikal, imposible. Kaya't lumitaw ang salungatan na ito. Kung isusulat mo ang iyong programa na parang pare-pareho ang memorya, malamang na tama ito. Sa diwa na hindi ito magbibigay ng mga maling sagot. Ngunit ang kanyang pagganap ay hindi rin mahuli ang mga bituin mula sa langit. Ganun din, kung magsusulat ka mga spinlock Nang walang pag-unawa sa hierarchy ng cache, ang pagharang mismo ay magiging tama, ngunit maaari mong kalimutan ang tungkol sa pagganap. Sa isang kahulugan, kailangan mong magsulat ng mga programa na nabubuhay sa ibabaw ng isang napakasimpleng abstraction, ngunit kailangan mong linlangin ang mga taong nagbigay sa iyo ng abstraction na iyon: kailangan mong malaman na sa ilalim ng abstraction mayroong ilang hierarchy ng memorya, na mayroong isang bus sa pagitan mo at ng alaalang ito, at iba pa. Kaya, mayroong ilang salungatan sa pagitan ng mga indibidwal na kapaki-pakinabang na abstraction, na humahantong sa amin sa napaka-konkreto at pragmatic na mga problema.

Vitaly: Paano ang hinaharap? Maaari mo bang hulaan kung paano bubuo ang mga processor sa susunod? May ideya na ang isa sa mga sagot ay transactional memory. Malamang may iba ka pang stock.

Maurice: May ilang malalaking hamon sa hinaharap. Ang isa ay ang magkakaugnay na memorya ay isang kahanga-hangang abstraction, ngunit nagsisimula itong masira sa mga espesyal na kaso. Kaya, halimbawa, ang NUMA ay isang buhay na halimbawa ng isang bagay kung saan maaari mong patuloy na magpanggap na may pare-parehong memorya. Sa totoo lang hindi, ang pagiging produktibo ay magpapaiyak sa iyo. Sa ilang mga punto, ang mga arkitekto ay kailangang iwanan ang ideya ng isang solong arkitektura ng memorya; hindi ka maaaring magpanggap magpakailanman. Kakailanganin ang mga bagong modelo ng programming na sapat na madaling gamitin at sapat na malakas upang gawing mahusay ang pinagbabatayan ng hardware. Ito ay isang napakahirap na kompromiso, dahil kung ipapakita mo sa mga programmer ang arkitektura na aktwal na ginagamit sa hardware, mababaliw sila. Ito ay masyadong kumplikado at hindi portable. Kung magpapakita ka ng interface na masyadong simple, magiging mahina ang performance. Kaya, maraming napakahirap na trade-off ang kailangang gawin upang makapagbigay ng mga kapaki-pakinabang na modelo ng programming na naaangkop sa tunay na malalaking multi-core na processor. Hindi ako sigurado na sinuman maliban sa isang espesyalista ang may kakayahang magprograma sa isang 2000-core na computer. At maliban kung gumagawa ka ng napaka-espesyalista o siyentipikong pag-compute o cryptography o isang bagay na katulad nito - hindi pa rin malinaw kung paano ito gagawin nang tama. 

Ang isa pang katulad na lugar ay mga espesyal na arkitektura. Matagal nang umiral ang mga graphics accelerator, ngunit naging isang klasikong halimbawa ang mga ito kung paano ka makakakuha ng isang espesyal na uri ng computing at patakbuhin ito sa isang nakalaang chip. Nagdaragdag ito ng sarili nitong mga hamon: kung paano ka nakikipag-usap sa naturang device, kung paano mo ito pino-program. Kamakailan ay nagtatrabaho ako sa mga problema sa lugar malapit sa memory computing. Kumuha ka ng isang maliit na processor at idikit ito sa isang malaking tipak ng memorya upang ang memorya ay tumatakbo sa L1 bilis ng cache at pagkatapos ay nakikipag-ugnayan sa isang aparato tulad ng TPU – abala ang processor sa paglo-load ng mga bagong gawain sa iyong memory core. Ang pagdidisenyo ng mga istruktura ng data at mga protocol ng komunikasyon para sa ganitong uri ng bagay ay isa pang kawili-wiling halimbawa. Kaya't ang mga custom na processor at hardware ay patuloy na makakakita ng mga pagpapabuti sa loob ng mahabang panahon.

Alexey: Paano ang hindi pabagu-bago ng memorya (non-volatile memory)?

Maurice: Ay, isa pang magandang halimbawa iyan! Lubos na mababago ng NVM ang paraan ng pagtingin natin sa mga bagay tulad ng mga istruktura ng data. Ang non-volatile memory, sa isang kahulugan, ay nangangako na talagang mapabilis ang mga bagay-bagay. Ngunit hindi nito gagawing mas madali ang buhay dahil ang karamihan sa mga processor, cache, at register ay pabagu-bago pa rin. Kapag nagsimula ka pagkatapos ng pag-crash, ang iyong estado at ang estado ng iyong memorya ay hindi magiging eksaktong kapareho ng bago ang pag-crash. Lubos akong nagpapasalamat sa mga taong nagtatrabaho sa NVM - marami ang magagawa ng mga mananaliksik sa mahabang panahon na sinusubukang malaman ang mga kundisyon ng kawastuhan. Tama ang mga pagkalkula kung makakaligtas sila sa isang pag-crash kung saan nawala ang mga nilalaman ng mga cache at mga rehistro, ngunit ang pangunahing memorya ay nananatiling buo.

Compiler vs processors, RISC vs CISC, shared memory vs message passing

Vladimir: Ano ang palagay mo tungkol sa dilemma ng "compilers vs. processors" mula sa isang set point of view ng pagtuturo? Hayaan akong ipaliwanag para sa mga hindi alam: kung pupunta tayo sa skewed memory o katulad na bagay, maaari tayong gumamit ng napakasimpleng hanay ng mga command at hilingin sa compiler na bumuo ng kumplikadong code na maaaring samantalahin ang mga bagong bentahe. O maaari tayong pumunta sa ibang paraan: ipatupad ang mga kumplikadong tagubilin at hilingin sa processor na muling ayusin ang mga tagubilin at gumawa ng iba pang mga manipulasyon sa kanila. Ano ang iyong palagay tungkol sa mga ito?

Maurice: Wala talaga akong sagot sa tanong na yan. Apat na dekada na ang debateng ito. Nagkaroon ng panahon kung saan sa pagitan pinaikling isang set ng mga utos at magulo ang mga digmaang sibil ay nakipaglaban sa pamamagitan ng isang hanay ng mga utos. Sa ilang sandali, nanalo ang mga taong RISC, ngunit pagkatapos ay itinayong muli ng Intel ang kanilang mga makina upang ang isang pinababang hanay ng mga tagubilin ay ginamit sa loob, at ang buong hanay ay na-export sa labas. Marahil ito ay isang paksa kung saan ang bawat bagong henerasyon ay dapat makahanap ng sarili nitong mga kompromiso at gumawa ng sarili nitong mga desisyon. Napakahirap hulaan kung alin sa mga bagay na ito ang magiging mas mabuti. Kaya ang anumang hula na gagawin ko ay magiging totoo sa isang tiyak na oras, at pagkatapos ay mali muli sa ilang sandali, at pagkatapos ay totoo muli.

Alexey: Gaano kadalas para sa industriya na ang ilang ideya ay nanalo sa loob ng ilang dekada at matatalo sa susunod? Mayroon bang iba pang mga halimbawa ng mga pana-panahong pagbabago?

Maurice: Sa paksa ng distributed computing, may mga taong naniniwala pinaghatiang alaala at mga taong naniniwala pagpapalitan ng mensahe. Sa una, sa distributed computing, ang parallel computing ay nangangahulugan ng pagpasa ng mensahe. Pagkatapos ay may natuklasan na mas madaling mag-program gamit ang shared memory. Sinabi ng kabaligtaran na ang ibinahaging memorya ay masyadong kumplikado, dahil nangangailangan ito ng mga kandado at iba pa, kaya sulit na lumipat sa mga wika kung saan walang iba kundi ang pagpasa ng mensahe lamang. May tumingin sa kung ano ang lumabas dito at sinabing, "wow, ang pagpapatupad ng pagmemensahe na ito ay mukhang nakabahaging memorya, dahil gumagawa ka ng marami at maraming maliliit na module na ito, nagpapadala sila ng mga mensahe sa isa't isa, at lahat sila magkabit"Gumawa tayo ng mas magandang shared memory database!" Ang lahat ng ito ay paulit-ulit na paulit-ulit, at imposibleng sabihin na ang isa sa mga partido ay tiyak na tama. Ang isang panig ay palaging nangingibabaw dahil sa sandaling ang isa sa kanila ay halos manalo, ang mga tao ay paulit-ulit na nag-iimbento ng mga paraan upang mapabuti ang isa pa.

Ang Sining ng Pagsusulat ng Malutong na Multithreaded Code

Alexey: Ito ay lubhang kawili-wili. Halimbawa, kapag nagsusulat tayo ng code, kahit anong programming language, kadalasan kailangan nating gumawa ng mga abstraction tulad ng mga cell na maaaring basahin at isulat. Ngunit sa katunayan, sa ilang pisikal na antas, ito ay maaaring magmukhang pagpapadala ng mensahe sa isang hardware bus sa pagitan ng iba't ibang mga computer at iba pang mga device. Lumalabas na ang trabaho ay nangyayari sa parehong antas ng abstraction nang sabay-sabay.

Maurice: Talagang totoo na ang shared memory ay binuo sa pagpasa ng mensahe - mga bus, cache, at iba pa. Ngunit mahirap magsulat ng mga programa gamit ang pagpasa ng mensahe, kaya ang hardware ay sadyang nagsisinungaling, na nagpapanggap na mayroon kang isang uri ng pare-parehong memorya. Gagawin nitong mas madali para sa iyo na magsulat ng simple at tamang mga programa bago magsimulang lumala ang pagganap. Pagkatapos ay sasabihin mo: mukhang oras na para makipagkaibigan sa cache. At pagkatapos ay magsisimula kang mag-alala tungkol sa lokasyon ng cache, at mula doon napupunta ito. Sa isang kahulugan, hina-hack mo ang abstraction: alam mong hindi lang ito flat, pare-parehong memorya, at gagamitin mo ang kaalamang iyon para magsulat ng mga programang pang-cache. Ito ang kailangan mong gawin sa mga totoong problema. Ang salungatan na ito sa pagitan ng matamis, simple, magandang abstraction na ibinigay sa iyo at ang kasuklam-suklam na kumplikadong pagpapatupad ng pinagbabatayan ng hardware ay kung saan ang bawat isa ay gagawa ng kanilang sariling kompromiso. Mayroon akong isang libro tungkol sa mga multiprocessor at pag-synchronize, at sa isang punto ay magsusulat ako ng isang kabanata sa mga istruktura ng data sa java.util.concurrent. Kung titingnan mo sila, mga bagay tulad ng mga listahan na may mga pagkukulang Ang mga ito ay kamangha-manghang mga gawa ng sining. (Tala ng editor: Ang mga pamilyar sa wikang Java ay dapat man lang tingnan ang pagpapatupad ConcurrentSkipListMap, maaari mong tingnan ang mga link sa API ΠΈ source code). Ngunit mula sa aking pananaw, magiging iresponsableng ipakita ang mga ito sa mga mag-aaral, dahil ang gayong istraktura ng data ay parang isang tao sa isang sirko na tumatakbo sa isang mahigpit na lubid sa ibabaw ng isang hukay ng oso. Kung babaguhin mo ang kahit isang maliit na detalye, babagsak ang buong istraktura. Ang code na ito ay napakabilis at eleganteng dahil lamang sa perpektong pagkakasulat nito, ngunit ang kaunting pagbabago ay hahantong sa kumpletong pagkabigo. Kung ibibigay ko ang code na ito bilang halimbawa sa mga mag-aaral, sasabihin nila kaagad: Magagawa ko rin iyon! At pagkatapos ay may babagsak na eroplano o isang nuclear reactor ang sasabog, at ako ay magkasala sa pagbibigay sa kanila ng napakaraming impormasyon sa maling oras.

Alexey: Noong bata pa ako, maraming beses kong sinubukang pag-aralan ang source code ni Doug Lee, halimbawa, java.util.concurrent, dahil ito ay open source, napakadaling hanapin at subukang maunawaan kung ano ang nangyayari doon. Hindi ito naging maganda: madalas, ganap na hindi malinaw kung bakit nagpasya si Doug na gumawa ng isang bagay sa ganitong paraan kapag iba ang ginagawa ng iba. Paano mo ipinapaliwanag ang mga bagay na ito sa iyong mga mag-aaral? Mayroon bang partikular na tamang paraan upang ilarawan ang mga partikular na detalye ng isang hardcore algorithm, halimbawa? Paano mo ito ginagawa?

Maurice: Ang mga guro sa pagguhit ay may clichΓ© na una nilang natatandaan: kung gusto mong gumuhit tulad ng Picasso, kailangan mo munang matutunan kung paano gumuhit ng mga simpleng makatotohanang larawan, at kapag alam mo ang mga patakaran maaari mong simulan ang paglabag sa mga ito. Kung nagsimula ka sa pamamagitan ng paglabag kaagad sa mga patakaran, mapupunta ka sa gulo. Una, tinuturuan ko ang mga mag-aaral kung paano magsulat ng simple, tamang code nang hindi nababahala tungkol sa pagganap. Ang sinasabi ko ay, may mga kumplikadong isyu sa timing na nakatago dito, kaya huwag mag-alala tungkol sa mga cache, huwag mag-alala tungkol sa mga modelo ng memorya, siguraduhin lamang na gumagana nang tama ang lahat. Ito ay sapat na mahirap: modernong programming ay hindi madali sa kanyang sarili, lalo na para sa mga bagong mag-aaral. At kapag mayroon silang intuwisyon tungkol sa kung paano isulat ang mga tamang programa, sinasabi ko: tingnan ang dalawang pagpapatupad ng spinlock na ito: ang isa ay napakabagal, at ang pangalawa ay hindi rin masyadong, ngunit mas mahusay. Gayunpaman, sa matematika ang dalawang algorithm ay pareho. Sa katunayan, ang isa sa kanila ay gumagamit ng cache locality. Ang isa sa kanila ay tumatakbo sa lokal na naka-cache na data, at ang isa ay paulit-ulit na gumaganap ng mga operasyon sa buong bus. Hindi ka makakasulat ng mahusay na code kung hindi mo naiintindihan kung ano ito, at hindi mo alam kung paano masira ang abstraction at tingnan ang pinagbabatayan na istraktura. Ngunit hindi mo magagawang simulan ito kaagad. May mga taong nagsimulang gawin ito kaagad at naniniwala sa kanilang sariling henyo, kadalasan ito ay nagtatapos nang masama dahil hindi nila naiintindihan ang mga prinsipyo. Walang gumuhit tulad ni Picasso o nagsusulat ng mga programa tulad ni Doug Lee na bagong labas ng kolehiyo sa kanyang unang linggo. Tumatagal ng mga taon upang maabot ang antas na ito ng kaalaman.

Alexey: Lumalabas na hinati mo ang problema sa dalawang bahagi: ang una ay tama, ang pangalawa ay ang pagganap?

Maurice: Sakto. At, eksakto sa ayos na iyon. Bahagi ng problema ay hindi nauunawaan ng mga bagong estudyante na mahirap makamit ang tama. Sa unang tingin ay sinasabi nila: ito ay malinaw na tama, ang natitira lamang ay upang mapabilis ito. Kaya minsan sinasabi ko sa kanila ang tungkol sa isang maling algorithm sa simula na parang tama ito.

Paano turuan ang mga mag-aaral na magsulat ng kumplikadong multithreaded code

Alexey: Para lang makita kung naramdaman nila ang catch?

Maurice: Palagi akong nagbabala nang maaga na kung minsan ay magmumungkahi ako ng mga maling algorithm. Hindi mo dapat dayain ang mga tao. Iminumungkahi kong kunin nila ang impormasyon na may isang butil ng asin. Kung sasabihin ko ang isang bagay at sasabihin: "tingnan mo, ito ay malinaw na tama" - ito ay isang senyas na sa isang lugar ay sinusubukan ka nilang linlangin, at dapat kang magsimulang magtanong. Susunod, sinisikap kong hikayatin ang mga estudyante na patuloy na magtanong, at pagkatapos ay iminumungkahi ko, β€œAno ang mangyayari kung iiwan natin ang mga bagay sa kung ano sila?” At agad nilang nakikita ang pagkakamali. Ngunit ang pagkumbinsi sa mga mag-aaral na kailangan nilang mag-alala tungkol sa kawastuhan ay mas mahirap kaysa sa tila sa unang tingin. Marami sa mga estudyanteng ito ang may karanasan sa programming sa high school, ang ilan ay nakakuha ng mga trabaho at nakagawa na ng programming doon, at lahat sila ay puno ng kumpiyansa. Ito ay isang bagay tulad ng hukbo: kailangan mo munang baguhin ang kanilang kalooban upang kumbinsihin sila na matiyagang lumapit sa paglutas ng mga problemang lumitaw. O marahil ito ay tulad ng mga monghe ng Budista: natututo muna silang mangatwiran tungkol sa kawastuhan, at sa sandaling maunawaan nila ang mga paraan ng pangangatwiran tungkol sa kawastuhan, pinahihintulutan silang lumipat sa susunod na antas at magsimulang mag-alala tungkol sa pagganap.

Alexey: Iyon ay, kung minsan ay nagpapakita ka ng mga hindi gumaganang halimbawa sa mga mag-aaral, salamat sa kung saan nakakakuha ka ng feedback na nagpapakita kung naiintindihan nila ang kakanyahan ng problema, kung mahahanap nila ang maling code at ang maling resulta. Kaya, ang mga estudyante ba ay kadalasang nagpapasaya o nalulungkot?

Maurice: Halos palaging nahahanap ng mga estudyante ang pagkakamali sa huli. Kung masyado silang mabagal sa paghahanap, nagtatanong ako ng mga nangungunang tanong, at narito, mahalagang maunawaan na kung hindi mo sila linlangin, magsisimula silang walang isip na malasahan ang iyong mga salita bilang ang tunay na katotohanan. Pagkatapos ay magsasawa sila at magsisimulang matulog habang nagbabasa ng Facebook sa kanilang laptop habang may klase. Ngunit kapag sinabi mo sa kanila nang maaga na sila ay dayain, at sila ay magmumukhang tanga kung hindi sila nakakaramdam ng isang daya, sila ay nagiging mas mapagbantay. Ito ay mabuti sa iba't ibang paraan. Nais kong tanungin ng mga mag-aaral na hindi lamang ang kanilang pag-unawa sa isyu, kundi tanungin din ang awtoridad ng guro. Ang ideya ay maaaring magtaas ng kamay ang isang mag-aaral anumang oras at sabihin: Sa tingin ko ay mali ang sinabi mo. Ito ay isang mahalagang kasangkapan sa pag-aaral. Ayaw kong umupo ang sinuman sa mga estudyante at tahimik na mag-isip sa kanilang sarili: ang lahat ng ito ay tila ganap na walang kapararakan, ngunit ang pagtataas ng iyong kamay ay masyadong nakakatakot, at gayon pa man, siya ay isang propesor, kaya lahat ng sinasabi niya ay totoo. Samakatuwid, kung sila ay binigyan ng babala nang maaga na hindi lahat ng sinabi ay kinakailangang totoo, mayroon silang insentibo na bigyang-pansin ang materyal. Nilinaw ko na okay lang na itaas ang iyong kamay at magtanong. Ang iyong tanong ay maaaring mukhang hangal o walang muwang, ngunit ito ay madalas kung paano lumabas ang pinakamahusay na mga tanong.

Alexey: Napaka-interesante. Kadalasan ang mga tao ay may ilang uri ng sikolohikal na hadlang na hindi nagpapahintulot sa kanila na magtanong sa isang propesor. Lalo na kung maraming tao sa silid, at ang lahat ay natatakot na ang pagtalakay sa iyong hangal na tanong ay kukuha ng lahat ng oras ng mga taong ito. Mayroon bang anumang mga trick upang harapin ito?

Maurice: Madalas akong huminto at magtanong ng mga klasikong tanong. Kung ang isang pahayag ay magiging tama, o kung paano nila lulutasin ang problemang tinatalakay. Ito ay isang mahalagang aksyon, lalo na sa simula ng isang aralin kapag ang mga tao ay nahihiya na sabihin kahit ang pinakamaliit na bagay. Magtanong ka sa mga mag-aaral at wala nang sasabihin pa. Naroon ang katahimikan, lahat ay medyo nate-tensyon, ang tensyon ay lumalaki, pagkatapos ay biglang may hindi makatiis, nasira at sinabi ang sagot. Ito ay kung paano mo iikot ang sitwasyon: ang patuloy na pananatiling tahimik ay nagiging mas mahirap at hindi maginhawa kaysa sa pagsagot! Ito ay isang karaniwang pedagogical trick. Dapat alam ng bawat guro sa mundo kung paano ito gagawin.

Alexey: Ngayon ay mayroon kaming isang mahusay na pamagat para sa panayam na ito: "mas madaling sagutin kaysa manatiling tahimik."

Vitaly: Tanungin ko ulit. Gumagawa ka ng mga topological proof. Paano ka pa nasangkot dito, dahil ang distributed computing at topology ay ganap na magkaibang bagay!

Maurice: May hidden connection doon. Noong ako ay isang mag-aaral na nag-aaral ng matematika, nag-aral ako ng purong matematika. Wala akong tunay na interes sa mga kompyuter hanggang sa matapos ang aking pag-aaral at natagpuan ko ang aking sarili na nahaharap sa matinding pangangailangang maghanap ng trabaho. Bilang isang mag-aaral nag-aral ako ng algebraic topology. Pagkalipas ng maraming taon, habang nagtatrabaho sa isang problema na tinatawag "K-Set Agreement Problem", Gumamit ako ng mga graph upang i-modelo ang problema at, na tila noong panahong iyon, nakahanap ako ng solusyon. Kailangan mo lang umupo at maglibot sa bilang. Subukang humanap ng angkop na sagot sa graph na ito. Ngunit ang aking algorithm ay hindi gumana: ito ay lumabas na siya ay tatakbo sa mga lupon magpakailanman. Sa kasamaang palad, ang lahat ng ito ay hindi maipaliwanag sa pormal na wika ng teorya ng graph - ang isa na alam ng lahat ng computer scientist. At pagkatapos ay naalala ko na maraming taon na ang nakalilipas, pabalik sa mga klase sa topology, ginamit namin ang konsepto "simpleng kumplikado", na isang generalization ng mga graph sa mas matataas na dimensyon. Pagkatapos ay tinanong ko ang aking sarili: ano ang mangyayari kung reformulated namin ang problema sa mga tuntunin ng simplicial complexes? Ito ang naging pangunahing sandali. Sa pamamagitan ng paggamit ng isang mas makapangyarihang pormalismo, ang problema ay biglang nagiging mas simple. Ang mga tao ay lumaban laban dito sa loob ng mahabang panahon, gamit ang mga graph, ngunit wala silang magagawa. At kahit na ngayon ay hindi nila magagawa - ang tamang sagot ay naging hindi isang algorithm, ngunit isang patunay ng imposibilidad ng paglutas ng problema. Iyon ay, ang gayong algorithm ay hindi umiiral. Pero bawat patunay ng imposibilidad batay sa alinman sa mga simplicial complex o sa mga bagay na nagkunwaring hindi itinuturing ng mga tao na simplicial complex. Dahil lamang sa tinawag mo ang isang bagay ng isang bagong pangalan, hindi ito nawawala ang kakanyahan nito.

Vitaly: Mapalad ka lang pala?

Maurice: Bukod sa swerte, meron din kahandaan. Nangangahulugan ito na hindi mo dapat kalimutan ang mga "walang silbi" na mga bagay na natutunan mo kanina. Ang mas maraming walang kwentang bagay na natutunan mo, mas maraming ideya ang maaari mong makuha kapag nahaharap sa isang bagong problema. Ang ganitong uri ng intuitive pattern matching ay mahalaga dahil... Gawin natin ito, ito ay isang kadena: sa una ay natuklasan ko na ang mga graph ay hindi gumana sa lahat o hindi gumana sa lahat, ito ay nagpapaalala sa akin ng isang bagay mula sa mga kaganapan ng walo taon na ang nakalilipas at ang aking mga taon ng mag-aaral, nang pag-aralan namin ang lahat ng mga simpleng kumplikadong ito. Ito naman ay nagpapahintulot sa akin na mahanap ang aking lumang topology textbook at i-load ito pabalik sa aking ulo. Ngunit kung hindi dahil sa lumang kaalamang iyon, hinding-hindi ako magkakaroon ng anumang pag-unlad sa paglutas ng orihinal na problema.

Bagong edisyon ng aklat na "The Art of Multiprocessor Programming"

Alexey: Sinabi mo ang ilang mga salita tungkol sa iyong libro. Marahil hindi ito ang pinakamasamang sikreto na isinulat mo ang pinakasikat na libro sa mundo sa multithreading, "Ang Sining ng Multiprocessor Programming". Mga 11 years old na ito at mula noon ay kakalabas lang nito  binagong muling pag-print. Magkakaroon ba ng pangalawang edisyon?

Maurice: Buti naman at nagtanong ka! Ito ay malapit na, sa loob ng tatlong buwan o higit pa. May dalawa pang may-akda, nagdagdag kami ng mas maraming materyal, pinahusay ang seksyon sa fork/join parallelism, nagsulat ng isang seksyon sa MapReduce, nagdagdag ng maraming bagong bagay at nagtapon ng mga hindi kinakailangang bagay - isang bagay na lubhang kawili-wili sa oras ng pagsulat ang unang edisyon, ngunit wala na ngayon. Ang resulta ay isang napakaseryosong binagong aklat.

Alexey: Ang lahat ay nagawa na, ang natitira ay ang palayain ito?

Maurice: Ang ilang mga kabanata ay nangangailangan pa ng ilang trabaho. Sinusubukan pa rin ng aming publisher (na sa tingin ko ay napopoot na sa amin) na maiparating ang mensahe na dapat kaming gumana nang mas mabilis. Malayo na tayo sa schedule. Sa teoryang, maaari naming gawin ang aklat na ito ilang taon na ang nakalilipas.

Alexey: Anumang pagkakataon na makakuha ng bagong bersyon ng libro bago ang Pasko?

Maurice: Ito ang aming layunin! Pero ilang beses ko nang hinulaan ang tagumpay kaya wala nang naniniwala sa akin. Hindi mo rin siguro ako dapat masyadong pagkatiwalaan sa bagay na ito.

Alexey: Sa anumang kaso, ito ay hindi kapani-paniwalang balita. Talagang nagustuhan ko ang unang edisyon ng aklat. Masasabi mong fan ako.

Maurice: Sana ang bagong edisyon ay maging karapat-dapat sa iyong taimtim na sigasig, salamat!

Paano Naimbento ang Transactional Memory

Vitaly: Ang susunod na tanong ay tungkol sa transactional memory. Sa pagkakaintindi ko, pioneer ka sa larangang ito, naimbento mo ito sa panahong walang iniisip ang mga ganyang bagay. Bakit mo naisipang lumipat sa larangang ito? Bakit tila mahalaga sa iyo ang mga transaksyon? Naisip mo ba na balang araw ay ipapatupad sila sa hardware?

Maurice: Alam ko na ang tungkol sa mga transaksyon simula noong nagtapos ako sa pananaliksik.

Vitaly: Oo, ngunit ito ay magkaibang mga transaksyon!

Maurice: Nakipagtulungan ako sa Elliott Moss sa hindi nakaharang na koleksyon ng basura. Ang aming problema ay gusto naming atomically baguhin ang ilang mga salita sa memorya at pagkatapos ay ang mga algorithm ay magiging napaka-simple, at hindi bababa sa ilan sa mga ito ay magiging mas mahusay. Gamit paghahambing-at-pagpalit para sa load-link/store-conditionalna ibinigay ng parallel na arkitektura, posible na gumawa ng isang bagay, ngunit ito ay napaka hindi mabisa at pangit dahil kailangan mong harapin ang mga layer ng hindi direksyon. Gusto kong baguhin ang mga salita ng memorya at kailangan kong lumipat dahil maaari ko lamang baguhin ang isang pointer, kaya kailangan nilang tumuro sa ilang uri ng istraktura na tulad ng direktoryo. Napag-usapan namin kung gaano kahusay kung mapapalitan namin ang hardware upang magawa nito ang sabay-sabay na pag-record. Tila napansin ito ni Elliott: kung titingnan mo ang mga protocol ng pagkakaugnay ng cache, ibinibigay na nila ang karamihan sa kinakailangang pag-andar. Sa isang optimistikong transaksyon, mapapansin ng cache coherency protocol na mayroong conflict sa timing at magiging cache hindi wasto. Ano ang mangyayari kung ispekulatibo kang magpatakbo ng isang transaksyon sa iyong cache at gamitin ang mga mekanismo ng coherence protocol upang makakita ng mga salungatan? Madaling idisenyo ang speculative hardware architecture. Kaya sinulat namin ang isang iyon ang pinakaunang publikasyon tungkol sa transactional memory. Kasabay nito, ang kumpanyang pinagtatrabahuhan ko, ang Digital Equipment Corporation, ay gumagawa ng bagong 64-bit na processor na tinatawag na Alpha. Kaya nagpunta ako at nagbigay ng presentasyon sa Alpha development group tungkol sa aming kamangha-manghang transactional memory at nagtanong sila: Magkano ang karagdagang kita ng aming kumpanya kung idinagdag namin ang lahat ng ito nang direkta sa processor? At talagang wala akong sagot dito, dahil technologist ako, hindi ako isang espesyalista sa marketing. Wala talaga akong maisagot. Hindi sila masyadong humanga na wala akong alam.

Vitaly: Bilyon! Sabihin mo lang bilyon!

Maurice: Oo, yun ang dapat kong sabihin. Ngayon, sa edad ng mga startup at lahat ng bagay, alam ko na kung paano magsulat ng business plan. Na maaari kang magsinungaling ng kaunti tungkol sa laki ng iyong potensyal na kita. Ngunit noong mga araw na iyon ay tila walang muwang, kaya sinabi ko na lang, "Hindi ko alam." Kung titingnan mo ang kasaysayan ng publikasyon sa transactional memory, mapapansin mo na pagkatapos ng isang taon mayroong ilang mga sanggunian dito, at pagkatapos ay sa loob ng halos sampung taon ay walang sinuman ang nagbanggit sa papel na ito. Lumitaw ang mga quote noong 2004, nang lumitaw ang totoong multi-core. Nang matuklasan ng mga tao na ang pagsusulat ng parallel code ay maaaring kumita, nagsimula ang bagong pananaliksik. Ravi Rajwar nagsulat ng isang artikulo, na sa ilang paraan ay nagpakilala ng konsepto ng transactional memory sa mainstream. (Tala ng editor: May pangalawang bersyon ng artikulong ito, na inilabas noong 2010 at malayang magagamit bilang PDF). Biglang napagtanto ng mga tao kung paano eksaktong magagamit ang lahat ng ito, kung paano mapabilis ang mga tradisyonal na algorithm na may mga kandado. Isang magandang halimbawa ng isang bagay na sa nakaraan ay tila isang kawili-wiling problemang pang-akademiko. At oo, kung tinanong mo ako sa oras na iyon kung naisip ko na ang lahat ng ito ay magiging mahalaga sa hinaharap, sasabihin ko: siyempre, ngunit kapag eksaktong hindi malinaw. Siguro sa 50 taon? Sa pagsasagawa, ito ay naging isang dekada lamang. Napakaganda kapag gumawa ka ng isang bagay at pagkatapos lamang ng sampung taon ay napansin ito ng mga tao.

Bakit sulit na magsagawa ng pananaliksik sa larangan ng distributed computing

Vitaly: Kung pag-uusapan natin ang tungkol sa bagong pananaliksik, ano ang maipapayo mo sa mga mambabasa - distributed computing o multi-core at bakit? 

Maurice: Sa mga araw na ito, madaling makakuha ng multi-core na processor, ngunit mas mahirap mag-set up ng tunay na distributed system. Nagsimula akong magtrabaho sa kanila dahil gusto kong gawin ang isang bagay na naiiba sa aking PhD thesis. Ito ang payo na lagi kong ibinibigay sa mga bagong estudyante: huwag sumulat ng pagpapatuloy ng iyong disertasyonβ€”subukang pumunta sa isang bagong direksyon. At saka, madali ang multithreading. Maaari akong mag-eksperimento sa sarili kong tinidor na tumatakbo sa aking laptop nang hindi bumabangon sa kama. Ngunit kung bigla kong nais na lumikha ng isang tunay na ipinamamahaging sistema, kailangan kong gumawa ng maraming trabaho, akitin ang mga mag-aaral, at iba pa. Ako ay isang tamad na tao at mas gugustuhin na magtrabaho sa multi-core. Ang pag-eksperimento sa mga multi-core system ay mas madali kaysa sa paggawa ng mga eksperimento sa mga distributed system, dahil kahit sa isang hangal na distributed system ay napakaraming salik na kailangang kontrolin.

Vitaly: Ano ang ginagawa mo ngayon, nagsasaliksik ng blockchain? Aling mga artikulo ang dapat mong bigyang pansin muna?

Maurice: Kamakailan ay lumitaw napakagandang artikulo, na isinulat ko kasama ng aking estudyante, si Vikram Saraf, lalo na para sa isang usapan sa Kumperensya ng Tokenomcs sa Paris tatlong linggo na ang nakalipas. Ito ay isang artikulo tungkol sa mga praktikal na distributed system, kung saan iminumungkahi namin ang paggawa ng Ethereum na multi-threaded. Sa kasalukuyan, ang mga matalinong kontrata (code na tumatakbo sa blockchain) ay isinasagawa nang sunud-sunod. Sumulat kami ng isang artikulo kanina na nag-uusap tungkol sa isang paraan ng paggamit ng mga speculative na transaksyon upang pabilisin ang proseso. Kumuha kami ng maraming ideya mula sa memory transactional ng software at sinabi na kung gagawin mo ang mga ideyang ito na bahagi ng Etherium virtual machine, kung gayon ang lahat ay gagana nang mas mabilis. Ngunit para dito kinakailangan na walang mga salungatan sa data sa mga kontrata. And then we assumed na sa totoong buhay wala naman talagang conflicts. Ngunit wala kaming paraan upang malaman. Pagkatapos ay nangyari sa amin na mayroon kaming halos isang dekada ng totoong kasaysayan ng kontrata sa aming mga kamay, kaya itinapon namin ang Ethereum blockchain at tinanong ang aming sarili: ano ang mangyayari kung ang mga makasaysayang talaan ay naisakatuparan nang magkatulad? Natagpuan namin ang isang makabuluhang pagtaas sa bilis. Sa mga unang araw ng Ethereum, ang bilis ay tumaas nang husto, ngunit ngayon ang lahat ay medyo mas kumplikado, dahil may mas kaunting mga kontrata at ang posibilidad ng mga salungatan sa data na nangangailangan ng serialization ay naging mas mataas. Ngunit ang lahat ng ito ay pang-eksperimentong gawain na may totoong makasaysayang data. Ang magandang bagay tungkol sa blockchain ay naaalala nito ang lahat magpakailanman, upang maaari tayong bumalik sa nakaraan at pag-aralan kung ano ang mangyayari kung gumamit tayo ng iba't ibang mga algorithm upang patakbuhin ang code. Paano nagustuhan ng mga tao sa nakaraan ang aming bagong ideya? Ang ganitong pananaliksik ay mas madali at mas kasiya-siyang gawin, dahil mayroong isang bagay na sumusubaybay sa lahat at nagtatala ng lahat. Ito ay isang bagay na mas katulad sa sosyolohiya kaysa sa pagbuo ng mga algorithm.

Huminto ba ang pag-unlad ng mga algorithm at kung paano magpatuloy?

Vitaly: Oras na para sa huling teoretikal na tanong! Nararamdaman ba na ang pag-unlad sa mapagkumpitensyang mga istruktura ng data ay bumababa bawat taon? Sa palagay mo ba ay naabot na namin ang isang talampas sa aming pag-unawa sa mga istruktura ng data o magkakaroon ba ng ilang malalaking pagpapabuti? Siguro may ilang mga matalinong ideya na maaaring ganap na baguhin ang lahat?

Maurice: Maaaring naabot namin ang isang talampas sa mga istruktura ng data para sa mga tradisyonal na arkitektura. Ngunit ang mga istruktura ng data para sa mga bagong arkitektura ay isang napaka-promising na lugar. Kung gusto mong lumikha ng mga istruktura ng data para sa, halimbawa, mga accelerator ng hardware, kung gayon ang mga istruktura ng data para sa isang GPU ay ibang-iba sa mga istruktura ng data para sa isang CPU. Kapag bumuo ka ng mga istruktura ng data para sa mga blockchain, kailangan mong i-hash ang mga piraso ng data at pagkatapos ay ilagay ang mga ito sa isang katulad Puno ng Merkle, para maiwasan ang peke. Kamakailan lamang ay dumagsa ang aktibidad sa lugar na ito, at marami ang gumagawa ng napakahusay na gawain. Ngunit sa tingin ko kung ano ang mangyayari ay ang mga bagong arkitektura at mga bagong application ay hahantong sa mga bagong istruktura ng data. Mga legacy na application at tradisyonal na arkitektura - maaaring wala nang maraming lugar para sa paggalugad. Ngunit kung lalayo ka sa landas at tumingin sa kabila ng mga gilid, makikita mo ang mga nakatutuwang bagay na hindi sineseryoso ng mainstream - doon talaga nangyayari ang lahat ng kapana-panabik na bagay.

Vitaly: Samakatuwid, upang maging isang napaka-tanyag na mananaliksik, kailangan kong mag-imbento ng aking sariling arkitektura :)

Maurice: Maaari mong "nakawin" ang bagong arkitektura ng ibang tao - mukhang mas madali ito!

Nagtatrabaho sa Brown University

Vitaly: Maaari mo bang sabihin sa amin ang higit pa tungkol sa Brown Universitysaan ka nagtatrabaho? Hindi gaanong nalalaman tungkol sa kanya sa konteksto ng teknolohiya ng impormasyon. Mas mababa sa tungkol sa MIT, halimbawa.

Maurice: Ang Brown University ay isa sa mga pinakalumang unibersidad sa Estados Unidos. Sa tingin ko si Harvard lang ang mas matanda ng kaunti. Si Brown ay bahagi ng tinatawag na Ivy League, na isang koleksyon ng walong pinakamatandang unibersidad. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. Ito ay uri ng isang luma, maliit at medyo maharlikang unibersidad. Ang pangunahing pokus ay sa liberal arts education. Ito ay hindi sinusubukan na maging tulad ng MIT, MIT ay napaka-espesyalisado at teknikal. Ang Brown ay isang magandang lugar para mag-aral ng Russian Literature o Classical Greek, at siyempre, Computer Science. Nakatuon ito sa komprehensibong edukasyon. Karamihan sa aming mga mag-aaral ay pumupunta sa Facebook, Apple, Google - kaya sa tingin ko ang aming mga mag-aaral ay walang problema sa paghahanap ng trabaho sa industriya. Nagtrabaho ako sa Brown dahil nagtrabaho ako dati sa Digital Equipment Corporation sa Boston. Ito ay isang kumpanya na nag-imbento ng maraming mga kagiliw-giliw na bagay, ngunit tinanggihan ang kahalagahan ng mga personal na computer. Isang kumpanyang may mahirap na kapalaran, na ang mga tagapagtatag ay dating mga kabataang rebolusyonaryo, wala silang natutunan at walang nakalimutan, kaya't sila ay lumipat mula sa mga rebolusyonaryo patungo sa mga reaksyunaryo sa loob ng humigit-kumulang isang dosenang taon. Gusto nilang magbiro na ang mga personal na computer ay kabilang sa garahe-isang abandonadong garahe, siyempre. Ito ay medyo halata na sila ay nawasak ng mas nababaluktot na mga kumpanya. Nang maging malinaw na ang kumpanya ay may problema, tinawagan ko ang isang kaibigan ko sa Brown, na halos isang oras sa labas ng Boston. Ayokong umalis sa Boston noon dahil wala masyadong opening sa ibang unibersidad. Ito ang panahon kung saan wala pang maraming trabaho sa Computer Science gaya ngayon. At nagkaroon ng opening si Brown, hindi ko na kailangang ilipat ang aking tahanan, hindi ko kailangang ilipat ang aking pamilya, at talagang gusto kong manirahan sa Boston! Iyon ay kung paano ako nagpasya na pumunta sa Brown. Gusto ko ito. Kahanga-hanga ang mga estudyante, kaya hindi ko na sinubukang pumunta sa ibang lugar. Sa aking sabbatical, nagtrabaho ako sa Microsoft sa loob ng isang taon, pumunta sa Technion sa Haifa sa loob ng isang taon, at ngayon ay nasa Algorand ako. Marami akong mga kasamahan sa lahat ng dako at samakatuwid ang pisikal na lokasyon ng aming mga silid-aralan ay hindi ganoon kahalaga. Pero ang pinakamahalaga ay ang mga estudyante, sila ang pinakamagaling dito. Hindi ko na sinubukang pumunta sa ibang lugar dahil medyo masaya ako dito.

Ngunit sa kabila ng katanyagan ni Brown sa Estados Unidos, nakakagulat na hindi siya kilala sa ibang bansa. Tulad ng nakikita mo, ginagawa ko ngayon ang lahat ng posible upang itama ang kalagayang ito.

Pagkakaiba sa pagitan ng pananaliksik sa isang unibersidad at sa loob ng isang korporasyon

Vitaly: Okay, ang susunod na tanong ay tungkol sa Digital Equipment. Ikaw ay naroon bilang isang mananaliksik. Ano ang pagkakaiba sa pagitan ng pagtatrabaho sa R&D department ng isang malaking kumpanya at pagtatrabaho sa isang unibersidad? Ano ang mga pakinabang at disadvantages?

Maurice: Sa loob ng dalawampung taon ay nagtrabaho ako sa Microsoft, nagtrabaho nang malapit sa mga empleyado ng Sun Microsystems, Oracle, Facebook, at ngayon ay Algorand. Batay sa lahat ng ito, nais kong sabihin na posibleng magsagawa ng first-class na pananaliksik kapwa sa mga kumpanya at sa mga unibersidad. Ang mahalagang pagkakaiba ay sa isang kumpanya na nagtatrabaho ka sa mga kasamahan. Kung bigla akong magkaroon ng ideya para sa isang proyekto na wala pa, dapat kong kumbinsihin ang aking mga kasamahan na ito ay isang magandang ideya. Kung ako ay nasa Brown, masasabi ko sa aking mga mag-aaral: gawin natin ang antigravity! Aalis sila para sa iba o gagawa ng proyekto. Oo, kakailanganin kong maghanap ng pondo, kakailanganin kong magsulat ng aplikasyon para sa grant, at iba pa. Sa anumang kaso, palaging magkakaroon ng maraming mga mag-aaral, at magagawa mong gumawa ng mga desisyon nang unilaterally. Ngunit sa unibersidad ay malamang na hindi ka makikipagtulungan sa mga taong katulad mo. Sa mundo ng pang-industriyang pananaliksik, kailangan mo munang kumbinsihin ang lahat na ang iyong proyekto ay sulit na gawin. Wala akong maiuutos sa kahit na sino. At pareho sa mga paraan ng pagtatrabaho na ito ay mahalaga, dahil kung gumagawa ka ng isang bagay na talagang nakakabaliw at ang iyong mga kasamahan ay mahirap kumbinsihin, mas madaling kumbinsihin ang mga nagtapos na mga mag-aaral - lalo na kung binabayaran mo sila. Kung gumagawa ka ng isang bagay na nangangailangan ng maraming karanasan at malalim na kadalubhasaan, kailangan mo ng mga kasamahan na maaaring magsabi ng "hindi, nagkataon na naiintindihan ko ang lugar na ito at ang iyong ideya ay masama, hindi ito gagana." Ito ay lubhang kapaki-pakinabang sa mga tuntunin ng pag-aaksaya ng oras. Gayundin, kung sa mga pang-industriya na laboratoryo ay gumugugol ka ng maraming oras sa pagsulat ng mga ulat, kung gayon sa isang unibersidad ay ginugugol mo ang oras na ito sa pagsisikap na makahanap ng pera. Kung gusto kong may mapuntahan ang mga estudyante, kailangan kong maghanap ng pera para dito sa ibang lugar. At kung mas mahalaga ang iyong posisyon sa unibersidad, mas maraming oras ang kailangan mong gugulin sa pagkolekta ng pera. Kaya ngayon alam mo na kung para saan ako nagtatrabaho - isang propesyonal na pulubi! Tulad ng isa sa mga monghe na naglalakad sa paligid na may dalang pinggan. Sa pangkalahatan, ang dalawang aktibidad na ito ay umaakma sa isa't isa. Kaya naman sinisikap kong mabuhay at panatilihin ang aking mga paa sa lupa sa magkabilang mundo.

Vitaly: Mukhang mas mahirap kumbinsihin ang isang kumpanya kaysa kumbinsihin ang ibang mga siyentipiko.

Maurice: Mas mahirap, at marami pang iba. Bukod dito, sa iba't ibang mga lugar ito ay naiiba: ang ilan ay nagsasagawa ng ganap na pananaliksik, habang ang iba ay nakatuon sa kanilang paksa. Kung pumunta ako sa Microsoft o Facebook at sinabing: gawin natin ang anti-gravity, hindi nila ito pahalagahan. Ngunit kung sinabi ko ang eksaktong parehong bagay sa aking mga mag-aaral na nagtapos, malamang na agad silang magtrabaho, kahit na ngayon ay magkakaroon ako ng mga problema - pagkatapos ng lahat, kailangan kong maghanap ng pera para dito. Ngunit hangga't gusto mong gumawa ng isang bagay na naaayon sa mga layunin ng kumpanya, ang kumpanyang iyon ay maaaring maging isang napakagandang lugar para magsaliksik.

Hydra at SPTDC

Vitaly: Matatapos na ang mga tanong ko, kaya pag-usapan natin ang paparating na paglalakbay sa Russia.

Maurice: Oo, inaasahan kong makabalik sa St. Petersburg.

Alexey: Ikinararangal kong makasama ka ngayong taon. Ito ang iyong pangalawang pagkakataon sa St. Petersburg, tama ba?

Maurice: Pangatlo na!

Alexey: Naiintindihan ko, pero SPTDC - tiyak ang pangalawa. Huling beses na tinawag ang paaralan SPTCC, binago namin ngayon ang isang letra (C to D, Concurrent to Distributed) para bigyang-diin na may higit pang mga lugar na partikular na nauugnay sa distributed computing sa taong ito. Maaari ka bang magsabi ng ilang salita tungkol sa iyong mga ulat sa Paaralan at Kumperensya ng Hydra?

Maurice: Sa Paaralan gusto kong pag-usapan ang mga pangunahing kaalaman ng blockchain at kung ano ang magagawa mo dito. Gusto kong ipakita na ang mga blockchain ay halos kapareho sa multi-threaded programming na pamilyar sa atin, ngunit may sariling mga nuances, at ang mga pagkakaibang ito ay mahalagang maunawaan. Kung magkamali ka sa isang regular na web application, nakakainis lang. Kung sumulat ka ng buggy code sa isang pinansiyal na aplikasyon, tiyak na may magnanakaw ng lahat ng iyong pera. Ang mga ito ay ganap na magkakaibang mga antas ng responsibilidad at mga kahihinatnan. Magsasalita ako ng kaunti tungkol sa proof-of-work, tungkol sa mga smart contract, tungkol sa mga transaksyon sa pagitan ng iba't ibang blockchain.

May iba pang speaker na magtatrabaho sa tabi ko na may sasabihin din tungkol sa blockchain, at napagkasunduan naming makipag-coordinate sa isa't isa para magkasya nang maayos ang aming mga kwento. Ngunit para sa ulat ng engineering, gusto kong sabihin sa isang malawak na madla na maliwanag na paliwanag kung bakit hindi mo dapat paniwalaan ang lahat ng iyong naririnig tungkol sa mga blockchain, kung bakit ang mga blockchain ay isang mahusay na larangan, kung paano ito nababagay sa iba pang kilalang mga ideya, at kung bakit dapat tayong matapang na tumingin sa kinabukasan.

Alexey: Bilang karagdagan, gusto kong sabihin na hindi ito magaganap sa format ng isang meetup o grupo ng gumagamit, tulad ng dalawang taon na ang nakakaraan. Nagpasya kaming magsagawa ng isang maliit na kumperensya malapit sa paaralan. Ang dahilan ay pagkatapos na makipag-usap kay Peter Kuznetsov, napagtanto namin na ang paaralan ay limitado lamang sa isang daan, marahil 120 katao. Kasabay nito, maraming mga inhinyero na gustong makipag-usap sa iyo, dumalo sa mga presentasyon, at sa pangkalahatan ay interesado sa paksa. Para sa kadahilanang ito lumikha kami ng isang bagong kumperensya tinatawag na Hydra. By the way, any ideas kung bakit Hydra?

Maurice: Kasi magkakaroon ng pitong speaker? At ang kanilang mga ulo ay maaaring putulin, at ang mga bagong tagapagsalita ay lalago sa kanilang lugar?

Alexey: Magandang ideya para sa pagpapalaki ng mga bagong tagapagsalita. Pero sa totoo lang, may kwento dito. Alalahanin ang alamat ng Odysseus, kung saan kailangan niyang maglayag sa pagitan Scylla at Charybdis? Ang Hydra ay parang Charybdis. Ang kuwento ay noong minsan ay nagsalita ako sa isang kumperensya at nagsalita tungkol sa multithreading. Dalawa lang ang track sa conference na ito. Sa simula ng ulat, sinabi ko sa madla sa bulwagan na mayroon na silang pagpipilian sa pagitan ng Scylla at Charybdis. Ang aking espiritung hayop ay si Charybdis dahil ang Charybdis ay maraming ulo at ang aking tema ay multi-threading. Ito ay kung paano lumilitaw ang mga pangalan ng mga kumperensya.

Sa anumang kaso, kami ay naubusan ng mga tanong at oras. Kaya, salamat, mga kaibigan, para sa isang mahusay na panayam, at magkita-kita tayo sa SPTDC School at Hydra 2019!

Maaari mong ipagpatuloy ang iyong pakikipag-usap kay Maurice sa kumperensya ng Hydra 2019, na gaganapin sa Hulyo 11-12, 2019 sa St. Petersburg. Darating siya na may dalang report "Mga Blockchain at ang hinaharap ng distributed computing". Maaaring mabili ang mga tiket sa opisyal na website.

Pinagmulan: www.habr.com

Magdagdag ng komento