"Empiriaj rezultoj estas por publikigo nur, la realaj motivoj de la laboro estas estetikaj." Bonega intervjuo kun Michael Scott

"Empiriaj rezultoj estas por publikigo nur, la realaj motivoj de la laboro estas estetikaj." Bonega intervjuo kun Michael Scott Michael Scott - dum 34 jaroj kiel profesoro pri Komputado ĉe la Universitato de Roĉestro, kaj en sia hejma Universitato de Wisconsin-Madison li estis dekano dum kvin jaroj. Li esploras kaj instruas studentojn pri paralela kaj distribuita programado kaj lingvodezajno.

La mondo konas Mikaelo'n el la lernolibro "Programlingvo-Pragmatiko", kio pri laboro "Algoritmoj por skalebla sinkronigo sur komunaj memoraj multiprocesoroj" ricevis la Dijkstra Premion kiel unu el la plej famaj en la kampo de distribuita komputiko. Vi eble ankaŭ konas lin kiel la aŭtoron de tiu sama algoritmo Mikaelo-Skot.

Kune kun Doug Lee, li evoluigis la ne-blokajn algoritmojn kaj sinkronajn atendovicojn kiuj funkciigas la Java-bibliotekojn. Efektivigo "duoblaj datumstrukturoj" en JavaSE 6 plibonigis rendimenton je 10 fojojn ThreadPoolExecutor.

Enhavo:

  • Frua kariero, Universitato de Rochester. Projekto Charlotte, Lynx-lingvo;
  • IEEE Scalable Coherent Interface, MCS-ŝlosado;
  • Supervivo en ĉiam ŝanĝanta mondo;
  • Ĉu studentoj fariĝas pli stultaj? Tutmondaj tendencoj, internaciigo;
  • Efika laboro kun studentoj;
  • Kiel daŭrigi kun la preparado de novaj kursoj kaj libroj;
  • Ligoj inter komerco kaj akademio;
  • Praktika efektivigo de ideoj. MCS, MS, CLH, JSR 166, laborante kun Doug Lee kaj pli;
  • Transakcia memoro;
  • Novaj arkitekturoj. La venko de transakcia memoro estas proksima;
  • Ne-volatila memoro, Optane DIMM, ultrarapidaj aparatoj;
  • La sekva granda tendenco. Duoblaj datumstrukturoj. Hidro.

La intervjuo estas farita de:

Vitalij Aksenov — nuntempe postdoktorino ĉe IST Aŭstrio kaj membro de la Sekcio pri Komputilaj Teknologioj ĉe ITMO-Universitato. Faras esploradon en la kampo de teorio kaj praktiko de konkurencivaj datumstrukturoj. Antaŭ ol labori pri IST, li ricevis sian PhD de Paris Diderot University kaj ITMO University sub la inspektado de profesoro Peter Kuznetsov.

Aleksej Fedorov - Produktanto ĉe JUG Ru Group, rusa kompanio, kiu organizas konferencojn por programistoj. Alexey partoprenis en la preparado de pli ol 50 konferencoj, kaj lia vivresumo inkluzivas ĉion de la pozicio de evoluinĝeniero ĉe Oracle (JCK, Java Platform Group) ĝis la pozicio de programisto ĉe Odnoklassniki.

Vladimir Sitnikov - Inĝeniero ĉe Netcracker. Dek jaroj da laboro pri la rendimento kaj skaleblo de NetCracker OS, programaro uzata de teleentreprenistoj por aŭtomatigi procezojn pri administrado de retaj kaj retaj ekipaĵoj. Interesas pri agado de problemoj pri Java kaj Oracle Database. Aŭtoro de pli ol dekduo agado-plibonigoj en la oficiala PostgreSQL JDBC-ŝoforo.

Frua kariero, Universitato de Rochester. Charlotte-projekto, Lynx-lingvo.

Алексей: Komence, mi volis diri al vi, ke en Rusio ni ĉiuj vere amas Komputika, Datuma Scienco kaj algoritmoj. Ĝi estas tute obscena. Ni legis ĉion libro Cormen, Leiserson kaj Rivest. Tial, la venonta konferenco, lernejo kaj ĉi tiu intervjuo mem devus esti tre popularaj. Ni ricevis multajn demandojn por ĉi tiu intervjuo de studentoj, programistoj kaj komunumanoj, do ni tre dankas pro ĉi tiu ŝanco. Ĉu Komputiko ricevas la saman amon en Usono?

Mi Michaelaelo: Nia fako estas tiel diversa, ĝi havas tiom da direktoj, kaj ĝi influas la socion en tiom da diversaj manieroj, ke malfacilas al mi doni al vi definitivan respondon. Sed la fakto estas, ke ĝi kaŭzis enormajn ŝanĝojn en komerco, industrio, arto kaj socio ĝenerale dum la lastaj 30 jaroj.

Vitali: Ni komencu per io malproksima. En multaj universitatoj ekzistas io kiel specialiĝo en unu aparta areo. Por Carnegie Mellon University tio estas paralela komputado, por MIT ĝi estas kriptografio, robotoj kaj multifadenado. Ĉu ekzistas tia specialiĝo ĉe la Universitato de Roĉestro?

Mi Michaelaelo: Sincere, mi dirus, ke CMU kaj MIT specialiĝas pri ĉiuj areoj. Nia fako ĉiam plej atentis artefaritan inteligentecon. Duono de la homoj laborantaj por ni okupiĝas pri AI aŭ hom-komputila interago - ĉi tiu parto estas pli alta ol en aliaj fakoj, kaj ĉiam estis tiel. Sed kiam mi estis en universitato, mi ne havis kursojn pri AI, kaj mi neniam laboris en ĉi tiu kampo. Do mia fako specialiĝas pri problemo, kun kiu mi havas nenion komunan. La konsolo estas, ke la dua plej grava problemo por nia fako estas paralela kaj plurfadena programado, tio estas mia specialiĝo.

Vitali: Vi komencis labori en Komputado kiam la kampo de plurfadena programado ĵus emerĝis. La listo de viaj eldonaĵoj montras, ke viaj unuaj verkoj traktis sufiĉe vastan gamon de aferoj: administrado de memoro en plurfadenaj sistemoj, distribuitaj dosiersistemoj, operaciumoj. Kial tia ĉiuflankeco? Ĉu vi provis trovi vian lokon en la esplora komunumo?

Mi Michaelaelo: Kiel studento, mi partoprenis Charlotte-projekto ĉe la Universitato de Viskonsino, kie unu el la unuaj distribuitaj operaciumoj estis evoluigita. Tie mi laboris kune kun Rafael Finkel (Rafaelo Finkel) kaj Marvin Solomon (Marvin Salomono). Mia disertacio estis dediĉita al la evoluo de lingvo por sistema programaro por distribuitaj sistemoj - nun ĉiuj forgesis pri ĝi, kaj dankon al Dio. Mi kreis la programlingvon Lynx, kiu celis faciligi la kreadon de serviloj por loze kunligita distribuita operaciumo. Ĉar en tiu tempo mi ĉefe okupiĝis pri operaciumoj, mi supozis, ke mia kariero estos ĉefe ligita kun ili. Sed Rochester estis tre malgranda universitato, kaj pro tio, la malsamaj grupoj tie interagis tre proksime unu kun la alia. Ne estis dekduo da aliaj operaciumoj por mi paroli tie, do ĉiuj miaj kontaktoj estis kun homoj kiuj laboris en tute malsamaj areoj. Mi tre ĝuis ĝin, esti ĉiuflanka estas granda avantaĝo por mi. Se ni parolas specife pri multfadenaj datumstrukturoj kaj sinkronigaj algoritmoj, tiam mi eklaboris pri ili tute hazarde.

IEEE Scalable Coherent Interface, MCS-ŝlosado.

Vitali: Ĉu vi povas rakonti al mi iom pli pri tio?

Mi Michaelaelo: Ĉi tio estas amuza rakonto, kiun mi neniam laciĝas rakonti al ĉiuj. Ĝi okazis en konferenco ASPLOS en Bostono - tio estis en la malfruaj 80-aj jaroj aŭ fruaj 90-aj jaroj. John Mellor-Crummey (John Mellor-Crummey), diplomiĝinto de nia fakultato. Mi konis lin, sed ni antaŭe ne faris komunajn esplorojn. Mary Vernon (Mary Vernon) el Viskonsino faris prelegon pri multprocesora sistemo, kiun ili disvolvis en Viskonsino: Viskonsina Multikubo. Tiu Multicube havis sinkronigan mekanismon sur la hardvarnivelo nomita la Q sur Sync Bit, kaj poste ĝi estis renomita la Q sur Lock Bit ĉar ĝi sonis kiel Colby-fromaĝo, kio estis vortludo. Se vi interesiĝas pri multfadenaj mekanismoj, vi verŝajne scias, ke Colby finfine iĝis la sinkroniga motoro por la normo IEEE Scalable Coherent Interface. Tio estis ŝlosmekanismo kiu kreis montrilojn de unu kaŝmemoro al alia sur la hardvarnivelo tiel ke ĉiu serurposedanto sciis kies vico ĝi estis. Kiam Johano kaj mi aŭdis pri tio, ni rigardis unu la alian kaj diris: kial fari tion sur la aparataro? Ĉu oni ne povas atingi la samon per kompar-kaj-interŝanĝo? Ni prenis unu el la kajeroj kuŝantaj en la klasĉambro kaj skribaĉis sur ĝi MCS-blokado, dum Maria daŭrigis sian raporton. Poste, ni efektivigis ĝin, eksperimentis, la ideo montriĝis sukcesa, kaj ni publikigis la artikolon. Tiutempe, por mi, ĉi tiu temo ŝajnis nur amuza distraĵo, post kio mi planis reveni al operaciumoj. Sed tiam aperis alia problemo laŭ la sama linio, kaj finfine sinkronigado, multfadenado kaj datumstrukturoj fariĝis mia specialaĵo. Kiel vi povas vidi, ĉio ĉi okazis hazarde.

