"Унчукпай калгандан көрө жооп берүү оңой" - транзакциялык эс тутумдун атасы Морис Херлихи менен сонун маек

Морис Херлихи - эки ээси Dijkstra сыйлыктары. Биринчиси - иштөө үчүн "Күтүүсүз синхрондоштуруу" (Браун университети) жана экинчи, акыркы, - "Транзакциялык эс тутум: кулпусуз маалымат структураларына архитектуралык колдоо" (Виржиния технологиялык университети). Dijkstra сыйлыгы мааниси жана таасири кеминде он жылдан бери көрүнгөн иштер үчүн берилет жана Морис бул тармактагы эң белгилүү адистердин бири. Учурда ал Браун университетинде профессор болуп иштейт жана абзацка созулган көптөгөн жетишкендиктерге ээ. Ал учурда классикалык бөлүштүрүлгөн эсептөө контекстинде блокчейнди изилдеп жатат.

Буга чейин Морис Орусияга SPTCC үчүн келген (көрмө жазуу) жана Санкт-Петербургдагы JUG.ru Java иштеп чыгуучулар коомчулугунун эң сонун жолугушуусун өткөрдү (көрмө жазуу).

Бул habrapost Морис Херлихинин эң сонун интервьюсу. Анда төмөнкү темалар талкууланат:

  • Академия менен өндүрүштүн өз ара аракеттенүүсү;
  • Blockchain изилдөө фонду;
  • Идеялар кайдан келип чыгат? Популярдуулуктун таасири;
  • Барбара Лисковдун жетекчилиги астында PhD;
  • дүйнө көп ядрону күтүп жатат;
  • Жаңы дүйнө жаңы көйгөйлөрдү алып келет. NVM, NUMA жана архитектуралык хакерлик;
  • Компиляторлор процессорлорго каршы, RISC vs CISC, бөлүшүлгөн эс жана билдирүү жөнөтүү;
  • морт көп жиптүү код жазуу чеберчилиги;
  • Студенттерди татаал көп жиптүү кодду жазууга кантип үйрөтүү керек;
  • “Мультипроцессордук программалоо искусствосу” китебинин жаңы басылышы;
  • Транзакциялык эс кантип ойлоп табылган;   
  • Эмне үчүн бөлүштүрүлгөн эсептөө тармагында изилдөө жүргүзүү керек;
  • Алгоритмдерди иштеп чыгуу токтоп калдыбы жана кантип улантуу керек;
  • Браун университетинде иштөө;
  • ЖОЖдогу жана корпорациянын ичиндеги изилдөөлөрдүн айырмасы;
  • Hydra жана SPTDC.

Интервью төмөндөгүлөр тарабынан жүргүзүлөт:

Виталий Аксенов — учурда, IST Austria университетинде док. пост жана ITMO университетинин компьютердик технологиялар бөлүмүнүн кызматкери. Конкурстук маалыматтар структураларынын теориясы жана практикасы жаатында изилдөөлөрдү жүргүзөт. ISTде иштегенге чейин ал Париж Дидро университетинде жана профессор Петр Кузнецовдун жетекчилиги астында ITMO университетинде докторлук даражасын алган.

Алексей Федоров - Иштеп чыгуучулар үчүн конференцияларды уюштурган россиялык JUG Ru Group компаниясынын продюсери. Алексей 50дөн ашык конференцияларды даярдоого катышкан жана анын резюмесинде Oracleдагы (JCK, Java Platform Group) инженердик кызматтан баштап, Одноклассникидеги иштеп чыгуучу кызматына чейин бардыгы камтылган.

Владимир Ситников - Netcracker компаниясынын инженери. Тармакты жана тармактык жабдууларды башкаруу процесстерин автоматташтыруу үчүн байланыш операторлору колдонгон программалык камсыздоо NetCracker OSтин иштеши жана масштабдуулугу боюнча он жылдык иш. Java жана Oracle маалыматтар базасынын иштешине кызыкдар. Расмий PostgreSQL JDBC драйверинин ондон ашык иштөөсүн жакшыртуунун автору.

Академия менен өндүрүштүн өз ара аракети

Алексей: Морис, сиз академиялык чөйрөдө көптөн бери иштедиңиз жана биринчи суроо – бул академиялык жана өндүрүш чөйрөлөрүнүн өз ара аракеттенүүсү. Алардын ортосундагы мамиле акыркы убакта кандай өзгөргөндүгү тууралуу айта кетсеңиз? 20-30 жыл мурун эмне болгон, азыр эмне болуп жатат? 

Морис: Мен ар дайым коммерциялык компаниялар менен тыгыз кызматташууга аракет кылып келем, анткени алардын кызыктуу көйгөйлөрү бар. Алар, эреже катары, өздөрүнүн жыйынтыктарын жарыялоого да, дүйнөлүк коомчулукка өз көйгөйлөрүн кеңири түшүндүрүүгө да кызыкдар эмес. Алар бул көйгөйлөрдү чечүүгө гана кызыкдар. Мен бир канча убакыт ушундай компанияларда иштедим. Мен чоң компьютердик компания болгон Digital Equipment Corporation илимий лабораториясында беш жыл бою толук убакыт иштедим. Мен жумасына бир күн Sunда, Майкрософтто, Oracleда иштедим жана Фейсбукта бир аз иштедим. Эми мен эмгек өргүүсүнө чыгайын деп жатам (америкалык университеттин профессору бир жылда мындай өргүү алууга алты жылда бир жолу уруксат берилет) жана Algorand, бул Бостондогу cryptocurrency компания. Компаниялар менен тыгыз иштешүү ар дайым ырахат тартуулаган, анткени ушинтип сиз жаңы жана кызыктуу нерселерди биле аласыз. Башкалардын үстүнөн иштеп жаткан көйгөйлөрдү акырындап жакшыртуунун үстүндө иштөөнүн ордуна, сиз тандалган тема боюнча макала жарыялаган биринчи же экинчи адам болушуңуз мүмкүн.

Алексей: Бул кандайча болуп жатканын кененирээк айтып бере аласызбы?

Морис: Албетте. Билесизби, мен Digital Equipment Corporation компаниясында иштеп жүргөндө Эллиот Мосс экөөбүз транзакциялык эстутумду ойлоп тапканбыз. Ар бир адам маалыматтык технологияларга кызыгып баштаган абдан жемиштүү мезгил болду. Параллелизм, анын ичинде, көп ядролуу системалар али жок болсо да. Sun жана Oracle күндөрүндө мен параллелдүү маалымат структураларында көп иштедим. Фейсбукта мен алардын блокчейн долбоорунда иштегем, ал тууралуу айта албайм, бирок ал жакында ачыкка чыгат деп үмүттөнөм. Кийинки жылы, Algorand, мен акылдуу келишимдерди изилдеп изилдөө тобунда иштейм.

Алексей: Блокчейн акыркы бир нече жылда абдан популярдуу тема болуп калды. Бул изилдөөңүзгө жардам береби? Балким, бул гранттарды алууну жеңилдетет же тармакта иштеген компаниялардын ресурстарына жетүүнү камсыздайт?

Морис: Мен буга чейин Ethereum Foundation чакан грант алган. Блокчейндин популярдуулугу студенттерди бул тармакта иштөөгө шыктандырууда абдан пайдалуу. Алар буга абдан кызыгышат жана катышууга шыктанышат, бирок кээде алар сырттан кызыктуу көрүнгөн изилдөө чындап эле оор эмгекти талап кылаарын түшүнүшпөйт. Бирок, студенттерди тартууга жардам берүү үчүн блокчейндин айланасындагы бул сырды колдонууга абдан кубанычтамын. 

Бирок бул баары эмес. Мен бир нече блокчейн стартаптарынын консультациялык кеңешиндемин. Алардын айрымдары ийгиликке жетиши мүмкүн, айрымдары жетишпейт, бирок алардын идеяларын көрүү, аларды изилдөө жана адамдарга кеңеш берүү дайыма абдан кызыктуу. Эң толкундаткан нерсе, сиз адамдарды бир нерсе кылбаңыз деп эскерткениңизде. Көп нерселер башында жакшы идея сыяктуу көрүнөт, бирок алар чындап эле ушундайбы?

Blockchain изилдөөлөр үчүн фонд

Виталий: Кээ бир адамдар келечек блокчейн жана анын алгоритмдеринде деп ойлошот. Ал эми башка адамдар муну башка көбүк деп айтышат. Бул маселе боюнча оюңуз менен бөлүшө аласызбы?

Морис: Блокчейн дүйнөсүндө болуп жаткан нерселердин көбү туура эмес, айрымдары жөн гана алдамчылык, көбү ашыкча бааланат. Бирок, бул изилдөөлөрдүн бекем илимий негизи бар деп ойлойм. Блокчейн дүйнөсүнүн идеологиялык айырмачылыктарга толгондугу толкундануу жана берилгендиктин деңгээлин көрсөтөт. Башка жагынан алып караганда, бул илимий изилдөө үчүн өзгөчө пайдалуу эмес. Эми, эгер сиз белгилүү бир алгоритмдин кемчиликтери тууралуу макаланы жарыяласаңыз, натыйжада болгон реакция дайыма эле толук илимий боло бербейт. Көбүнчө адамдар эмоцияларын сыртка чыгарышат. Менимче, бул тармактагы мындай толкундануу кээ бирөөлөргө жагымдуу көрүнүшү мүмкүн, бирок, акырында, чечүүнү талап кылган реалдуу илимий жана инженердик маселелер бар. Бул жерде информатика көп.

