"Эмпирик үр дүн нь зөвхөн хэвлэн нийтлэх зориулалттай бөгөөд ажлын жинхэнэ сэдэл нь гоо зүйн шинж чанартай байдаг." Майкл Скотттой хийсэн гайхалтай ярилцлага

"Эмпирик үр дүн нь зөвхөн хэвлэн нийтлэх зориулалттай бөгөөд ажлын жинхэнэ сэдэл нь гоо зүйн шинж чанартай байдаг." Майкл Скотттой хийсэн гайхалтай ярилцлага Майкл Скотт - аль хэдийн 34 настай Рочестерийн их сургуулийн компьютерийн шинжлэх ухааны профессор, Висконсин-Мэдисоны их сургуульд таван жил деканаар ажилласан. Тэрээр параллель болон тархсан програмчлал, хэлний дизайны талаар судалж, оюутнуудад заадаг.

Дэлхий Майклыг сурах бичгээс нь мэддэг "Програмчлалын хэлний прагматик", ажил яах вэ "Хуваалцсан санах ойн олон процессор дээр өргөтгөх боломжтой синхрончлолын алгоритмууд" Дийкстрагийн шагналыг тархсан тооцооллын салбарт хамгийн алдартай хүмүүсийн нэгээр хүлээн авсан. Та түүнийг яг тэр алгоритмын зохиогч гэдгээр нь мэдэх байх Майкл-Скотт.

Даг Литэй хамт тэрээр Java номын сангуудыг тэжээдэг блоклохгүй алгоритмууд болон синхрон дарааллыг боловсруулсан. Хэрэгжилт "давхар өгөгдлийн бүтэц" JavaSE 6 дээр гүйцэтгэлийг 10 дахин сайжруулсан ThreadPoolExecutor.

Агуулга:

  • Эрт карьер, Рочестерийн их сургууль. Project Charlotte, Lynx хэл;
  • IEEE Scalable Coherent Interface, MCS түгжих;
  • Үргэлж өөрчлөгдөж буй ертөнцөд амьд үлдэх;
  • Оюутнууд тэнэг болж байна уу? Дэлхийн чиг хандлага, олон улсын байдал;
  • Оюутнуудтай үр дүнтэй ажиллах;
  • Шинэ хичээл, ном бэлтгэх ажлыг хэрхэн гүйцэлдүүлэх;
  • Бизнес ба академийн хоорондын холбоо;
  • Санаа бодлыг практик хэрэгжүүлэх. MCS, MS, CLH, JSR 166, Doug Lee болон бусадтай хамтран ажиллах;
  • Гүйлгээний санах ой;
  • Шинэ архитектурууд. Гүйлгээний санах ойн ялалт ойрхон байна;
  • Тогтворгүй санах ой, Optane DIMM, хэт хурдан төхөөрөмжүүд;
  • Дараагийн том чиг хандлага. Давхар өгөгдлийн бүтэц. Гидра.

Ярилцлагыг дараах хүмүүс явуулна.

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

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

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

Эрт карьер, Рочестерийн их сургууль. Шарлотт төсөл, Линкс хэл.

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

Майкл байна: Манай салбар маш олон талт, маш олон чиглэлтэй, нийгэмд маш олон янзаар нөлөөлж байгаа тул би танд тодорхой хариулт өгөхөд хэцүү байна. Гэвч энэ нь өнгөрсөн 30 жилийн хугацаанд бизнес, үйлдвэрлэл, урлаг, нийгэмд асар их өөрчлөлтийг авчирсан нь үнэн.

Виталий: Алс холын зүйлээс эхэлье. Олон их дээд сургуулиудад тодорхой нэг чиглэлээр мэргэшүүлэх гэх мэт зүйл байдаг. Карнеги Меллоны их сургуулийн хувьд энэ нь параллель тооцоолол, MIT-ийн хувьд криптограф, робот, олон талт систем юм. Рочестерийн их сургуульд ийм мэргэжил байдаг уу?

Майкл байна: Үнэнийг хэлэхэд CMU болон MIT бүх чиглэлээр мэргэшсэн гэж би хэлмээр байна. Манай хэлтэс хиймэл оюун ухаанд хамгийн их анхаарал хандуулсаар ирсэн. Манайд ажиллаж буй хүмүүсийн тал хувь нь хиймэл оюун ухаан эсвэл хүн-компьютерийн харилцан үйлчлэлд оролцдог - энэ хувь хэмжээ бусад хэлтэстэй харьцуулахад өндөр бөгөөд үргэлж ийм байсаар ирсэн. Гэхдээ би их сургуульд байхдаа хиймэл оюун ухааны чиглэлээр нэг ч хичээлгүй, энэ чиглэлээр огт ажиллаж байгаагүй. Тэгэхээр манай хэлтэс надад ямар ч хамаагүй асуудал дээр мэргэшсэн. Тайвшруулах зүйл бол манай тэнхимийн хоёр дахь чухал асуудал бол параллель ба олон урсгалт програмчлал, өөрөөр хэлбэл миний мэргэжил юм.

Виталий: Олон урсгалт програмчлалын салбар дөнгөж хөгжиж байх үед та компьютерийн шинжлэх ухааны чиглэлээр ажиллаж эхэлсэн. Таны нийтлэлүүдийн жагсаалтаас харахад таны анхны бүтээлүүд олон урсгалтай систем дэх санах ойн менежмент, тархсан файлын систем, үйлдлийн систем зэрэг нэлээд өргөн хүрээний асуудлыг авч үзсэн болно. Яагаад ийм олон талт байдаг вэ? Та судалгааны нийгэмлэгт өөрийн байр сууриа олохыг хичээж байсан уу?

Майкл байна: Би оюутан байхдаа оролцож байсан Шарлоттын төсөл Анхны тархсан үйлдлийн системүүдийн нэгийг бүтээсэн Висконсины их сургуульд. Тэнд би Рафаэль Финкелтэй хамт ажиллаж байсан (Рафаэль Финкель) болон Марвин Соломон (Марвин Соломон). Миний диссертаци нь тархсан системд зориулсан системийн програм хангамжийн хэлийг хөгжүүлэхэд зориулагдсан байсан - одоо бүгд үүнийг мартсан бөгөөд Бурханд талархаж байна. Би Lynx програмчлалын хэлийг бүтээсэн бөгөөд энэ нь сул холболттой тархсан үйлдлийн системд сервер үүсгэхэд хялбар болгох зорилготой юм. Тухайн үед би үйлдлийн системд голчлон оролцдог байсан тул миний карьер тэдэнтэй голчлон холбоотой байх болно гэж бодож байсан. Гэхдээ Рочестер бол маш жижиг их сургууль байсан тул тэндхийн өөр өөр бүлгүүд хоорондоо маш нягт харьцдаг байв. Тэнд надтай ярилцах өөр үйлдлийн системтэй хэдэн арван хүн байгаагүй тул миний бүх холбоо огт өөр чиглэлээр ажилладаг хүмүүстэй байсан. Надад үнэхээр таалагдсан, бүх талын тамирчин байх нь миний хувьд том давуу тал юм. Хэрэв бид олон урсгалтай өгөгдлийн бүтэц, синхрончлолын алгоритмуудын талаар тусгайлан ярих юм бол би санамсаргүйгээр тэдэн дээр ажиллаж эхэлсэн.

IEEE Scalable Coherent Interface, MCS түгжих.

Виталий: Чи надад энэ талаар жаахан дэлгэрэнгүй ярьж өгөхгүй юу?

Майкл байна: Энэ бол би хүн бүрт ярихаас залхдаггүй хөгжилтэй түүх юм. Энэ нь хурал дээр болсон ASPLOS Бостонд - энэ нь 80-аад оны сүүл эсвэл 90-ээд оны эхээр байсан. Жон Меллор-Крамми (Жон Меллор-Крамми), манай факультетийн төгсөгч. Би түүнийг таньдаг ч бид өмнө нь хамтарсан судалгаа хийж байгаагүй. Мэри Вернон (Мэри Вернон) Висконсин мужид хөгжүүлж буй олон процессорын системийн талаар илтгэл тавьжээ. Висконсин Multicube. Энэхүү Multicube нь Q on Sync Bit гэж нэрлэгддэг техник хангамжийн түвшинд синхрончлолын механизмтай байсан ба хожим нь энэ нь Colby бяслаг шиг сонсогдож байсан тул Q on Lock Bit гэж нэрлэгдэх болсон бөгөөд энэ нь зохиомол үг юм. Хэрэв та олон урсгалтай механизмыг сонирхож байгаа бол Колби эцэст нь IEEE Scalable Coherent Interface стандартын синхрончлолын хөдөлгүүр болсон гэдгийг та мэдэх байх. Энэ нь техник хангамжийн түвшинд нэг кэшээс нөгөө рүү заагч үүсгэсэн түгжих механизм байсан бөгөөд түгжээ эзэмшигч бүр хэний ээлж болохыг мэдэх боломжтой байв. Жон бид хоёр энэ тухай сонсоод бие бие рүүгээ хараад: Яагаад үүнийг техник хангамжийн түвшинд хийж байгаа юм бэ? Харьцуулж, солих аргыг ашиглан ижил зүйлд хүрч болохгүй гэж үү? Ангид хэвтэж байсан дэвтрийн нэгийг нь аваад түүн дээрээ сараачлаа MCS блоклох, харин Мэри тайлангаа үргэлжлүүлэв. Дараа нь бид үүнийг хэрэгжүүлж, туршилт хийж, санаа нь амжилттай болж, нийтлэлээ нийтлэв. Тэр үед миний хувьд энэ сэдэв зүгээр л зугаатай анхаарал сарниулах зүйл мэт санагдаж, дараа нь үйлдлийн систем рүүгээ буцаж орохоор төлөвлөж байсан. Гэвч дараа нь ижил шугамын дагуу өөр нэг асуудал үүсч, эцэст нь синхрончлол, олон урсгал, өгөгдлийн бүтэц нь миний мэргэжил болсон. Таны харж байгаагаар энэ бүхэн санамсаргүй байдлаар болсон.

Виталий: Би MCS-ийн блоклох талаар эртнээс мэддэг байсан ч одоо болтол энэ нь таны ажил гэдгийг мэдээгүй, овог нэрийн товчлол гэдгийг ч ойлгоогүй.

Үргэлж өөрчлөгдөж буй ертөнцөд хэрхэн амьд үлдэх вэ?