Vitali: Mi jam delonge konas MCS-blokadon, sed ĝis nun mi ne sciis, ke ĝi estas via laboro, kaj ne komprenis, ke ĝi estas akronimo por viaj familiaj nomoj.

Kiel postvivi en ĉiam ŝanĝiĝanta mondo?

Алексей: Mi havas demandon pri rilata temo. Antaŭ 30 aŭ 40 jaroj estis pli da libereco en diversaj fakoj. Se vi volas komenci karieron en multfadenaj aŭ distribuitaj sistemoj, vi bonvenas, se vi volas eniri en operaciumojn, neniu problemo. En ĉiu areo estis multaj malfermitaj demandoj kaj malmultaj spertuloj. Nun aperis mallarĝaj specialaĵoj: ne ekzistas nur fakuloj pri operaciumoj ĝenerale, ekzistas specialistoj pri individuaj sistemoj. Estas same kun multfadenaj kaj distribuitaj sistemoj. Sed la problemo estas, ke niaj vivoj ne estas senfinaj; ĉiuj povas dediĉi nur kelkajn jardekojn al esplorado. Kiel postvivi en ĉi tiu nova mondo?

Mi Michaelaelo: Ni ne estas specialaj tiurilate la sama afero okazis unufoje en aliaj areoj. Mi estis bonŝanca, ke mi komencis labori en Komputado kiam la kampo estis en siaj "adoleskaj" jaroj. Kelkaj fundamentoj estis jam starigitaj, sed ĉio estis ankoraŭ tre nematura. Ĉi tiu ŝanco ne venas ofte. Elektrotekniko ekzistas de tre longa tempo, fiziko eĉ pli longe, matematiko preskaŭ ekde la komenco de la tempo. Sed ĉi tio ne signifas, ke neniu plu faras interesajn malkovrojn en matematiko. Estas ankoraŭ multaj malfermitaj problemoj, sed samtempe necesas lerni pli. Vi prave rimarkas, ke nun estas multe pli da specialaĵoj ol antaŭe, sed tio signifas nur, ke ni troviĝas en la sama situacio kiel la plej multaj aliaj areoj de homa agado.

Алексей: Mi interesiĝas pri la pli praktika aspekto de la afero ĉi tie. Mi havas matematikan fonon, kaj dum miaj studoj mi ofte partoprenis konferencojn kaj laboris pri diversaj sciencaj temoj. Mi malkovris, ke neniu en la publiko komprenis miajn raportojn, kaj same, la raportoj de aliaj homoj estis kompreneblaj nur por si mem. Tio ne okazas en altnivelaj temoj, sed tuj kiam vi komencas enprofundiĝi en ion, la publiko ne plu povas sekvi vin. Kiel vi traktas ĉi tion?

Mi Michaelaelo: Ne ĉiam sukcesa. Mi antaŭ nelonge preparis raporton, en kiu mi tro profundiĝis en teknikajn detalojn. Dum la parolado progresis, evidentiĝis, ke la plimulto de la publiko ne komprenas min, do mi devis adaptiĝi al la situacio surflue. La diapozitivoj ne eblis ŝanĝi, do ĝi ne tre bone rezultis - do, ĝenerale, mi provas ne uzi diapozitivojn. Ĝenerale, mia konsilo estas konsideri vian publikon. Vi devas scii al kiu vi parolas, kio estas ilia nivelo de scio kaj kion ili bezonas aŭdi por aprezi vian laboron.

Vitali: Ĉu vi povus doni al ni aludon pri kio temas ĉi tiu prelego?

Mi Michaelaelo: Verdire, mi preferus ne pligrandigi ĉi tiun temon por lasi la koncernajn personojn anonimaj. La afero estas, ke ni ofte tro profundiĝas en la komplikaĵojn de la problemo, pri kiu ni laboras, do fariĝas malfacile por ni klarigi komence de la parolado kial la problemo estas interesa kaj grava kaj kiel ĝi rilatas al aferoj, kiujn la publiko jam scias. Laŭ miaj observoj, studentoj havas la plej malfacilan tempon lerni ĉi tiun kapablon. Kaj ĉi tio ankaŭ estis la malforta punkto de mia lastatempa raporto. Taŭge strukturita raporto devus, ekde la komenco, trovi kontakton kun la publiko, klarigi al ili, kio ĝuste estas la problemo kaj kiel ĝi rilatas al temoj jam konataj de ĝi. Kiom teknika estas ĉi tiu enkonduko dependas de la publiko. Se ĝi estas tute diversa, tiam la raporto povas esti plurŝtupa. La enkonduko devus esti alirebla por ĉiuj, kaj ĝis la fino la peco eble ne povos daŭrigi kun vi, sed homoj relative konataj kun via fako povos eltrovi ĝin.

Ĉu studentoj fariĝas pli stultaj? Tutmondaj tendencoj, internaciigo.

Алексей: Vi observas studentojn dum pluraj jardekoj. Ĉu studentoj fariĝas pli stultaj aŭ pli inteligentaj de jardeko al jardeko aŭ jaro al jaro? En Rusio, profesoroj konstante plendas, ke studentoj fariĝas pli stultaj ĉiujare, kaj vere ne estas klare, kion fari pri tio.

Mi Michaelaelo: Vi povas vere aŭdi multe da negativeco de ni maljunuloj. Subkonscie, ni emas atendi, ke studentoj sorbos ĉiujn 30 jarojn da sperto, kiun ni jam havas. Se mi havas pli profundan komprenon ol en 1985, kial la studentoj ne havas ĝin? Verŝajne ĉar ili havas 20 jarojn, kion vi opinias? Mi pensas, ke la plej signifaj ŝanĝoj en la lastaj jardekoj estis en demografia konsisto: ni nun havas signife pli da internaciaj studentoj, escepte de kanadanoj. Antaŭe estis multaj kanadanoj ĉar ni estas tre proksime al la kanada limo kaj studentoj de tie povas vojaĝi hejmen dum la semajnfinoj. Sed nun estas multaj bonaj universitatoj en Kanado, kaj kanadanoj preferas studi ĉi tie signife malpli da ili venas al Usono;

Алексей: Ĉu vi pensas, ke tio estas loka tendenco aŭ tutmonda?

Mi Michaelaelo: Mi ne memoras precize kiu, sed iu diris, ke la mondo estas plata. Nia kampo fariĝis multe pli internacia. ACM-Konferencoj Antaŭe, ili estis tenitaj ekskluzive ene de Usono, tiam ili decidis okazigi ilin unufoje ĉiujn 4 jarojn en aliaj landoj, kaj nun ili estas tenitaj ĉie en la mondo. Ĉi tiuj ŝanĝoj influis eĉ pli IEEE, ĉar ĝi ĉiam estis pli internacia organizo ol ACM. Kaj estas programseĝoj el Ĉinio, Barato, Rusio, Germanio kaj multaj aliaj landoj, ĉar nun ĉie okazas multo.

Алексей: Sed, verŝajne, estas iuj negativaj aspektoj de tia internaciigo?

Mi Michaelaelo: Mi dirus, ke ĉiuj negativaj aspektoj rilatas ne al teknologio, sed al politiko. Iam, la ĉefa problemo estis la fakto, ke Usono ŝtelis la plej inteligentajn kaj talentajn homojn el landoj ĉirkaŭ la mondo. Kaj nun la ĉefa problemo estas la politikaj ludoj inter diversaj landoj ĉirkaŭ vizoj kaj enmigrado.

Алексей: Tio estas barieroj kaj tiaj aferoj. Estas klare.

Vidi: Persone, mi interesiĝas pri kia aliro vi prenas kiam vi instruas novan temon al studentoj. Estas malsamaj ebloj: vi povas provi antaŭ ĉio inspiri ilin provi ion novan, aŭ vi povas pli atenti la detalojn pri kiel certa teknologio funkcias. Kion vi preferas?

Efika laboro kun studentoj