Виталий: Демек, сиз блокчейн изилдөөсүнө негиз салууга аракет кылып жатасыз, туурабы?

Морис: Мен бекем, илимий жана математикалык жактан негизделген дисциплина үчүн негиз салууга аракет кылып жатам. Ал эми маселенин бир бөлүгү, кээде башка адамдардын өтө катаал позицияларына карама-каршы келип, аларга көңүл бурбай коюуга туура келет. Кээде мен эмне үчүн жалаң террористтер жана баңги аткезчилери кызыккан аймакта иштейм деп сурашат. Мындай реакция сиздин сөзүңүздү сокур кайталаган жолдоочулардын жүрүм-туруму сыяктуу маанисиз. Менимче, чындык ортодо бир жерде. Блокчейн коомго жана дүйнөлүк экономикага терең таасирин тийгизет. Бирок, балким, бул заманбап технологиянын аркасында болбойт. Заманбап технологиялар өнүгүп, келечекте блокчейн деп аталган нерсе абдан маанилүү болуп калат. Бул заманбап блокчейндерге окшобой калышы мүмкүн, бул ачык суроо.

Эгер адамдар жаңы технологияларды ойлоп табышса, аны блокчейн деп аташат. Айтайын дегеним, азыркы Фортрандын 1960-жылдардагы Фортран тилине эч кандай тиешеси жок, бирок баары аны Фортран деп аташат. UNIX үчүн да ушундай. "Блокчейн" деп аталган нерсе дагы эле революцияны жасайт. Бирок, мен бул жаңы блокчейн бүгүнкү күндө бардыгын жактырган нерседей болорунан күмөнүм бар.

Идеялар кайдан келип чыгат? Популярдуулуктун таасири

Алексей: Блокчейндин популярдуулугу илимий көз караштан алганда жаңы жыйынтыктарга алып келдиби? Көбүрөөк өз ара аракеттенүү, көбүрөөк студенттер, аймакта көбүрөөк компаниялар. Популярдуулуктун мындай өсүшүнүн натыйжалары барбы?

Морис: Мен бул нерсеге кимдир бирөө мага бир топ акча чогулткан компаниянын расмий баракчасын бергенде кызыгып калдым. Бул тууралуу жазган Византия генералдарынын милдети, Мен аны менен көбүрөөк таанышмын. Баракчада жазылгандар техникалык жактан туура эмес экен. Мунун баарын жазган адамдар көйгөйдүн артында кандай моделди түшүнүшкөн жок... ошентсе да бул компания көп акча чогулткан. Кийинчерээк, компания акырындык менен бул баракчаны кыйла туура нускасы менен алмаштырды - мен бул компаниянын аты эмне экенин айтпай эле коёюн. Алар дагы эле айланасында жана абдан жакшы иштеп жатышат. Бул окуя мени биринчиден, блокчейн бөлүштүрүлгөн эсептөөнүн бир түрү экенине ынандырды. Экинчиден, кирүү босогосу (жок дегенде төрт жыл мурун) өтө төмөн болчу. Бул тармакта иштегендер өтө энергиялуу, акылдуу, бирок илимий эмгектерди окушчу эмес. Алар белгилүү нерселерди кайра ойлоп табууга аракет кылып, туура эмес кылышты. Бүгүн драма азайып калды.

Алексей: Бул абдан кызыктуу, анткени бир нече жыл мурун бизде башкача тенденция болгон. Браузердин негизиндеги алдыңкы программаны иштеп чыгуучулар арткы бөлүктө популярдуу болгон бүт технологияларды кайра ойлоп табышканда, бул бир аз алдыңкы программаны иштеп чыгууга окшош: системаларды куруу, үзгүлтүксүз интеграция жана ушул сыяктуу нерселер. 

Морис: Мен макулмун. Бирок бул таң калыштуу эмес, анткени чындап бурулуш идеялар ар дайым түзүлгөн жамааттын сыртынан келет. Белгиленген изилдөөчүлөр, өзгөчө академиктер, чындап эле түптөлгөн эч нерсе кыла алышпайт. Кийинки конференцияга мурунку ишиңиздин жыйынтыгын бир аз жакшыртканыңыз жөнүндө баяндама жазуу оңой. Конференцияга барыңыз, досторуңуз менен чогулуңуз, бир эле нерселер жөнүндө сүйлөшүңүз. Ал эми жаңы идеялары менен кирген адамдар дээрлик дайыма сырттан келишет. Алар эрежелерди билишпейт, тилди билишпейт, бирок ошентсе да... Эгер сиз түптөлгөн коомчулуктун ичинде болсоңуз, мен сизге жаңы нерселерге, жалпы көрүнүшкө туура келбеген нерсеге көңүл бурууну кеңеш кылам. Кандайдыр бир мааниде, тышкы, көбүрөөк суюк өнүгүүлөрдү биз түшүнгөн ыкмалар менен айкалыштыруу аракети жасалышы мүмкүн. Биринчи кадам катары, илимий негизди түзүүгө аракет кылыңыз, анан аны жаңы ачылыш идеяларга колдонуу үчүн өзгөртүңүз. Блокчейн жаңы, бузуку идея болуу үчүн эң сонун деп ойлойм.

Алексей: Эмне үчүн мындай болуп жатат деп ойлойсуз? Анткени "сырттагы" адамдар коомчулукка мүнөздүү кандайдыр бир өзгөчө тоскоолдуктар жок?

Морис: Бул жерде бир үлгү болуп жатат. Эгерде сиз сүрөт жана жалпы искусстводогу импрессионисттердин тарыхын окусаңыз, анда бир убакта белгилүү сүрөтчүлөр импрессионизмди четке кагышкан. Бул балалык деп айтышты. Бир муун өткөндөн кийин, бул мурда четке кагылган искусство түрү стандарт болуп калды. Мен өзүмдүн чөйрөмдө көрүп жаткан нерсем: блокчейнди ойлоп табуучулар бийликке, басылмалардын көбөйүшүнө жана цитаталардын индексине кызыккан эмес, алар жөн гана жакшы нерсе жасагысы келген. Ошентип отуруп алып, ишке киришти. Аларда белгилүү бир техникалык тереңдик жок болчу, бирок бул оңдоого болот. Жетишсиз бышып жетилгендерди оңдоп, бекемдегенге караганда жаңы чыгармачыл идеяларды ойлоп табуу алда канча кыйын. Ушул ойлоп табуучуларга рахмат, азыр менде бир нерсе бар!

Алексей: Бул стартаптар менен эски долбоорлордун ортосундагы айырмага окшош. Биз ой жүгүртүүнүн көптөгөн чектөөлөрүн, тоскоолдуктарды, өзгөчө талаптарды ж.б.

Морис: Жакшы окшоштук бөлүштүрүлгөн эсептөө болуп саналат. Блокчейнди бул стартап жана бөлүштүрүлгөн эсептөөчү ири, белгиленген компания катары элестетиңиз. Бөлүштүрүлгөн эсептөөлөр блокчейн менен кошулуу процессинде.

Барбара Лисковдун жетекчилиги астында PhD

Виталий: Бизде дагы көп суроолор бар! Биз сиздин тарыхыңызды изилдеп жүрүп, докторлук даражаңыз тууралуу кызыктуу фактыга туш болдук. Ооба, бул көп убакыт мурун болгон, бирок бул маанилүү тема окшойт. Сиз өзүңүздүн жетекчилигиңиз менен PhD даражасын алдыңыз Барбара Лисков! Барбара программалоо тилинин коомчулугунда абдан жакшы белгилүү жана жалпысынан абдан белгилүү адам. Сиздин изилдөөңүз программалоо тилдери тармагында болгону логикалык. Параллелдүү эсептөөлөргө кантип өттүңүз? Эмне үчүн теманы өзгөртүүнү чечтиңиз?

Морис: Ошол учурда Барбара жана анын тобу жөн гана бөлүштүрүлгөн эсептөөлөрдү карап жатышты, бул абдан жаңы идея болчу. Бөлүштүрүлгөн эсептөөлөр болбогон кеп, компьютерлердин бири-бири менен байланышы маанисиз дегендер да болду. Бөлүштүрүлгөн эсептөөдө аны борборлоштурулган эсептөөлөрдөн айырмалап турган маселелердин бири катачылыкка чыдамкайлык болуп саналат. Көптөгөн изилдөөлөрдөн кийин, биз бөлүштүрүлгөн эсептөөчү программалоо тилинде атомдук транзакциялар сыяктуу бир нерсе болушу керек деп чечтик, анткени сиз алыскы чалуу ийгиликтүү болоруна эч качан ишене албайсыз. Эгер транзакциялар болгондон кийин, параллелдүүлүктү башкаруу маселеси пайда болот. Андан кийин өтө параллелдүү транзакциялык маалымат структураларын алуу боюнча көп иштер жүрдү. Анан окууну аяктагандан кийин бардым Карнеги Меллон жана иштей турган теманы издей баштады. Эсептөө жеке компьютерлерден компьютерлердин тармактарына өткөнү менин оюма келди. Мультипроцессорлор прогресстин табигый уландысы болмок - "көп ядролуу" деген сөз али болгон эмес. Мен ойлодум: көп ядролуу система үчүн атомдук операциялардын эквиваленти эмнеде? Албетте, кадимки транзакциялар эмес, анткени алар өтө чоң жана оор. Мына ушундай ойго келдим сызыктуулугу Ошентип, мен күтпөгөн синхрондоштурууну ойлоп таптым. Бул жалпы эс тутуму бар мультипроцессордук система үчүн атомдук транзакциялардын аналогу деген суроого жооп берүүгө аракет болгон. Бир караганда бул чыгарма таптакыр башкача көрүнгөнү менен чындыгында бир эле теманын уландысы.