Алексей: Надад холбогдох сэдвээр асуулт байна. 30, 40 жилийн өмнө янз бүрийн мэргэжлээр илүү эрх чөлөөтэй байсан. Хэрэв та олон урсгалтай эсвэл түгээлтийн системд карьераа эхлүүлэхийг хүсч байвал үйлдлийн системд орохыг хүсч байвал ямар ч асуудал гарахгүй. Хэсэг бүрт нээлттэй асуултууд олон, шинжээчид цөөн байсан. Нарийн мэргэшлүүд одоо бий болсон: ерөнхийдөө үйлдлийн системийн мэргэжилтнүүд гэж байдаггүй, харин бие даасан системийн мэргэжилтнүүд байдаг. Энэ нь олон урсгалтай болон түгээх системтэй адил юм. Гэхдээ асуудал бол бидний амьдрал эцэс төгсгөлгүй биш, хүн бүр хэдхэн арван жилийг судалгаанд зориулж чадна. Энэ шинэ ертөнцөд хэрхэн амьд үлдэх вэ?

Майкл байна: Бид энэ тал дээр онцгүй, өөр газар ижил зүйл тохиолдсон. Би компьютерийн шинжлэх ухааны салбарт “өсвөр насны” насандаа ажиллаж эхэлсэндээ азтай байсан. Зарим суурийг аль хэдийн тавьсан байсан ч бүх зүйл маш дутуу байсан. Энэ боломж тэр бүр олддоггүй. Цахилгааны инженерчлэл маш удаан хугацаанд, физик нь бүр удаан, математик бараг үүссэн цагаасаа хойш бий болсон. Гэхдээ энэ нь хэн ч математикт сонирхолтой нээлт хийхгүй гэсэн үг биш юм. Нээлттэй олон асуудал байсаар байгаа ч үүний зэрэгцээ илүү ихийг сурах шаардлагатай байна. Өмнөхөөсөө илүү олон мэргэжлүүд одоо байгааг та хэлэх нь зөв, гэхдээ энэ нь зөвхөн бид хүний ​​үйл ажиллагааны бусад ихэнх салбартай ижил нөхцөл байдалд байгаа гэсэн үг юм.

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

Майкл байна: Үргэлж амжилттай байдаггүй. Би саяхан техникийн нарийн ширийн зүйлийг хэт гүнзгийрүүлсэн тайлан бэлтгэсэн. Яриа өрнөх тусам үзэгчдийн дийлэнх нь намайг ойлгохгүй байгаа нь тодорхой болсон тул би нөхцөл байдалд дасан зохицох хэрэгтэй болсон. Слайдуудыг өөрчлөх боломжгүй байсан тул энэ нь тийм ч сайн болсонгүй - ерөнхийдөө би слайд ашиглахгүй байхыг хичээдэг. Ерөнхийдөө миний зөвлөгөө бол үзэгчдээ анхаарч үзэх явдал юм. Та хэнтэй ярилцаж байгаа, тэдний мэдлэгийн түвшин, таны ажлыг үнэлэхийн тулд юу сонсох хэрэгтэйг мэдэх хэрэгтэй.

Виталий: Энэ лекц юуны тухай байсан талаар бидэнд зөвлөгөө өгөхгүй юу?

Майкл байна: Үнэнийг хэлэхэд, би энэ сэдвийг дэлгэрүүлэхгүй байхыг хүсч байна. Гол нь бид өөрсдийн ажиллаж буй асуудлынхаа нарийн ширийнийг ихэвчлэн хэт гүнзгийрүүлдэг тул ярианы эхэнд асуудал яагаад сонирхолтой, чухал болохыг, мөн энэ нь тухайн асуудалтай хэрхэн холбогдож байгааг тайлбарлахад хэцүү байдаг. үзэгчид аль хэдийн мэдэж байгаа. Миний ажигласнаар оюутнууд энэ чадварыг эзэмшихэд хамгийн хэцүү байдаг. Энэ нь бас миний саяхны илтгэлийн сул тал байсан. Зохих бүтэцтэй тайлан нь анхнаасаа үзэгчидтэй холбоо тогтоож, тэдэнд яг ямар асуудал байгааг, аль хэдийн мэддэг сэдвүүдтэй хэрхэн холбогдож байгааг тайлбарлах ёстой. Энэ танилцуулга нь хэр техникийн байх нь үзэгчдээс хамаарна. Хэрэв энэ нь бүрэн өнгөлөг бол тайлан нь олон үе шаттай байж болно. Танилцуулга нь хүн бүрт хүртээмжтэй байх ёстой бөгөөд эцэст нь уг бүтээл таныг гүйцэхгүй байж магадгүй ч танай салбарыг харьцангуй сайн мэддэг хүмүүс үүнийг олж мэдэх боломжтой.

Оюутнууд тэнэг болж байна уу? Дэлхийн чиг хандлага, олон улсын байдал.

Алексей: Та хэдэн арван жилийн турш сурагчдыг ажиглаж байна. Оюутнууд арван жилээс арван жил эсвэл жилээс жилд тэнэг эсвэл ухаантай болж байна уу? Орос улсад профессорууд жил бүр оюутнууд тэнэг болж байна гэж байнга гомдоллодог бөгөөд энэ талаар юу хийх нь тодорхойгүй байна.

Майкл байна: Та нар үнэхээр хөгшчүүл биднээс маш их сөрөг үг сонсдог. Бид далд ухамсараараа оюутнуудад байгаа 30 жилийн туршлагыг бүгдийг нь шингээхийг хүлээх хандлагатай байдаг. Хэрэв би 1985 оныхоос илүү гүнзгий ойлголттой бол оюутнууд яагаад үүнийг ойлгохгүй байна вэ? Магадгүй тэд 20 настай болохоороо юу гэж бодож байна? Сүүлийн хэдэн арван жилийн хамгийн чухал өөрчлөлт нь хүн ам зүйн бүтцэд гарсан гэж би бодож байна: Канадчуудыг эс тооцвол бид одоо олон улсын оюутнуудтай болсон. Манайх Канадын хилтэй маш ойрхон, тэндээс ирсэн оюутнууд амралтын өдрөөр гэртээ харих боломжтой тул Канадчууд маш олон байсан. Харин одоо Канадад олон сайн их сургуулиуд байдаг бөгөөд канадчууд энд суралцахыг илүүд үздэг бөгөөд тэдний цөөн нь АНУ-д ирдэг.

Алексей: Та үүнийг орон нутгийн чиг хандлага гэж бодож байна уу эсвэл дэлхий нийтийн хандлага уу?

Майкл байна: Би яг хэн гэдгийг санахгүй байна, гэхдээ хэн нэгэн дэлхий хавтгай гэж хэлсэн. Манай салбар илүү олон улсын хэмжээнд хүрсэн. МУЗ-ийн бага хурал Өмнө нь тэд зөвхөн АНУ-д зохион байгуулагддаг байсан бол дараа нь 4 жилд нэг удаа бусад оронд зохион байгуулахаар шийдсэн бөгөөд одоо дэлхий даяар зохион байгуулагддаг. Эдгээр өөрчлөлтүүд илүү их нөлөөлсөн IEEE, энэ нь үргэлж МУЗ-ээс илүү олон улсын байгууллага байсаар ирсэн. Мөн Хятад, Энэтхэг, Орос, Герман болон бусад олон орны хөтөлбөрийн сандал байдаг, учир нь одоо хаа сайгүй маш их зүйл болж байна.

Алексей: Гэхдээ ийм олон улсын чанартай болгоход сөрөг тал бий байх?

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

Алексей: Энэ нь саад бэрхшээл, ийм зүйл юм. Энэ нь тодорхой байна.

Владимир: Би хувьдаа та оюутнуудад шинэ хичээл заахад ямар арга барилтайг сонирхож байна. Өөр өөр сонголтууд байдаг: та юуны түрүүнд тэдэнд шинэ зүйлийг турших урам зориг өгөхийг оролдож болно, эсвэл тодорхой технологи хэрхэн ажилладаг талаар илүү их анхаарч болно. Та юу илүүд үзэж байна вэ?

Оюутнуудтай үр дүнтэй ажиллах

Алексей: Тэгээд эхний болон хоёр дахь хараалын тэнцвэрийг хэрхэн олох вэ?

Майкл байна: Асуудал нь хичээл миний хүссэнээр үргэлж байдаггүй. Би ихэвчлэн оюутнуудад унших материалыг урьдчилж өгдөг бөгөөд ингэснээр тэд үүнийг гүнзгийрүүлж, чадах чинээгээрээ ойлгож, ойлгохгүй байгаа хэсгүүдийн талаар асуултуудыг томъёолдог. Дараа нь хичээл дээр та хамгийн хэцүү мөчүүдэд анхаарлаа төвлөрүүлж, хамтдаа судалж болно. Ингэж хичээл заах хамгийн дуртай. Гэхдээ одоо оюутнуудын нуруун дээр байгаа ачааллыг харгалзан би тэднийг урьдчилан бэлтгэж чадахгүй байна. Үүний үр дүнд та материалыг ерөнхийд нь тайлбарлахад хүссэнээсээ хамаагүй их цаг зарцуулах шаардлагатай болдог. Гэсэн хэдий ч би хичээлээ интерактив байлгахыг хичээдэг. Үгүй бол оюутнууд гэртээ үзэх боломжтой болсны дараа видео бичих нь илүү хялбар байдаг. Амьд хичээлүүдийн гол зүйл бол хүмүүсийн харилцан үйлчлэл юм. Хичээл дээр диаграммыг самбар дээр дүрслэхийн тулд хэтэрхий төвөгтэй байхаас бусад тохиолдолд слайд гэхээсээ илүү шохой, самбар ашиглахыг илүүд үздэг. Үүний ачаар би хичээлийн хатуу төлөвлөгөөг баримтлах шаардлагагүй болсон. Би материалыг өгөх хатуу дараалал байхгүй тул энэ нь надад ирж буй асуултаас хамааран үзэгчдэд тохируулах боломжийг олгодог. Ерөнхийдөө би хичээлийг аль болох интерактив болгохыг хичээдэг бөгөөд ингэснээр миний танилцуулах материал надаас асуусан асуултаас хамаарна.

Владимир: Гайхалтай. Миний туршлагаас харахад сонсогчдод асуулт асуухад маш хэцүү байдаг. Тэнэг ч бай, ухаантай ч бай ямар ч асуулт асуухаар ​​урьдчилж асуусан ч тэд дуугүй л байдаг. Та энэ асуудлыг хэрхэн шийдэж байна вэ?