Алексей: Kaj kiel trovi la malbenitan ekvilibron inter la unua kaj la dua?

Mi Michaelaelo: La problemo estas, ke klasoj ne ĉiam iras kiel mi ŝatus. Mi kutime donas al studentoj legan materialon anticipe por ke ili enprofundu ĝin, komprenu ĝin laŭ sia kapablo kaj formulu demandojn pri tiuj partoj kiujn ili ne povis kompreni. Tiam en klaso vi povas koncentriĝi pri la plej malfacilaj momentoj kaj esplori ilin kune. Jen kiel mi plej ŝatas instrui klasojn. Sed pro la ŝarĝo, kiu nun kuŝas sur studentoj, mi ne ĉiam kapablas certigi, ke ili anticipe prepariĝas. Kiel rezulto, vi devas dediĉi multe pli da tempo al la ĝenerala rerakonto de la materialo ol vi ŝatus. Malgraŭ tio, mi provas teni niajn klasojn interagaj. Alie, estas pli facile registri video unufoje, ke studentoj tiam povas spekti hejme. La punkto de vivaj klasoj estas homa interago. En la klaso, mi preferas uzi kreton kaj nigran tabulon prefere ol lumbildojn, krom en certaj kazoj kiam diagramo estas tro kompleksa por bildigi sur la tabulo. Dank' al tio, mi ne devas teni rigidan lecionplanon. Ĉar ne ekzistas strikta ordo en kiu mi donas la materialon, tio permesas al mi adapti ĝin al la publiko depende de la demandoj, kiujn mi ricevas. Ĝenerale mi provas fari klasojn kiel eble plej interagajn, tiel ke la materialo, kiun mi prezentas, dependas de la demandoj, kiujn oni faras al mi.

Vidi: Ĝi estas bonega. Laŭ mia sperto, estas sufiĉe malfacile igi aŭskultantojn demandi. Eĉ se vi anticipe demandas demandi ajnajn demandojn, kiom ajn stultaj aŭ inteligentaj, ili ankoraŭ silentas. Kiel vi traktas ĉi tion?

Mi Michaelaelo: Vi ridos, sed se vi staros silente sufiĉe longe, pli aŭ malpli frue ĉiuj malkomfortiĝos kaj iu demandos. Aŭ vi povas demandi simplan teknikan demandon kun jesa aŭ nea respondo por determini ĉu homoj komprenas tion, kion oni ĵus diris. Ekzemple, ĉu ekzistas datumvetkuro en la supra ekzemplo? Kiu pensas tiel? Kiu pensas ne? Kiu tute ne komprenas ion, ĉar entute nur duono de la manoj supreniris?

Vitali: Kaj se vi malĝuste respondis, vi estas forpelita el klaso :)

Mi Michaelaelo: Se vi nenion respondis, tiam vi devus demandi demandon. Mi devas kompreni, kion precize la studento bezonas scii por respondi la demandon, kiun mi ĵus demandis. Mi bezonas, ke ili helpu min helpi ilin. Mi estas preta adaptiĝi al ili, por ke ili komprenu la problemon. Sed se mi ne scias, kio okazas en ilia kapo, mi ne povas fari tion. Kaj se vi ne donas al studentoj pacon por sufiĉe longa tempo, kelkfoje finfine ili faras la ĝustajn demandojn, tio estas, kiuj permesas al mi vidi kio ĝuste okazas en la kapoj de la studentoj. 

Алексей: Ĉu ĉi tiuj demandoj foje kondukas al ideoj, pri kiuj vi mem ne pensis antaŭe? Ĉu ili estas neatenditaj? Ĉu ili permesas vin rigardi problemon en nova lumo?

Mi Michaelaelo: Estas demandoj, kiuj malfermas novan manieron prezenti materialon. Ofte estas demandoj, kiuj kondukas al interesaj problemoj, pri kiuj mi ne planis paroli. Studentoj ofte diras al mi, ke mi emas foriri de la temo kiam tio okazas. Kaj, laŭ ili, tre ofte ĉi tio estas la plej interesa parto de la leciono. Tre malofte, nur kelkajn fojojn, studentoj faris demandojn kiuj instigis novan direkton en esplorado kaj kreskis en artikolon. Tio okazas multe pli ofte en konversacioj kun studentoj prefere ol dum klasoj, sed foje ĝi okazis dum klasoj. 

Алексей: Do la studentoj faris al vi demandojn, surbaze de kiuj tiam eblis eldoni artikolon?

Mi Michaelaelo: Jes. 

Vitali: Kiom ofte vi havas ĉi tiujn konversaciojn kun studentoj? Kiam ili volas lerni pli ol kio estis kovrita dum la leciono?

Mi Michaelaelo: Kun miaj diplomiĝaj studentoj - la tutan tempon. Mi havas ĉirkaŭ 5 aŭ 6 el ili, kaj ni diskutas ion kun ili la tutan tempon. Kaj tiaspecaj konversacioj kun studentoj, kiuj simple ĉeestas miajn klasojn, ne estas tre oftaj. Kvankam mi deziras, ke tio okazu pli ofte. Mi suspektas, ke ili simple timas veni al la fakultato dum oficejaj horoj. Ĉiu semestro, iuj studentoj sukcesas venki ĉi tiun psikologian baron, kaj ĉiam estas tre interese paroli kun ili post la klaso. Vere, se ĉiuj lernantoj estus same kuraĝaj, mi simple ne havus sufiĉe da tempo. Do eble ĉio funkcias kiel ĝi devus. 

Vitali: Kiel vi sukcesas trovi tempon por komuniki kun studentoj? Laŭ mia scio, en Usono instruistoj havas multe da laboro - petante subvenciojn kaj similajn. 

Mi Michaelaelo: Sincere, labori kun studentoj estas la aspekto de mia laboro, kiun mi plej ĝuas. Do mi havas sufiĉe da motivo por ĉi tio. Plejparto de la tempo, kiun mi pasigas en mia oficejo, estas pasigita por ĉiaspecaj kunvenoj. Nun estas somero, do mia horaro estas malpli okupata, sed dum la lerneja jaro, ĉiutage de la 9-a ĝis la 17-a mi havas ĉion pakita. Esplorlaboroj, recenzoj, subvencioj – por ĉio ĉi estas nur vesperoj kaj semajnfinoj. 

Kiel daŭrigi kun la preparado de novaj kursoj kaj libroj.

Алексей: Ĉu vi nuntempe daŭre instruas iujn kursojn, kiujn vi delonge instruas? Io kiel enkonduko al Komputika Scienco.

Mi Michaelaelo: La unua afero, kiu venas al la menso ĉi tie, estas kurso pri programlingvoj. 

Алексей: Kiom malsamas la hodiaŭa versio de ĉi tiu kurso de tio, kion ĝi estis antaŭ 10, 20, 30 jaroj? Eble kio estas pli interesa ĉi tie ne estas la detaloj de aparta kurso, sed la ĝeneralaj tendencoj.

Mi Michaelaelo: Mia kurso pri programlingvoj estis iom nekutima kiam mi kreis ĝin. Mi komencis legi ĝin en la malfruaj 1980-aj jaroj, anstataŭigante mian kolegon, Doug Baldwin (Doug Baldwin). La temo de la kurso estis nur tanĝante rilata al mia fako, sed kiam li foriris, mi estis la plej bona kandidato por instrui la kurson. Mi ŝatis neniun el la tiama lernolibroj ekzistantaj, do mi finfine verkis la lernolibron por ĉi tiu kurso mem. (Noto de la redaktoro: ni parolas pri la libro "Programlingvo-Pragmatiko") Ĝi nun estas uzata en pli ol 200 universitatoj tra la mondo. Mia aliro estas nekutima pro tio, ke ĝi intence miksas la problemojn de lingvodezajno kaj efektivigo, kaj multe atentas la interagon inter tiuj aspektoj en ĉiuj eblaj areoj. La baza aliro restis senŝanĝa, same kiel multaj bazaj konceptoj: abstraktaĵoj, nomspacoj, modulareco, tipoj. Sed la aro de lingvoj, per kiuj ĉi tiuj konceptoj estas pruvitaj, tute ŝanĝiĝis. Kiam la kurso estis unue kreita, estis multaj ekzemploj en Paskalo, sed hodiaŭ multaj el miaj lernantoj eĉ ne aŭdis pri ĉi tiu lingvo. Sed ili konas Swift, Go, Rust, do mi devas paroli pri la lingvoj, kiuj estas uzataj hodiaŭ. Ankaŭ studentoj nun bone konas skriptlingvojn, sed kiam mi komencis instrui ĉi tiun kurson, temis pri kompilitaj lingvoj. Nun ni bezonas multe da materialo pri Python, Ruby kaj eĉ Perl, ĉar ĉi tio estas kodo skribita en ĉi tiuj tagoj, kaj okazas multaj interesaj aferoj en ĉi tiuj lingvoj, inkluzive en la kampo de lingvodezajno. 