Дүйнө көп ядрону күтүп жатат

Виталий: Сиз ал кезде көп ядролуу компьютерлер өтө аз болгонун айттыңыз, туурабы?

Морис: Алар жөн эле ал жерде жок болчу. Негизинен бир автобуска туташтырылган бир нече симметриялык мультипроцессорлор болгон. Бул жакшы иштеген жок, анткени жаңы компания окшош нерсени жараткан сайын Intel мультипроцессордон жогору болгон бир процессорду чыгарчу.

Алексей: Бул ошол байыркы убакта теориялык изилдөө болгон дегенди билдирбейби?

Морис: Бул теориялык изилдөө эмес, тескерисинче, спекуляциялык изилдөө болгон. Мунун баары көп теоремалар менен иштөө эмес, биз ошол кезде жок архитектура жөнүндө гипотезаларды айтканбыз. Бул изилдөө үчүн! Эч бир компания мындай нерсени жасамак эмес; Мунун баары алыскы келечектеги нерсе. Чынында, бул чыныгы көп ядролуу процессорлор пайда болгон 2004-жылга чейин болгон. Процессорлор ысып кеткендиктен, сиз процессорду кичирейте аласыз, бирок аны тездете албайсыз. Ушундан улам көп ядролуу архитектурага өтүү болгон. Анан бул күтүлбөгөн жерден биз мурун иштеп чыккан бардык концепциялардын колдонулушу дегенди билдирет.

Алексей: Эмне үчүн көп ядролуу процессорлор 2000-жылдары гана пайда болгон деп ойлойсуз? Анда эмне үчүн мынча кеч?

Морис: Бул аппараттык чектөөлөр менен шартталган. Intel, AMD жана башка компаниялар процессордун ылдамдыгын жогорулатууда абдан жакшы. Кайсы бир учурда процессорлор кичине болуп калганда, алар сааттын ылдамдыгын жогорулата албай калышты, анткени процессорлор күйө баштайт. Сиз аларды кичирейте аласыз, бирок тезирээк эмес. Алардын колунда эмне бар - өтө кичинекей процессордун ордуна алар сегиз, он алты же отуз эки процессорду корпустун бирдей көлөмүнө батыра алышат, мурда бирөө гана батат. Эми сизде алардын ортосунда көп агымдуу жана тез байланыш бар, анткени алар кэштерди бөлүшөт. Бирок сиз аларды тезирээк чуркоо үчүн мажбурлай албайсыз - ылдамдыктын өзгөчө чеги бар. Алар акырындык менен жакшырып баратат, бирок азыр анча эмес. Физиканын мыйзамдары өркүндөтүүгө тоскоол болгон.

Жаңы дүйнө жаңы көйгөйлөрдү алып келет. NUMA, NVM жана архитектуралык хакерлик

Алексей: Абдан акылга сыярлык. Жаңы көп ядролуу процессорлор менен жаңы көйгөйлөр пайда болду. Сиз жана сиздин кесиптештериңиз бул көйгөйлөрдү күттүңүз беле? Балким, сиз аларды алдын ала изилдеп чыккандырсыз? Теориялык изилдөөлөрдө мындай нерселерди алдын ала айтуу оңой эмес. Көйгөйлөр пайда болгондо, алар сиздин жана кесиптештериңиздин күтүүлөрүнө кандайча жооп берди? Же алар толугу менен жаңы болуп, сиз жана сиздин кесиптештериңиз пайда болгон көйгөйлөрдү чечүү үчүн көп убакыт коротушуңуз керек беле?

Виталий: Мен Алексейдин суроосуна кошумчалайын: теорияны окуп жатканда процессордун архитектурасын туура алдын ала айттыңызбы?

Морис: 100% эмес. Бирок менин кесиптештерим жана мен жалпы эс тутуму бар мульти-ядролорду алдын ала жакшы иш кылдык деп ойлойм. Менимче, биз кулпусуз иштеген параллелдүү маалымат структураларын өнүктүрүүдөгү кыйынчылыктарды туура алдын ала айттык. Мындай маалымат структуралары көптөгөн тиркемелер үчүн маанилүү болгон, бирок баары эмес, бирок көбүнчө сизге кулпуланбаган маалымат структурасы керек. Биз аларды ойлоп тапканыбызда, көптөр бул болбогон сөз, кулпулар менен баары жакшы иштейт деп талашкан. Көптөгөн программалоо көйгөйлөрү жана берилиштер структурасы көйгөйлөрү үчүн даяр чечимдер болорун биз абдан жакшы алдын ала айтканбыз. сыяктуу татаал проблемалар да бар эле NUMA – эстутумга бирдей эмес кирүү. Чынында, алар өтө спецификалык болгондуктан, көп ядролуу процессорлор ойлоп табылганга чейин эске алынган эмес. Изилдөө коомчулугу жалпысынан болжолдоого боло турган суроолордун үстүндө иштеп жаткан. конкреттүү архитектура менен байланышкан кээ бир аппараттык көйгөйлөр канат күтүүгө туура келген - чындыгында, бул архитектуралардын көрүнүшү. Мисалы, эч ким GPU-спецификалык маалымат түзүмдөрүндө иштеген эмес, анткени ал кезде GPUлар жок болчу. боюнча бир топ иштер аткарылды да SIMD, бул алгоритмдер ылайыктуу жабдык жеткиликтүү болгондон кийин колдонууга даяр болгон. Бирок, баарын алдын ала көрүү мүмкүн эмес.

Алексей: Эгерде мен туура түшүнсөм, NUMA - бул чыгымдардын, аткаруунун жана башка нерселердин ортосундагы компромисстин бир түрү. NUMA эмне үчүн мынча кеч чыкты?

Морис: Менин оюмча, NUMA эстутумду өндүрүү үчүн колдонулган аппараттык камсыздоодогу көйгөйлөрдөн улам бар: компоненттер канчалык алыс болсо, аларга жетүү ошончолук жайыраак болот. Башка жагынан алганда, бул абстракциянын экинчи мааниси - эс тутумдун бирдейлиги. Ошентип, параллелдүү эсептөөнүн мүнөздөмөлөрүнүн бири - бардык абстракциялар бир аз бузулган. Эгер жеткиликтүүлүк бир калыпта болсо, бардык эс тутум бирдей аралыкта болмок, бирок бул экономикалык, ал тургай физикалык жактан да мүмкүн эмес. Ошондуктан бул конфликт пайда болот. Эгерде сиз программаңызды эс тутум бирдей болгон сыяктуу жазсаңыз, анда ал туура болот. Туура эмес жоопторду бербейт деген мааниде. Бирок анын аткаруусу асмандагы жылдыздарды да кармай албайт. Ошо сыяктуу эле, жазсаңыз спинлоктар Кэш иерархиясын түшүнбөстөн, бөгөттөөнүн өзү туура болот, бирок сиз аткарууну унута аласыз. Кандайдыр бир мааниде, сиз абдан жөнөкөй абстракциянын үстүнө жашаган программаларды жазышыңыз керек, бирок сизге ошол абстракцияны берген адамдарды алдашыңыз керек: абстракциянын астында кандайдыр бир эс иерархиясы бар экенин, бар экенин билишиңиз керек. сени менен бул эстин ортосундагы автобус ж.б.у.с. Ошентип, жекече пайдалуу абстракциялардын ортосунда кандайдыр бир конфликт бар, бул бизди абдан конкреттүү жана прагматикалык проблемаларга алып барат.

Виталий: Келечек жөнүндө эмне айтууга болот? Процессорлор мындан ары кандайча өнүгө турганын алдын ала айта аласызбы? Жооптордун бири транзакциялык эс тутум деген ой бар. Балким, сизде дагы бир нерсе бар.

Морис: Алдыда бир нече чоң кыйынчылыктар бар. Бири, когеренттүү эс сонун абстракция, бирок ал өзгөчө учурларда бузула баштайт. Ошентип, мисалы, NUMA - бул бирдиктүү эс бар деп айтууну уланта турган нерсенин тирүү мисалы. Чынында жок, өндүрүмдүүлүк сени ыйлатат. Кээ бир учурда, архитекторлор бирдиктүү эс архитектура идеясын таштап кетүүгө аргасыз болот, сиз түбөлүккө көрүнбөй кала албайсыз. Жаңы программалоо моделдери керек болот, алар колдонууга оңой жана негизги жабдыктарды натыйжалуу кылуу үчүн жетиштүү күчтүү. Бул абдан татаал компромисс, анткени, эгер сиз программисттерге аппараттык камсыздоодо чындыгында колдонулган архитектураны көрсөтсөңүз, алар жинди болуп калышат. Бул өтө татаал жана көчмө эмес. Эгер сиз өтө жөнөкөй интерфейсти көрсөтсөңүз, анда аткаруу начар болот. Ошентип, чындап эле чоң көп ядролуу процессорлорго колдонула турган пайдалуу программалоо моделдерин камсыз кылуу үчүн көптөгөн өтө татаал соодалашууларды жасоо керек болот. Мен адистен башка эч ким 2000 ядролук компьютерде программа түзө алат деп ишенбейм. Эгер сиз өтө адистештирилген же илимий эсептөөлөрдү же криптографияны же ушуга окшош нерселерди жасабасаңыз, аны кантип туура кылуу керектиги дагы деле түшүнүксүз. 