Майкл байна: Чи инээх болно, гэхдээ чи чимээгүй удаан зогсвол эрт орой хэзээ нэгэн цагт хүн бүр эвгүй байдалд орж, хэн нэгэн асуулт асуух болно. Эсвэл саяын хэлсэн зүйлийг хүмүүс ойлгож байгаа эсэхийг тодорхойлохын тулд тийм эсвэл үгүй ​​гэсэн энгийн техникийн асуулт асууж болно. Жишээ нь, дээрх жишээн дээр өгөгдлийн уралдаан байна уу? Хэн тэгж бодож байна вэ? Үгүй гэж хэн бодох вэ? Нийтдээ гарны тал нь л дээшээ гарсан тул хэн юу ч ойлгохгүй байна вэ?

Виталий: Хэрэв та буруу хариулсан бол ангиас хөөгдөнө :)

Майкл байна: Хэрэв та юу ч хариулаагүй бол асуулт асуух хэрэгтэй. Би сая асуусан асуултанд хариулахын тулд оюутан яг юу мэдэх ёстойг ойлгох хэрэгтэй. Тэдэнд туслах нь надад хэрэгтэй байна. Асуудлыг ойлгохын тулд би тэдэнд дасан зохицоход бэлэн байна. Гэхдээ тэдний толгойд юу болж байгааг мэдэхгүй бол би үүнийг хийж чадахгүй. Хэрэв та оюутнуудад хангалттай удаан хугацаанд амар амгаланг өгөхгүй бол заримдаа тэд зөв асуултуудыг тавьдаг, өөрөөр хэлбэл оюутнуудын толгойд яг юу болж байгааг харах боломжийг олгодог. 

Алексей: Эдгээр асуултууд заримдаа таны өмнө нь бодож байгаагүй санаануудыг төрүүлдэг үү? Тэд гэнэтийн зүйл үү? Тэд танд асуудлыг шинэ өнцгөөс харах боломжийг олгодог уу?

Майкл байна: Материалыг танилцуулах шинэ арга замыг нээж өгдөг асуултууд байдаг. Миний ярихаар төлөвлөөгүй сонирхолтой асуудлуудад хүргэдэг асуултууд ихэвчлэн байдаг. Ийм зүйл тохиолдоход би сэдвээс холдох хандлагатай байдаг гэж оюутнууд ихэвчлэн хэлдэг. Тэдний үзэж байгаагаар энэ нь ихэвчлэн хичээлийн хамгийн сонирхолтой хэсэг юм. Маш ховор, хэдхэн удаа оюутнууд судалгаанд шинэ чиглэл өгч, нийтлэл болж хувирсан асуулт асуусан. Энэ нь хичээлийн үеэр гэхээсээ илүү оюутнуудтай ярилцах үед ихэвчлэн тохиолддог боловч заримдаа хичээлийн үеэр тохиолддог. 

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

Майкл байна: Тиймээ. 

Виталий: Та оюутнуудтай хэр олон удаа ийм яриа өрнүүлдэг вэ? Тэд хэзээ хичээлийн үеэр үзсэнээс илүү ихийг сурахыг хүсдэг вэ?

Майкл байна: Төгсөгчдийнхээ хамт - үргэлж. Надад 5, 6 нь байдаг бөгөөд бид тэдэнтэй байнга ямар нэг зүйлийг ярилцдаг. Зүгээр л миний хичээлд суудаг оюутнуудтай ийм төрлийн яриа тийм ч түгээмэл байдаггүй. Хэдийгээр энэ нь илүү олон удаа тохиолдохыг хүсч байна. Ажлын цагаар факультет дээр ирэхээс айдаг гэж би хардаж байна. Семестр бүр зарим оюутнууд энэхүү сэтгэл зүйн саад бэрхшээлийг даван туулж чаддаг бөгөөд хичээлийн дараа тэдэнтэй ярилцах нь үргэлж сонирхолтой байдаг. Хэрэв бүх оюутнууд ийм зоригтой байсан бол надад хангалттай цаг байхгүй байсан нь үнэн. Тиймээс магадгүй бүх зүйл байх ёстой шигээ ажиллаж байгаа байх. 

Виталий: Та оюутнуудтай харилцах цагийг хэрхэн олдог вэ? Миний мэдэж байгаагаар АНУ-д багш нар тэтгэлэгт өргөдөл гаргах гэх мэт маш их ажил хийдэг. 

Майкл байна: Үнэнийг хэлэхэд, оюутнуудтай ажиллах нь миний ажлын хамгийн их таалагддаг тал юм. Тиймээс надад үүнд хангалттай сэдэл бий. Оффисдоо ихэнх цагаа янз бүрийн уулзалтад зарцуулдаг. Одоо зун болохоор миний хуваарь завгүй байдаг ч хичээлийн жилд өдөр бүр 9-17 цагийн хооронд би бүх юмаа бэлддэг. Судалгааны ажил, тойм, тэтгэлэг - энэ бүхэнд зөвхөн орой, амралтын өдрүүд л байдаг. 

Шинэ хичээл, номны бэлтгэлийг хэрхэн гүйцэлдүүлэх вэ.

Алексей: Та одоо удаан хугацаанд зааж байсан хичээлээ үргэлжлүүлэн зааж байна уу? Компьютерийн шинжлэх ухааны танилцуулга шиг зүйл.

Майкл байна: Энд хамгийн түрүүнд програмчлалын хэлний курс санаанд орж байна. 

Алексей: Энэ сургалтын өнөөгийн хувилбар нь 10, 20, 30 жилийн өмнөх хувилбараас хэр ялгаатай вэ? Магадгүй энд илүү сонирхолтой зүйл бол тодорхой курсын дэлгэрэнгүй мэдээлэл биш, харин ерөнхий чиг хандлага юм.

Майкл байна: Програмчлалын хэлний курс маань намайг үүсгэх үед зарим талаараа ер бусын байсан. Би үүнийг 1980-аад оны сүүлээр хамт ажилладаг Даг Болдуины оронд уншиж эхэлсэн (Даг Болдуин). Хичээлийн сэдэв нь зөвхөн миний мэргэжилтэй шүргэгч холбоотой байсан ч түүнийг явахад би хичээл заах хамгийн сайн нэр дэвшигч байсан. Тухайн үед байсан сурах бичгүүдийн аль нь ч надад таалагдаагүй тул энэ хичээлийн сурах бичгийг өөрөө бичиж дуусгасан. (Редакторын тэмдэглэл: бид номын тухай ярьж байна "Програмчлалын хэлний прагматик") Одоо дэлхийн 200 гаруй их дээд сургуульд хэрэглэж байна. Хэлний дизайн, хэрэгжилтийн асуудлуудыг зориудаар хольж, боломжит бүхий л салбарт эдгээр талуудын харилцан үйлчлэлд ихээхэн анхаарал хандуулж байгаагаараа миний хандлага ер бусын юм. Хийсвэрлэл, нэрийн орон зай, модульчлагдсан байдал, төрөл зэрэг олон үндсэн ойлголтуудын адил үндсэн арга барил өөрчлөгдөөгүй хэвээр байна. Гэхдээ эдгээр ойлголтуудыг харуулсан хэлний багц бүхэлдээ өөрчлөгдсөн. Хичээлийг анх үүсгэх үед Паскаль хэл дээр олон жишээ байдаг байсан бол өнөөдөр миний олон оюутнууд энэ хэлний талаар сонсоогүй байна. Гэхдээ тэд Swift, Go, Rust хэлийг мэддэг тул би өнөөдөр ашиглагдаж буй хэлүүдийн талаар ярих хэрэгтэй байна. Мөн оюутнууд одоо скрипт хэлийг сайн мэддэг болсон ч намайг энэ хичээлийг зааж эхлэхэд бүх зүйл эмхэтгэсэн хэлтэй холбоотой байсан. Одоо бидэнд Python, Ruby, тэр ч байтугай Perl-ийн талаар маш их материал хэрэгтэй байна, учир нь энэ үед ийм код бичигдсэн байдаг бөгөөд эдгээр хэл дээр, тэр дундаа хэлний дизайны чиглэлээр маш олон сонирхолтой зүйл тохиолддог. 

Виталий: Тэгвэл миний дараагийн асуулт өмнөх асуулттай холбоотой байх болно. Энэ бүс нутгийг хэрхэн яаж хадгалах вэ? Ийм хичээлийг шинэчлэх нь маш их хөдөлмөр шаарддаг - та шинэ хэлийг ойлгох, гол санааг ойлгох хэрэгтэй гэж би сэжиглэж байна. Та үүнийг яаж хийх вэ?

Майкл байна: Би үргэлж 100% амжилтанд хүрдэг гэж сайрхаж чадахгүй. Гэхдээ ихэнх тохиолдолд би бусдын хийдэг зүйлийг л хийдэг - Интернет унш. Хэрэв би Rust-ийг ойлгохыг хүсвэл Google-ээр хайж, Mozilla хуудас руу ороод тэнд байрлуулсан гарын авлагыг уншина уу. Энэ бол арилжааны хөгжилд тохиолддог зүйлсийн нэг хэсэг юм. Хэрэв бид шинжлэх ухааны талаар ярих юм бол үндсэн чуулгануудын илтгэлийг дагаж мөрдөх хэрэгтэй. 

Бизнес ба академийн хоорондын холбоо

Виталий: Бизнес, шинжлэх ухааны судалгааны уялдаа холбоог ярья. Таны бүтээлүүдийн жагсаалтаас би кэшийн уялдаа холбоотой хэд хэдэн нийтлэл олсон. Кэшийн тогтвортой байдлын алгоритмууд нийтлэгдсэн үед тогтворгүй байсныг би ойлгож байна уу? Эсвэл хангалттай тархаагүй байна. Практикт таны санаа хэр нийтлэг байсан бэ?