Vitali: Tiam mia sekva demando estos rilata al la antaŭa. Kiel daŭrigi en ĉi tiu areo? Mi suspektas, ke ĝisdatigi tian kurson postulas multe da laboro - necesas kompreni novajn lingvojn, kompreni la ĉefajn ideojn. Kiel vi faras ĉi tion?

Mi Michaelaelo: Mi ne povas fanfaroni, ke mi ĉiam sukcesas 100%. Sed plejofte mi nur faras tion, kion faras ĉiuj aliaj - legi la Interreton. Se mi volas kompreni Rust, mi Google ĝin, iru al la paĝo de Mozilo kaj legu la manlibron afiŝita tie. Ĉi tio estas parto de la aferoj, kiuj okazas en komerca evoluo. Se ni parolas pri scienco, tiam vi devas sekvi la raportojn ĉe la ĉefaj konferencoj. 

Ligo inter komerco kaj akademio

Vitali: Ni parolu pri la rilato inter komerca kaj scienca esplorado. En via listo de verkoj, mi trovis plurajn artikolojn pri kaŝmemoro. Mi komprenas, ke la kaŝmemorkonsekvencaj algoritmoj estis malstabilaj kiam ili estis publikigitaj? Aŭ ne sufiĉe disvastigita. Kiom oftaj estis viaj ideoj en la praktiko?

Mi Michaelaelo: Mi ne estas precize certa pri kiuj publikaĵoj vi parolas. Mi multe laboris kun miaj studentoj Bill Bolosky (Vilhelmo Bolosky) kaj Leonidas Kontotanassis (Leonidas Kontothanassis) en la fruaj 1990-aj jaroj pri memoradministrado de Neumann-maŝinoj. En tiu tempo, komerco ankoraŭ ne komprenis kiel ĝuste fari multiprocesoran sistemon: ĉu indas krei subtenon por aliro al fora memoro ĉe la aparataro, ĉu valoras distribui la memoron, ĉu eblas ŝargi la kaŝmemoron el? fora memoro, aŭ ĉu necesas movi paĝojn en la operaciejo?-sistemo. Bill kaj Leonidas ambaŭ laboris en tiu areo kaj esploris alirojn sen fora kaŝmemorŝarĝado. Tio ne estis rekte rilatita al kaŝmemorkohereco, sed ĝi daŭre estis laboro pri NUMA-memoradministrado, kaj poste modernaj aliroj al paĝlokigo en modernaj operaciumoj kreskis de tio. Ĝenerale, Bill kaj Leonidas faris gravan laboron, kvankam ne la plej influan en tiu ĉi areo - estis multaj aliaj homoj laborantaj pri la sama afero tiutempe. Poste, mi laboris pri temo rilata al kaŝmemorkohereco en la kunteksto de aparatara transakcia memoro. La grupo kun kiu mi laboris pri ĉi tiu problemo finis ricevi plurajn patentojn. Estas kelkaj sufiĉe interesaj ideoj malantaŭ ili, sed mi ne pensas, ke ili finfine efektiviĝos praktike. Iel aŭ alimaniere, estas malfacile por mi juĝi ilian profitecon. 

Алексей: Ĉi-rilate, pli persona demando: kiom gravas al vi, ke viaj ideoj estas praktikitaj? Aŭ ĉu vi ne pensas pri tio?

Mi Michaelaelo: Mi amas demandi ĉi tiun demandon en intervjuoj kun aliaj homoj, kandidatoj aŭ kandidatoj, kiuj volas aliĝi al la fakultato. Mi ne pensas, ke ekzistas ĝusta respondo al ĉi tiu demando. Homoj, kiuj faras bonegajn aferojn, povas havi tre malsamajn instigojn. Min allogas problemoj ĉar mi persone trovas ilin interesaj, ne pro iliaj praktikaj avantaĝoj. Sed aliflanke, kiam iu interesa afero ankoraŭ trovas aplikon, mi tre ŝatas ĝin. Do ĉi tie ne estas facile. Sed komence de mia laboro, mi ankoraŭ estas movita ne de la ideo de fina uzo en la mondo, sed de la harmonio de la ideo kaj la deziro esplori ĝin kaj vidi kio venas de ĝi. Se finfine ĝi donas praktikajn rezultojn, bonege. 

Алексей: Pro via edukado kaj sperto, vi pli kapablas ol la plimulto juĝi la valoron de la ideoj de aliaj homoj. Vi povas kompari ilin kaj determini kiu funkcias pli bone kun kiu. Mi certas, ke vi havas opinion pri aferoj, kiuj nuntempe estas uzataj praktike de grandaj fabrikantoj kiel Intel. Laŭ via vidpunkto, kiom ĝusta estas la kurso, kiun ĉi tiuj kompanioj faras?

Mi Michaelaelo: Praktiko ĉiam rondiras ĉirkaŭ tio, kio povas esti komerce sukcesa, tio estas, krei profiton, kaj vi pli bone demandi iun alian pri tio. Mia laboro plejparte rezultas en publikaĵoj, kaj en la kampo de operaciumoj ili estas taksitaj surbaze de agado-indikiloj: rapideco, energikonsumo, kodgrandeco. Sed ĉiam ŝajnis al mi, ke ĉi tiuj empiriaj rezultoj estas aldonitaj al artikoloj nur por ke ili estu eldonitaj, kaj la veraj labormotivoj de homoj estas estetikaj. Esploristoj taksas solvojn el arta perspektivo, ili zorgas pri kiom elegantaj la ideoj estas, kaj ili provas krei ion pli bonan ol ekzistantaj aliroj. Esploristoj estas pelitaj de personaj, subjektivaj, estetikaj motivoj. Sed vi ne povas skribi pri tio en la artikolo mem; ĉi tiuj aferoj ne estas argumentoj por la programa komitato. Feliĉe, elegantaj solvoj ofte estas ankaŭ rapidaj kaj malmultekostaj. Dekduo da miaj kolegoj kaj mi diskutis ĉi tiun temon antaŭ ĉirkaŭ 15 jaroj kaj finfine verkis artikolon pri ĝi. Mi pensas, ke vi ankoraŭ povas trovi ĝin nun, ĝi nomiĝas "Kiel taksi sisteman esploradon" aŭ io tia, ĝi havas pli ol dekduon da aŭtoroj. Ĉi tiu estas la sola artikolo, en kiu mi estas la aŭtoro kune kun Saŝa Fedorova, do se vi serĉas ŝian nomon en mia listo de eldonaĵoj, vi trovos tion, kion vi bezonas. Ĝi parolas pri taksado de sistemaj esploroj kaj kiom gravas eleganteco. 

Алексей: Do estas diferenco inter la normo de tio, kio estas konsiderata bona en scienco kaj en komerco. La scienco taksas rendimenton, elektrokonsumon, TDP, facilecon de efektivigo kaj multe pli. Ĉu vi havas la ŝancon fari ĉi tiun tipon de esplorado en la universitato? Ĉu vi havas laboratorion kun malsamaj maŝinoj kaj malsamaj arkitekturoj en kiu vi povus fari eksperimentojn?

Mi Michaelaelo: Jes, nia fako havas multajn diversajn interesajn maŝinojn. Plej ofte ili estas malgrandaj, ni havas malgrandan areton kaj multajn multprocesorajn sistemojn kun malsamaj akceliloj. Krome, la kampuso havas grandegan komputikcentron kiu servas sciencistojn de pluraj dekduoj da malsamaj disciplinoj. Ĝi havas ĉirkaŭ mil nodojn kaj dudek mil kernojn, ĉio en Linukso. Se la bezono aperas, vi ĉiam povas aĉeti iujn AWS. Do ni ne havas signifajn limigojn kun aparataro. 

Алексей: Kiel ĝi estis antaŭ tridek jaroj? Ĉu estis problemoj tiam?

Mi Michaelaelo: Estis iom alie tiam. En la mez-al-malfruaj 1980-aj jaroj, scienco estis konsiderita kiel manke de komputikresursoj. Por solvi ĉi tiun situacion, la Nacia Scienca Fondaĵo (Nacia Scienca Fonduso) kreis programon de kunordigita eksperimenta esplorado (Coordinated Experimental Research, CER). La misio de la programo estis disponigi komputikinfrastrukturon por Komputika fakoj, kaj ĝi realigis signifan ŝanĝon. Per la mono, kiun ŝi disponigis, ni ĉe la Universitato de Roĉestro aĉetis 1984-nodan BBN-Papilion en 128, tio estis jaro antaŭ ol mi alvenis tien. Tiutempe ĝi estis la plej granda multiprocesora sistemo de la mondo kun komuna memoro. Ĝi havis 128 procesorojn, ĉiu sur aparta baztabulo, kaj okupis kvar rakojn. Ĉiu procesoro havis megabajton da memoro, 128 megabajtoj da RAM estis neimagebla kvanto en tiu tempo. Sur ĉi tiu maŝino ni unuafoje efektivigis MCS-ŝlosadon. 