Дагы бир окшош багыт адистештирилген архитектура болуп саналат. Графикалык акселераторлор көптөн бери бар, бирок алар эсептөөнүн адистештирилген түрүн кантип алып, аны атайын чипте иштетүүгө боло турган классикалык мисал болуп калды. Бул өзүнүн кыйынчылыктарын кошот: мындай түзүлүш менен кантип байланышасың, аны кантип программалайсың. Мен жакында эле аймактагы көйгөйлөрдүн үстүндө иштеп жатам эс тутумуна жакын. Кичинекей процессорду алып, эстутум L1 кэш ылдамдыгында иштеп, андан кийин төмөнкүдөй түзмөк менен байланышышы үчүн аны эстутумдун чоң бөлүгүнө чаптаңыз. TPU – процессор эс тутумуңуздун өзөгүңүзгө жаңы тапшырмаларды жүктөө менен алек. Мындай нерселер үчүн маалымат структураларын жана байланыш протоколдорун долбоорлоо дагы бир кызыктуу мисал. Ошентип, ыңгайлаштырылган процессорлор жана жабдыктар бир топ убакытка чейин жакшыртууларды көрө беришет.

Алексей: Туруктуу эстутум жөнүндө эмне айтууга болот?туруксуз эс тутум)?

Морис: О, бул дагы бир сонун мисал! NVM маалымат структуралары сыяктуу нерселерге болгон көз карашыбызды бир топ өзгөртөт. Туруктуу эс тутум кандайдыр бир мааниде чындап эле нерселерди тездетүүнү убада кылат. Бирок бул жашоону жеңилдете албайт, анткени көпчүлүк процессорлор, кэштер жана регистрлер дагы эле туруксуз. Кырсыктан кийин иштей баштаганда, сиздин абалыңыз жана эс тутумуңуздун абалы кыйроодон мурункудай болбойт. Мен NVMде иштеген адамдарга абдан ыраазымын - изилдөөчүлөр үчүн көп убакыт бою тууралык шарттарын аныктоого аракет кыла турган көп нерсе болот. Эсептөөлөр туура, эгерде алар кэштердин жана регистрлердин мазмуну жоголуп, бирок негизги эс сакталып калган кыйроого туруштук бере алса.

Компиляторлор жана процессорлор, RISC жана CISC, бөлүшүлгөн эс жана билдирүү жөнөтүү

Владимир: Инструкциялар топтомунун көз карашынан алганда “компиляторлор менен процессорлор” дилеммасы жөнүндө кандай ойдосуз? Билбегендер үчүн түшүндүрүп берейин: эгер биз кыйшайган эс тутумга же ушуга окшош нерсеге барсак, биз абдан жөнөкөй буйруктар топтомун колдонуп, компилятордон жаңы артыкчылыктардан пайдалана турган татаал кодду түзүүнү сурансак болот. Же башка жол менен кете алабыз: татаал инструкцияларды ишке ашырып, процессордон инструкцияларды иретке келтирүүнү жана алар менен башка манипуляцияларды жасоону сураныңыз. Бул тууралуу кандай ойдосуз?

Морис: Бул суроого менде так жооп жок. Бул талаш кырк жылдан бери уланып келет. Ортодо бир учур болгон кыскартылган буйруктардын жыйындысы жана комплекс граждандык согуштар бир катар командалар менен салгылашкан. Бир аз убакытка RISC адамдары жеңишке жетишти, бирок андан кийин Intel алардын кыймылдаткычтарын кайра куруп, кыскартылган нускамалар топтому ичинде колдонулуп, толук топтому сыртка экспорттолду. Бул, балким, ар бир жаңы муун өзүнүн компромисстерин таап, өз алдынча чечим кабыл алышы керек болгон тема. Булардын кайсынысы жакшыраак болорун алдын ала айтуу өтө кыйын. Ошентип, мен айткан ар кандай божомол белгилүү бир убакытка чейин чындык болот, анан бир азга чейин дагы жалган, анан дагы чындык болот.

Алексей: Кээ бир идеялар бир нече ондогон жылдар бою жеңишке жетип, кийинкисинде утулуп калуусу өнөр жай үчүн канчалык кеңири таралган? Мындай мезгилдүү өзгөрүүлөрдүн башка мисалдары барбы?

Морис: Бөлүштүрүлгөн эсептөө темасында ишенген адамдар бар жалпы эс жана ишенген адамдар билдирүү алмашуу. Башында, бөлүштүрүлгөн эсептөөдө, параллелдүү эсептөө кабарды өткөрүү дегенди билдирет. Андан кийин кимдир бирөө жалпы эс тутум менен программалоо алда канча жеңил экенин байкады. Карама-каршы тарап жалпы эс тутум өтө татаал экенин айтты, анткени ал кулпуларды жана ушул сыяктууларды талап кылат, андыктан кабарды өткөрүүдөн башка эч нерсе жок тилдерге өтүү керек. Кимдир бирөө ушундан чыкканды карап, мындай деди: "Ой, бул билдирүү алмашуу жалпы эстутумга абдан окшош, анткени сиз бул кичинекей модулдарды көп жана көп түзөсүз, алар бири-бирине билдирүүлөрдү жөнөтүшөт жана алардын бардыгы блокировка"Келгиле, жакшыраак жалпы эстутум базасын түзөлү!" Мунун баары кайра-кайра кайталанып, тараптардын бири сөзсүз туура деп айтууга болбойт. Тараптардын бири дайыма үстөмдүк кылат, анткени алардын бири дээрлик жеңип кетери менен, адамдар экинчисин жакшыртуунун жолдорун кайра-кайра ойлоп табышат.

Морттуу көп жиптүү код жазуу искусствосу

Алексей: Бул абдан кызыктуу. Мисалы, биз код жазганда, кайсы программалоо тили болбосун, биз адатта окуй турган жана жазыла турган уячалар сыяктуу абстракцияларды түзүшүбүз керек. Бирок, чындыгында, кандайдыр бир физикалык деңгээлде, бул ар кандай компьютерлер менен башка түзмөктөрдүн ортосунда аппараттык автобус аркылуу билдирүү жөнөтүү сыяктуу көрүнүшү мүмкүн. Көрсө, бир эле учурда абстракциянын эки деңгээлинде иш жүрүп жатат.

Морис: Жалпы эс тутум билдирүүлөрдүн өтүүсүнө курулат - автобустар, кэштер ж.б.у.с. Бирок билдирүүлөрдү жөнөтүү аркылуу программаларды жазуу кыйын, андыктан аппараттык камсыздоо атайылап калп айтып, кандайдыр бир бирдиктүү эс тутумуңуз бар деп түр көрсөтүп жатат. Бул сизге жөнөкөй, туура программаларды жазууну жеңилдетет. Анда сиз айтасыз: кэш менен достошууга убакыт келди окшойт. Ошондо сиз кэштин жайгашкан жери жөнүндө тынчсыздана баштайсыз, ал ошол жерден кетет. Кандайдыр бир мааниде, сиз абстракцияны бузуп жатасыз: бул жөн гана жалпак, бирдей эс тутум эмес экенин билесиз жана бул билимди кэшке ыңгайлуу программаларды жазуу үчүн колдоносуз. Бул чыныгы көйгөйлөрдү жасоого туура келет. Сизге берилген таттуу, жөнөкөй, жагымдуу абстракция менен негизги жабдыктын коркунучтуу татаал ишке ашырылышынын ортосундагы бул карама-каршылык - бул жерде ар бир адам өз компромиссине барат. Менде мультипроцессорлор жана синхрондоштуруу жөнүндө китебим бар жана бир учурда мен маалымат структуралары боюнча бөлүмдү жазгым келди. java.util.concurrent. Аларды карап көрсөң, сыяктуу нерселер калтырылган тизмелер Бул укмуштуудай көркөм чыгармалар. (Редактордун эскертүүсү: Java тилин жакшы билгендер жок дегенде ишке ашырууну карап чыгышы керек ConcurrentSkipListMap, шилтемелерди карасаңыз болот API и булак коду). Бирок менин көз карашым боюнча, аларды студенттерге көрсөтүү жоопкерчиликсиздик болот, анткени мындай маалымат структурасы цирктеги жигиттин аюунун чуңкурунун үстүндө жип менен чуркаганга окшош. Кичинекей деталдарды да өзгөртсөңүз, бүт структура кыйрап калат. Бул код эң сонун жазылгандыктан, абдан тез жана жарашыктуу, бирок кичине эле өзгөрүү толук ийгиликсиздикке алып келет. Эгерде мен бул кодду студенттерге мисал катары берсем, алар дароо айтышат: мен да муну кыла алам! Анан кандайдыр бир учак кыйрап же өзөктүк реактор жарылат, мен аларга туура эмес убакта өтө көп маалымат бергеним үчүн күнөөлүү болом.