Майкл байна: Ямар хэвлэлүүдийн тухай ярьж байгааг би сайн мэдэхгүй байна. Би шавь нартайгаа Билл Болоскитэй нэлээд ажил хийсэн (Уильям Болоски) болон Леонидас Контотанассис (Леонид Контотанассис) 1990-ээд оны эхээр Neumann машинуудын санах ойн менежментийн талаар. Тухайн үед бизнест олон процессор системийг хэрхэн зөв хийх талаар ойлголт хараахан байгаагүй: техник хангамжийн түвшинд алсын санах ойд хандах дэмжлэгийг бий болгох нь зүйтэй юу, санах ойг түгээх нь зүйтэй юу, кэшийг ачаалах боломжтой юу? алсын санах ой, эсвэл үйлдлийн өрөөнд хуудас зөөх шаардлагатай юу? систем. Билл, Леонидас нар хоёулаа энэ чиглэлээр ажиллаж, кэшийг алсаас ачаалахгүйгээр хандлагыг судалжээ. Энэ нь кэшийн уялдаатай шууд хамааралгүй байсан ч NUMA санах ойн менежмент дээр ажиллаж байсан бөгөөд дараа нь орчин үеийн үйлдлийн системд хуудас байршуулах орчин үеийн арга барил эндээс өссөн. Ерөнхийдөө Билл, Леонидас нар чухал ажил хийсэн боловч энэ салбарт хамгийн нөлөөгүй байсан ч тэр үед өөр олон хүмүүс ижил зүйл дээр ажиллаж байсан. Дараа нь би техник хангамжийн гүйлгээний санах ойн хүрээнд кэш уялдаа холбоотой сэдэв дээр ажилласан. Энэ асуудал дээр миний ажиллаж байсан бүлэг хэд хэдэн патент авсан. Тэдний цаана нэлээд сонирхолтой санаанууд байгаа ч амьдрал дээр хэрэгжиж дуусна гэж бодохгүй байна. Ямар нэг байдлаар тэдний ашиг орлогыг үнэлэхэд надад хэцүү байдаг. 

Алексей: Үүнтэй холбогдуулан илүү хувийн асуулт: таны санааг хэрэгжүүлэх нь танд хэр чухал вэ? Эсвэл та энэ талаар бодохгүй байна уу?

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

Алексей: Та өөрийн боловсрол, туршлагаасаа болж бусдын санаа бодлын үнэ цэнийг шүүн тунгаах олонхоос илүү чадвартай. Та тэдгээрийг харьцуулж, аль нь илүү сайн болохыг тодорхойлох боломжтой. Intel зэрэг томоохон үйлдвэрлэгчдийн практикт ашиглаж байгаа зүйлсийн талаар та өөрийн бодолтой байгаа гэдэгт итгэлтэй байна. Таны харж байгаагаар эдгээр компаниудын барьж байгаа чиглэл хэр зөв бэ?

Майкл байна: Практик нь үргэлж арилжааны хувьд амжилтанд хүрэх, өөрөөр хэлбэл ашиг олох боломжтой зүйл дээр эргэлддэг бөгөөд та энэ талаар өөр хүнээс асуусан нь дээр. Миний ажлын үр дүн нь ихэвчлэн хэвлэлд гардаг бөгөөд үйлдлийн системийн салбарт тэдгээрийг хурд, эрчим хүчний хэрэглээ, кодын хэмжээ зэрэг гүйцэтгэлийн үзүүлэлтүүд дээр үндэслэн үнэлдэг. Гэхдээ эдгээр эмпирик үр дүнг нийтлэлд зөвхөн нийтлэхийн тулд нэмдэг бөгөөд хүмүүсийн ажлын жинхэнэ сэдэл нь гоо зүйн шинж чанартай байдаг юм шиг надад үргэлж санагддаг байсан. Судлаачид шийдлүүдийг уран сайхны талаас нь үнэлдэг, санаанууд нь хэр дэгжин болохыг анхаарч, одоо байгаа арга барилаас илүү сайн зүйлийг бүтээхийг хичээдэг. Судлаачид хувийн, субъектив, гоо зүйн сэдэлд хөтлөгддөг. Гэхдээ та энэ тухай нийтлэлд бичиж болохгүй, эдгээр нь хөтөлбөрийн хорооны аргумент биш юм. Аз болоход, гоёмсог шийдэл нь ихэвчлэн хурдан бөгөөд хямд байдаг. Би хэдэн арван хамт олонтойгоо хамт 15 жилийн өмнө энэ сэдвээр ярилцаж, энэ тухай нийтлэл бичиж дуусгасан. Та одоо ч гэсэн үүнийг олж чадна гэж бодож байна "Системийн судалгааг хэрхэн үнэлэх вэ" эсвэл тиймэрхүү юм уу, арав гаруй зохиолчтой. Энэ бол миний хамтран бичсэн цорын ганц нийтлэл юм Саша Федорова, тиймээс хэрэв та миний нийтлэлүүдийн жагсаалтаас түүний нэрийг хайвал өөрт хэрэгтэй зүйлээ олох болно. Энэ нь системийн судалгааг үнэлэх, дэгжин байдал ямар чухал болохыг өгүүлдэг. 

Алексей: Тэгэхээр шинжлэх ухаан, бизнест сайн гэж үздэг стандартын хооронд ялгаа бий. Шинжлэх ухаан нь гүйцэтгэл, эрчим хүчний хэрэглээ, TDP, хэрэгжүүлэхэд хялбар, бусад олон зүйлийг үнэлдэг. Их сургуульд энэ төрлийн судалгаа хийх боломж танд бий юу? Танд туршилт хийх өөр өөр машин, өөр өөр архитектур бүхий лаборатори бий юу?

Майкл байна: Тийм ээ, манай хэлтэст маш олон төрлийн сонирхолтой машинууд байдаг. Ихэнхдээ тэдгээр нь жижиг хэмжээтэй байдаг, бидэнд жижиг кластер, янз бүрийн хурдасгуур бүхий олон процессорын системүүд байдаг. Нэмж дурдахад, кампус нь хэдэн арван өөр салбарын эрдэмтдэд үйлчилдэг асар том тооцоолох төвтэй. Энэ нь мянга орчим зангилаа, хорин мянган цөмтэй бөгөөд бүгд Линукс дээр байдаг. Шаардлагатай бол та үргэлж AWS худалдаж авах боломжтой. Тиймээс бидэнд техник хангамжийн хувьд ямар ч чухал хязгаарлалт байхгүй. 

Алексей: Гучин жилийн өмнө ямар байсан бэ? Тэр үед асуудал гарсан уу?

Майкл байна: Тэр үед арай өөр байсан. 1980-аад оны дундаас сүүл хүртэл шинжлэх ухаан тооцооллын нөөцөөр дутмаг байсан гэж үздэг. Энэ байдлыг засахын тулд Үндэсний шинжлэх ухааны сан (Үндэсний шинжлэх ухааны сан) зохицуулалттай туршилтын судалгааны хөтөлбөрийг (Coordinated Experimental Research, CER) бий болгосон. Хөтөлбөрийн эрхэм зорилго нь Компьютерийн шинжлэх ухааны тэнхимүүдийг тооцоолох дэд бүтцээр хангах явдал байсан бөгөөд энэ нь мэдэгдэхүйц өөрчлөлт гарсан. Түүний өгсөн мөнгөөр ​​бид Рочестерийн их сургуулийнхан 1984 онд 128 зангилаатай BBN эрвээхэй худалдаж авсан. Тухайн үед энэ нь дундын санах ойтой дэлхийн хамгийн том олон процессортой систем байсан юм. Энэ нь тус бүр тусдаа эх хавтан дээр 128 процессортой бөгөөд дөрвөн тавиуртай байв. Процессор бүр нэг мегабайт санах ойтой, 128 мегабайт RAM тэр үед төсөөлшгүй их байсан. Энэ машин дээр бид анх удаа MCS түгжээг хэрэгжүүлсэн. 

Алексей: Тэгэхээр, хэрэв би таныг зөв ойлгож байгаа бол одоогоор техник хангамжийн асуудал шийдэгдсэн гэсэн үг үү? 

Майкл байна: Ерөнхийдөө тийм. Хэд хэдэн анхааруулга байна: нэгдүгээрт, хэрэв та компьютерийн архитектурыг чипийн түвшинд хийж байгаа бол бизнесийн орчинд үүнийг хийхэд илүү сайн хэрэгслүүд байдаг тул үүнийг академик орчинд хийхэд хэцүү байдаг. Хэрэв танд 10 нанометрээс бага хэмжээтэй зүйл хэрэгтэй бол өөр хүнээс захиалах хэрэгтэй болно. Энэ чиглэлээр Intel-д судлаач байх нь илүү хялбар байдаг. Хэрэв та чип дээр эсвэл хатуу төлөвт санах ой дээр оптик холболт дээр ажиллаж байгаа бол шинжлэх ухаанд хараахан гараагүй байгаа технологиудыг бизнест олох болно, тиймээс та холбоо байгуулах хэрэгтэй. Жишээлбэл, Стивен Свансон (Стивен Свонсон) үүсгэсэн ийм түншлэл санах ойн шинэ технологид зориулагдсан. Энэ хэлбэр нь үргэлж ажилладаггүй, гэхдээ зарим тохиолдолд энэ нь нэлээд амжилттай байж болно. Нэмж дурдахад шинжлэх ухаанд хамгийн хүчирхэг тооцоолох системийг хөгжүүлэх нь илүү хэцүү байдаг. Одоогоор АНУ, Япон, Хятадад хэрэгжиж байгаа супер компьютерийн томоохон төслүүд бүгд бизнест төвлөрдөг. 

Санаа бодлыг практик хэрэгжүүлэх. MCS, MS, CLH, JSR 166, Doug Lee болон бусадтай хамтран ажилладаг.

Виталий: Та синхрончлолын алгоритм дээр хэрхэн ажиллаж эхэлсэн тухайгаа аль хэдийн ярьсан. Танд маш алдартай хоёр нийтлэл байна MCS блоклох и Майкл-Скоттын дараалал (MS), энэ нь тодорхой утгаараа Java хэл дээр хэрэгжсэн. (Редакторын тэмдэглэл: бүх хэвлэлийг үзэх боломжтой холбоос). Тэнд энэ хоригийг зарим өөрчлөлтөөр хэрэгжүүлсэн бөгөөд энэ нь болсон CLH түгжээ, дараалал нь зориулалтын дагуу хэрэгжсэн. Гэхдээ таны нийтлэлийг нийтлэх, практикт хэрэглэх хооронд олон жил өнгөрчээ. 

Алексей: Дараалалд 10-аад жил болж байх шиг байна.

Майкл байна: Эдгээр функцууд Java стандарт номын санд гарч ирэхээс өмнө?

Виталий: Тиймээ. Үүнийг хийхийн тулд та юу хийсэн бэ? Эсвэл тэд юу ч хийгээгүй юм уу?