Алексей: Do, se mi bone komprenas vin, tiam nuntempe la problemo kun la aparataro estas solvita? 

Mi Michaelaelo: Ĝenerale, jes. Estas kelkaj avertoj: unue, se vi faras komputilan arkitekturon je la blatnivelo, ĝi estas malfacile fari en akademia medio ĉar ekzistas multe pli bonaj iloj por fari ĝin en komerco. Se vi bezonas ion pli malgrandan ol 10 nanometrojn, vi devos mendi ĝin de iu alia. En ĉi tiu areo estas multe pli facile esti esploristo ĉe Intel. Se vi laboras pri optikaj komunikadoj sur blatoj aŭ sur solida memoro, vi trovos teknologiojn en komerco, kiuj ankoraŭ ne estas en scienco, do vi devas krei aliancojn. Ekzemple, Stephen Swanson (Steven Swanson) kreita tia partnereco por novaj memorteknologioj. Ĉi tiu formo ne ĉiam funkcias, sed en iuj kazoj ĝi povas esti sufiĉe sukcesa. Krome, en scienco la evoluo de la plej potencaj komputilaj sistemoj estas pli malfacila. La plej grandaj superkomputilprojektoj nuntempe en Usono, Japanio kaj Ĉinio estas ĉiuj temigis komercon. 

Praktika efektivigo de ideoj. MCS, MS, CLH, JSR 166, laborante kun Doug Lee kaj pli.

Vitali: Vi jam parolis pri kiel vi komencis labori pri sinkronigaj algoritmoj. Vi havas du tre famajn artikolojn pri MCS-blokado и Michael-Scott-vico (MS), kiuj iusence estis efektivigitaj en Java. (Noto de la redaktoro: ĉiuj publikaĵoj estas rigardeblaj ligilo). Tie ĉi tiu blokado estis efektivigita kun kelkaj ŝanĝoj kaj ĝi rezultis CLH seruro, kaj la vico estis efektivigita kiel celite. Sed multaj jaroj pasis inter la publikigo de viaj artikoloj kaj ilia praktika aplikado. 

Алексей: Ŝajnas ĉirkaŭ 10 jaroj en la kazo de la vico.

Mi Michaelaelo: Antaŭ ol ĉi tiuj funkcioj aperis en la Java norma biblioteko?

Vitali: Jes. Kion vi faris por ke tio okazu? Aŭ ĉu ili faris nenion?

Mi Michaelaelo: Mi povas rakonti al vi kiel MS Queue eniris Java 5. Kelkajn jarojn antaŭ ol ĝi aperis, mi laboris kun la grupo de Mark Moyers ĉe Sun Microsystems en ilia laboratorio proksime de Boston. Li organizis laborrenkontiĝon por homoj, kiujn li konis, kiuj laboris pri interesaj problemoj en multifadenado ĉar li volis trovi temojn kiujn li povis vendi al ilia firmao. Tie mi unue renkontis Doug Lea. Doug kaj mi kaj ĉirkaŭ 25 aliaj homoj de Sun kune diskutis pri la prezento de Doug JSR 166, kiu poste iĝis java.util.concurrent. Dum la vojo, Doug diris, ke li ŝatus uzi la MS-vicon, sed por tio li bezonis nombrilon por la nombro da elementoj en la vosto por la interfaco. Tio estas, tio devus esti farita per aparta metodo, atoma, preciza kaj rapida. Mi sugestis simple aldoni seriajn numerojn al la nodoj, preni la nombron de la unua nodo kaj la lasta kaj subtrahi unu de la alia. Doug gratis sian kapon, diris "kial ne" kaj finis ĝuste tion. Ni diskutis efektivigi ĉi tiun aliron en la biblioteko, sed Doug faris la plej grandan parton de la laboro mem. Kiel rezulto, li sukcesis establi bonegan multifadenan subtenon en Java. 

Алексей: Do, se mi ĝuste komprenas, la metodo .size() devus esti parto de la norma vostinterfaco, kaj ĝi devus havi algoritman kompleksecon de O(1)?

Mi Michaelaelo: Jes, kaj krom tio necesas aparta nombrilo.

Алексей: Ĉar se vi nomas la metodon .size() en Java, la rezulto estas atendita esti disponebla tuj kaj ne bazita sur la reala grandeco de la kolekto. Mi vidas, dankon.

Mi Michaelaelo: Kelkajn jarojn poste mi laboris pri duoblaj datumstrukturoj kun mia studento Bill Scherer - fakte, pri tio mi parolos. raporto pri Hidro. Doug venis al ni kaj diris, ke li povas uzi ilin en la Java Executor Framework. Kune kun Bill, ili kreis du efektivigojn, la tielnomitajn justajn kaj maljustajn atendovicojn. Mi konsilis ilin pri ĉi tiu projekto, kvankam mi ne partoprenis en la verkado de la reala kodo. Kiel rezulto, la rapideco de ekzekutistoj signife pliiĝis. 

Vidi: Ĉu vi renkontis malĝustajn realigojn de viaj algoritmoj aŭ petojn aldoni novajn funkciojn? Ĝenerale, praktiko devus koincidi kun teorio, sed sufiĉe ofte ili diferencas. Supozu, ke vi skribis algoritmon, kaj surpapere ĝi funkcias, sed la homoj, kiuj estas implikitaj en la efektivigo, komencis peti de vi pli da funkcioj aŭ ia tajlado de la algoritmo. Ĉu vi iam havis tiajn situaciojn?

Mi Michaelaelo: La nura ekzemplo en kiu iu venis al mi kaj demandis "kiel efektivigi ĝin" estis la demando de Doug, pri kiu mi jam parolis. Sed estis kelkaj kazoj kie interesaj ŝanĝoj estis faritaj por konveni praktikajn bezonojn. Ekzemple, la K42-teamo ĉe IBM transformis la MCS-seruron kaj igis ĝin norma interfaco tiel ke ekzistis neniu bezono pasi la atendovicnodon tien kaj reen al la akirado kaj liberigo rutinoj. Danke al ĉi tiu norma interfaco, ideo, kiu estis bela teorie, ekfunkciis en la praktiko. Estas surprize, ke ili neniam publikigis artikolon pri ĝi, kaj kvankam ili ricevis patenton, ili poste forlasis ĝin. La ideo estis mirinda, kaj mi provas paroli pri ĝi kiam ajn eblas. 

Estis aliaj kazoj kie homoj faris plibonigojn al la algoritmoj kiujn mi publikigis. Ekzemple, la MS-vico havas du-paŝan instalaĵmekanismon, kio signifis ke ekzistis du CASoj sur la kritika pado de la atendovico. Sur pli malnovaj aŭtoj, CAS estis sufiĉe multekostaj. Intel kaj aliaj fabrikantoj sufiĉe bone optimumigis ilin lastatempe, sed iam ĉi tiuj estis 30-ciklaj instrukcioj, do havi pli ol unu sur la kritika vojo estis nedezirinda. Kiel rezulto, malsama atendovico estis evoluigita kiu estis simila al la MS-vico, sed kiu havis nur unu atoman operacion sur la kritika pado. Tio estis atingita pro la fakto ke dum certa tempodaŭro la operacio povis preni O (n) tempon, prefere ol O (1). Ĝi estis neverŝajna, sed ebla. Ĉi tio okazis pro tio, ke en certaj momentoj la algoritmo trairis la atendovicon de la komenco ĝis la nuna pozicio en ĉi tiu vico. Ĝenerale, la algoritmo montriĝis tre sukcesa. Kiom mi scias, ĝi ne estas tre vaste uzata, parte ĉar atomoperacioj postulas signife malpli da rimedoj ol antaŭe. Sed la ideo estis bonega. Mi ankaŭ tre ŝatas la verkon de Dave Dice de Oracle. Ĉio, kion li faras, estas tre praktika kaj li tre lerte uzas feron. Li havis manon en multo da la NUMA-konsciaj sinkronigaj algoritmoj kaj multi-fadenaj datumstrukturoj. 

Vidi: Kiam vi skribas algoritmojn aŭ instruas studentojn, la rezulto de via laboro ne estas tuj videbla. La komunumo bezonas iom da tempo por konatiĝi kun, ekzemple, nova artikolo. La nova algoritmo ne tuj trovas aplikon. 