Алексей: Мен кичинекей кезимде Даг Линин баштапкы кодун изилдөөгө көп жолу аракет кылдым, мисалы, java.util.concurrent, бул ачык булак болгондуктан, аны табуу жана ал жерде эмне болуп жатканын түшүнүүгө аракет кылуу абдан оңой. Бул абдан жакшы болгон жок: көп учурда, баары башкача кылып жатканда, Даг эмне үчүн ушундай кылууну чечкени түшүнүксүз. Буларды окуучуларыңызга кандай түшүндүрөсүз? Мисалы, хардкор алгоритмдин конкреттүү деталдарын сүрөттөөнүн өзгөчө туура жолу барбы? Муну кантип кыласыз?

Морис: Сүрөт боюнча мугалимдердин биринчи эстеп калган бир клишеси бар: эгер сиз Пикассо сыяктуу тарткыңыз келсе, адегенде жөнөкөй реалдуу сүрөттөрдү тартканды үйрөнүшүңүз керек жана эрежелерди билгенде гана аларды бузуп баштасаңыз болот. Эгер сиз дароо эле эрежелерди бузуу менен баштасаңыз, анда баш аламандыкка учурайсыз. Биринчиден, мен студенттерге аткаруу жөнүндө кабатырланбастан, жөнөкөй, туура код жазууну үйрөтөм. Мен айтып жаткан нерсе, бул жерде татаал убакыт маселелери бар, андыктан кэштер жөнүндө кабатыр болбоңуз, эс тутум моделдери жөнүндө кабатыр болбоңуз, бардыгы туура иштегенине ынаныңыз. Бул буга чейин эле кыйын: заманбап программалоо, өзгөчө жаңы студенттер үчүн, өзүнчө эле оңой эмес. Жана алар туура программаларды кантип жазуу керектиги жөнүндө интуицияга ээ болгондо, мен айтам: бул эки спинлоктун ишке ашырылышын карагыла: бири өтө жай, экинчиси дагы анча эмес, бирок жакшы. Бирок, математикалык жактан эки алгоритм бирдей. Чынында, алардын бири кэш локализациясын колдонот. Алардын бири локалдык кэштелген маалыматтарда иштейт, ал эми экинчиси автобуста бир нече жолу операцияларды аткарат. Эгерде сиз анын эмне экенин түшүнбөсөңүз жана абстракцияны кантип бузуп, түпкү структураны карап чыгууну билбесеңиз, эффективдүү код жаза албайсыз. Бирок сиз муну дароо эле жасай албайсыз. Муну дароо эле жасап баштап, өз генийине ишенген адамдар бар, эрежени түшүнбөгөндүктөн анын аягы жаман аяктайт. Эч ким Пикассодой сүрөт тартпайт же биринчи жумасында колледжден жаңы чыккан Дуг Ли сыяктуу программаларды жаза албайт. Мындай билимге жетүү үчүн жылдар керек.

Алексей: Көрсө, сиз маселени эки бөлүккө бөлөсүз: биринчиси - тууралык, экинчиси - аткаруу?

Морис: Туура. Жана так ошол тартипте. Көйгөйдүн бир бөлүгү жаңы студенттер тууралыкка жетишүү кыйын экенин түшүнүшпөйт. Бир караганда мындай дешет: бул албетте туура, аны тездетүү гана калды. Ошентип, кээде мен аларга башында туура эмес алгоритм туура деп айтам.

Студенттерди татаал көп агымдуу кодду жазууга кантип үйрөтүү керек

Алексей: Алар кармаганды сезе алар-албасын көрүш үчүнбү?

Морис: Мен кээде туура эмес алгоритмдерди сунуштайм деп алдын ала эскертем. Элди алдабаш керек. Мен аларга маалыматты бир дан менен кабыл алууну сунуштайм. Эгер мен бир нерсе айтсам: "мына, бул туура экен" - бул кайсы бир жерде сизди алдап жатканынын белгиси жана сиз суроо бере башташыңыз керек. Андан кийин, мен окуучуларды суроону улантууга үндөп, анан: «Эгерде биз нерселерди ошол бойдон калтырсак эмне болот?» деп сунуштайм. Жана алар катаны дароо көрүшөт. Бирок студенттерди тууралык жөнүндө тынчсызданышы керек экенине ынандыруу биринчи караганда көрүнгөндөн алда канча кыйын. Бул студенттердин көбү орто мектепте программалоо тажрыйбасы менен келишет, кээ бирлери жумушка орношуп, ал жерде программалоону жасашкан жана алардын бардыгы ишенимге толгон. Бул армия сыяктуу бир нерсе: пайда болгон көйгөйлөрдү чечүүгө сабырдуулук менен мамиле кылууга ынандыруу үчүн алгач алардын маанайын өзгөртүү керек. Же, балким, бул буддист монахтарга окшош: адегенде алар тууралык жөнүндө ой жүгүртүүгө үйрөнүшөт жана тууралык жөнүндө ой жүгүртүүнүн жолдорун түшүнгөндөн кийин, аларга кийинки деңгээлге өтүүгө жана аткаруу жөнүндө тынчсыздана баштоого уруксат берилет.

Алексей: Башкача айтканда, кээде сиз студенттерге иштебеген мисалдарды көрсөтөсүз, анын аркасында алар маселенин маңызын түшүнгөн-түшүнбөгөнүн, туура эмес кодду жана туура эмес жыйынтыкты таба алар-албагандыгын көрсөткөн пикирлерди аласыз. Демек, студенттер сизди көбүнчө кубантабы же капа кылабы?

Морис: Студенттер дээрлик дайыма катаны табат. Эгерде алар өтө жай издешсе, мен жетектөөчү суроолорду берем жана бул жерде түшүнүү керек, эгер сиз аларды эч качан алдабасаңыз, алар сиздин сөздөрүңүздү эң акыркы чындык катары кабыл ала башташат. Анан сабак учурунда ноутбуктан фейсбуктан окуп жатып зеригип, уктай башташат. Бирок алдын ала айтсаң, алданып калат, айла-амалын сезбесе, келесоо көрүнөт, алар бир топ сергек болуп калышат. Бул ар кандай жолдор менен жакшы. Мен окуучулардын бул маселени түшүнүүсүнө гана шек келтирбестен, мугалимдин авторитетине да шек келтирүүнү каалайт элем. Окуучу каалаган убакта колун көтөрүп: Менин оюмча, сиздин айтканыңыз туура эмес. Бул маанилүү окуу куралы болуп саналат. Студенттердин эч кимиси унчукпай отуруп алып өзүнчө ойлонушун каалабайм: мунун баары тантыктай сезилет, бирок кол көтөрүү өтө коркунучтуу жана баары бир ал профессор, андыктан анын айткандарынын баары чындык. Ошондуктан, эгерде айтылгандардын баары эле чындыкка дал келбей турганы алдын ала эскертилсе, аларда материалга көбүрөөк көңүл бурууга түрткү болот. Кол көтөрүп, суроо берүү туура экенин ачык айтам. Сиздин сурооңуз акылсыз же жөнөкөй сезилиши мүмкүн, бирок көп учурда эң жакшы суроолор ушундай болуп чыгат.

Алексей: Абдан кызыктуу. Адатта, адамдар профессорго суроо берүүгө мүмкүндүк бербеген кандайдыр бир психологиялык тоскоолдуктарга ээ. Айрыкча, бөлмөдө көп адамдар болсо жана баары сенин келесоо сурооңду талкуулоо бул адамдардын убактысын алат деп корксо. Муну менен күрөшүү үчүн кандайдыр бир амалдар барбы?

Морис: Мен көбүнчө токтоп, классикалык суроолорду берем. Айтылган сөз туура болобу, же алар талкууланып жаткан маселени кантип чечмек. Бул, өзгөчө, сабактын башталышында, адамдар эң кичинекей нерсени да айтуудан уялып турган негизги иш-аракет. Сиз студенттерге суроо берип, андан ары эч нерсе айтпайсыз. Тынчтык болуп, баары бир аз чыңалып, чыңалуу күчөйт, анан бир маалда бирөө чыдай албай, сынып калып жооп айтат. Кырдаалды ушинтип бурасың: унчукпай калуу жооп бергенге караганда кыйыныраак жана ыңгайсыз болуп калат! Бул стандарттуу педагогикалык куулук. Дүйнөдөгү ар бир мугалим муну кантип жасоону билиши керек.

Алексей: Эми бизде бул интервью үчүн эң сонун аталыш бар: “унчукпай койгондон көрө жооп берген оңой”.

Виталий: Дагы бир жолу сурайын. Сиз топологиялык далилдердин үстүндө иштеп жатасыз. Сиз буга кантип аралашып калдыңыз, анткени бөлүштүрүлгөн эсептөө жана топология такыр башка нерселер!