Майкл байна: Би MS Queue хэрхэн Java 5-д нэвтэрсэнийг хэлж чадна. Энэ нь гарахаас хэдэн жилийн өмнө би Sun Microsystems-ийн Марк Мойерсийн групптэй Бостоны ойролцоох лабораторид нь ажиллаж байсан. Тэрээр олон талт урсгалын сонирхолтой бодлого дээр ажиллаж байсан хүмүүст зориулж тэдний компанид зарах сэдвүүдийг хайж олохыг хүссэн тул семинар зохион байгуулав. Тэнд л би Даг Лиатай анх танилцсан. Даг бид хоёр болон Сангаас ирсэн 25 орчим хүн хамтдаа Даугийн илтгэлийн талаар ярилцаж байлаа JSR 166, дараа нь java.util.concurrent болсон. Замдаа Даг MS-ийн дарааллыг ашиглахыг хүсч байгаагаа хэлсэн боловч үүний тулд интерфейсийн дараалалд байгаа элементүүдийн тоог тооцоолох тоолуур хэрэгтэй болно. Өөрөөр хэлбэл, үүнийг тусдаа аргаар, атомын, үнэн зөв, хурдан хийх ёстой байсан. Би зүгээр л зангилаанд серийн дугаар нэмж, эхний болон сүүлчийн зангилааны дугаарыг авч, нөгөөгөөсөө нэгийг нь хасахыг санал болгосон. Даг толгойгоо маажиж, "яагаад болохгүй гэж" гэж хэлээд эцэст нь үүнийг хийв. Бид номын санд энэ аргыг хэрэгжүүлэх талаар ярилцсан боловч Даг ихэнх ажлыг өөрөө хийсэн. Үүний үр дүнд тэрээр Java хэл дээр маш сайн multithreading дэмжлэгийг бий болгож чадсан. 

Алексей: Тэгэхээр, хэрэв би зөв ойлгосон бол .size() арга нь стандарт дарааллын интерфейсийн нэг хэсэг байх ёстой байсан ба энэ нь O(1) алгоритмын нарийн төвөгтэй байх ёстой байсан уу?

Майкл байна: Тийм ээ, үүнээс гадна тусдаа тоолуур шаардлагатай.

Алексей: Учир нь хэрэв та Java хэл дээрх .size() аргыг дуудвал үр дүн нь цуглуулгын бодит хэмжээнээс хамааралгүй шууд гарч ирэх болно. Би ойлгож байна, баярлалаа.

Майкл байна: Хэдэн жилийн дараа би оюутан Билл Шерертэйгээ давхар өгөгдлийн бүтэц дээр ажиллаж байсан - үнэндээ энэ бол миний ярих зүйл юм. Hydra-ийн тухай тайлан. Даг бидэн дээр ирж, тэдгээрийг Java Executor Framework-д ашиглаж болно гэж хэлсэн. Тэд Биллтэй хамт шударга ба шударга бус дараалал гэж нэрлэгддэг хоёр хэрэгжилтийг бий болгосон. Би бодит кодыг бичихэд оролцоогүй ч энэ төслийн талаар тэдэнд зөвлөгөө өгсөн. Үүний үр дүнд гүйцэтгэгчдийн хурд мэдэгдэхүйц нэмэгдсэн. 

Владимир: Та алгоритмуудаа буруу хэрэгжүүлсэн эсвэл шинэ функц нэмэх хүсэлттэй тулгарсан уу? Ерөнхийдөө практик нь онолтой давхцах ёстой, гэхдээ ихэнхдээ ялгаатай байдаг. Та алгоритм бичсэн, цаасан дээр ажиллаж байгаа гэж бодъё, гэхдээ хэрэгжилтэд оролцож буй хүмүүс танаас илүү олон функц эсвэл алгоритмын зарим өөрчлөлтийг хүсч эхэлсэн. Танд ийм нөхцөл байдал тохиолдож байсан уу?

Майкл байна: Хэн нэгэн над дээр ирээд "Үүнийг хэрхэн хэрэгжүүлэх вэ" гэж асуусан цорын ганц жишээ бол миний аль хэдийн ярьсан Даугийн асуулт юм. Гэхдээ практик хэрэгцээнд нийцүүлэн сонирхолтой өөрчлөлтүүд хийгдсэн цөөн хэдэн тохиолдол бий. Жишээлбэл, IBM-ийн K42 баг MCS түгжээг хөрвүүлж, стандарт интерфэйс болгосон тул дарааллын зангилааг олж авах, гаргах горимд нааш цааш дамжуулах шаардлагагүй болсон. Энэхүү стандарт интерфейсийн ачаар онолын хувьд үзэсгэлэнтэй санаа практикт хэрэгжиж эхлэв. Тэд энэ талаар хэзээ ч нийтлэл хэвлээгүй бөгөөд патент авсан ч дараа нь орхисон нь гайхалтай. Энэ санаа нь гайхалтай байсан бөгөөд би аль болох энэ тухай ярихыг хичээдэг. 

Хүмүүс миний нийтэлсэн алгоритмуудыг сайжруулсан бусад тохиолдол ч байсан. Жишээлбэл, MS-ийн дараалал нь хоёр үе шаттай суулгах механизмтай бөгөөд энэ нь дарааллын чухал зам дээр хоёр CAS байна гэсэн үг юм. Хуучин машинууд дээр CAS нэлээд үнэтэй байсан. Intel болон бусад үйлдвэрлэгчид саяхан тэдгээрийг маш сайн сайжруулсан боловч нэг удаа эдгээр нь 30 мөчлөгтэй заавар байсан тул чухал зам дээр нэгээс олон удаа байх нь зохимжгүй байв. Үүний үр дүнд MS-ийн дараалалтай төстэй, гэхдээ чухал зам дээр зөвхөн нэг атомын ажиллагаатай өөр дараалал боловсруулсан. Энэ нь тодорхой хугацааны туршид үйл ажиллагаа нь O(1) биш харин O(n) цаг авах боломжтой байсантай холбоотой юм. Энэ нь магадлал багатай, гэхдээ боломжтой байсан. Энэ нь алгоритм тодорхой мөчид дарааллыг эхнээс нь энэ дарааллын одоогийн байрлал хүртэл туулсантай холбоотой юм. Ерөнхийдөө алгоритм нь маш амжилттай болсон. Миний мэдэж байгаагаар энэ нь тийм ч өргөн хэрэглэгддэггүй, учир нь атомын үйл ажиллагаа өмнөхөөсөө хамаагүй бага нөөц шаарддаг. Гэхдээ санаа нь гайхалтай байсан. Би бас Oracle-ийн Дэйв Дайсын ажилд үнэхээр дуртай. Түүний хийдэг бүх зүйл маш практик бөгөөд төмрийг маш ухаалаг ашигладаг. Тэрээр NUMA-г мэддэг синхрончлолын алгоритмууд болон олон урсгалтай өгөгдлийн бүтцэд гар бие оролцсон. 

Владимир: Алгоритм бичих эсвэл оюутнуудад заах үед таны ажлын үр дүн шууд харагдахгүй. Нийгэмлэг шинэ нийтлэлтэй танилцахад хэсэг хугацаа хэрэгтэй. Шинэ алгоритм нь програмыг шууд олохгүй. 

Майкл байна: Нийтлэл ач холбогдолтой эсэх нь тодорхойгүй байна. Бага хурлаас шагнал авсан илтгэлүүдийг судлах нь сонирхолтой байх болов уу гэж бодож байна. Өөрөөр хэлбэл, нэгэн зэрэг хөтөлбөрийн хороонд байсан хүмүүс хамгийн сайн гэж үзсэн нийтлэлүүдийг хараарай. Та эдгээр нийтлэлүүд 10, 20, 25 жилийн дараа хэр нөлөөлсөн болохыг холбоосын тоо болон бизнест үзүүлэх нөлөөгөөр тооцохыг хичээх хэрэгтэй. Энэ хоёрын хооронд хүчтэй хамаарал бий гэдэгт би эргэлзэж байна. Энэ нь тэг биш, гэхдээ бидний хүсч байгаагаас хамаагүй сул байх магадлалтай. Олон санаанууд өргөн тархалттай болохоосоо өмнө удаан хугацааны туршид эзэнгүй хэвээр үлддэг. Жишээлбэл, гүйлгээний санах ойг авч үзье. Анхны нийтлэл хэвлэгдсэнээс хойш хүмүүс түүгээр машин үйлдвэрлэж эхлэх хүртэл 10 гаруй жил өнгөрчээ. Мөн арилжааны бүтээгдэхүүнд энэ санах ой гарч ирэхээс өмнө - мөн бүх 20. Маш удаан хугацааны туршид хэн ч нийтлэлд анхаарлаа хандуулаагүй бөгөөд дараа нь үүнтэй холбогдох холбоосын тоо огцом нэмэгдсэн. Үүнийг урьдчилан таамаглахад хэцүү байх болно. Нөгөөтэйгүүр, заримдаа санаа нь шууд хэрэгждэг. Хэдэн жилийн өмнө би Жо Израелевицтэй DISC-д зориулж бичсэн нийтлэлдээ компьютерийг ажиллуулж байгаа компьютер эвдэрсэний дараа ашиглах боломжтой байнгын өгөгдлийн бүтцүүдийн хүчинтэй байдлын шинэ албан ёсны тодорхойлолтыг санал болгосон. Энэ нийтлэл нь надад анхнаасаа таалагдсан боловч миний бодож байснаас хамаагүй илүү алдартай болсон. Үүнийг хэд хэдэн өөр бүлгүүд ашиглаж байсан бөгөөд эцэст нь тогтвортой байдлын бүтцийн стандарт тодорхойлолт болсон. Энэ нь мэдээж сайхан.

Владимир: Үнэлгээнд ашигладаг арга техник байна уу? Та өөрийн нийтлэл, оюутнуудаа дүгнэх гэж оролддог уу? Таны заасан хүн зөв замаар явж байна уу гэдэг утгаараа.