Mi Michaelaelo: Estas malproksime de tuj klare ĉu la artikolo estos signifa aŭ ne. Mi pensas, ke estus interese fari studon de artikoloj, kiuj gajnis premiojn en konferencoj. Tio estas, rigardu la artikolojn, kiujn homoj en la programkomitatoj iam konsideris la plej bonaj. Vi devas provi kalkuli per la nombro da ligiloj kaj la efiko al komerco kiom influaj ĉi tiuj artikoloj vere montriĝis en 10, 20, 25 jaroj. Mi dubas, ke estus forta korelacio inter la du. Ĝi ne estos nulo, sed plej verŝajne ĝi estos multe pli malforta ol ni ŝatus. Multaj ideoj restas longe nereklamataj antaŭ ol ili disvastiĝas. Ekzemple, ni prenu transakcian memoron. Pli ol 10 jaroj pasis de la tempo kiam la originala artikolo estis publikigita ĝis la tempo, kiam homoj efektive komencis konstrui maŝinojn per ĝi. Kaj antaŭ la apero de ĉi tiu memoro en komercaj produktoj - kaj ĉiuj 20. Dum tre longa tempo neniu atentis la artikolon, kaj tiam la nombro da ligiloj al ĝi akre pliiĝis. Estus malfacile antaŭdiri ĉi tion. Aliflanke, foje ideoj trovas efektivigon tuj. Antaŭ kelkaj jaroj, mi skribis artikolon kun Joe Izraelevitz por DISK kiu proponis novan formalan difinon de valideco por persistaj datumstrukturoj kiuj povus esti uzataj post kiam la komputilo prizorganta ilin kraŝoj. Mi ŝatis la artikolon de la komenco, sed ĝi montriĝis multe pli populara ol mi atendis. Ĝi estis uzita fare de pluraj malsamaj grupoj kaj poste iĝis la norma difino de persistaj strukturoj. Kio, kompreneble, estas bela.

Vidi: Ĉu ekzistas teknikoj, kiujn vi uzas por taksado? Ĉu vi eĉ provas taksi viajn artikolojn kaj viajn studentojn? Koncerne ĉu la persono, kiun vi instruis, iras en la ĝustan direkton.

Mi Michaelaelo: Kiel ĉiuj aliaj, mi pli atentas tion, kion mi faras nuntempe. Denove, kiel ĉiuj aliaj, mi foje kontrolas Google Scholar por vidi ĉu miaj pasintaj artikoloj estas cititaj, sed tio estas pli pro scivolemo. Plejparte mi absorbiĝas pri tio, kion faras miaj studentoj nun. Kiam temas pri taksado de aktuala laboro, parto de ĝi estas estetikaj konsideroj, kio estas eleganta kaj kio ne. Kaj ĉe la ĉiutaga nivelo, malfermaj demandoj ludas grandan rolon. Ekzemple, studento venas al mi kun grafikaĵo de iuj rezultoj, kaj ni provas kompreni, de kie venis ia stranga konduto de la grafikaĵo. Ĝenerale, en nia laboro ni konstante provas kompreni aferojn, kiujn ni ankoraŭ ne komprenas. 

Transakcia memoro

Vitali: Eble ni povas iomete paroli pri transakcia memoro?

Mi Michaelaelo: Mi opinias, ke indas diri almenaŭ iomete, ĉar mi multe klopodis por tio. Ĉi tio estas temo pri kiu mi havas pli da publikaĵoj ol iu ajn alia. Sed samtempe, strange, mi ĉiam estis tre skeptika pri transakcia memoro. Miaopinie, artikolo de Herlihy kaj Moss (M. Herlihy, J. E. B. Moss) estis publikigita antaŭ sia tempo. En la fruaj 1990-aj jaroj, ili sugestis ke transakcia memoro povus helpi al talentaj programistoj labori pri plurfadenaj datumstrukturoj, tiel ke tiuj strukturoj povus tiam esti utiligitaj kiel bibliotekoj fare de ordinaraj programistoj. Tio estas, ĝi estus helpo por Doug Lee faranta sian JSR 166. Sed transakcia memoro ne estis celita faciligi plurfadenan programadon. Sed ĝuste tiel ĝi komencis esti perceptita komence de la 2000-aj jaroj, kiam ĝi disvastiĝis. Ĝi estis reklamita kiel maniero solvi la problemon de paralela programado. Ĉi tiu aliro ĉiam ŝajnis al mi senespera. Transakcia memoro povis nur faciligi skribi paralelajn datumstrukturojn. Ĉi tio, ŝajnas al mi, estas kion ŝi atingis. 

Pri la malfacileco skribi plurfadenan kodon

Алексей: Tre interesa. Ŝajnas esti certa baro inter regulaj programistoj kaj tiuj, kiuj povas skribi multfadenan kodon. Pasintjare, mi parolis plurajn fojojn kun homoj, kiuj efektivigis iun algoritman kadron. Ekzemple, kun Martin Thomson, same kiel kun programistoj laborantaj pri plurfadenaj bibliotekoj. (Noto de la redaktoro: Martin Thompson estas tre fama programisto, li skribis Disruptor и Aeron. Kaj li ankaŭ havas raporto ĉe nia Joker 2015-konferenco, videoregistrado disponebla ĉe Jutubo. Li estas la sama malfermita ĉi tiu konferenco ĉefa registrado ankaŭ disponeblas). La ĉefa defio, ili diras, estas fari la algoritmojn kaj rapidajn kaj facile uzeblajn. Tio estas, ili provas venki ĉi tiun baron kaj altiri kiel eble plej multajn homojn al ĉi tiu areo. Kion vi opinias pri ĝi?

Mi Michaelaelo: Ĉi tiu estas la ĉefa problemo de multifadenado: kiel atingi altan rendimenton sen pliigi la kompleksecon de la sistemo. 

Алексей: Ĉar kiam ili provas eviti kompleksecon, la algoritmo fariĝas malpli universala.

Mi Michaelaelo: La ŝlosilo ĉi tie estas konvene desegnitaj abstraktaĵoj. Ŝajnas al mi, ke ĉi tio ĝenerale estas la ĉefa afero por komputilaj sistemoj kiel kampo. Butler Lampson ŝatas uzi ĉi tiun terminon, kaj li nomas nin "komercistoj de abstraktaĵoj". Simplaj teknologioj ne ekzistas hodiaŭ. La procesoroj, kiujn ni uzas, havas 10 miliardojn da transistoroj - simpleco estas ekstere de demando. Samtempe, la ISA estas multe pli simpla ol la procesoro, ĉar ni laboris tre longan tempon por provizi ĝin per alta rendimento kaj relative simpla interfaco. Sed ankaŭ ĉe ŝi ne ĉio estas glata. La sama problemo estas kun akceliloj, kiuj nun aperas sur la merkato. Demandoj ŝprucas - kiel fari la ĝustan interfacon por la GPU, ĉifrada mekanismo, kunpremado, transkoda mekanismo, lineara algebra mekanismo, aŭ eĉ pli fleksebla FPGA. Kiel krei interfacon kiu igas la ilon facile uzebla kaj kaŝas kompleksecon? Ĝi ne forigos ĝin, sed prefere kaŝos ĝin de simpla programisto. 

Алексей: Kiel mi komprenas ĝin, ni ankoraŭ havas baron por kompreni abstraktaĵojn. Ni prenu la memormodelon; en nia stadio de evoluo de scienco kaj teknologio, tio estas unu el la ĉefaj abstraktaĵoj. Danke al ĝi, ĉiuj programistoj estas dividitaj en du grupojn: la pli granda parto estas tiuj, kiuj ne komprenas ĝin, kaj la pli malgranda parto estas tiuj, kiuj komprenas, aŭ opinias, ke ili komprenas. 

Mi Michaelaelo: Tio estas bona demando - ĉu iu el ni vere komprenas la memormodelon?

Vitali: Precipe en C++.

Mi Michaelaelo: Parolu iam kun Hans Boehm. Li estas unu el la plej inteligentaj homoj, kiujn mi konas, plej elstara fakulo pri memormodeloj. Li tuj diros al vi, ke estas multo, kion li ne komprenas. Sed se ni revenos al la afero de abstraktaĵoj, tiam, laŭ mi, la plej grava ideo en la kampo de memormodeloj dum la pasintaj 30 jaroj estis esprimita. en la disertaĵo de Sarita Adve. (Noto de la redaktoro: kompleta listo de publikaĵoj haveblas ligilo).

Алексей: Mia demando estas: ĉu ĉi tiu baro venas de la naturo mem de la koncepto? 

Mi Michaelaelo: Ne. Sarita venis al la konkludo, ke kun la ĝusta aliro, vi povas sukcese kaŝi la tutan kompleksecon, akiri altan rendimenton kaj doni al la programisto simplan API. Kaj se vi sekvas ĉi tiun API, vi povas atingi konsekvencan konsistencon. Mi pensas, ke ĉi tiu estas la ĝusta modelo. Skribu kodon sen datumvetkuroj kaj akiru sinsekvan konsistencon. Kompreneble, por redukti la probablon de vetkuro, necesas specialaj iloj, sed tio estas alia afero. 

Vidi: Ĉu estis tempoj en via kariero, kiam problemo, kiu ŝajnis solvita subite, fariĝis katastrofo, aŭ montriĝis, ke ĉi tiu problemo estis nesolvebla? Ekzemple, en teorio vi povas faktorigi ajnan nombron aŭ determini ĉu iu nombro estas primo. Sed praktike tio povas esti malfacile farebla; kun la nuna aparataro estas malfacile faktorigi nombrojn. Ĉu io simila okazis al vi?

