- Рочестер университетинде компьютер илиминин профессору, ал эми үйүндөгү Висконсин-Мэдисон университетинде беш жыл декан болгон. Ал параллелдүү жана бөлүштүрүлгөн программалоо жана тил дизайнын изилдейт жана студенттерге үйрөтөт.
Дүйнө Майклды окуу китебинен билет , иш жөнүндө эмне айтууга болот бөлүштүрүлгөн эсептөө тармагында белгилүү бири катары Dijkstra сыйлыгын алган. Сиз аны ошол алгоритмдин автору катары да билесиз .
Даг Ли менен бирге ал Java китепканаларын иштеткен бөгөттөлбөгөн алгоритмдерди жана синхрондук кезектерди иштеп чыккан. Ишке ашыруу JavaSE 6да 10 эсеге жакшырды ThreadPoolExecutor.
Мазмуну:
- Алгачкы карьерасы, Рочестер университети. Шарлотта долбоору, сүлөөсүн тили;
- IEEE масштабдуу когеренттүү интерфейс, MCS кулпусу;
- Дайыма өзгөрүп турган дүйнөдө аман калуу;
- Студенттер акылсыз болуп калабы? Глобалдык тенденциялар, интернационализация;
- Студенттер менен эффективдүү иштөө;
- Жаңы курстарды жана китептерди даярдоону кантип улантуу керек;
- Бизнес менен академиянын ортосундагы байланыштар;
- Идеяларды практикалык ишке ашыруу. MCS, MS, CLH, JSR 166, Даг Ли жана башкалар менен иштөө;
- Транзакциялык эс;
- Жаңы архитектуралар. Транзакциялык эстутумдун жеңиши жакындап калды;
- Туруктуу эмес эс тутуму, Optane DIMM, өтө тез түзмөктөр;
- Кийинки чоң тренд. Кош маалымат структуралары. Гидра.
Интервью төмөндөгүлөр тарабынан жүргүзүлөт:
Виталий Аксенов — учурда IST Австрияда постдок жана ITMO университетинин компьютердик технологиялар бөлүмүнүн мүчөсү. Конкурстук маалыматтар структураларынын теориясы жана практикасы жаатында изилдөөлөрдү жүргүзөт. ISTде иштегенге чейин ал Париж Дидро университетинде жана профессор Петр Кузнецовдун жетекчилиги астында ITMO университетинде докторлук даражасын алган.
Алексей Федоров - Иштеп чыгуучулар үчүн конференцияларды уюштурган россиялык JUG Ru Group компаниясынын продюсери. Алексей 50дөн ашык конференцияларды даярдоого катышкан жана анын резюмесинде Oracleдагы (JCK, Java Platform Group) инженердик кызматтан баштап, Одноклассникидеги иштеп чыгуучу кызматына чейин бардыгы камтылган.
Владимир Ситников - Netcracker компаниясынын инженери. Тармакты жана тармактык жабдууларды башкаруу процесстерин автоматташтыруу үчүн байланыш операторлору колдонгон программалык камсыздоо NetCracker OSтин иштеши жана масштабдуулугу боюнча он жылдык иш. Java жана Oracle маалыматтар базасынын иштешине кызыкдар. Расмий PostgreSQL JDBC драйверинин ондон ашык иштөөсүн жакшыртуунун автору.
Алгачкы карьерасы, Рочестер университети. Шарлотта долбоору, сүлөөсүн тили.
Алексей: Баштоо үчүн, мен сизге айткым келди, биз Россияда информатика, маалымат илими жана алгоритмдерди чындап жакшы көрөбүз. Бул такыр эле уятсыз. Биз баарын окудук . Ошондуктан, алдыдагы конференция, мектеп жана бул интервьюнун өзү абдан популярдуу болушу керек. Бул интервьюга студенттерден, программисттерден жана коомчулуктун өкүлдөрүнөн көптөгөн суроолорду алдык, андыктан бул мүмкүнчүлүк үчүн абдан ыраазыбыз. Компьютер илими АКШда ушундай эле сүйүүгө ээ болобу?
Майкл: Биздин тармак абдан ар түрдүү, анын көп багыттары бар жана ал коомго ар кандай жолдор менен таасир этет, ошондуктан сизге так жооп берүү мен үчүн кыйын. Бирок, бул акыркы 30 жылдын ичинде бизнесте, өнөр жайда, искусстводо жана жалпысынан коомдо эбегейсиз зор өзгөрүүлөрдү алып келди.
Vitali: Келгиле, алыскы нерседен баштайлы. Көптөгөн университеттерде белгилүү бир багытта адистештирүү сыяктуу нерсе бар. Карнеги Меллон университети үчүн бул параллелдүү эсептөө, MIT үчүн бул криптография, роботтор жана көп агым. Рочестер университетинде мындай адистик барбы?
Майкл: Чынын айтсам, CMU жана MIT бардык тармактарда адистешкен деп айтат элем. Биздин бөлүм ар дайым жасалма интеллектке эң көп көңүл буруп келген. Бизде иштеген адамдардын жарымы AI же адам менен компьютердин өз ара аракеттенүүсү менен алектенет - бул үлүш башка бөлүмдөргө караганда жогору жана дайыма ушундай болуп келген. Бирок университетте окуп жүргөндө AI боюнча эч кандай курстар болгон эмес жана бул тармакта эч качан иштеген эмесмин. Ошентип, менин бөлүмүм эч кандай тиешеси жок маселеге адистешкен. Сооротуу, биздин бөлүм үчүн экинчи маанилүү маселе параллелдүү жана көп агымдуу программалоо, башкача айтканда менин адистигим.
Vitali: Сиз информатика тармагында көп агымдуу программалоо чөйрөсү жаңыдан пайда болуп жатканда иштей баштадыңыз. Басылмаларыңыздын тизмеси көрсөткөндөй, сиздин биринчи эмгектериңиз маселелердин кыйла кеңири спектрин камтыган: көп агымдуу системаларда эстутумду башкаруу, бөлүштүрүлгөн файл системалары, операциялык системалар. Эмне үчүн мындай ар тараптуулук? Изилдөө коомчулугунда өз ордуңузду табууга аракет кылып жатасызбы?
Майкл: Студент кезимде катышкам биринчи бөлүштүрүлгөн операциялык системалардын бири иштелип чыккан Висконсин университетинде. Ал жерде мен Рафаэль Финкель менен чогуу иштедим () жана Марвин Соломон (). Менин диссертациям бөлүштүрүлгөн системалар үчүн системалык программалык камсыздоонун тилин иштеп чыгууга арналды – азыр баары аны унутуп калышты, Кудайга шүгүр. Мен Lynx программалоо тилин түздүм, ал эркин бириктирилген бөлүштүрүлгөн операциялык система үчүн серверлерди түзүүнү жеңилдетүү үчүн арналган. Ал кезде мен негизинен операциялык системалар менен алектенгендиктен, карьерам негизинен алар менен байланыштуу болот деп ойлочумун. Бирок Рочестер абдан кичинекей университет болгон жана ушундан улам ал жердеги ар кандай топтор бири-бири менен абдан тыгыз байланышта болгон. Ал жерде мен менен сүйлөшө турган он чакты башка операциялык системалар болгон эмес, андыктан менин бардык байланыштарым такыр башка аймактарда иштеген адамдар менен болгон. Мага абдан жакты, ар тараптуу спортчу болуу мен үчүн чоң артыкчылык. Эгер биз көп агымдуу маалымат структуралары жана синхрондоштуруу алгоритмдери жөнүндө айтсак, анда мен алардын үстүнөн толугу менен кокустан иштей баштадым.
IEEE масштабдалуучу когеренттүү интерфейс, MCS кулпусу.
Vitali: Бул тууралуу бир аз айтып бере аласызбы?
Майкл: Бул күлкүлүү окуяны мен баарына айтып берүүдөн тажабайм. Бул конференцияда болгон Бостондо - бул 80-жылдардын аягында же 90-жылдардын башында болгон. Джон Меллор-Крамми (), факультетибиздин бүтүрүүчүсү. Мен аны таанычумун, бирок буга чейин биргелешкен изилдөө жүргүзгөн эмеспиз. Мэри Вернон () Висконсин штатында иштеп жаткан мультипроцессордук система жөнүндө сөз сүйлөдү: . Бул Multicube аппараттык деңгээлде Q on Sync Bit деп аталган синхрондоштуруу механизмине ээ болгон жана кийинчерээк ал Q on Lock Bit деп аталып калган, анткени ал Колби сыры сыяктуу угулат. Эгер сиз көп агым механизмдерине кызыгып жатсаңыз, анда Колби акыры IEEE Scalable Coherent Interface стандарты үчүн синхрондоштуруучу кыймылдаткыч болуп калганын билесиз. Бул кулпу механизми болгон, ал аппараттык деңгээлдеги бир кэштен экинчисине көрсөткүчтөрдү түзүп, ар бир кулпу кармоочу кезек кимдики экенин билиши үчүн. Бул тууралуу укканда Жон экөөбүз бири-бирибизди карап: эмне үчүн муну аппараттык деңгээлде жасайбыз? Салыштыруу жана алмаштыруу аркылуу бир эле нерсеге жетишүү мүмкүнбү? Класста жаткан блокноттордун бирин алып, сызып жаттык , ал эми Мэри докладын улантты. Кийин аны ишке ашырып, эксперимент жасап, идея ийгиликтүү болуп, макаланы жарыяладык. Ошол учурда мен үчүн бул тема жөн гана көңүлдүү алаксытуудай сезилип, андан кийин мен операциялык системаларга кайтууну пландаштыргам. Бирок кийин ошол эле линия боюнча дагы бир көйгөй пайда болуп, акыры синхрондоштуруу, көп агым жана маалымат структуралары менин адистигим болуп калды. Көрүнүп тургандай, мунун баары кокусунан болгон.
Vitali: Мен MCS блокировкасын көптөн бери жакшы билем, бирок ушул убакка чейин бул сиздин ишиңиз экенин билчү эмесмин жана фамилияңыздын кыскартылышы экенин түшүнгөн эмесмин.
Дайыма өзгөрүп турган дүйнөдө кантип аман калуу керек?
Алексей: Менде тиешелүү тема боюнча суроом бар. Мындан 30-40 жыл мурун ар кандай адистиктерде эркиндик көбүрөөк болчу. Эгерде сиз карьераңызды көп агымдуу же бөлүштүрүлгөн системаларда баштагыңыз келсе, анда сизге кош келиңиз, эгер сиз операциялык системаларга кирүүнү кааласаңыз, эч кандай көйгөй жок. Ар бир аймакта ачык суроолор көп, эксперттер аз болду. Азыр тар адистиктер пайда болду: жалпысынан операциялык системалар боюнча жөн эле эксперттер жок, жеке системалар боюнча адистер бар. Бул көп агымдуу жана бөлүштүрүлгөн системалар менен бирдей. Бирок маселе, биздин жашообуз чексиз эмес, ар бир адам бир нече ондогон жылдарды изилдөөгө арнай алат; Бул жаңы дүйнөдө кантип аман калуу керек?
Майкл: Биз бул жагынан өзгөчө эмес, бир жолу башка аймактарда болгон. Мен информатика тармагында "өспүрүм" жылдары иштеп баштаганым үчүн бактылуу болдум. Кээ бир пайдубалдар түптөлгөн, бирок баары дагы эле жетиле элек болчу. Мындай мүмкүнчүлүк көп келе бербейт. Электротехника абдан узак убакыт бою, физика андан да узак, математика дээрлик убакыттын башынан бери болуп келген. Бирок бул азыр эч ким математикада кызыктуу ачылыштарды жасабайт дегенди билдирбейт. Ачык проблемалар дагы эле көп, бирок ошол эле учурда дагы көп нерсени үйрөнүү керек. Сиз туура айтасыз, азыр адистиктер мурункуга караганда бир топ көп, бирок бул биз адам ишмердүүлүгүнүн башка тармактарындай эле кырдаалда экенибизди гана билдирет.
Алексей: Мен бул жерде маселенин практикалык жагына кызыгам. Математика боюнча билимим бар, окуу учурунда конференцияларга көп катышып, ар кандай илимий темалардын үстүндө иштечүмүн. Мен аудиторияда эч ким менин баяндамаларымды түшүнбөгөнүн, ошондой эле башка адамдардын баяндамалары да өздөрүнө гана түшүнүктүү экенин байкадым. Жогорку деңгээлдеги темаларда андай эмес, бирок сиз бир нерсеге тереңдеп кирээриңиз менен аудитория сизден артта калбайт. Кантип сен муну менен кантип күрөшө алабыз?
Майкл: Дайыма эле ийгиликтүү боло бербейт. Мен жакында эле техникалык деталдарга өтө терең кирип кеткен отчет даярдадым. Сүйлөшкөндөрдүн көбү мени түшүнбөй жатканы билинип калды, андыктан мен учуп бараткан кырдаалга ыңгайлашууга туура келди. Слайддарды өзгөртүү мүмкүн эмес, андыктан ал жакшы болгон жок - ошондуктан, жалпысынан слайддарды колдонбогонго аракет кылам. Жалпысынан алганда, менин кеңешим аудиторияңызды эске алуу. Сиз ким менен сүйлөшүп жатканыңызды, алардын билим деңгээли жана эмгегиңизди баалоо үчүн эмнени угушу керектигин билишиңиз керек.
Vitali: Бул лекция эмне жөнүндө болгонун айтып бере аласызбы?
Майкл: Чынын айтсам, сөз болуп жаткан адамдарды анонимдүү калтыруу үчүн бул теманы кенен ачпай эле коёюн. Кеп, биз көп учурда биз иштеп жаткан маселенин татаал жактарына өтө эле терең кирип кетебиз, андыктан сөздүн башында көйгөй эмне үчүн кызыктуу жана маанилүү экенин жана анын көйгөйлүү маселелер менен кандай байланышы бар экенин түшүндүрүү кыйын болуп калат. угуучулар мурунтан эле билет. Менин байкоом боюнча, окуучулар бул өнөрдү үйрөнүүдө эң кыйын. Бул дагы менин акыркы баяндамамдын алсыз жери болду. Туура структураланган отчет эң башынан эле аудитория менен байланышты таап, аларга көйгөйдүн эмне экенин жана анын буга чейин белгилүү болгон темаларга кандай тиешеси бар экенин түшүндүрүшү керек. Бул киргизүү канчалык техникалык аудиториядан көз каранды. Эгерде ал толугу менен ар түрдүү болсо, анда отчет көп баскычтуу болушу мүмкүн. Кириш сөз баарына жеткиликтүү болушу керек жана аягында чыгарма сизден артта калбашы мүмкүн, бирок сиздин тармакты жакшы билген адамдар аны түшүнө алышат.
Студенттер акылсыз болуп калабы? Глобалдык тенденциялар, интернационализация.
Алексей: Сиз бир нече ондогон жылдардан бери окуучуларга байкоо жүргүзүп келесиз. Студенттер он жылдан он жылга же жылдан жылга акылсыз же акылдуу болуп баратабы? Орусияда профессорлор студенттер жылдан жылга акылсыз болуп баратат деп даттанышат жана бул боюнча эмне кылуу керектиги так эмес.
Майкл: Чынында эле биз карыялардан көп терс сөздөрдү угууга болот. Аң-сезимсиз түрдө биз студенттерден бизде бар болгон 30 жылдык тажрыйбаны сиңирип алышат деп күтүү тенденциясы бар. Эгерде мен 1985-жылдагыга Караганда терен тушуне турган болсом, анда эмне учун окуучуларда жок? Алар 20 жашта болгону үчүн болсо керек, кандай дейсиз? Менимче, акыркы он жылдыктардагы эң олуттуу өзгөрүүлөр демографиялык курамда болду: бизде канадалыктардан башка эл аралык студенттердин саны кыйла көп. Мурда канадалыктар көп болчу, анткени биз Канаданын чек арасына абдан жакынбыз жана ал жактан келген студенттер дем алыш күндөрү үйлөрүнө бара алышат. Бирок азыр Канадада көптөгөн жакшы университеттер бар жана канадалыктар бул жерде окууну жакшы көрүшөт.
Алексей: Бул жергиликтүү тенденциябы же глобалдуубу?
Майкл: Ким экени так эсимде жок, бирок бирөө дүйнө тегиз деп айтты. Биздин тармак алда канча интернационалдык болуп калды. Мурда алар Америка Кошмо Штаттарынын ичинде гана өткөрүлсө, кийин 4 жылда бир жолу башка өлкөлөрдө өткөрүүнү чечишкен, азыр болсо бүткүл дүйнө жүзүндө өткөрүлүүдө. Бул өзгөрүүлөр ого бетер таасир этти , ал ар дайым ACM караганда көбүрөөк эл аралык уюм болуп келген. Ал эми Кытайдан, Индиядан, Россиядан, Германиядан жана башка көптөгөн өлкөлөрдөн программалык креслолор бар, анткени азыр бардык жерде көп нерсе болуп жатат.
Алексей: Бирок, балким, мындай интернационалдаштыруунун терс жактары бардыр?
Майкл: Бардык терс көрүнүштөр технологияга эмес, саясатка байланыштуу деп айтат элем. Бир кездерде АКШ дүйнө жүзүндөгү өлкөлөрдөн эң акылдуу жана эң таланттуу адамдарды уурдап жатканы башкы көйгөй болгон. Ал эми азыр негизги көйгөй – виза жана иммиграциянын тегерегиндеги ар кайсы мамлекеттердин ортосундагы саясий оюндар.
Алексей: Башкача айтканда, тоскоолдуктар жана ушул сыяктуу нерселер. Түшүнүктүү.
Владимир: Жеке мени студенттерге жаңы предметти үйрөтүүдө кандай мамиле жасай турганыңыз кызыктырат. Ар кандай варианттар бар: сиз биринчи кезекте аларды жаңы нерсени сынап көрүүгө шыктандырууга аракет кылсаңыз болот, же белгилүү бир технологиянын кантип иштешинин деталдарына көбүрөөк көңүл бурсаңыз болот. Сиз эмнени жактырасыз?
Окуучулар менен эффективдүү иштөө
Алексей: Анан кантип биринчи жана экинчи ортосундагы балансты табууга болот?
Майкл: Маселе, сабактар мен каалагандай боло бербейт. Көбүнчө студенттерге окуу материалын алдын ала берем, алар аны терең изилдеп, мүмкүн болушунча түшүнүп, түшүнө албаган бөлүктөрү боюнча суроолорду түзүшөт. Анда класста сиз эң кыйын учурларга көңүл топтоп, аларды чогуу изилдей аласыз. Мага эң көп сабактарды ушинтип үйрөтүү жагат. Бирок азыр студенттерге жүктөлгөн жүктү эске алганда, мен дайыма эле алардын алдын ала даярдануусун текшере албайм. Натыйжада, сиз каалагандан көрө материалды жалпы кайра айтып берүүгө көбүрөөк убакыт бөлүүгө туура келет. Ошого карабастан сабактарыбызды интерактивдүү өткөрүүгө аракет кылам. Болбосо, студенттер үйдөн көрө турган видеону жаздыруу оңой. Жандуу сабактардын максаты адамдардын өз ара аракеттенүүсү. Класста мен слайддан көрө бор менен тактаны колдонгонду жакшы көрөм, айрым учурларда диаграмманы тактайга түшүрүү өтө татаал. Мунун аркасында мен катуу сабак планын кармануунун кереги жок. Материалды берүүнүн катуу тартиби болбогондуктан, ал мага келген суроолорго жараша аудиторияга ылайыкташтырууга мүмкүндүк берет. Жалпысынан мен сабактарды мүмкүн болушунча интерактивдүү өткөрүүгө аракет кылам, андыктан мен берген материал мага берилген суроолорго жараша болот.
Владимир: Ал сонун. Менин тажрыйбам боюнча, угуучуларды суроо берүүгө кызыктыруу бир топ кыйын. Кандайдыр бир суроону алдын ала сурасаң да, акылсызбы, акылсызбы, баары бир унчукпайт. Кантип сен муну менен кантип күрөшө алабыз?
Майкл: Күлөсүң, бирок унчукпай көпкө турсаң, эртеби-кечпи баары ыңгайсызданып, бирөө суроо берет. Же адамдар жаңы эле айтылгандарды түшүнүп же түшүнбөсүн аныктоо үчүн ооба же жок деп жооп берген жөнөкөй техникалык суроо берсеңиз болот. Мисалы, жогорудагы мисалда маалымат жарышы барбы? Ким ойлойт? Ким ойлобойт? Ким эч нерсени түшүнбөйт, анткени бардыгы болуп колдун жарымы гана көтөрүлдү?
Vitali: А эгер сиз туура эмес жооп берсеңиз, сиз класстан чыгарыласыз :)
Майкл: Эгер сиз эч нерсеге жооп бербесеңиз, анда суроо беришиңиз керек. Мен жаңы эле берген суроого жооп берүү үчүн студент эмнени билиши керектигин түшүнүшүм керек. Алар мага жардам бериши керек. Маселени түшүнүшү үчүн мен аларга көнүүгө даярмын. Бирок алардын башына эмне болуп жатканын билбесем, мен кыла албайм. Эгерде сиз студенттерге узак убакыт бою тынчтык бербесеңиз, кээде алар туура суроолорду беришет, башкача айтканда, студенттердин башында эмне болуп жатканын көрүүгө мүмкүнчүлүк берет.
Алексей: Бул суроолор кээде сиз мурда ойлонбогон идеяларга алып келеби? Алар күтүүсүзбү? Алар көйгөйдү жаңыча кароого мүмкүнчүлүк береби?
Майкл: Материалды берүүнүн жаңы жолун ачкан суроолор бар. Көбүнчө мен сүйлөшөйүн деп ойлобогон кызыктуу көйгөйлөргө алып келген суроолор бар. Студенттер мага мындай болгондо темадан четтеп кетем деп көп айтышат. Жана, алардын айтымында, көбүнчө бул сабактын эң кызыктуу бөлүгү. Өтө сейрек, бир нече жолу студенттер изилдөөнүн жаңы багытын козгоп, макалага айланган суроолорду беришти. Бул сабак учурунда эмес, студенттер менен баарлашууда көп кездешет, бирок кээде сабак учурунда да болот.
Алексей: Демек, студенттер сизге суроолорду беришкен, ошонун негизинде макала жарыялоого болот эле?
Майкл: Ооба.
Vitali: Студенттер менен мындай баарлашуулар канчалык көп болот? Качан алар сабак учурунда өткөндөн көбүрөөк үйрөнгүсү келет?
Майкл: Аспиранттарым менен - ар дайым. Менде алардын 5-6сы бар, биз алар менен дайыма бир нерсени талкуулайбыз. Ал эми менин сабактарыма жөн эле катышкан студенттер менен мындай баарлашуулар көп кездешпейт. Бул дагы көп болушун каалайм. Алар жөн гана иш убактысында факультетке келгенден коркушат деп шектенип жатам. Ар бир семестрде кээ бир студенттер бул психологиялык тоскоолдукту жеңе алышат жана алар менен сабактан кийин баарлашуу дайыма абдан кызыктуу. Ырас, окуучулардын баары эр жүрөк болсо, менин убактым жетпей калмак. Демек, балким, баары болушу керек эле иштеп жатат.
Vitali: Студенттер менен баарлашууга кантип убакыт табасыз? Менин билишимче, АКШда мугалимдердин жумушу абдан көп – грантка тапшыруу жана башкалар.
Майкл: Чынын айтсам, студенттер менен иштөө менин жумушумдун мага эң жактырган жагы. Андыктан менде бул үчүн жетиштүү мотивация бар. Кеңседе өткөргөн убактымдын көбү ар кандай жолугушууларга жумшалат. Азыр жай, ошондуктан менин графигим азыраак бош эмес, бирок окуу жылында, күн сайын 9дан 17ге чейин менде баары жыйылып турат. Изилдөө иштери, сын-пикирлер, гранттар - мунун бардыгы үчүн кечинде жана дем алыш күндөрү гана бар.
Жаңы курстарды жана китептерди даярдоону кантип улантуу керек.
Алексей: Учурда сиз көптөн бери окутуп келген курстарды окутууну улантып жатасызбы? Компьютер илимине киришүү сыяктуу бир нерсе.
Майкл: Бул жерде эң биринчи ойго келген нерсе бул программалоо тилдеринин курсу.
Алексей: Бул курстун бүгүнкү версиясы 10, 20, 30 жыл мурункудан канчалык айырмаланат? Балким, бул жерде эң кызыктуусу кайсы бир курстун деталдары эмес, жалпы тенденциялар.
Майкл: Менин программалоо тилдери боюнча курсум мен аны түзүп жатканда бир аз адаттан тыш болчу. Мен аны 1980-жылдардын аягында кесиптешим Даг Болдуиндин ордуна окуп баштадым.). Курстун темасы менин адистигиме тангенциалдык түрдө гана байланыштуу болчу, бирок ал кеткенден кийин мен курсту окутууга эң мыкты талапкер болдум. Мага ошол кездеги окуу китептеринин бири да жакчу эмес, ошондуктан бул курстун окуу китебин өзүм жазып бүттүм. (Редакциянын эскертүүсү: сөз китеп жөнүндө болуп жатат) Азыр дүйнө жүзү боюнча 200дөн ашык университетте колдонулат. Менин мамилем адаттан тыш, анткени ал тилди иштеп чыгуу жана ишке ашыруу проблемаларын атайылап аралаштырып, бардык мүмкүн болгон тармактарда бул аспектилердин өз ара аракеттенүүсүнө чоң көңүл бурат. Негизги ыкма көптөгөн негизги түшүнүктөр сыяктуу өзгөрүүсүз калды: абстракциялар, аттар мейкиндиги, модулдук, типтер. Бирок бул түшүнүктөр көрсөтүлгөн тилдердин жыйындысы толугу менен өзгөрдү. Курс алгач түзүлгөндө Паскаль тилинде көптөгөн мисалдар бар болчу, бирок бүгүнкү күндө менин көптөгөн студенттерим бул тил жөнүндө уккан да эмес. Бирок алар Swift, Go, Rust тилдерин билишет, ошондуктан мен бүгүнкү күндө колдонулуп жаткан тилдер жөнүндө айтышым керек. Ошондой эле, студенттер азыр скрипт тилдерин жакшы билишет, бирок мен бул курсту окута баштаганда, бардыгы түзүлгөн тилдер жөнүндө болду. Азыр бизге Python, Ruby жана ал тургай Perl жөнүндө көптөгөн материалдар керек, анткени азыркы убакта дал ушундай код жазылат жана бул тилдерде, анын ичинде тилди долбоорлоо тармагында көп кызыктуу нерселер болуп жатат.
Vitali: Анда менин кийинки суроом мурунку суроого байланыштуу болот. Бул аймакта кантип сактануу керек? Мен мындай курсту жаңыртуу үчүн көп эмгекти талап кылат деп ойлойм – жаңы тилдерди түшүнүү, негизги идеяларды түшүнүү керек. Муну кантип кыласыз?
Майкл: Мен ар дайым 100% ийгиликке жетем деп мактана албайм. Бирок көпчүлүк учурда мен жөн гана башкалар кылганды жасайм - Интернетти окуйм. Эгерде мен Rustту түшүнгүм келсе, мен аны Google'да табам, Mozilla баракчасына өтүп, анда жарыяланган колдонмону окуйм. Бул коммерциялык өнүгүүдө болуп жаткан нерселердин бир бөлүгү. Эгерде илим жөнүндө айта турган болсок, анда негизги конференцияларда докладдарды ээрчиш керек.
Бизнес менен академиянын ортосундагы байланыш
Vitali: Бизнес менен илимий изилдөөлөрдүн байланышы тууралуу сөз кылалы. Сиздин чыгармаларыңыздын тизмесинен мен кэш когеренттүүлүгү боюнча бир нече макалаларды таптым. Мен кэш ырааттуулугу алгоритмдери алар жарыяланган учурда туруксуз экенин түшүнөм? Же жетиштүү таралган эмес. Сиздин идеяларыңыз практикада канчалык кеңири таралган?
Майкл: Кайсы басылмалар жөнүндө айтып жатканыңызды так билбейм. Мен окуучуларым Билл Болоский менен бир топ иш жасадым () жана Леонидас Контотанассис () 1990-жылдардын башында Нейман машиналарынын эс тутумун башкаруу боюнча. Ал убакта бизнесте мультипроцессордук системаны кантип туура жасоо керектиги жөнүндө түшүнүк жок болчу: аппараттык деңгээлде алыскы эстутумга жетүү үчүн колдоону түзүү керекпи, эстутумду бөлүштүрүүгө татыктуубу, кэшти жүктөө мүмкүнбү? алыскы эстутум, же операциялык бөлмөдө барактарды жылдыруу керекпи? Билл менен Леонидас экөө тең бул чөйрөдө иштешкен жана алыскы кэш жүктөөсүз ыкмаларды изилдешкен. Бул кэштин когеренттүүлүгүнө түздөн-түз байланыштуу болгон эмес, бирок ал дагы эле NUMA эс тутумун башкаруу боюнча иштеген жана андан кийин заманбап операциялык системаларда баракты жайгаштыруу боюнча заманбап ыкмалар ушундан өсүп чыккан. Жалпысынан, Билл менен Леонидас бул тармакта эң таасирдүү болбосо да, маанилүү иштерди жасашты – ошол учурда ошол эле иштин үстүндө иштеген башка көптөгөн адамдар бар болчу. Кийинчерээк мен аппараттык транзакциялык эс тутумдун контекстинде кэш когеренттүүлүгүнө байланыштуу теманын үстүндө иштедим. Мен бул маселе боюнча иштеген топ бир нече патенттерди алып бүтүштү. Алардын артында абдан кызыктуу идеялар бар, бирок алар иш жүзүндө ишке ашат деп ойлобойм. Кандайдыр бир жол менен, мен үчүн алардын кирешелүүлүгүн баалоо кыйын.
Алексей: Ушуга байланыштуу жекече суроо: сиздин идеяларыңыздын ишке ашырылышы сиз үчүн канчалык маанилүү? Же ойлонбойсуңбу?
Майкл: Мен бул суроону факультетке кирүүнү каалаган башка адамдар, абитуриенттер же талапкерлер менен маектешкенде бергенди жакшы көрөм. Бул суроого туура жооп жок деп ойлойм. Салкын иштерди жасаган адамдардын мотивациялары ар кандай болушу мүмкүн. Мага көйгөйлөр кызыктырат, анткени мен аларды практикалык пайдасы үчүн эмес, жеке өзүмө кызыктуу деп эсептейм. Бирок, экинчи жагынан, кандайдыр бир кызыктуу нерсе дагы эле колдонмону тапканда, мага абдан жагат. Демек, бул жерде оңой эмес. Бирок менин ишимдин башында мен дагы эле дүйнөдө акыркы пайдалануу идеясы эмес, идеянын гармониясы жана аны изилдөө жана андан эмне пайда болорун көрүү каалоосу менен шартталган. Акыры практикалык натыйжаларды берсе, сонун.
Алексей: Сиздин билимиңиздин жана тажрыйбаңыздын аркасында сиз башкалардын идеяларынын баалуулугун башкаларга караганда жакшыраак баалай аласыз. Аларды салыштырып, кайсынысы жакшыраак экенин аныктай аласыз. Азыркы учурда Intel сыяктуу ири өндүрүүчүлөр тарабынан практикада колдонулуп жаткан нерселер тууралуу пикириңиз бар экенине ишенем. Сиздин көз карашыңыз боюнча, бул компаниялардын жүргүзүп жаткан багыты канчалык туура?
Майкл: Практика ар дайым коммерциялык жактан ийгиликтүү боло турган, башкача айтканда, пайда алып келе турган нерселердин тегерегинде айланат жана бул тууралуу башка бирөөдөн сурасаңыз жакшы болот. Менин ишим көбүнчө басылмаларда жыйынтыкталат, ал эми операциялык системалар тармагында алар аткаруу көрсөткүчтөрүнүн негизинде бааланат: ылдамдык, энергия керектөө, коддун өлчөмү. Бирок мага ар дайым бул эмпирикалык натыйжалар макалаларга жарыяланышы үчүн гана кошулуп, адамдардын эмгекке болгон чыныгы мотивдери эстетикалык болуп көрүнгөн. Изилдөөчүлөр чечимдерди көркөм көз караш менен баалашат, алар идеялардын канчалык жарашыктуу экенине кам көрүшөт жана учурдагы ыкмалардан жакшыраак нерсени түзүүгө аракет кылышат. Изилдөөчүлөр жеке, субъективдүү, эстетикалык мотивдер менен шартталган. Бирок бул жөнүндө макаланын өзүндө жаза албайсыз; Бактыга жараша, жарашыктуу чечимдер көбүнчө тез жана арзан болот. Мен ондогон кесиптештерим менен 15 жылдай мурун бул теманы талкуулап, акыры ал жөнүндө макала жазганбыз. Мен аны азыр деле таба аласыз деп ойлойм, ал деп аталат же ушуга окшогондор, анын ондон ашык авторлору бар. Бул мен бирге автор болгон жалгыз макала , андыктан менин адабияттар тизмемден анын атын издесеңиз, сизге керектүү нерсени табасыз. Анда системалык изилдөөлөрдү баалоо жана көрктүүлүк канчалык маанилүү экендиги жөнүндө айтылат.
Алексей: Демек, илим менен бизнесте жакшы деп эсептелген стандарттын ортосунда айырма бар. Илим өндүрүмдүүлүктү, энергияны керектөөнү, TDPди, ишке ашыруунун оңойлугун жана башка көптөгөн нерселерди баалайт. Сизде университетте мындай изилдөө жүргүзүүгө мүмкүнчүлүгүңүз барбы? Сизде эксперименттерди жүргүзө турган ар кандай машиналар жана ар кандай архитектура бар лаборатория барбы?
Майкл: Ооба, биздин белумде ар турдуу кызыктуу машиналар бар. Көбүнчө алар кичинекей, бизде кичинекей кластер жана ар кандай тездеткичтери бар көптөгөн мультипроцессордук системалар бар. Мындан тышкары, кампуста бир нече ондогон түрдүү дисциплиналардагы илимпоздорду тейлеген чоң эсептөө борбору бар. Анын миңге жакын түйүндөрү жана жыйырма миң өзөгү бар, бардыгы Linux'та. Зарылчылык жаралса, сиз ар дайым AWS сатып алсаңыз болот. Ошентип, бизде аппараттык камсыздоодо олуттуу чектөөлөр жок.
Алексей: Отуз жыл мурун кандай болгон? Анда көйгөйлөр болгонбу?
Майкл: Анда бир аз башкача болчу. 1980-жылдардын ортосунан аягында илимде эсептөө ресурстары жетишсиз деп эсептелген. Бул абалды оңдоо үчүн Улуттук илим фонду ) макулдашылган эксперименталдык изилдөөлөрдүн программасын түздү (Coordinated Experimental Research, CER). Программанын миссиясы информатика бөлүмдөрү үчүн эсептөө инфраструктурасын камсыз кылуу болгон жана ал олуттуу өзгөрүүлөргө жетишти. Ал берген акчага биз Рочестер университетинен 1984-жылы 128 түйүндүү BBN Butterfly сатып алдык, бул мен ал жакка келгениме бир жыл болгон. Ошол учурда бул жалпы эс тутуму бар дүйнөдөгү эң чоң мультипроцессордук система болгон. Анын ар бири өзүнчө аналык платада болгон 128 процессору болгон жана төрт стойканы ээлеген. Ар бир процессордо бир мегабайт эс тутум бар, 128 мегабайт оперативдик эс ал кезде ойго келбеген сумма болчу. Бул машинада биз биринчи жолу MCS кулпусун ишке ашырдык.
Алексей: Демек, мен сизди туура түшүнсөм, анда учурда аппараттык камсыздоо маселеси чечилдиби?
Майкл: Жалпысынан, ооба. Бир нече эскертүүлөр бар: биринчиден, эгер сиз компьютердин архитектурасын чип деңгээлинде жасап жатсаңыз, академиялык чөйрөдө муну жасоо кыйын, анткени бизнесте муну жасоо үчүн алда канча жакшы куралдар бар. Эгер сизге 10 нанометрден кичине нерсе керек болсо, аны башка бирөөнө заказ беришиңиз керек болот. Бул чөйрөдө Intelде изилдөөчү болуу алда канча оңой. Эгер сиз чиптерде же катуу абалдагы эс тутумда оптикалык коммуникациялардын үстүндө иштеп жатсаңыз, бизнесте илимде жок технологияларды табасыз, ошондуктан сиз альянстарды түзүшүңүз керек. Мисалы, Стивен Свонсон () түзүлгөн жаңы эс тутум технологиялары үчүн. Бул форма дайыма эле иштей бербейт, бирок кээ бир учурларда ал абдан ийгиликтүү болушу мүмкүн. Мындан тышкары, илимде эң кубаттуу эсептөө системаларын иштеп чыгуу кыйыныраак. Учурда АКШ, Япония жана Кытайдагы эң ири суперкомпьютер долбоорлору бизнеске багытталган.
Идеяларды практикалык ишке ашыруу. MCS, MS, CLH, JSR 166, Даг Ли жана башкалар менен иштешет.
Vitali: Сиз синхрондоштуруу алгоритмдери боюнча кантип иштей баштаганыңыз тууралуу айтып өттүңүз. Сиз жөнүндө абдан белгилүү эки макалаңыз бар и , кайсы бир мааниде Java ишке ашырылган. (Редакциянын эскертүүсү: бардык басылмаларды көрүүгө болот ). Ал жерде бул блокировка бир аз өзгөртүүлөр менен ишке ашырылган жана ал болуп чыкты , жана кезек күткөндөй ишке ашырылды. Бирок макалаларыңыздын жарыкка чыгышы менен аларды иш жүзүндө колдонуунун ортосунда көп жылдар өттү.
Алексей: Кезекте 10 жылдай болуп калды окшойт.
Майкл: Бул функциялар Java стандарттык китепканасында пайда боло электе?
Vitali: Ооба. Бул үчүн эмне кылдыңыз? Же алар эч нерсе кылышпадыбы?
Майкл: MS Queue Java 5ке кантип киргенин айтып бере алам. Ал чыкканга чейин бир нече жыл мурун мен Марк Мойерстин тобу менен Sun Microsystems компаниясынын Бостондун жанындагы лабораториясында иштегем. Ал көп агымдагы кызыктуу маселелердин үстүндө иштеп жаткан тааныш адамдар үчүн семинар уюштурган, анткени ал алардын компаниясына сата турган темаларды тапкысы келген. Мен Даг Ли менен биринчи жолу ошол жерден таанышкам. Даг экөөбүз жана Сандан келген 25тей киши Дагдын презентациясын талкуулап жатканбыз , кийинчерээк java.util.concurrent болуп калды. Жолдо баратып, Даг MS кезегин колдонгусу келерин айтты, бирок бул үчүн ага интерфейс үчүн кезектеги элементтердин саны үчүн эсептегич керек болчу. Башкача айтканда, бул өзүнчө бир ыкма менен, атомдук, так жана тез жасалышы керек эле. Мен жөн гана түйүндөргө сериялык номерлерди кошууну, биринчи түйүн менен акыркысынын номерин алып, бирин экинчисинен алып салууну сунуштадым. Даг башын тырмап, "эмнеге жок" деп, акыры ушуну менен бүттү. Биз китепканада бул ыкманы ишке ашырууну талкууладык, бирок Даг иштин көбүн өзү жасады. Натыйжада, ал Java-да эң сонун multithreading колдоосун түзө алды.
Алексей: Демек, эгер мен туура түшүнсөм, .size() ыкмасы стандарттык кезек интерфейсинин бир бөлүгү болушу керек жана ал O(1) алгоритмдик татаалдыгына ээ болушу керек эле?
Майкл: Ооба, жана буга кошумча, өзүнчө эсептегич талап кылынат.
Алексей: Анткени Java'да .size() ыкмасын чакырсаңыз, натыйжа коллекциянын чыныгы өлчөмүнө негизделбестен, дароо жеткиликтүү болушу күтүлөт. Түшүнүктүү, рахмат.
Майкл: Бир нече жылдан кийин мен студентим Билл Шерер менен кош маалымат структураларынын үстүндө иштеп жаттым - чындыгында, мен бул жөнүндө сүйлөшөм. . Даг бизге келип, аларды Java Executor Framework программасында колдоно аларын айтты. Билл менен бирге алар адилет жана адилетсиз кезек деп аталган эки ишке ашырууну түзүштү. Мен чыныгы кодду жазууга катышпасам да, бул долбоор боюнча аларга кеңеш бердим. Натыйжада аткаруучулардын ылдамдыгы бир кыйла жогорулады.
Владимир: Алгоритмдериңиздин туура эмес ишке ашырылышына же жаңы функцияларды кошуу өтүнүчтөрүңүзгө туш болдуңуз беле? Жалпысынан алганда, практика теория менен дал келиши керек, бирок алар көп учурда айырмаланат. Алгоритмди жаздыңыз дейли, кагаз жүзүндө ал иштейт, бирок ишке ашырууга катышкан адамдар сизден алгоритмдин кошумча функцияларын же кандайдыр бир оңдоп-түзөөнү сурай башташты. Сизде ушундай жагдайлар болгонбу?
Майкл: Кимдир бирөө мага келип, "аны кантип ишке ашыруу керек" деп сураган жалгыз мисал, мен буга чейин айткан Дагдын суроосу болгон. Бирок практикалык муктаждыктарга ылайыктуу кызыктуу өзгөртүүлөр киргизилген бир нече учурлар болгон. Мисалы, IBMдеги K42 командасы MCS кулпусун өзгөртүп, аны стандарттуу интерфейске айландырды, андыктан кезек түйүнүн алдыга жана артка өткөрүп алуунун жана алуу жана чыгаруу тартибине өтүүнүн кереги жок болчу. Бул стандарттык интерфейстин аркасында теориялык жактан кооз идея иш жүзүндө иштей баштады. Таң калыштуусу, алар бул тууралуу эч качан макала жарыялашкан эмес, патент алышканы менен, кийинчерээк андан баш тартышкан. Идея сонун экен, мүмкүн болушунча бул тууралуу айтууга аракет кылам.
Адамдар мен жарыялаган алгоритмдерди өркүндөткөн башка учурлар болгон. Мисалы, MS кезегинде эки баскычтуу орнотуу механизми бар, бул кезектин критикалык жолунда эки CAS бар экенин билдирген. Эски унааларда CAS абдан кымбат болчу. Intel жана башка өндүрүүчүлөр аларды жакында абдан жакшы оптималдаштырышкан, бирок бир жолу бул 30 циклден турган көрсөтмөлөр болгон, андыктан критикалык жолдо бирден ашык болушу керек эмес. Натыйжада, MS кезегиндей болгон, бирок критикалык жолдо бир гана атомдук операция болгон башка кезек иштелип чыккан. Бул белгилүү бир убакыттын ичинде операция О(1) эмес, O(n) убакытты алышы мүмкүн болгондугунун аркасында жетишилди. Бул мүмкүн эмес болчу, бирок мүмкүн. Бул белгилүү бир моменттерде алгоритм кезектен ушул кезектеги учурдагы абалга чейин басып өткөндүгүнө байланыштуу болду. Жалпысынан алганда, алгоритм абдан ийгиликтүү болуп чыкты. Менин билишимче, ал өтө кеңири колдонулбайт, себеби жарым-жартылай атомдук операциялар мурункуга караганда кыйла азыраак ресурстарды талап кылат. Бирок идея сонун болду. Мага Oracleдан Дэйв Дистин иши абдан жагат. Анын бардык иштери абдан практикалык жана темирди абдан акылдуу колдонот. Ал NUMA-билдирүү синхрондоштуруу алгоритмдердин жана көп жиптүү маалымат структураларынын көбүндө колу бар болчу.
Владимир: Алгоритмдерди жазганыңызда же окуучуларды үйрөткөнүңүздө, ишиңиздин натыйжасы дароо көрүнбөйт. Коомчулукка, айталы, жаңы макала менен таанышуу үчүн бир аз убакыт керек. Жаңы алгоритм дароо колдонмону таба албайт.
Майкл: Макаланын маани-маңызы барбы же жокпу, дароо эле түшүнүктүү эмес. Конференцияларда сыйлыктарга ээ болгон эмгектерди изилдөө кызыктуу болот деп ойлойм. Башкача айтканда, бир убакта программалык комитеттердеги адамдар эң жакшы деп эсептеген макалаларды карагыла. Шилтемелердин саны жана бизнеске тийгизген таасири боюнча бул макалалар чындап эле 10, 20, 25 жыл ичинде канчалык таасирдүү болгонун эсептөөгө аракет кылышыңыз керек. Экөөнүн ортосунда күчтүү корреляция болот деп күмөн санайм. Бул нөл болбойт, бирок биз каалагандан алда канча алсызыраак болот. Көптөгөн идеялар кеңири жайылганга чейин узак убакытка чейин талап кылынбайт. Мисалы, транзакциялык эстутумду алалы. Баштапкы макала жарыялангандан баштап, адамдар аны менен машиналарды жасай баштаганга чейин 10 жылдан ашык убакыт өттү. Ал эми коммерциялык продуктыларда бул эс пайда болгонго чейин - жана бардыгы 20. Узак убакыт бою эч ким макалага көңүл бурган эмес, андан кийин ага шилтемелердин саны кескин көбөйгөн. Муну алдын ала айтуу кыйын болмок. Башка жагынан алганда, кээде идеялар дароо ишке ашат. Бир нече жыл мурун, мен Джо Израэлевиц менен DISC үчүн кагаз жаздым, анда туруктуу маалымат структураларынын жарактуулугунун жаңы расмий аныктамасын сунуш кылган, аларды иштеткен компьютер кыйрагандан кийин колдонулушу мүмкүн. Мага макала башынан эле жакты, бирок мен күткөндөн алда канча популярдуу болуп чыкты. Ал бир нече түрдүү топтор тарабынан колдонулган жана акыры туруктуулук структураларынын стандарттык аныктамасы болуп калды. Кайсы, албетте, жакшы.
Владимир: Сиз баалоо үчүн колдонгон ыкмалар барбы? Сиз макалаларыңызга жана студенттериңизге баа берүүгө аракет кыласызбы? Сиз окуткан адам туура жолдо баратабы деген жагынан.
Майкл: Башкалардай эле, мен да учурда эмне кылып жатканыма көбүрөөк көңүл бурам. Дагы, башкаларга окшоп, мен Google Scholarды анда-санда текшерип турам, менин мурунку документтериме цитата келтирилгенби, бирок бул кызыкчылыктан улам. Көбүнчө мен окуучуларымдын азыр жасап жаткан иштери менен алекмин. Учурдагы ишти баалоого келгенде, анын бир бөлүгү эстетикалык ой-пикирлер, эмнелер жарашыктуу, эмнеси жок. Ал эми күнүмдүк деңгээлде ачык суроолор чоң роль ойнойт. Мисалы, студент мага кандайдыр бир жыйынтыктардын графигин алып келип жатат, биз графиктин кызыктай жүрүм-туруму кайдан келгенин түшүнүүгө аракет кылып жатабыз. Дегеле биздин ишибизде биз түшүнө элек нерселерди такай түшүнүүгө аракет кылабыз.
Транзакциялык эс
Vitali: Балким, биз транзакциялык эс жөнүндө бир аз сүйлөшө алабыз?
Майкл: Менин оюмча, аз да болсо айтып коюу керек, анткени мен буга көп күч жумшадым. Бул башка темаларга караганда менде көбүрөөк басылмалар бар. Бирок ошол эле учурда, таң калыштуусу, мен ар дайым транзакциялык эстутумга абдан ишенчүмүн. Менин көз карашымда, (М. Херлихи, Дж. Э. Б. Мосс) өз убагында жарык көргөн. 1990-жылдардын башында алар транзакциялык эстутум таланттуу программисттерге көп агымдуу маалымат түзүмдөрүндө иштөөгө жардам бере алат, ошондуктан бул структуралар андан кийин жөнөкөй программисттер тарабынан китепкана катары колдонулушу мүмкүн деп айтышкан. Башкача айтканда, бул Дуг Ли үчүн JSR 166 жасоого жардам болмок. Бирок транзакциялык эс тутум көп агымдуу программалоону жеңилдетүү үчүн арналган эмес. Бирок 2000-жылдардын башында кеңири жайыла баштаганда дал ушундай кабыл ала баштаган. Бул параллелдүү программалоо маселесин чечүү жолу катары жарнамаланган. Бул ыкма мага дайыма үмүтсүз болуп көрүндү. Транзакциялык эс параллелдүү маалымат структураларын жазууну жеңилдете алат. Бул, менин оюмча, ал жетишкен нерсе.
Көп жиптүү кодду жазуу кыйынчылыгы жөнүндө
Алексей: Абдан кызыктуу. Кадимки программисттер менен көп жиптүү код жаза алгандардын ортосунда белгилүү бир тоскоолдук бар окшойт. Өткөн жылы мен кээ бир алгоритмдик негиздерди ишке ашырып жаткан адамдар менен бир нече жолу сүйлөштүм. Мисалы, Мартин Томсон менен, ошондой эле көп жиптүү китепканаларда иштеген программисттер менен. (Редактордун эскертүүсү: Мартин Томпсон абдан белгилүү иштеп чыгуучу, деп жазган и . Жана ал да бар биздин Joker 2015 конференциябызда, видео жазуу . Ал ошол эле бул конференция да бар). Алардын айтымында, негизги көйгөй алгоритмдерди тез жана колдонууга оңой кылуу. Башкача айтканда, алар бул тоскоолдуктан өтүп, бул аймакка мүмкүн болушунча көп адамдарды тартууга аракет кылып жатышат. Сиз бул тууралуу кандай ойлойсуз?
Майкл: Бул көп агымдын негизги көйгөйү: системанын татаалдыгын жогорулатпастан кантип жогорку көрсөткүчтөргө жетишүү керек.
Алексей: Анткени алар татаалдан качууга аракет кылганда, алгоритм азыраак универсалдуу болуп калат.
Майкл: Бул жерде ачкыч туура иштелип чыккан абстракциялар. Менин оюмча, бул жалпысынан талаа катары компьютердик системалар үчүн негизги нерсе. Батлер Лэмпсон бул терминди колдонгонду жакшы көрөт жана ал бизди "абстракциялардын соодагерлери" деп атайт. Жөнөкөй технологиялар бүгүн жок. Биз колдонгон процессорлордо 10 миллиард транзистор бар — жөнөкөйлүккө сөз жок. Ошол эле учурда ISA процессорго караганда алда канча жөнөкөй, анткени биз аны жогорку өндүрүмдүүлүк жана салыштырмалуу жөнөкөй интерфейс менен камсыз кылуу үчүн көп убакыт иштедик. Бирок аны менен баары тең эмес. Ошол эле көйгөй азыр базарда пайда болгон акселераторлордо. Суроолор туулат - GPU үчүн туура интерфейсти кантип жасоо керек, шифрлөө механизми, кысуу, коддоо механизми, сызыктуу алгебра механизми, ал тургай ийкемдүү FPGA. Куралды колдонууну жеңилдеткен жана татаалдыгын жашырган интерфейсти кантип түзүүгө болот? Бул андан арылбайт, тескерисинче, аны жөнөкөй программисттен жашырат.
Алексей: Мен түшүнгөндөй, бизде абстракцияларды түшүнүүдө дагы деле тоскоолдуктар бар. Биздин илим менен техниканын өнүгүү этабында эс тутумдун моделин алалы, бул негизги абстракциялардын бири; Анын аркасында бардык программисттер эки топко бөлүнөт: чоң бөлүгү – түшүнбөгөндөр, ал эми кичине бөлүгү – түшүнгөндөр, же түшүнөм деп ойлогондор.
Майкл: Бул жакшы суроо - ар бирибиз эс тутум моделин түшүнөбүзбү?
Vitali: Өзгөчө C++ тилинде.
Майкл: Кээде Ханс Боем менен сүйлөшкүлө. Ал мен билген эң акылдуу адамдардын бири, эс тутум моделдери боюнча алдыңкы адис. Ал түшүнбөгөн көп нерсе бар экенин дароо айтып берет. Бирок абстракциялар маселесине кайрыла турган болсок, анда, менин оюмча, акыркы 30 жылдын ичинде эс тутум моделдери жаатындагы эң маанилүү идея айтылган. . (Редакциянын эскертүүсү: басылмалардын толук тизмеси бар ).
Алексей: Менин суроом: бул тоскоолдук түшүнүктүн табиятынан келип чыгабы?
Майкл: Жок. Сарита туура мамиле менен бардык татаалдыкты ийгиликтүү жашырып, жогорку көрсөткүчтөргө ээ болуп, программистке жөнөкөй API бере алат деген жыйынтыкка келди. Жана бул API ээрчисеңиз, ырааттуу ырааттуулукка жетише аласыз. Мен бул туура модель деп ойлойм. Кодду маалымат жарыштары жок жазыңыз жана ырааттуу ырааттуулукка ээ болуңуз. Албетте, жарыш ыктымалдыгын азайтуу үчүн, атайын аспаптар керек, бирок бул башка маселе.
Владимир: Чыгармачылык жолуңузда чечилип калгандай көрүнгөн маселе капысынан катастрофага айланган же бул маселе чечилбес болуп калган учурлар болду беле? Мисалы, теорияда сиз каалаган санды факторлорго бөлсөңүз же кандайдыр бир сандын жөнөкөй экенин аныктай аласыз. Бирок иш жүзүндө муну жасоо кыйын болушу мүмкүн, азыркы аппараттык камсыздоо менен сандарды аныктоо кыйын; Сизде да ушундай окуя болдубу?
Майкл: Мен дароо эле мындай эч нерсе эсимде жок. Мага белгилүү бир аймакта кыла турган эч нерсе калбай калгандай сезилген, бирок кийин ал жерде жаңы жана кызыктуу бир нерсе болуп кеткен учурлар болгон. Мисалы, мен чексиз кезекте турган аймак эбак эле жетилген деп ойлогом. MNS кезеги бир нече жакшыртылгандан кийин, мындан ары эч нерсе болгон жок. Анан Моррисон (Адам Моррисон) жана Афек (Йехуда Афек) ойлоп табышкан . Чексиз көп жиптүү кезек мүмкүн экени айкын болду, мында көпчүлүк учурда критикалык жолдо алып келүү жана көбөйтүү инструкциясы гана болгон. Бул болсо, жакшы көрсөткүчтөргө жетишүүгө мүмкүндүк берди. Бул алып келүү жана көбөйтүү абдан пайдалуу нерсе экенин билбегенибизден эмес. Бул тууралуу Эрик Фрейдентал 1980-жылдардын аягында Аллан Готтлиб менен Ultracomputer боюнча эмгегинде жазган, бирок кеп чектелүү кезектер жөнүндө болгон. Моррисон менен Афек чексиз кезекте алуу жана көбөйтүүнү колдоно алышты.
Жаңы архитектуралар. Транзакциялык эстутумдун жеңиши жакынбы?
Владимир: Алгоритмдер үчүн пайдалуу боло турган жаңы архитектуралык чечимдерди издеп жатасызбы?
Майкл: Албетте, мен ишке ашырылышын каалай турган көп нерселер бар.
Владимир: Мисалы, кандай?
Майкл: Биринчиден, Intel жана IBM процессорлорунда аппараттык деңгээлдеги транзакциялык эс тутумубузга бир нече жөнөкөй кеңейтүүлөр. Тактап айтканда, мен транзакциялык эмес жүктөмдү жана транзакциялардын ичинде дароо жеткиликтүү болушун каалайт элем. Алар дароо эле болуп өткөн ырааттуулукта илмектерге алып келет, ошондуктан алар кыйын болушу мүмкүн. Бирок, эгер сиз абстракциянын катмарларын сактасаңыз, транзакция болуп жатканда, сиз транзакциядан тышкары жасай турган көптөгөн кызыктуу нерселер бар. Муну ишке ашыруу канчалык кыйын экенин билбейм, бирок бул абдан пайдалуу болмок.
Дагы бир пайдалуу нерсе - алыскы эстутумдан кэш жүктөө. Эртеби кечпи бул ишке ашат деп ойлойм. Бул технология ажыратылган эс тутумдарды түзүүгө мүмкүндүк берет. Стеллажда, айталы, 100 терабайт туруксуз эстутумду сактоого мүмкүн болмок жана операциялык система өзү ал эстутумдун кайсы бөлүмдөрү процессорлордун физикалык дарек мейкиндигине туура келээрин динамикалык түрдө чечет. Бул булуттагы эсептөө үчүн абдан пайдалуу болмок, анткени ал чоң көлөмдөгү эстутумду талап кылган тапшырмаларга берүүгө мүмкүндүк берет. Мен муну кимдир бирөө жасайт деп ойлойм.
Vitali: Транзакциялык эстутум жөнүндө сөздү бүтүрүү үчүн, менде бул тема боюнча дагы бир суроом бар. Транзакциялык эс акыры стандарттуу көп жиптүү маалымат структураларын алмаштырабы?
Майкл: Жок. Транзакциялар – бул спекуляциялык механизм. Программалоо деңгээлинде бул атомдук кулпулар, бирок алардын ичинде божомолдор бар. Мындай болжолдоо болжолдоолордун көбү туура болсо иштейт. Ошондуктан, транзакциялык эс жиптер бири-бири менен дээрлик өз ара аракеттенгенде жакшы иштейт жана сиз жөн гана өз ара аракеттенишүүлөр жок экенине ынанышыңыз керек. Бирок жиптердин ортосунда билдирүү башталса, транзакциялардын пайдасы аз. Түшүндүрүп берейин, биз бүткүл атомдук операциянын айланасында транзакциялар жасалган учур жөнүндө сөз болуп жатат. Алар дагы эле көп жиптүү маалымат структуралары үчүн компоненттер катары ийгиликтүү колдонулушу мүмкүн. Мисалы, эгер сизге үч сөздөн турган CAS керек болсо, жана сиз бир эле учурда жыйырма жип менен иштеген чындап көп агымдуу алгоритмдин ортосунда үч кичинекей нерсени көп жип менен бөлүшүңүз керек болсо. Жалпысынан алганда, транзакциялар пайдалуу болушу мүмкүн, бирок алар көп жиптүү маалымат структураларын туура долбоорлоо зарылдыгын жокко чыгарбайт.
Туруктуу эстутум, Optane DIMM, өтө тез түзмөктөр.
Vitali: Мен айткым келген акыркы нерсе - бул сиздин учурдагы изилдөөңүздүн темасы: өзгөрүлмө эстутум. Жакынкы келечекте бул чөйрөдө эмнени күтсө болот? Балким, сиз буга чейин бар болгон кандайдыр бир натыйжалуу ишке ашырууну билесизби?
Майкл: Мен аппараттык адис эмесмин, мен жаңылыктардан эмнени окуганымды жана кесиптештеримдин айтканын гана билем. Ар бир адам буга чейин Intel сатат деп уккан динамикалык оперативдик эстутумга караганда окуу кечигүү убактысы болжол менен 3 эсе жана жазуу кечигүү 10 эсе көп. Алар жакында өтө чоң көлөмдөгү версияларда жеткиликтүү болот. Сизде бир нече терабайт байт даректүү оперативдүү эс тутуму бар ноутбук болушу мүмкүн деп ойлогонуңуз күлкүлүү. 10 жылдан кийин биз бул жаңы технологияны колдонууну чечишибиз мүмкүн, анткени биз DRAM колдонобуз - жөн гана көлөмүн көбөйтүү. Бирок энергетикалык көз карандысыздыктын аркасында биз үчүн таптакыр жаңы мүмкүнчүлүктөр ачылууда. Байт даректүү иштөө эстутуму менен блок-структураланган туруктуу эстутум ортосунда эч кандай бөлүнүү болбошу үчүн биз сактагыч стекти түп тамырынан бери өзгөртө алабыз. Ошентип, бир программадан экинчисине өткөрүлүшү керек болгон нерселердин баарын блоктук структураланган файлдарга сериялаштыруунун кереги жок. Мындан биз операциялык системаларга, иштөө чөйрөсүнө жана бөлүштүрүлгөн маалымат кампаларына таасир этүүчү көптөгөн маанилүү принциптерди ала алабыз. Бул аймакта иштөө абдан кызыктуу. Жеке мен үчүн мунун баары эмнеге алып келерин алдын ала айтуу кыйын, бирок бул жердеги көйгөйлөр абдан кызыктуу. Бул жерде революциялык өзгөрүүлөр болушу мүмкүн жана алар көп агым боюнча иштөөдөн табигый түрдө келип чыгышы мүмкүн, анткени каталарды калыбына келтирүү системанын нормалдуу иштешинен кийинки "көп агым" процесси.
Мен азыр иштеп жаткан экинчи негизги тема - бул өтө тез түзмөктөрдү башкаруу жана системалык саясатты көзөмөлдөө менен колдонуучулар мейкиндигинен түзмөктөргө коопсуз жетүү. Акыркы жылдары түзмөккө кирүү мүмкүнчүлүгүн колдонуучулардын мейкиндигине жылдыруу тенденциясы байкалды. Бул ар бир 5 микросекунд сайын жаңы пакетке муктаж болгон тармак интерфейсинин үстүндө TCP-IP ядро стек иштей албайт; Ошондуктан, өндүрүүчүлөр түзмөктөргө түздөн-түз мүмкүнчүлүк берет. Бирок бул операциялык тутум процессти башкарууну жоготот жана ал атаандаш тиркемелер үчүн түзмөккө туура кирүү мүмкүнчүлүгүн камсыз кыла албайт дегенди билдирет. Биздин илимий топ бул кемчиликти болтурбай коюуга болот деп эсептейт. Ушул айда USENIX ATCде бул тууралуу макалабыз болот. Бул туруктуулук боюнча иштөөгө байланыштуу, анткени узак мөөнөттүү байт даректүү туруктуу эс тутум, негизи, колдонуучу мейкиндигинде кирүүгө муктаж болгон ультра тез киргизүү/чыгаруу менен түзүлүш. Бул изилдөө микро ядролорго, экзокернелдерге жана башка салттуу аракеттерге жаңы ыкмаларды OS ядросунан колдонуучу мейкиндигине коопсуз жылдырууга мүмкүндүк берет.
Владимир: Байт даректүү эс сонун, бирок физикалык чектөө бар - жарык ылдамдыгы. Бул аппарат менен өз ара аракеттенүүдө сөзсүз кечигүү болот дегенди билдирет.
Майкл: Туптуура.
Владимир: Жаңы жүктөрдү көтөрүүгө кубаттуулуктар жетеби?
Майкл: Бул эң сонун суроо, бирок мен үчүн жооп берүү кыйын болот. Эстутумда иштетүү идеясы бир топ убакыттан бери болуп келген, бул абдан кызыктуу, бирок ошондой эле абдан татаал. Мен бул жаатта иштеген жокмун, бирок ал жактан кандайдыр бир ачылыштар жасалса жакшы болмок. Мен дагы кошумчалай турган эч нерсем жок деп корком.
Владимир: Дагы бир көйгөй бар. Жаңы, кыйла чоңураак көлөмдөгү оперативдүү эстутум процессорго туура келбейт. Ошондуктан, физикалык чектөөлөрдөн улам, бул RAM обочолонушу керек.
Майкл: Бардыгы интегралдык микросхемаларды чыгаруудагы кемчиликтердин санына жараша болот. Эгерде жарым өткөргүч пластиналарды толук кемчиликсиз түзүү мүмкүн болсо, андан бүтүндөй микросхеманы жасоого болот эле. Бирок азыр биз почта маркаларынан чоңураак микросхемаларды кантип жасоону билбейбиз.
Владимир: Бирок биз дагы эле эбегейсиз чоң өлчөмдөр жөнүндө, болжол менен сантиметр жөнүндө айтып жатабыз. Бул сөзсүз түрдө кечиктирүүгө таасирин тийгизет.
Майкл: Ооба. Жарыктын ылдамдыгы жөнүндө эч нерсе кыла албайсыз.
Владимир: Тилекке каршы.
Кийинки чоң тренд. Кош маалымат структуралары. Гидра.
Vitali: Мен түшүнүшүм боюнча, сиз жаңы тенденцияларды абдан тез кармайсыз. Сиз транзакциялык эс тутумда биринчилерден болуп иштегендердин бири болдуңуз жана туруксуз эс тутумда биринчилерден болуп иштегенсиз. Кийинки чоң тренд кандай болот деп ойлойсуз? Же балким бул сырдыр?
Майкл: Чынын айтсам, билбейм. Мен жаңы нерсе чыкканда байкай алам деп үмүттөнөм. Мен өз алдымча кандайдыр бир жаңы тармакты ойлоп табуу бактысына ээ болгон жокмун, бирок мен бир нече жолу ийгиликке жетип, башкалар жараткан жаңы тармактарда эртерээк иштей баштадым. Келечекте бул ишти жасай алам деп ишенем.
Алексей: Бул интервьюдагы акыркы суроо Hydraдагы ишиңиз жана мектептеги ишиңиз тууралуу болот. Эгер мен туура түшүнсөм, мектептеги отчет блоктоосуз алгоритмдер жөнүндө, ал эми конференцияда кош маалымат структуралары жөнүндө болот. Бул отчеттор боюнча бир нече сөз айта аласызбы?
Майкл: Жарым-жартылай, биз бул маекте сиз менен бул темаларга токтолгонбуз. Бул менин студентим Билл Шерер менен кылган ишим жөнүндө. Ал бул боюнча тезис жазган жана Даг Ли да ага өз салымын кошкон жана бара-бара ал Java китепканасындагы көп жиптүү синхрондуу кезектердин бир бөлүгү болуп калган. Берилиштер структурасы бөгөттөлбөстөн окулат жана жазылат деп ойлойлу, башкача айтканда, ар бир операциянын критикалык жолдо чектелген саны бар. Эгер сиз бош контейнерден берилиштерди алып салууга аракет кылсаңыз же бул контейнерде жок айрым маалыматтарды алып салууга аракет кылсаңыз, сизге дароо муну жасоо мүмкүн эместиги кабарланат. Бирок жип чындап эле бул маалыматтарга муктаж болсо, бул жүрүм-турум кабыл алынбашы мүмкүн. Андан кийин акылга келген биринчи нерсе - керектүү маалыматтар пайда болгон-болбогонун дайыма сурап турган циклди түзүү. Бирок андан кийин башкалар үчүн кийлигишүү бар. Мындан тышкары, бул ыкма менен, сиз 10 мүнөт күтө аласыз, андан кийин кандайдыр бир башка жип келет, ал кокусунан биринчи керектүү маалыматтарды алат. Кош маалымат структураларында дагы эле кулпулар жок, бирок алар жиптерди туура күтүүгө мүмкүндүк берет. "Кош" термини структурада же берилиштер же маалыматтарга суроо-талаптар бар экенин билдирет, келгиле, аларды анти-маалымат деп атайлы. Демек, сиз бош контейнерден бир нерсе алууга аракет кылсаңыз, анын ордуна контейнерге суроо-талап коюлат. Эми жип башка эч кимге тоскоолдук кылбастан суроо-талапты күтө алат. Кошумчалай кетсек, берилиштер структурасы суроо-талаптарга артыкчылыктарды дайындайт, андыктан келип түшкөндө аларды керектүү адамга өткөрүп берет. Натыйжада дагы эле расмий спецификациясы жана иш жүзүндө жакшы көрсөткүчтөрү бар кулпуланбаган механизм.
Алексей: Бул маалымат структурасынан кандай күтөсүз? Ал бардык жалпы учурларда иштешин жакшыртабы же белгилүү бир жагдайларга ылайыктуубу?
Майкл: Биринчиден, сизге кулпусу жок контейнер керек болсо, ал эми экинчиден, анда жок контейнерден маалыматтарды алуу керек болгон кырдаалда күтүшүңүз керек болсо, пайдалуу. Менин билишимче, биздин алкак ушул эки шарт аткарылганда оптималдуу жүрүм-турумду камсыз кылат. Ошондуктан, бул учурларда мен аны колдонууну сунуштайм. Кулпусуз маалымат структураларынын негизги артыкчылыгы - алар аткаруу көйгөйлөрүн болтурбоо. Жана күтүү көптөгөн алгоритмдерде өтө маанилүү, эгерде маалыматтар бир жиптен экинчисине өткөрүлсө.
Vitali: Тактап берейин: мектепте да, конференцияда да бир эле нерсе жөнүндө сүйлөшөсүзбү?
Майкл: Мектепте жалпысынан сабактын башында баяндалган негизги принциптери менен көп агымдуу маалымат структуралары жөнүндө. Мен аудитория жип деген эмне экенин билет жана кулпулар менен тааныш деп ойлойм. Бул негизги билимдин негизинде, мен кулпусуз маалымат структуралары жөнүндө сүйлөшөм. Мен эс тутумду башкаруу сыяктуу темаларга токтолуп, бул чөйрөдөгү эң маанилүү көйгөйлөргө сереп салам. Мен MS кезекте караганда татаал эч нерсе болбойт деп ойлойм.
Алексей: Мектепте классыңыздын аягында кош маалымат структуралары жөнүндө үйрөтүүнү пландап жатасызбы?
Майкл: Мен аларды айтам, бирок мен аларга көп убакыт коротпойм. Гидра баяндамасы аларга арналат. Ал акырында Javaга кирген долбоорду камтыйт, ошондой эле Джо Исраилевич менен LCRQ кезегинин кош вариантын түзүү жана кош маалымат структуралары үчүн универсалдуу дизайнды түзүү боюнча иштешет.
Алексей: Ошентип, мектепте лекция үйрөнчүктөр үчүн сунуш кылынышы мүмкүн, ал эми Hydra боюнча кош маалымат структуралары боюнча лекция - буга чейин кандайдыр бир тажрыйбасы бар адамдар үчүн?
Майкл: Эгерде мен туура эмес болсом, мени оңдоңуз, бирок Hydra аудиториясы абдан ар түрдүү болот, анын ичинде көптөгөн Java адистери жана жалпысынан көп жиптүү программалоо менен алектенбеген адамдар.
Vitali: Ооба, бул чын.
Алексей: Жок дегенде биз ошондой үмүттөнөбүз.
Майкл: Бул учурда, мен ушул интервьюну баштаган ошол эле көйгөйгө туш болом: кантип отчетту техникалык деталдарга жетишерлик бай жана бардык угуучуларга жеткиликтүү кылуу керек.
Vitali: Сиз лекция окугандай эле доклад жасайсызбы? Башкача айтканда, аудитория менен сүйлөшүп, кырдаалга ылайыкташат?
Майкл: Мен корком, андай болбой калат, анткени баяндамада слайддар болот. Слайддар угуучулар башында ар кандай тилдерде сүйлөгөндө маанилүү. Көптөргө англисче мени түшүнүү кыйынга турат, өзгөчө мен өтө тез сүйлөсөм. Мен бул темаларды тандадым, анткени SPTDC мектебинде кулпусуз маалымат түзүмдөрү жөнүндө сүйлөшүүнү суранды; анан мага Java колдонуучулар тобунун конференциясы үчүн отчет керек болчу жана мен Java программисттерин кызыктырган нерсени тандагым келди. Эң оңой жолу - Java китепканасында менин колум болгон нерселер жөнүндө сүйлөшүү.
Алексей: Биз Hydraдагы аудитория кулпусуз программалоо жөнүндө бир нерсе билишет жана бул жаатта кандайдыр бир тажрыйбасы бар деп ойлойбуз. Бирок бул жагдай конференциянын өзүндө айкын болот. Эмнеси болсо да, убактыңыз үчүн рахмат. Маек биздин окурмандар үчүн абдан кызыктуу болот деп ишенем. Чоң рахмат!
Vitali: Рахмат.
Майкл: Мен сиз менен Санкт-Петербургда таанышканыма кубанычтамын.
Алексей: Биздин да кооз шаарыбыз бар. Сиз бул жерде болдуңуз беле?
Майкл: Жок, мен Россияга такыр барган эмесмин. Бирок Санкт-Петербург дайыма мен бара элек, бирок мен чындап баргым келген жерлердин тизмесинде болгондуктан, чакырууга абдан кубандым.
Алексей: Айтмакчы, бизде ораторлор учун экскурсиялардын программасы болот. Маегиңиз үчүн чоң рахмат, күнүңүз жакшы өтсүн!
Майкл менен маегиңизди 2019-жылдын 11-12-июлунда Санкт-Петербург шаарында өтө турган Hydra 2019 конференциясында уланта аласыз. Ал отчет менен келет . Билеттерди сатып алса болот .
Source: www.habr.com