Майкл байна: Бусдын адил би яг одоо хийж байгаа зүйлдээ илүү анхаарал хандуулдаг. Дахин хэлэхэд, би бусад хүмүүсийн адил Google Scholar-ыг хааяа шалгаж, миний өмнөх нийтлэлүүд дээр иш татагдаж байгаа эсэхийг шалгадаг, гэхдээ энэ нь илүү сониуч зан юм. Ихэнхдээ би одоо шавь нарынхаа хийж байгаа зүйлд ууссан. Одоогийн ажлыг үнэлэхэд түүний нэг хэсэг нь гоо зүйн үзэл бодол, юу нь гоёмсог, юу нь биш юм. Мөн өдөр тутмын түвшинд нээлттэй асуултууд ихээхэн үүрэг гүйцэтгэдэг. Жишээлбэл, нэг оюутан над дээр зарим үр дүнгийн графиктай ирдэг бөгөөд бид графикийн зарим хачирхалтай зан үйл хаанаас ирснийг ойлгохыг хичээж байна. Ер нь бид ажилдаа хараахан ойлгоогүй байгаа зүйлээ ойлгохыг байнга хичээдэг. 

Гүйлгээний санах ой

Виталий: Магадгүй бид гүйлгээний санах ойн талаар бага зэрэг ярьж болох уу?

Майкл байна: Би үүнд маш их хүчин чармайлт гаргасан учраас бага ч гэсэн хэлэх нь зүйтэй болов уу. Энэ бол миний бусад бүх нийтлэлээс илүү олон нийтлэлтэй сэдэв юм. Гэхдээ хачирхалтай нь би гүйлгээний санах ойд үргэлж эргэлздэг байсан. Миний бодлоор, Херлихи ба Мосс нарын нийтлэл (M. Herlihy, J. E. B. Moss) цаг хугацаанаасаа өмнө хэвлэгдсэн. 1990-ээд оны эхээр тэд гүйлгээний санах ой нь авъяаслаг программистуудад олон урсгалтай өгөгдлийн бүтэц дээр ажиллахад тусалдаг бөгөөд ингэснээр эдгээр бүтцийг энгийн програмистууд номын сан болгон ашиглаж болно гэж тэд санал болгосон. Энэ нь Doug Lee-д JSR 166-аа хийхэд тус болно гэсэн үг. Гэхдээ гүйлгээний санах ой нь олон урсгалтай програмчлалыг хялбар болгох зорилготой байгаагүй. Гэвч 2000-аад оны эхэн үеэс өргөн тархсан үед яг ингэж ойлгогдож эхэлсэн. Зэрэгцээ програмчлалын асуудлыг шийдэх арга гэж сурталчилж байсан. Энэ арга надад үргэлж найдваргүй мэт санагддаг. Гүйлгээний санах ой нь зөвхөн зэрэгцээ өгөгдлийн бүтцийг бичихэд хялбар болгодог. Энэ бол түүний хүрсэн зүйл юм шиг санагдаж байна. 

Олон урсгалтай код бичихэд хүндрэлтэй байгаа тухай

Алексей: Маш сонирхолтой. Энгийн програмистууд болон олон урсгалтай код бичиж чаддаг хүмүүсийн хооронд тодорхой саад бэрхшээл байдаг бололтой. Өнгөрсөн жил би ямар нэг алгоритмын хүрээг хэрэгжүүлж байгаа хүмүүстэй хэд хэдэн удаа ярилцсан. Жишээлбэл, Мартин Томсон, түүнчлэн олон урсгалтай номын сан дээр ажилладаг програмистуудтай. (Редакторын тэмдэглэл: Мартин Томпсон бол маш алдартай хөгжүүлэгч юм гэж тэр бичжээ Эвдрэл и Aeron. Мөн түүнд бас бий тайлан бидний Joker 2015 бага хурал дээр, видео бичлэг YouTube дээр боломжтой. Тэр ч мөн адил нээгдсэн энэ хурал үндсэн илтгэлийн бичлэг бас боломжтой). Гол бэрхшээл нь алгоритмуудыг хурдан бөгөөд ашиглахад хялбар болгох явдал юм. Өөрөөр хэлбэл, тэд энэ саадыг даван туулж, аль болох олон хүнийг энэ бүс рүү татахыг хичээж байна. Та үүнийг юу гэж бодож байна вэ?

Майкл байна: Энэ бол олон урсгалын гол асуудал юм: системийн нарийн төвөгтэй байдлыг нэмэгдүүлэхгүйгээр хэрхэн өндөр гүйцэтгэлд хүрэх вэ. 

Алексей: Учир нь тэд нарийн төвөгтэй байдлаас зайлсхийхийг оролдох үед алгоритм нь түгээмэл биш болдог.

Майкл байна: Энд гол зүйл бол зөв зохиосон хийсвэрлэл юм. Энэ нь ерөнхийдөө компьютерийн системийн талбарын хувьд гол зүйл юм шиг санагдаж байна. Батлер Лампсон энэ нэр томъёог ашиглах дуртай бөгөөд биднийг "хийсвэрлэлийн худалдаачид" гэж нэрлэдэг. Өнөөдөр энгийн технологи байхгүй. Бидний ашигладаг процессорууд 10 тэрбум транзистортой - энгийн байх нь эргэлзээгүй. Үүний зэрэгцээ, ISA нь процессороос хамаагүй хялбар байдаг, учир нь бид үүнийг өндөр гүйцэтгэл, харьцангуй энгийн интерфейсээр хангахын тулд маш удаан ажилласан. Гэхдээ түүнтэй хамт бүх зүйл жигд байдаггүй. Одоо зах зээл дээр гарч ирж буй хурдасгууртай ижил асуудал байна. GPU, шифрлэлтийн механизм, шахалт, код хувиргах механизм, шугаман алгебрийн механизм, эсвэл бүр илүү уян хатан FPGA-ийн зөв интерфэйсийг хэрхэн яаж хийх вэ гэсэн асуулт гарч ирдэг. Хэрэгслийг ашиглахад хялбар болгож, нарийн төвөгтэй байдлыг нуух интерфейсийг хэрхэн бий болгох вэ? Энэ нь үүнээс ангижрахгүй, харин энгийн програмистаас нуух болно. 

Алексей: Миний ойлгож байгаагаар хийсвэр ойлголтыг ойлгоход бидэнд саад бэрхшээл байсаар байна. Санах ойн загварыг авч үзье, шинжлэх ухаан, технологийн хөгжлийн үе шатанд энэ нь гол хийсвэр ойлголтуудын нэг юм. Үүний ачаар бүх програмистууд хоёр бүлэгт хуваагддаг: ихэнх хэсэг нь үүнийг ойлгодоггүй хүмүүс, бага хэсэг нь ойлгодог эсвэл ойлгодог гэж боддог хүмүүс байдаг. 

Майкл байна: Энэ бол сайн асуулт байна - бидний хэн нэг нь санах ойн загварыг үнэхээр ойлгодог уу?

Виталий: Ялангуяа C++ хэл дээр.

Майкл байна: Хэзээ нэгэн цагт Ханс Боемтой ярилц. Тэр бол миний мэдэх хамгийн ухаалаг хүмүүсийн нэг, санах ойн загварчлалын тэргүүлэх мэргэжилтэн юм. Тэр ойлгохгүй зүйл их байгааг тэр даруй хэлэх болно. Гэхдээ бид хийсвэрлэлийн асуудал руу буцах юм бол миний бодлоор сүүлийн 30 жилийн хугацаанд санах ойн загваруудын салбарт хамгийн чухал санаа гарсан байна. Сарита Адвегийн диссертацид. (Редакторын тэмдэглэл: Нийтлэлийн бүрэн жагсаалтыг авах боломжтой холбоос).

Алексей: Миний асуулт бол: энэ саад бэрхшээл нь үзэл баримтлалын мөн чанараас үүдэлтэй юу? 

Майкл байна: Үгүй ээ. Сарита зөв арга барилаар та бүх нарийн төвөгтэй байдлыг амжилттай нууж, өндөр гүйцэтгэлтэй болж, програмистад энгийн API өгөх боломжтой гэсэн дүгнэлтэд хүрсэн. Хэрэв та энэ API-г дагавал тууштай нийцэж чадна. Энэ бол зөв загвар гэж би бодож байна. Өгөгдлийн уралдаангүйгээр код бичиж, дараалсан тууштай байдлыг олж аваарай. Мэдээжийн хэрэг, уралдааны магадлалыг бууруулахын тулд тусгай хэрэгсэл хэрэгтэй, гэхдээ энэ нь өөр асуудал юм. 

Владимир: Таны ажил мэргэжлээр шийдэгдсэн мэт санагдаж байсан асуудал гэнэт сүйрэл болон хувирч, эсвэл энэ асуудал шийдэгдэх боломжгүй болсон тохиолдол гарч байсан уу? Жишээлбэл, онолын хувьд та ямар ч тоог хүчин зүйл болгож эсвэл анхны тоо эсэхийг тодорхойлох боломжтой. Гэвч практик дээр үүнийг хийхэд хэцүү байж болох бөгөөд одоогийн техник хангамжийн хувьд тоон үзүүлэлтийг тооцоход хэцүү байдаг. Танд үүнтэй төстэй зүйл тохиолдсон уу?

Майкл байна: Би ийм зүйлийг шууд санахгүй байна. Тодорхой газар нутагт хийх юм байхгүй юм шиг санагдах үе бий, гэхдээ дараа нь тэнд шинэ, сонирхолтой зүйл болсон. Жишээлбэл, би хязгааргүй дарааллын талбай аль хэдийн төлөвшсөн гэж бодсон. MNS-ийн дарааллыг хэд хэдэн удаа сайжруулсны дараа өөр юу ч болоогүй. Тэгээд Моррисон (Адам Моррисон), Афек (Йехуда Афек) нар зохион бүтээжээ LCRQ дараалал. Хязгааргүй олон урсгалтай дараалал боломжтой болох нь тодорхой болсон бөгөөд ихэнх тохиолдолд зөвхөн чухал зам дээр татан авах, нэмэгдүүлэх заавар байдаг. Энэ нь илүү сайн гүйцэтгэлийн дараалалд хүрэх боломжийг олгосон. Татаж авах, өсгөх нь маш хэрэгтэй зүйл гэдгийг бид мэдэхгүй байгаа юм биш. Эрик Фрейдентал 1980-аад оны сүүлчээр Аллан Готтлибтэй хамтран Ultracomputer дээр хийсэн ажилдаа энэ тухай бичсэн боловч энэ нь хязгаарлагдмал дарааллын тухай байв. Моррисон, Афек нар хязгааргүй дараалалд татах ба нэмэгдүүлэх аргыг ашиглаж чадсан.

Шинэ архитектурууд. Гүйлгээний санах ойн ялалт ойрхон байна уу?

Владимир: Та алгоритмд хэрэгтэй байж болох шинэ архитектурын шийдлүүдийг хайж байна уу? 