Mi Michaelaelo: Mi ne tuj memoras ion tian. Estis tempoj, kiam ŝajnis al mi, ke estas nenio por fari en certa areo, sed tiam io nova kaj interesa okazis tie. Ekzemple, mi pensis, ke la areo de senlima vico jam atingis maturecon. Post pluraj plibonigoj al la MNS-vico, nenio plu okazis. Kaj tiam Morrison (Adam Morrison) kaj Afek (Yehuda Afek) inventis LCRQ-vico. Evidentiĝis, ke senlima plurfadena atendovico estis ebla, kie plejofte estis nur pret-kaj-pliiga instrukcio sur la kritika vojo. Kaj ĉi tio ebligis atingi ordon de grandeco pli bona rendimento. Ne estas, ke ni ne scias, ke preni-kaj-pliigo estas tre utila afero. Eric Freudenthal skribis pri tio en sia laboro pri la Ultrakomputilo kun Allan Gottlieb en la malfruaj 1980-aj jaroj, sed temis pri limigitaj atendovicoj. Morrison kaj Afek povis uzi preni-kaj-pliigon sur nelimigita atendovico.

Novaj arkitekturoj. Ĉu la venko de transakcia memoro estas proksima?

Vidi: Ĉu vi serĉas novajn arkitekturajn solvojn, kiuj povus esti utilaj por algoritmoj? 

Mi Michaelaelo: Kompreneble, estas multaj aferoj, kiujn mi ŝatus vidi efektivigitaj. 

Vidi: Kia, ekzemple?

Mi Michaelaelo: Antaŭ ĉio, kelkaj simplaj etendaĵoj al nia aparataro-nivela transakcia memoro en Intel kaj IBM-procesoroj. Aparte, mi ŝatus, ke la ne-transakcia ŝarĝo kaj vendejo, kiuj ĵus okazis, estu tuj haveblaj ene de transakcioj. Ili tuj kondukas al bukloj en la sekvenco okazas-antaŭe, do ili povas esti malfacilaj. Sed se vi konservas tavolojn de abstraktado, estas multaj tre interesaj aferoj, kiujn vi povas fari ekster la transakcio dum ĝi okazas. Mi ne scias kiom malfacile ĉi tio estus efektivigi, sed ĝi estus tre utila. 

Alia utila afero estas ŝargi kaŝmemoron el fora memoro. Mi pensas, ke pli aŭ malpli frue ĉi tio estos farita. Ĉi tiu teknologio permesos la kreadon de sistemoj kun disigita memoro. Eblus konservi, ekzemple, 100 terabajtojn da nevolatila memoro en rako, kaj la operaciumo mem dinamike decidus kiuj sekcioj de tiu memoro devus respondi al la fizika adresspaco de la procesoroj. Ĉi tio estus ege utila por nuba komputado, ĉar ĝi permesus provizi grandajn kvantojn da memoro al la taskoj kiuj bezonas ĝin. Mi pensas, ke iu faros ĝin.

Vitali: Por fini paroli pri transakcia memoro, mi havas plian demandon pri ĉi tiu temo. Ĉu transakcia memoro eventuale anstataŭigos normajn multfadenajn datumstrukturojn?

Mi Michaelaelo: Ne. Transakcioj estas konjekta mekanismo. Je la programa nivelo ĉi tiuj estas atomseruroj, sed interne ili estas konjektoj. Tia prognozo funkcias se la plej multaj el la divenoj estas ĝustaj. Tial transakcia memoro funkcias bone kiam fadenoj apenaŭ interagas unu kun la alia, kaj vi nur bezonas certigi, ke ne ekzistas interagoj. Sed se mesaĝo komenciĝas inter fadenoj, transakcioj malmulte utilas. Mi klarigu, ni parolas pri la kazo, kiam transakcioj estas envolvitaj ĉirkaŭ la tuta atoma operacio. Ili ankoraŭ povas esti sukcese uzataj kiel komponantoj por multfadenaj datumstrukturoj. Ekzemple, se vi bezonas trivortan CAS, kaj vi devas multifadeni tri malgrandajn aferojn meze de vere multfadena algoritmo, kiu funkcias kun dudek fadenoj samtempe. Ĝenerale, transakcioj povas esti utilaj, sed ili ne forigos la bezonon ĝuste desegni multfadenajn datumstrukturojn. 

Nevolatila memoro, Optane DIMM, ultrarapidaj aparatoj.

Vitali: La lasta afero, pri kiu mi ŝatus paroli, estas la temo de via nuna esploro: nevolatila memoro. Kion ni povas atendi en ĉi tiu areo en la proksima estonteco? Eble vi scias pri iuj efikaj efektivigoj, kiuj jam ekzistas? 

Mi Michaelaelo: Mi ne estas fakulo pri aparataro, mi scias nur kion mi legas en la novaĵoj kaj kion rakontas miaj kolegoj. Ĉiuj jam aŭdis, ke Intel vendas Optane DIMM, kiuj havas ĉirkaŭ 3 fojojn la legan latentecon kaj 10 fojojn la skriban latentecon ol dinamika RAM. Ili baldaŭ estos haveblaj en tre grandvolumaj versioj. Estas amuze pensi, ke vi povus havi tekkomputilon kun pluraj terabajtoj da bajto-adresebla RAM. Estas verŝajne, ke post 10 jaroj ni decidos uzi ĉi tiun novan teknologion, ĉar ni uzas DRAM - nur pliigu la volumon. Sed dank' al energia sendependeco malfermiĝas por ni tute novaj ŝancoj. Ni povas esence ŝanĝi la stokan stakon tiel ke ne ekzistas apartigo inter bajt-adresebla labormemoro kaj blok-strukturita persista memoro. Tiel, ni ne bezonos seriigi ĉion, kio devas esti translokigita de unu programo rulita al alia en blok-strukturitajn dosierojn. El tio ni povas derivi multajn gravajn principojn, kiuj influas operaciumojn, rultempajn mediojn kaj distribuitajn datumbutikojn. Ĉi tiu areo estas tre interese labori. Persone, estas malfacile por mi antaŭdiri, al kio ĉio ĉi kondukos, sed la problemoj ĉi tie estas ege amuzaj. Eble estas revoluciaj ŝanĝoj ĉi tie, kaj ili sekvas tre nature el la laboro pri multfadenado, ĉar malsukcesa reakiro estas "multithreading" procezo kune kun la normala funkciado de la sistemo. 

La dua ĉefa temo, pri kiu mi nun laboras, estas administri ultrarapidajn aparatojn kaj sekurigi aliron al aparatoj de la uzantspaco kun sistema politika kontrolo. En la lastaj jaroj, estis tendenco movi aliron al la aparato al la uzantspaco. Ĉi tio estas farita ĉar la TCP-IP-kernstako ne povas funkcii aldone al retinterfaco kiu bezonas novan pakaĵeton ĉiujn 5 mikrosekundojn; ĝi simple ne daŭrigos. Tial fabrikantoj disponigas rektan aliron al aparatoj. Sed ĉi tio signifas, ke la operaciumo perdas kontrolon de la procezo kaj ĝi ne povas provizi taŭgan aliron al la aparato por konkurantaj aplikoj. Nia esplorteamo opinias, ke ĉi tiu manko povas esti evitita. Ni havos artikolon pri tio ĉe USENIX ATC ĉi-monate. Ĝi rilatas al laboro pri persisto, ĉar longdaŭra bajt-adresebla persista memoro estas, esence, aparato kun ultrarapida I/O kiu devas esti alirita en la uzantspaco. Ĉi tiu esplorado ebligas novajn alirojn al mikrokernoj, eksokernoj kaj aliaj tradiciaj provoj sekure movi funkciecon de la OS-kerno al la uzantspaco. 

Vidi: Byte-adresebla memoro estas bonega, sed estas fizika limigo - la lumrapideco. Ĉi tio signifas, ke neeviteble estos prokrasto dum interagado kun la aparato. 

Mi Michaelaelo: Tute prave.

Vidi: Ĉu estos sufiĉe da kapablo por elteni la novajn ŝarĝojn?

Mi Michaelaelo: Ĉi tio estas bonega demando, sed estos malfacile por mi respondi. La ideo pri prilaborado en memoro ekzistas jam de sufiĉe da tempo, ĝi estas tre interesa, sed ankaŭ tre kompleksa. Mi ne laboris en ĉi tiu areo, sed estus bonege, se oni farus tie kelkajn malkovrojn. Mi timas, ke mi havas nenion pli por aldoni. 

Vidi: Estas unu plia problemo. Novaj, signife pli grandaj kvantoj da RAM estos neeble enigeblaj en la CPU. Tial, pro fizikaj limigoj, ĉi tiu RAM devas esti izolita. 

Mi Michaelaelo: Ĉio dependas de la nombro da difektoj en la produktado de integraj cirkvitoj. Se eblus krei duonkonduktajn oblatojn tute sen difektoj, tiam eblus fari tutan mikrocirkviton el ĝi. Sed nun ni ne scias kiel fari mikrocirkvitojn pli grandaj ol poŝtmarkoj. 