Морис: Ал жерде жашыруун байланыш бар. Математиканы окуган студент кезимде таза математиканы окугам. Окуум бүткүчө компьютерге эч кандай кызыгуум жок болчу жана мен жумуш издөөнүн зарылчылыгына туш болдум. Студент кезимде алгебралык топологияны окудум. Көп жылдардан кийин, деп аталган маселенин үстүндө иштеп жатканда "k-Set келишим маселеси", Мен маселени моделдөө үчүн графиктерди колдондум жана ошол кездегидей эле, мен чечимди таптым. Болгону отуруп алып, эсепти айланып өтүш керек болчу. Бул графиктен ылайыктуу жооп табууга аракет кылыңыз. Бирок менин алгоритмим иштебей калды: ал түбөлүккө тегерекче чуркап кетет экен. Тилекке каршы, мунун бардыгын бардык компьютердик илимпоздор билген графикалык теориянын формалдуу тили менен түшүндүрүү мүмкүн эмес. Анан көп жыл мурун топология сабактарында бул түшүнүктү колдонгонубуз эсиме түштү "жөнөкөй комплекс", бул графиктердин жогорку өлчөмдөргө жалпыланышы. Анан мен өзүмө суроо бердим: эгерде биз маселени жөнөкөй комплекстер боюнча кайра түзсөк эмне болот? Бул негизги учур болуп калды. Күчтүү формализмди колдонуу менен маселе капысынан алда канча жөнөкөй болуп калат. Адамдар графиктерди колдонуп, ага каршы көп убакыт күрөшүштү, бирок эч нерсе кыла алышкан жок. Азыр да алар кыла алышпайт - туура жооп алгоритм эмес, маселени чечүү мүмкүн эместигинин далили болуп чыкты. Башкача айтканда, мындай алгоритм жөн эле жок. Бирок мүмкүн эместигинин ар бир далили же жөнөкөй комплекстерге же адамдар жөнөкөй комплекстерди эске албагандай түр көрсөткөн нерселерге негизделген. Бир нерсени жаңы ат деп атаганыңыз үчүн эле ал өзүнүн маңызын жоготпойт.

Виталий: Көрсө, сен жөн эле жолдуу болдуңбу?

Морис: Ийгиликтен тышкары, бул дагы даярдуулук. Бул мурда үйрөнгөн "пайдасыз" нерселерди унутпаш керек дегенди билдирет. Канчалык пайдасыз нерселерди үйрөнсөңүз, жаңы көйгөйгө туш болгондо ошончолук көп идеяларды чыгара аласыз. Мындай интуитивдик үлгү дал келүүсү маанилүү, анткени... Келгиле, бул чынжыр: адегенде мен графиктер такыр иштебей калганын же такыр иштебегенин байкадым, ал мага сегиз окуядан бир нерсени эске салды. жыл мурун жана менин студенттик жылдарым, биз бул жөнөкөй комплекстерди изилдеп жүргөн кезим. Бул өз кезегинде менин эски топология окуу китебимди таап, аны кайра башыма жүктөөгө мүмкүндүк берди. Бирок ошол эски билим болбогондо, мен эч качан баштапкы маселени чечүүдө эч кандай жылыш болмок эмес.

“Мультипроцессордук программалоо искусствосу” китебинин жаңы басылышы

Алексей: Сиз китебиңиз тууралуу бир нече сөз айттыңыз. Көп агым боюнча дүйнөдөгү эң атактуу китепти жазганыңыздын эң жаман сыры болбосо керек. "Мультипроцессордук программалоо искусствосу". Буга чейин 11 жашта, ошондон бери ал гана чыгарылган  кайра каралып чыккан. Экинчи чыгарылышы болобу?

Морис: Сураганыңыз жакшы болду! Бул абдан жакын арада, үч айдан кийин болот. Дагы эки автор бар, биз дагы көп материал коштук, айры/кошулуу параллелизм бөлүмүн жакшырттык, MapReduce боюнча бөлүм жаздык, көптөгөн жаңы нерселерди кошуп, керексиз нерселерди ыргыттык - бул жазуу учурунда абдан кызыктуу болгон. биринчи басылышы, бирок азыр жок. Натыйжада абдан олуттуу түрдө кайра каралып чыккан китеп болду.

Алексей: Баары аткарылды, аны чыгаруу гана калды?

Морис: Бир-эки бөлүмгө дагы деле иш керек. Биздин чыгаруучубуз (менимче, бизди жек көрөт) дагы эле биз тезирээк иштешибиз керек деген билдирүүнү жеткирүүгө аракет кылып жатат. Биз графиктен алда канча артта калдык. Теориялык жактан алганда, биз бул китепти бир-эки жыл мурун жасасак болмок.

Алексей: Рождествонун алдында китептин жаңы версиясын алуу мүмкүнчүлүгү барбы?

Морис: Бул биздин максатыбыз! Бирок жеңишти көп жолу алдын ала айткандыктан, мага эч ким ишенбейт. Балким, бул маселеде мага көп ишенбеш керек.

Алексей: Кандай болгон күндө да бул фантастикалык жаңылык. Мага китептин биринчи басылышы абдан жакты. Мен күйөрманмын десең болот.

Морис: Жаңы басылма сиздин жалындуу энтузиазмыңызга татыктуу болот деп ишенем, рахмат!

Транзакциялык эстутум кантип пайда болгон

Виталий: Кийинки суроо транзакциялык эс жөнүндө. Менин түшүнүшүм боюнча, сиз бул тармактын пионерисиз, мындай нерселерди эч ким ойлобогон учурда ойлоп тапкансыз. Эмне үчүн бул тармакка өтүүнү чечтиңиз? Эмне үчүн транзакциялар сизге маанилүү көрүндү? Сиз качандыр бир күнү алар аппараттык камсыздоодо ишке ашырылат деп ойлодуңуз беле?

Морис: Мен бүтүмдөр жөнүндө дипломдук изилдөө күндөрүмдөн бери билем.

Виталий: Ооба, бирок бул ар кандай транзакциялар!

Морис: Мен Эллиотт Мосс менен таштандыны бөгөтсүз чогултуу боюнча иштегем. Биздин көйгөй, биз эс тутумдагы бир нече сөздү атомдук түрдө өзгөрткүбүз келди, андан кийин алгоритмдер абдан жөнөкөй болуп, жок дегенде алардын айрымдары натыйжалуураак болуп калат. Колдонуу салыштыруу жана алмаштыруу үчүн жүктөө-шилтеме/дүкөн-шарттуупараллелдүү архитектура менен камсыз кылынган, бир нерсе жасоого болот, бирок бул өтө натыйжасыз жана чиркин, анткени кыйыр катмарлар менен күрөшүүгө туура келет. Мен эс тутумдагы сөздөрдү өзгөрткүм келет жана которулушум керек, анткени мен бир гана көрсөткүчтү өзгөртө алам, андыктан алар кандайдыр бир каталогго окшош структураны көрсөтүшү керек. Биз аппараттык камсыздоону бир убакта жаздыра тургандай кылып өзгөртө алсак, кандай сонун болорун сүйлөштүк. Эллиотт муну байкады окшойт: кэштин когеренттүүлүгүнүн протоколдорун карасаңыз, алар талап кылынган функциялардын көбүн камсыз кылып турат. Оптимисттик транзакцияда кэштин когеренттүүлүгү протоколу убакыттын карама-каршылыгын байкап, кэш болуп калат. жараксыз. Эгер сиз кэшиңизде транзакцияны спекуляциялык түрдө иштетсеңиз жана конфликттерди аныктоо үчүн когеренттик протоколдун механизмдерин колдонсоңуз эмне болот? Спекуляциялык аппараттык архитектураны долбоорлоо оңой болгон. Ошентип, биз ошону жаздык эң биринчи басылма транзакциялык эстутум жөнүндө. Ошол эле учурда мен иштеп жаткан Digital Equipment Corporation компаниясы Alpha деп аталган жаңы 64 биттик процессорду түзүп жаткан. Ошентип, мен барып, Альфа өнүктүрүү тобуна укмуштуудай транзакциялык эс тутумубуз жөнүндө презентация жасадым жана алар сурашты: Эгерде мунун баарын түздөн-түз процессорго кошсок, биздин компания канча кошумча киреше алат? Мен буга такыр жооп бере алган жокмун, анткени мен технологмун, маркетинг боюнча адис эмесмин. Чынында жооп бере турган эч нерсем жок болчу. Алар менин эч нерсе билбегениме абдан таң калышты.

Виталий: Миллиарддар! Жөн эле миллиарддарды айт!

Морис: Ооба, мен ушуну айтышым керек эле. Азыр, стартаптар жана бардык нерсе доорунда, мен бизнес-план жазганды билем. Сиз потенциалдуу пайдаңыздын өлчөмү жөнүндө бир аз калп айта аласыз. Бирок ал күндөрдө бул жөнөкөй көрүнгөндүктөн, мен жөн эле: "Билбейм" дедим. Эгерде сиз транзакциялык эстутум боюнча басылманын тарыхына көз чаптырсаңыз, анда бир жылдан кийин ага бир нече шилтемелер болгондугун, андан кийин он жылга жакын убакытта бул кагазга эч ким шилтеме жасаган эмес. Тырмакчалар 2004-жылы чыныгы көп ядролор пайда болгондо пайда болгон. Адамдар параллелдүү код жазуу акча таба аларын билгенде, жаңы изилдөөлөр башталды. Рави Раджвар макала жазды, бул кандайдыр бир жол менен негизги агымга транзакциялык эс түшүнүгүн киргизди. (Редакциянын эскертүүсү: Бул макаланын экинчи версиясы бар, 2010-жылы чыгарылган жана эркин жеткиликтүү PDF катары). Күтүлбөгөн жерден адамдар мунун баарын кантип колдонсо болорун, кулпулары бар салттуу алгоритмдерди кантип тездетсе болорун түшүнүштү. Өткөндө жөн гана кызыктуу академиялык көйгөй сыяктуу көрүнгөн нерсенин жакшы мисалы. Ооба, эгер сиз ошол убакта менден мунун баары келечекте маанилүү болот деп ойлойсузбу деп сурасаңыз, мен мындай деп жооп бермекмин: албетте, бирок качан так эмес. Балким 50 жылдан кийин? Практикада бул он жылдык гана болуп чыкты. Бир нерсе жасап, он жылдан кийин эле адамдар аны байкап калганда абдан жакшы болот.

Эмне үчүн бөлүштүрүлгөн эсептөө тармагында изилдөө жүргүзүү керек

Виталий: Эгерде жаңы изилдөөлөр жөнүндө айта турган болсок, окурмандарга эмнени кеңеш берет элеңиз – бөлүштүрүлгөн эсептөө же көп ядролуу жана эмне үчүн? 

Морис: Бүгүнкү күндө көп ядролуу процессорду алуу оңой, бирок чыныгы бөлүштүрүлгөн системаны орнотуу кыйыныраак. Мен алардын үстүндө иштей баштадым, анткени мен кандидаттык диссертациямдан башка нерсе кылгым келди. Бул мен дайыма жаңы студенттерге бере турган кеңешим: диссертацияңыздын уландысын жазбаңыз — жаңы багытка барууга аракет кылыңыз. Ошондой эле, көп агым жеңил. Мен төшөктөн турбай эле ноутбукта иштеген вилкамды эксперимент кыла алам. Бирок мен күтүлбөгөн жерден чыныгы бөлүштүрүлгөн системаны түзгүм келсе, анда мен көп иштерди жасоого, студенттерди тартууга ж.б.у.с. Мен жалкоо адаммын жана көп ядродо иштегенди жакшы көрөм. Көп ядролуу системаларда эксперимент жүргүзүү бөлүштүрүлгөн системаларда эксперименттерди жасоого караганда жеңилирээк, анткени акылсыз бөлүштүрүлгөн системада да көзөмөлгө алынышы керек болгон факторлор өтө көп.

Виталий: Сиз азыр эмне кылып жатасыз, блокчейнди изилдеп жатасызбы? Биринчи кезекте кайсы макалаларга көңүл буруш керек?

Морис: Жакында эле пайда болду абдан жакшы макала, аны мен студентим Викрам Сараф менен бирге жазган, өзгөчө маектешүү үчүн Tokenomcs конференциясы үч жума мурун Парижде. Бул практикалык бөлүштүрүлгөн системалар жөнүндө макала, анда биз Ethereumду көп жиптүү кылууну сунуштайбыз. Учурда акылдуу келишимдер (блокчейнде иштеген код) ырааттуу түрдө аткарылууда. Биз жараянды тездетүү үчүн алып-сатарлык операцияларды колдонуунун жолу жөнүндө сөз кылган макаланы мурда жазганбыз. Биз программалык камсыздоонун транзакциялык эс тутумунан көптөгөн идеяларды алдык жана эгер сиз бул идеяларды Etherium виртуалдык машинасынын бир бөлүгү кылып алсаңыз, анда бардыгы тезирээк иштейт деп айттык. Бирок бул үчүн келишимдерде маалымат карама-каршылыктары болбошу керек. Анан биз чыныгы жашоодо андай чыр-чатактар ​​жок деп ойлогонбуз. Бирок биз билүүгө мүмкүнчүлүк болгон жок. Андан кийин биздин колубузда дээрлик он жылдык чыныгы келишим тарыхы бар экени ойго келди, ошондуктан биз Ethereum блокчейнсин таштап, өзүбүзгө суроо бердик: эгерде бул тарыхый жазуулар параллелдүү аткарылса эмне болот? Биз ылдамдыктын олуттуу өсүшүн таптык. Ethereumдун алгачкы күндөрүндө ылдамдык абдан өскөн, бирок бүгүнкү күндө баары бир аз татаалыраак, анткени келишимдер азыраак жана сериалдаштырууну талап кылган маалыматтар боюнча чыр-чатактар ​​ыктымалдыгы жогору болуп калды. Бирок мунун баары чыныгы тарыхый маалыматтар менен эксперименталдык иш. Блокчейндин жакшы жери, ал бардыгын түбөлүккө эстейт, ошондуктан биз убакытты артка кайтарып, кодду иштетүү үчүн ар кандай алгоритмдерди колдонсок, эмне болорун изилдей алабыз. Биздин жаңы идеябыз мурунку адамдарга кандай жакмак? Мындай изилдөөлөрдү жүргүзүү алда канча жеңил жана жагымдуу, анткени бардыгын көзөмөлдөп, баарын жазып турган нерсе бар. Бул алгоритмдерди иштеп чыгууга караганда социологияга көбүрөөк окшош нерсе.

Алгоритмдерди иштеп чыгуу токтоп калдыбы жана кантип улантуу керек?

Виталий: Акыркы теориялык суроого убакыт келди! Атаандаштыкка жөндөмдүү маалымат структураларындагы прогресс жыл сайын азайып бараткандай сезилип жатабы? Сиздин оюңузча, биз маалымат түзүмдөрүн түшүнүүдө платого жеттикпи же кандайдыр бир олуттуу жакшыруулар болобу? Балким, баарын толугу менен өзгөртө турган кээ бир акылдуу идеялар бар?

Морис: Биз салттуу архитектуралар үчүн маалымат структураларында платого жеткен болушубуз мүмкүн. Бирок жаңы архитектуралар үчүн маалымат структуралары дагы эле абдан келечектүү аймак болуп саналат. Эгерде сиз, айталы, аппараттык акселераторлор үчүн маалымат структураларын түзгүңүз келсе, анда GPU үчүн маалымат структуралары CPU үчүн маалымат структураларынан абдан айырмаланат. Блокчейндер үчүн маалымат түзүмдөрүн иштеп чыкканыңызда, маалыматтарды хэш кылып, андан кийин аларды окшош нерсеге салуу керек Merkle дарагы, жасалма акча жасоонун алдын алуу үчүн. Акыркы убакта бул жаатта активдүүлүк күчөп, көбү жакшы иштерди жасап жатышат. Бирок, менимче, жаңы архитектуралар жана жаңы колдонмолор жаңы маалымат структураларына алып келет. Мурдагы тиркемелер жана салттуу архитектура - мындан ары чалгындоо үчүн көп орун жок болушу мүмкүн. Бирок, эгер сиз жолдон чыгып, четтеринен ары карасаңыз, анда негизги агым олуттуу кабыл албаган жинди нерселерди көрөсүз - бул жерде бардык кызыктуу окуялар болот.

Виталий: Ошондуктан, абдан белгилүү изилдөөчү болуу үчүн, мен өз архитектура ойлоп табышым керек болчу :)

Морис: Башка бирөөнүн жаңы архитектурасын "уурдап" алсаңыз болот - бул бир топ жеңилдей көрүнөт!

Браун университетинде иштейт

Виталий: Бизге кененирээк айтып бере аласызбы Браун университетисен кайда иштейсиң? Маалыматтык технологиялардын контекстинде ал тууралуу көп нерсе белгилүү эмес. Мисалы, MIT жөнүндө азыраак.

Морис: Браун университети Кошмо Штаттардагы эң эски университеттердин бири. Менимче, Гарвард гана бир аз улуураак. Браун деп аталган бир бөлүгү болуп саналат чырмоок Лига, бул эң эски сегиз университеттин жыйындысы. Гарвард, Браун, Корнелл, Йель, Колумбия, Дартмут, Пенсильвания, Принстон. Бул эски, кичинекей жана бир аз аристократиялык университет. Негизги көңүл гуманитардык илимдерге багытталган. Бул MIT сыяктуу болууга аракет кылбайт, MIT абдан адистештирилген жана техникалык. Браун орус адабиятын же классикалык грек тилин жана, албетте, информатиканы изилдөө үчүн эң сонун жер. Ал ар тараптуу билим берүүгө багытталган. Студенттерибиздин көбү Facebook, Apple, Google'га барышат - ошондуктан биздин студенттердин тармакта жумуш табууда кыйынчылыктары жок деп ойлойм. Мен буга чейин Бостондогу Digital Equipment Corporation компаниясында иштегендиктен Браунга иштегени баргам. Бул көптөгөн кызыктуу нерселерди ойлоп тапкан, бирок персоналдык компьютерлердин маанилүүлүгүн четке каккан компания болгон. Тагдыры оор компания, анын негиздөөчүлөрү бир кезде жаш революционерлер болгон, алар эч нерсе үйрөнүшкөн эмес жана эч нерсени унутушкан эмес, ошентип алар он чакты жылдын ичинде революционерлерден реакциячыларга айланган. Алар персоналдык компьютерлер гаражга — албетте, кароосуз калган гаражга таандык деп тамашалаганды жактырышты. Аларды ийкемдүү компаниялар жок кылганы айдан ачык. Компания кыйынчылыкка кабылганы айкын болгондо, мен Бостондон бир сааттай алыс жердеги Браундагы досума чалдым. Ал кезде мен Бостондон кетким келчү эмес, анткени башка университеттерде ачылуу аз. Бул Информатикада азыркыдай көп жумуш орундары жок болчу. Ал эми Браундун ачылышы бар болчу, мен үйүмдү, үй-бүлөмдү көчүрүүм керек болгон жок жана мен Бостондо жашаганды жакшы көрөм! Ошентип мен Браунга барууну чечтим. Мага жакты. Студенттер абдан сонун, ошондуктан мен эч качан башка жакка барууга аракет кылган эмесмин. Ишембилик учурунда мен Microsoftто бир жыл иштедим, Хайфадагы Технионго бир жыл бардым, эми Алгорандда болом. Бардык жерде менин көптөгөн кесиптештерим бар, ошондуктан биздин класстардын физикалык жайгашуусу анчалык деле маанилүү эмес. Бирок эң негизгиси студенттер, алар бул жерде эң мыкты. Мен эч качан башка жакка барууга аракет кылган эмесмин, анткени бул жерде абдан бактылуумун.