Майкл байна: Мэдээж хэрэгжээсэй гэж хүсэж байгаа олон зүйл бий. 

Владимир: Ямар төрлийн, жишээ нь?

Майкл байна: Юуны өмнө, Intel болон IBM процессорууд дээрх техник хангамжийн түвшний гүйлгээний санах ойн хэд хэдэн энгийн өргөтгөлүүд. Ялангуяа саяхан үүссэн гүйлгээний бус ачаалал, дэлгүүрийг гүйлгээний хүрээнд нэн даруй ашиглах боломжтой байхыг хүсч байна. Тэд нэн даруй тохиолдохоос өмнөх дарааллаар гогцоонд хүргэдэг тул хүндрэлтэй байж болно. Гэхдээ хэрвээ та хийсвэрлэлийн давхаргыг хадгалах юм бол гүйлгээ явагдаж байх үед та гүйлгээнээс гадна маш олон сонирхолтой зүйлсийг хийж болно. Үүнийг хэрэгжүүлэхэд хичнээн хэцүү болохыг би мэдэхгүй, гэхдээ энэ нь маш ашигтай байх болно. 

Өөр нэг ашигтай зүйл бол алсын санах ойноос кэш ачаалах явдал юм. Эрт орой хэзээ нэгэн цагт энэ хэрэг болно гэж бодож байна. Энэ технологи нь хуваагдсан санах ойтой системийг бий болгох боломжийг олгоно. Өлгүүрт 100 терабайт тогтворгүй санах ойг хадгалах боломжтой бөгөөд үйлдлийн систем өөрөө санах ойн аль хэсэг нь процессоруудын физик хаягийн орон зайд тохирохыг динамикаар шийднэ. Энэ нь үүлэн тооцоололд маш их хэрэгтэй байх болно, учир нь энэ нь шаардлагатай ажлуудад их хэмжээний санах ойг өгөх боломжийг олгоно. Хэн нэгэн үүнийг хийх байх гэж бодож байна.

Виталий: Гүйлгээний санах ойн тухай ярьж дуусгахын тулд надад энэ сэдвээр бас нэг асуулт байна. Гүйлгээний санах ой нь стандарт олон урсгалтай өгөгдлийн бүтцийг орлох уу?

Майкл байна: Үгүй ээ. Гүйлгээ бол таамаглалын механизм юм. Програмчлалын түвшинд эдгээр нь атомын түгжээ боловч дотор нь таамаглал байдаг. Ихэнх таамаглал зөв байвал ийм таамаглал ажиллана. Тиймээс урсгалууд хоорондоо бараг харьцдаггүй үед гүйлгээний санах ой сайн ажилладаг бөгөөд та ямар ч харилцан үйлчлэл байхгүй эсэхийг шалгах хэрэгтэй. Гэхдээ хэлхээний хооронд мессеж эхэлбэл гүйлгээ нь ашиг багатай. Би тайлбарлая, бид гүйлгээ нь атомын үйл ажиллагааг бүхэлд нь хамарсан тохиолдлыг ярьж байна. Тэдгээрийг олон урсгалтай өгөгдлийн бүтцийн бүрэлдэхүүн хэсэг болгон амжилттай ашиглаж болно. Жишээлбэл, хэрэв танд гурван үгтэй CAS хэрэгтэй бол хорин хэлхээтэй зэрэг ажилладаг жинхэнэ олон урсгалт алгоритмын дунд гурван жижиг зүйлийг олон урсгалтай болгох хэрэгтэй. Ерөнхийдөө гүйлгээ нь ашигтай байж болох ч олон урсгалтай өгөгдлийн бүтцийг зөв зохиох хэрэгцээг арилгахгүй. 

Тогтворгүй санах ой, Optane DIMM, хэт хурдан төхөөрөмжүүд.

Виталий: Миний хамгийн сүүлд ярихыг хүссэн зүйл бол таны одоогийн судалгааны сэдэв: тогтворгүй санах ой юм. Ойрын ирээдүйд бид энэ чиглэлээр юу хүлээж болох вэ? Магадгүй та аль хэдийн байгаа үр дүнтэй хэрэгжилтийн талаар мэдэх үү? 

Майкл байна: Би техник хангамжийн мэргэжилтэн биш, зөвхөн мэдээнээс уншсан зүйлээ, хамт ажиллагсдынхаа надад хэлсэн зүйлийг л мэддэг. Хүн бүр Intel зардаг гэж сонссон Optane DIMM, эдгээр нь динамик RAM-аас унших хугацаа 3 дахин, бичих хугацаа 10 дахин их байдаг. Тэд тун удахгүй маш том хувилбараар гарах болно. Хэд хэдэн терабайт байт хаягтай RAM-тай зөөврийн компьютертэй болно гэж бодохоор инээдтэй юм. Бид DRAM ашигладаг тул 10 жилийн дараа энэ шинэ технологийг ашиглахаар шийдсэн байх магадлалтай - зөвхөн дууны хэмжээг нэмэгдүүлэх. Харин эрчим хүчний бие даасан байдлын ачаар бидэнд цоо шинэ боломжууд нээгдэж байна. Бид хадгалах стекийг үндсээр нь өөрчлөх боломжтой бөгөөд ингэснээр байт хаягтай ажиллах санах ой болон блокийн бүтэцтэй байнгын санах ойн хооронд ямар ч ялгаа байхгүй. Тиймээс бид нэг програмаас нөгөө програм руу шилжүүлэх шаардлагатай бүх зүйлийг блок бүтэцтэй файл болгон цуваа болгох шаардлагагүй болно. Үүнээс бид үйлдлийн систем, ажиллах цагийн орчин, түгээсэн өгөгдлийн сангуудад нөлөөлдөг олон чухал зарчмуудыг гаргаж авч болно. Энэ чиглэлээр ажиллах нь маш сонирхолтой юм. Би хувьдаа энэ бүхэн юунд хүргэхийг таамаглахад хэцүү ч энд байгаа асуудлууд нь үнэхээр зугаатай юм. Энд хувьсгалт өөрчлөлтүүд байж болох бөгөөд алдааг сэргээх нь системийн хэвийн үйл ажиллагааны хажуугаар "олон урсгалтай" үйл явц учраас олон урсгалтай ажиллах үйл явцаас үүдэлтэй. 

Миний одоо ажиллаж байгаа хоёр дахь гол сэдэв бол системийн бодлогын хяналт бүхий хэт хурдан төхөөрөмжүүдийг удирдах, хэрэглэгчийн орон зайгаас төхөөрөмжүүдэд аюулгүй нэвтрэх явдал юм. Сүүлийн жилүүдэд төхөөрөмжид хандах хандалтыг хэрэглэгчийн талбарт шилжүүлэх хандлага ажиглагдаж байна. Энэ нь TCP-IP цөмийн стек нь 5 микросекунд тутамд шинэ пакет шаардагддаг сүлжээний интерфэйс дээр ажиллах боломжгүй тул үүнийг гүйцэлдүүлэхгүй. Тиймээс үйлдвэрлэгчид төхөөрөмжид шууд нэвтрэх боломжийг олгодог. Гэхдээ энэ нь үйлдлийн систем нь үйл явцыг хянах чадвараа алдаж, өрсөлдөгч програмуудад төхөөрөмжид зохих хандалтыг өгч чадахгүй гэсэн үг юм. Энэ дутагдлаас зайлсхийх боломжтой гэж манай судалгааны багийнхан үзэж байна. Бид энэ сард USENIX ATC дээр энэ талаар нийтлэл оруулах болно. Энэ нь байнгын ажиллагаатай холбоотой, учир нь урт хугацааны байт хаягтай байнгын санах ой нь үндсэндээ хэрэглэгчийн талбарт хандах шаардлагатай хэт хурдан оролт/гаралттай төхөөрөмж юм. Энэхүү судалгаа нь микро цөм, экзокернел болон үйлдлийн системийн цөмөөс хэрэглэгчийн орон зай руу функцийг аюулгүй шилжүүлэх бусад уламжлалт оролдлогуудад шинэ хандлагыг бий болгож байна. 

Владимир: Байт хаягтай санах ой маш сайн, гэхдээ физик хязгаарлалт байдаг - гэрлийн хурд. Энэ нь төхөөрөмжтэй харилцах үед саатал гарах нь гарцаагүй гэсэн үг юм. 

Майкл байна: Туйлын зөв.

Владимир: Шинэ ачааллыг даах хүчин чадал хүрэлцэх үү?

Майкл байна: Энэ бол гайхалтай асуулт, гэхдээ надад хариулахад хэцүү байх болно. Санах ойд боловсруулалт хийх санаа нэлээд удаж байгаа бөгөөд энэ нь маш сонирхолтой боловч маш төвөгтэй юм. Би энэ чиглэлээр ажиллаж байгаагүй, гэхдээ тэнд ямар нэгэн нээлт хийвэл үнэхээр сайхан байх болно. Надад нэмж хэлэх зүйл байхгүй гэж айж байна. 

Владимир: Бас нэг асуудал байна. Шинэ, мэдэгдэхүйц их хэмжээний RAM нь CPU-д багтах боломжгүй болно. Тиймээс, физик хязгаарлалтын улмаас энэ RAM нь тусгаарлагдсан байх ёстой. 

Майкл байна: Энэ бүхэн нэгдсэн хэлхээний үйлдвэрлэлд гарсан согогийн тооноос хамаарна. Хэрэв хагас дамжуулагч хавтанг бүхэлд нь согоггүй бүтээх боломжтой байсан бол үүнээс бүхэл бүтэн микро схем хийх боломжтой байв. Харин одоо бид шуудангийн маркнаас том микро схемийг хэрхэн яаж хийхийг мэдэхгүй байна. 

Владимир: Гэхдээ бид асар том хэмжээтэй, сантиметрийн тухай ярьж байна. Энэ нь хоцролтод зайлшгүй нөлөөлдөг. 

Майкл байна: Тийм ээ. Гэрлийн хурдны талаар та юу ч хийж чадахгүй. 

Владимир: Харамсалтай нь. 

Дараагийн том чиг хандлага. Давхар өгөгдлийн бүтэц. Гидра.

Виталий: Миний ойлгож байгаагаар та шинэ чиг хандлагыг маш хурдан барьж авдаг. Та хамгийн түрүүнд гүйлгээний санах ойд ажиллаж, тогтворгүй санах ойд ажиллаж байсан анхны хүмүүсийн нэг байсан. Таны бодлоор дараагийн том тренд юу байх вэ? Эсвэл энэ нь нууц юм болов уу?