Vidi: Sed ni ankoraŭ parolas pri grandegaj grandecoj, pri centimetroj. Ĉi tio neeviteble efikas sur latencia. 

Mi Michaelaelo: Jes. Vi povas nenion fari pri la lumrapideco. 

Vidi: Bedaŭrinde. 

La sekva granda tendenco. Duoblaj datumstrukturoj. Hidro.

Vitali: Laŭ mia kompreno, vi tre rapide kaptas novajn tendencojn. Vi estis unu el la unuaj, kiuj laboris en transakcia memoro, kaj unu el la unuaj, kiuj laboris en nevolatila memoro. Kio laŭ vi estos la sekva granda tendenco? Aŭ eble ĝi estas sekreto?

Mi Michaelaelo: Verdire, mi ne scias. Espereble mi povos rimarki kiam io nova aperos. Mi ne estis sufiĉe bonŝanca inventi iun novan kampon memstare, sed mi havis kelkajn bonŝancojn kaj povis eklabori sufiĉe frue en novaj kampoj kreitaj de aliaj. Mi esperas, ke mi povos fari tion estonte.

Алексей: La lasta demando en ĉi tiu intervjuo estos pri via agado ĉe Hydra kaj viaj agadoj en la lernejo. Se mi bone komprenas, la raporto en la lernejo estos pri senblokaj algoritmoj, kaj en la konferenco pri duoblaj datumstrukturoj. Ĉu vi povus diri kelkajn vortojn pri ĉi tiuj raportoj?

Mi Michaelaelo: Parte, ni jam tuŝis ĉi tiujn temojn kun vi en ĉi tiu intervjuo. Temas pri la laboro, kiun mi faris kun mia studento Bill Scherer. Li skribis tezon pri ĝi, kaj Doug Lee ankaŭ kontribuis al ĝi, kaj ĝi poste iĝis parto de la multfadenaj sinkronaj atendovicoj en la Java biblioteko. Ni supozu, ke la datumstrukturo estas legita kaj skribita sen blokado, tio estas, ĉiu operacio havas limigitan nombron da instrukcioj sur la kritika vojo. Se vi provas forigi datumojn de malplena ujo, aŭ provas forigi iujn datumojn, kiuj ne estas en ĉi tiu ujo, vi tuj informiĝas, ke tio ne povas esti farita. Sed ĉi tiu konduto eble ne estas akceptebla se la fadeno vere bezonas ĉi tiujn datumojn. Tiam la unua afero, kiu venas al la menso, estas krei buklon, kiu konstante demandos ĉu la necesaj datumoj aperis. Sed tiam estas enmiksiĝo por ĉiuj aliaj. Krome, kun ĉi tiu aliro, vi povas atendi 10 minutojn, kaj tiam venos iu alia fadeno, kaj ĝi hazarde ricevos la necesajn datumojn unue. Duoblaj datumstrukturoj ankoraŭ ne havas serurojn, sed ili permesas al fadenoj atendi ĝuste. La termino "duobla" signifas, ke la strukturo enhavas aŭ datumojn aŭ petojn por datumoj, ni nomu ilin kontraŭ-datumoj. Do se vi provas preni ion el malplena ujo, peto estos metita en la ujon anstataŭe. Nun la fadeno povas atendi peton sen ĝeni iun alian. Aldone, la datumstrukturo atribuas prioritatojn al petoj tiel ke kiam ricevite, ĝi transdonas ilin al la ĝusta persono. La rezulto estas ne-ŝlosa mekanismo, kiu ankoraŭ havas formalan specifon kaj bonan agadon en praktiko. 

Алексей: Kio estas viaj atendoj de ĉi tiu datuma strukturo? Ĉu ĝi plibonigos rendimenton en ĉiuj oftaj kazoj, aŭ ĉu ĝi pli taŭgas por certaj situacioj? 

Mi Michaelaelo: Ĝi estas utila se, unue, vi bezonas ujon sen ŝlosi, kaj, due, vi devas atendi en situacio, kie vi devas preni datumojn de la ujo, kiu ne estas en ĝi. Laŭ mia scio, nia kadro provizas optimuman konduton kiam ĉi tiuj du kondiĉoj estas plenumitaj. Tial, en ĉi tiuj kazoj mi rekomendas uzi ĝin. La ĉefa avantaĝo de senŝlosaj datumstrukturoj estas, ke ili evitas rendimentajn problemojn. Kaj atendado estas tre grava en multaj algoritmoj se datumoj estas translokigitaj de unu fadeno al alia.

Vitali: Mi klarigu: ĉu vi parolos pri la sama afero kaj en la lernejo kaj en la konferenco?

Mi Michaelaelo: Ĉe lernejo mi parolos ĝenerale pri plurfadenaj datumstrukturoj, kun la bazaj principoj skizitaj komence de la leciono. Mi supozas, ke la spektantaro scias, kiaj fadenoj estas kaj konas serurojn. Surbaze de ĉi tiu baza scio, mi parolos pri senŝlosaj datumstrukturoj. Mi donos superrigardon de la plej gravaj problemoj en ĉi tiu areo, tuŝante temojn kiel memoradministrado. Mi ne pensas, ke estos io pli komplika ol la MS-vico.

Алексей: Ĉu vi planas instrui pri duoblaj datumstrukturoj ĉe la fino de via klaso en la lernejo?

Mi Michaelaelo: Mi mencios ilin, sed mi ne pasigos multe da tempo pri ili. La raporto Hydra estos dediĉita al ili. Ĝi kovros la projekton kiu poste transformis ĝin en Java, same kiel laborante kun Joe Israelevich por krei duoblan varianton de la LCRQ-vico, kaj kreante preskaŭ universalan dezajnon por duoblaj datenstrukturoj.

Алексей: Do la prelego en la lernejo estas rekomendinda por komencantoj, kaj la prelego pri duoblaj datumstrukturoj pri Hidro - por homoj, kiuj jam havas iom da sperto?

Mi Michaelaelo: Korektu min se mi eraras, sed la publiko ĉe Hydra estos sufiĉe diversa, inkluzive de multaj Java-fakuloj, kaj ĝenerale homoj, kiuj ne specife okupiĝas pri plurfadena programado. 

Vitali: Jes, estas vero.

Алексей: Almenaŭ ni esperas tion.

Mi Michaelaelo: En ĉi tiu kazo, mi alfrontos la saman problemon, kun kiu ni komencis ĉi tiun intervjuon: kiel fari raporton kaj sufiĉe riĉan je teknikaj detaloj kaj alirebla por ĉiuj aŭskultantoj.

Vitali: Ĉu vi donos raporton same kiel vi prelegas? Tio estas, paroli kun la publiko kaj adaptiĝi al la situacio?

Mi Michaelaelo: Mi timas, ke ĝi ne funkcios tiel, ĉar la raporto havos lumbildojn. Diapozitivoj estas gravaj kiam aŭskultantoj komence parolas malsamajn lingvojn. Multaj homoj malfacile komprenas min en la angla, precipe se mi parolas tro rapide. Mi elektis ĉi tiujn temojn ĉar Petro Kuznecov petis min paroli pri senŝlosaj datumstrukturoj ĉe SPTDC School; kaj tiam mi bezonis raporton por Ĝava uzantgrupa konferenco, kaj mi volis elekti ion, kio interesus specife por Ĝavaj programistoj. La plej facila maniero estis paroli pri tiuj aferoj en la Java biblioteko, kiujn mi havis manon en unu maniero aŭ alia. 

Алексей: Ni supozas, ke la publiko ĉe Hydra jam scias ion pri senŝlosa programado kaj eble havas iom da sperto en ĉi tiu areo. Sed ĉi tio estas nur supozo; la situacio fariĝos pli klara ĉe la konferenco mem. Ĉiuokaze, dankon pro via tempo. Mi certas, ke la intervjuo estos tre interesa por niaj legantoj. Multaj dankoj!

Vitali: Dankon. 

Mi Michaelaelo: Mi ĝojos renkonti vin en Peterburgo. 

Алексей: Ankaŭ ni, ni havas belan urbon. Ĉu vi iam estis ĉi tie?

Mi Michaelaelo: Ne, mi tute neniam estis en Rusio. Sed Peterburgo ĉiam estis en la listo de lokoj, kie mi ankoraŭ ne estis, sed kien mi vere volas iri, do mi tre ĝojis pri la invito. 

Алексей: Cetere, ni havos programon de ekskursoj por prelegantoj. Koran dankon pro la intervjuo, kaj havu bonan tagon!

Vi povas daŭrigi vian konversacion kun Michael ĉe la Hydra 2019-konferenco, kiu okazos la 11-12-an de julio 2019 en Sankt-Peterburgo. Li venos kun raporto "Duoblaj datumstrukturoj". Biletoj estas aĉeteblaj en la oficiala retejo.

fonto: www.habr.com

Aldoni komenton