Бирок Браун Кошмо Штаттарда атактуу болгонуна карабастан, ал чет өлкөдө таң калыштуу түрдө белгисиз. Көрүнүп тургандай, мен азыр бул абалды оңдоо үчүн колдон келгендин баарын жасап жатам.

Университеттеги жана корпорациядагы изилдөөлөрдүн ортосундагы айырма

Виталий: Макул, кийинки суроо Санариптик жабдуулар жөнүндө. Сиз изилдөөчү катары ал жерде болгонсуз. Чоң компаниянын R&D бөлүмүндө иштөө менен университетте иштөөнүн ортосунда кандай айырма бар? артыкчылыктары жана кемчиликтери бар?

Морис: Жыйырма жыл бою мен Майкрософтто иштедим, Sun Microsystems, Oracle, Facebook жана азыр Algorand кызматкерлери менен тыгыз иштештим. Мына ушулардын бардыгына таянып, ишканаларда да, жогорку окуу жайларында да биринчи даражадагы илимий-изил-деелерду жургузууге болот деп айткым келет. Маанилүү айырмачылык компанияда сиз кесиптештер менен иштешесиз. Менде күтүлбөгөн жерден али жок долбоор боюнча идея пайда болуп калса, мен курбуларымды бул жакшы идея экенине ынандырышым керек. Эгерде мен Браунда болсом, анда мен студенттериме айта алам: келгиле, антигравитациянын үстүндө иштейли! Алар же башка бирөө үчүн кетип калышат, же долбоорго киришет. Ооба, мен каржылоону табышым керек, грантка арыз жазышым керек, ж.б.у.с. Кандай болгон күндө да студенттер ар дайым көп болот жана сиз бир тараптуу чечим кабыл ала аласыз. Бирок университетте сиз өз деңгээлиндеги адамдар менен иштешпейсиз. Өнөр жай изилдөөлөрүнүн дүйнөсүндө сиз алгач ар бир адамды сиздин долбоорңуз ишке ашырууга татыктуу экенине ынандырышыңыз керек. Мен эч кимге эч нерсе заказ кыла албайм. Жана бул эки иштөө ыкмасы тең баалуу, анткени сиз чындап эле жинди бир нерсенин үстүндө иштеп жатсаңыз жана кесиптештериңизди ынандыруу кыйын болсо, анда аспиранттарды ынандыруу оңой - өзгөчө, эгер сиз аларга акча төлөп жатсаңыз. Эгер сиз көп тажрыйбаны жана терең тажрыйбаны талап кылган нерсенин үстүндө иштеп жатсаңыз, анда сизге “жок, мен бул жаатта түшүнгөнүм жана сиздин идеяңыз начар, иштебей калат” деп айта турган кесиптештер керек. Бул убакытты текке кетирүү жагынан абдан пайдалуу. Ошондой эле, өнөр жай лабораторияларында отчет жазууга көп убакыт коротсоңуз, университетте бул убакытты акча табууга жумшайсыз. Студенттердин бир жакка барышын кааласам, ага акчаны башка жактан табышым керек. Ал эми университетте сиздин позицияңыз канчалык маанилүү болсо, ошончолук акча чогултууга көбүрөөк убакыт сарптаңыз. Эми сиз менин эмне үчүн иштегенимди билесиз - профессионал кайырчы! Курмандык табак менен басып жүргөн монахтардын бири сыяктуу. Жалпысынан бул эки иш-чара бири-бирин толуктап турат. Ошон үчүн эки дүйнөдө тең бутумду жерге тийгизбей жашаганга аракет кылам.

Виталий: Компанияны ынандыруу башка илимпоздорду ынандырууга караганда кыйыныраак окшойт.

Морис: Кыйыныраак жана дагы көп нерсе. Анын үстүнө, ар кандай чөйрөлөрдө бул ар кандай: кээ бирлери толук масштабдуу изилдөө жүргүзүшөт, ал эми башкалары өз темасына көңүл бурат. Майкрософтко же Фейсбукка барып: антигравитивдүү кылып көрөлү десем, алар муну баалабайт. Бирок, эгерде мен аспиранттарыма дал ушул нерсени айтсам, алар заматта ишке киришмек, бирок азыр менде көйгөйлөр пайда болмок - акыры, мен бул үчүн акча табышым керек. Бирок сиз компаниянын максаттарына шайкеш келген бир нерсе жасагыңыз келсе, ал компания изилдөө жүргүзүү үчүн абдан жакшы жер болушу мүмкүн.

Hydra жана SPTDC

Виталий: Менин суроолорум бүтүп баратат, келгиле, Россияга боло турган иш сапары тууралуу бир аз сүйлөшөлү.

Морис: Ооба, мен Санкт-Петербургга кайтууну чыдамсыздык менен күтүп жатам.

Алексей: Сизди быйыл биз менен болгондугуңуз үчүн сыймыктанам. Бул Санкт-Петербургга экинчи жолу келип жатасыз, туурабы?

Морис: Үчүнчүсү!

Алексей: Түшүнөм, бирок SPTDC – Албетте, экинчиси. Акыркы жолу мектепке телефон чалган SPTCC, биз азыр бир тамганы өзгөрттүк (Cдан D, Concurrent to Distributed) бул жылы өзгөчө бөлүштүрүлгөн эсептөөлөргө байланыштуу көбүрөөк аймактар ​​бар экенин баса белгилөө үчүн. Мектептеги отчетторуңуз жөнүндө бир нече сөз айта аласызбы жана Гидра конференциясы?

Морис: Мектепте мен блокчейндин негиздери жана аны менен эмне кыла ала тургандыгы жөнүндө сүйлөшкүм келет. Мен блокчейндер бизге тааныш болгон көп жиптүү программалоого абдан окшош экенин, бирок өздөрүнүн нюанстары менен жана бул айырмачылыктарды түшүнүү маанилүү экенин көрсөткүм келет. Кадимки веб-тиркемеде ката кетирсеңиз, бул жөн эле тажатма. Эгер сиз каржылык тиркемеде ката кодун жазсаңыз, кимдир бирөө сиздин акчаңыздын баарын уурдап кетет. Бул такыр башка деңгээлдеги жоопкерчилик жана кесепеттер. Мен иштин далили, акылдуу келишимдер, ар кандай блокчейндердин ортосундагы транзакциялар жөнүндө бир аз сүйлөшөм.

Менин жанымда башка спикерлер иштешет, алар дагы блокчейн жөнүндө айта турган сөздөрү бар жана биз окуяларыбыз бири-бирине шайкеш келиши үчүн бири-бирибиз менен координациялоого макул болдук. Бирок инженердик баяндама үчүн мен кеңири аудиторияга эмне үчүн блокчейндер жөнүндө уккандардын баарына ишенбеш керек, эмне үчүн блокчейндер чоң талаа, ал башка белгилүү идеяларга канчалык дал келет жана эмне үчүн биз тайманбастык менен карашыбыз керек деген түшүнүктүү түшүндүрмө айткым келет. келечекке.

Алексей: Мындан тышкары, бул эки жыл мурункудай жолугушуу же колдонуучулар тобу форматында болбойт деп айткым келет. Мектептин жанында чакан конференция өткөрүүнү чечтик. Себеби, Петр Кузнецов менен баарлашкандан кийин мектепте жүз, балким 120 гана адам менен чектелип калганын түшүндүк. Ошол эле учурда сиз менен баарлашкысы келген, презентацияларга катышкысы келген жана жалпысынан темага кызыккан инженерлер көп. Ушул себептен улам биз жаңы конференция түздүк Гидра деп аталат. Баса, Hydra эмне үчүн кандайдыр бир идеялар?

Морис: Анткени жети баяндамачы болот? Анан алардын башын кесип, ордуна жаңы спикерлер өсүп чыгабы?

Алексей: Жаңы баяндамачыларды өстүрүү үчүн сонун идея. Бирок чындыгында бул жерде бир окуя бар. Одиссейдин легендасын эстеп, анын ортосунда сүзүп өтүүгө туура келген Скилла жана Чарибдис? Hydra Charybdis сыяктуу бир нерсе. Окуя мындай: бир жолу мен конференцияда сүйлөп, multithreading жөнүндө сүйлөшкөм. Бул жыйында эки гана трек болду. Докладдын башында мен залдагы угуучуларга азыр Сцилла менен Чарыбдистин ортосунда тандоо бар экенин айттым. Менин рухий жаныбарым Чарибдис, анткени Чарибдистин баштары көп жана менин темам көп жиптүү. Конференциялардын аттары ушундайча пайда болот.

Кандай болгон күндө да суроолорубуз жана убакытыбыз түгөнүп калды. Ошентип, достор, сонун маегиңиз үчүн рахмат жана SPTDC мектебинде жана Hydra 2019да көрүшкөнчө!

Морис менен маегиңизди 2019-жылдын 11-12-июлунда Санкт-Петербург шаарында өтө турган Hydra 2019 конференциясында уланта аласыз. Ал отчет менен келет "Блокчейндер жана бөлүштүрүлгөн эсептөөлөрдүн келечеги". Билеттерди сатып алса болот расмий сайтында.

Source: www.habr.com

Комментарий кошуу