Майкл байна: Үнэнийг хэлэхэд би мэдэхгүй. Шинэ зүйл гарч ирэхэд би анзаарч чадна гэж найдаж байна. Би өөрөө ямар ч шинэ салбарыг зохион бүтээх азтай байгаагүй ч хэд хэдэн аз тохиож, бусдын бүтээсэн шинэ салбарт нэлээд эрт ажиллаж эхэлсэн. Цаашид энэ ажлыг хийж чадна гэж найдаж байна.

Алексей: Энэ ярилцлагын сүүлчийн асуулт бол таны Hydra дахь гүйцэтгэл болон сургууль дээрх үйл ажиллагааны талаар байх болно. Хэрэв би зөв ойлговол сургуулийн илтгэл нь блоклохгүй алгоритмуудын тухай, бага хурал дээр давхар өгөгдлийн бүтцийн тухай байх болно. Эдгээр тайлангийн талаар хэдэн үг хэлэхгүй юу?

Майкл байна: Зарим талаар бид энэ ярилцлагадаа эдгээр сэдвүүдийг аль хэдийн хөндсөн. Энэ бол миний оюутан Билл Шерертэй хийсэн ажлын тухай юм. Тэрээр үүн дээр дипломын ажил бичсэн бөгөөд Даг Ли ч үүнд хувь нэмрээ оруулсан бөгөөд энэ нь эцэстээ Java номын сангийн олон урсгалтай синхрон дарааллын нэг хэсэг болсон. Өгөгдлийн бүтцийг блоклохгүйгээр уншиж, бичдэг, өөрөөр хэлбэл үйлдэл бүр нь чухал зам дээр хязгаарлагдмал тооны заавартай байдаг гэж үзье. Хэрэв та хоосон савнаас өгөгдлийг устгах гэж оролдвол эсвэл энэ саванд байхгүй зарим өгөгдлийг устгахыг оролдвол үүнийг хийх боломжгүй гэдгийг танд шууд мэдэгдэнэ. Гэхдээ утас үнэхээр энэ өгөгдөл хэрэгтэй бол энэ зан үйлийг хүлээн зөвшөөрөхгүй байж магадгүй. Дараа нь санаанд орж ирдэг хамгийн эхний зүйл бол шаардлагатай өгөгдөл гарч ирсэн эсэхийг байнга асуух гогцоо үүсгэх явдал юм. Гэхдээ дараа нь бусад бүх хүмүүст хөндлөнгөөс оролцдог. Нэмж дурдахад, энэ аргын тусламжтайгаар та 10 минут хүлээх боломжтой бөгөөд дараа нь өөр утас гарч ирэх бөгөөд энэ нь эхлээд шаардлагатай өгөгдлийг санамсаргүйгээр хүлээн авах болно. Хос өгөгдлийн бүтцэд цоож байхгүй хэвээр байгаа ч тэдгээр нь хэлхээг зөв хүлээх боломжийг олгодог. "Давхар" гэсэн нэр томьёо нь бүтэц нь өгөгдөл эсвэл өгөгдөлд зориулсан хүсэлтийг агуулна гэсэн үг бөгөөд тэдгээрийг эсрэг өгөгдөл гэж нэрлэе. Тиймээс хэрэв та хоосон савнаас ямар нэгэн зүйл авахыг оролдвол оронд нь хүсэлтийг саванд хийх болно. Одоо утас нь хэн нэгэнд саад учруулахгүйгээр хүсэлтийг хүлээж болно. Нэмж дурдахад, өгөгдлийн бүтэц нь хүсэлтүүдэд тэргүүлэх ач холбогдол өгдөг бөгөөд ингэснээр хүлээн авахдаа тэдгээрийг зөв хүнд дамжуулдаг. Үр дүн нь албан ёсны үзүүлэлттэй, практикт сайн гүйцэтгэлтэй хэвээр байгаа түгжээгүй механизм юм. 

Алексей: Энэ өгөгдлийн бүтцээс таны хүлээлт юу вэ? Энэ нь бүх нийтлэг тохиолдлуудад гүйцэтгэлийг сайжруулах уу, эсвэл тодорхой нөхцөл байдалд илүү тохиромжтой юу? 

Майкл байна: Нэгдүгээрт, танд түгжээгүй сав хэрэгтэй бол, хоёрдугаарт, дотор нь байхгүй савнаас өгөгдөл авах шаардлагатай нөхцөл байдалд хүлээх хэрэгтэй. Миний мэдэж байгаагаар эдгээр хоёр нөхцөл хангагдсан тохиолдолд бидний тогтолцоо оновчтой зан үйлийг хангадаг. Тиймээс эдгээр тохиолдолд би үүнийг ашиглахыг зөвлөж байна. Түгжээгүй өгөгдлийн бүтцийн гол давуу тал нь гүйцэтгэлийн асуудлаас зайлсхийх явдал юм. Өгөгдлийг нэг урсгалаас нөгөө рүү шилжүүлэх тохиолдолд хүлээх нь олон алгоритмд маш чухал юм.

Виталий: Би тодруулъя: та сургууль дээр ч, чуулган дээр ч нэг зүйлийн талаар ярих уу?

Майкл байна: Сургууль дээр би ярина хичээлийн эхэнд дурдсан үндсэн зарчмуудын хамт олон урсгалт өгөгдлийн бүтцийн тухай ерөнхийд нь. Үзэгчид утас гэж юу байдгийг мэддэг, цоожны талаар сайн мэддэг байх гэж бодож байна. Энэхүү үндсэн мэдлэг дээр үндэслэн би түгжээгүй өгөгдлийн бүтцийн талаар ярих болно. Би санах ойн менежмент гэх мэт сэдвүүдийг хөндөж, энэ талбарт тулгарч буй хамгийн чухал асуудлуудын тоймыг өгөх болно. MS-ийн дараалалаас илүү төвөгтэй зүйл байхгүй гэж би бодож байна.

Алексей: Та сургуулийнхаа төгсгөлд давхар өгөгдлийн бүтцийн талаар хичээл заахаар төлөвлөж байна уу?

Майкл байна: Би тэднийг дурдах болно, гэхдээ би тэдэнд их цаг зарцуулахгүй. Hydra тайлан тэдэнд зориулагдсан болно. Энэ нь эцэст нь Java-д нэвтэрсэн төсөл, мөн Жо Исраэлевичтэй LCRQ дарааллын давхар хувилбарыг бий болгох, хос өгөгдлийн бүтцэд зориулсан бараг бүх нийтийн загварыг бий болгох ажлыг хамрах болно.

Алексей: Тэгэхээр сургуулийн лекцийг анхлан суралцагчдад, харин Hydra дээрх давхар өгөгдлийн бүтцийн тухай лекцийг аль хэдийн туршлагатай хүмүүст санал болгож болох уу?

Майкл байна: Хэрэв миний буруу бол залруулна уу, гэхдээ Hydra-ийн үзэгчид маш олон янз байх болно, үүнд Java мэргэжилтнүүд болон ерөнхийдөө олон урсгалтай програмчлалд тусгайлан оролцдоггүй хүмүүс багтана. 

Виталий: Тиймээ энэ үнэн.

Алексей: Наад зах нь бид тэгнэ гэж найдаж байна.

Майкл байна: Энэ тохиолдолд бид энэ ярилцлагыг эхлүүлсэнтэй адил асуудалтай тулгарах болно: хэрхэн техникийн дэлгэрэнгүй мэдээлэлээр хангалттай баялаг, бүх сонсогчдод хүртээмжтэй тайлан гаргах вэ.

Виталий: Та лекц уншдаг шигээ илтгэл тавих уу? Энэ нь үзэгчидтэй ярилцаж, нөхцөл байдалд дасан зохицох уу?

Майкл байна: Тайлан нь слайдтай байх тул ийм бүтэхгүй байх вий гэж айж байна. Сонсогчид өөр хэлээр ярьдаг бол слайд чухал байдаг. Олон хүмүүс намайг англиар ойлгоход хэцүү байх болно, ялангуяа би хэтэрхий хурдан ярьдаг бол. Би эдгээр сэдвүүдийг сонгосон учраас Петр Кузнецов SPTDC сургуулийн цоожгүй өгөгдлийн бүтцийн талаар ярихыг надаас хүссэн; Дараа нь надад Java хэрэглэгчийн бүлгийн бага хуралд илтгэл хэрэгтэй байсан бөгөөд би Java програмистуудын сонирхлыг татахуйц зүйлийг сонгохыг хүссэн. Хамгийн хялбар арга бол Java номын санд ямар нэгэн байдлаар миний гарт байсан зүйлсийн талаар ярих явдал байв. 

Алексей: Hydra дээрх үзэгчид цоожгүй програмчлалын талаар аль хэдийн мэддэг, магадгүй энэ чиглэлээр тодорхой хэмжээний туршлагатай гэж бид таамаглаж байна. Гэхдээ энэ бол зөвхөн таамаг төдий бөгөөд чуулганаар нөхцөл байдал тодорхой болно. Ямартай ч цаг гаргасанд баярлалаа. Ярилцлага манай уншигчдад маш сонирхолтой байх болно гэдэгт итгэлтэй байна. Маш их баярлалаа!

Виталий: Баярлалаа. 

Майкл байна: Би тантай Санкт-Петербургт уулзахдаа баяртай байх болно. 

Алексей: Бид ч гэсэн сайхан хоттой. Та энд ирж байсан уу?

Майкл байна: Үгүй ээ, би Орост огт очиж үзээгүй. Гэхдээ Санкт-Петербург бол миний очиж амжаагүй, гэхдээ үнэхээр очихыг хүсч буй газруудын жагсаалтад үргэлж байдаг байсан тул урилгад маш их баяртай байсан. 

Алексей: Дашрамд хэлэхэд бид илтгэгчдэд зориулсан аялалын хөтөлбөртэй болно. Ярилцлага өгсөнд маш их баярлалаа, өдрийг сайхан өнгөрүүлээрэй!

2019 оны 11-р сарын 12-2019-нд Санкт-Петербургт болох Hydra XNUMX чуулган дээр та Майклтай яриагаа үргэлжлүүлж болно. Тэр тайлантай ирнэ "Хос өгөгдлийн бүтэц". Тасалбар худалдаж авах боломжтой албан ёсны вэбсайт дээр.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх