Мусоҳибаи олӣ бо Клифф Клик, падари маҷмӯаи JIT дар Java

Мусоҳибаи олӣ бо Клифф Клик, падари маҷмӯаи JIT дар JavaКлик Клик - CTO аз Cratus (сенсорҳои IoT барои такмил додани раванд), муассис ва ҳаммуассиси якчанд стартапҳо (аз ҷумла Rocket Realtime School, Neurensic ва H2O.ai) бо якчанд баромадҳои муваффақ. Клифф аввалин компилятори худро дар синни 15-солагӣ навишт (Паскал барои TRS Z-80)! Вай бо кори худ дар C2 дар Java (Баҳри гиреҳҳои IR) маъруф аст. Ин компилятор ба ҷаҳониён нишон дод, ки JIT метавонад рамзи баландсифат тавлид кунад, ки яке аз омилҳои пайдоиши Java ҳамчун яке аз платформаҳои асосии нармафзори муосир буд. Сипас Клифф ба Azul Systems дар сохтани як мэйнфрейми 864-аслӣ бо нармафзори тозаи Java кӯмак кард, ки таваққуфи GC-ро дар теппаи 500-гигабайтӣ дар тӯли 10 миллисония дастгирӣ мекард. Умуман, Клифф тавонист дар тамоми ҷанбаҳои JVM кор кунад.

 
Ин habrapost мусоҳибаи олӣ бо Клифф аст. Мо дар мавзӯъҳои зерин сӯҳбат хоҳем кард:

  • Гузариш ба оптимизатсияи сатҳи паст
  • Чӣ тавр бояд як рефактори калон
  • Модели арзиш
  • Омӯзиши оптимизатсияи сатҳи паст
  • Намунаҳои амалии баланд бардоштани самаранокӣ
  • Чаро забони барномасозии худро эҷод кунед
  • Карераи муҳандиси иҷроиш
  • Мушкилоти техникӣ
  • Каме дар бораи тақсимоти феҳрист ва бисёр ядроҳо
  • Бузургтарин мушкилот дар ҳаёт

Мусоҳиба аз ҷониби:

  • Андрей Сатарин аз Amazon Web Services. Дар карераи худ ӯ тавонист дар лоиҳаҳои тамоман дигар кор кунад: вай пойгоҳи додаҳои тақсимшудаи NewSQL-ро дар Яндекс, системаи муайянкунии абр дар лабораторияи Касперский, бозии мултипликатори Mail.ru ва хидмати ҳисобкунии нархҳои асъорро дар Deutsche Bank санҷидааст. Ба озмоиши системаҳои васеъмиқёс ва паҳншуда манфиатдор аст.
  • Владимир Ситников аз Netcracker. Даҳ соли кор оид ба фаъолият ва миқёспазирии OS NetCracker, нармафзоре, ки операторони телекоммуникатсионӣ барои автоматикунонии равандҳои идоракунии шабака ва таҷҳизоти шабакавӣ истифода мебаранд. Ба масъалаҳои иҷрои Database Java ва Oracle таваҷҷӯҳ доранд. Муаллифи зиёда аз даҳ беҳбуди кор дар драйвери расмии PostgreSQL JDBC.

Гузариш ба оптимизатсияи сатҳи паст

Андрей: Шумо дар ҷаҳони таҳияи JIT, Java ва умуман кори иҷроиш номи бузург ҳастед, дуруст? 

Клиф: Чунин аст!

Андрей: Биёед бо якчанд саволҳои умумӣ дар бораи кори иҷро оғоз кунем. Шумо дар бораи интихоби байни оптимизатсияи сатҳи баланд ва паст ба монанди кор дар сатҳи CPU чӣ фикр доред?

Клиф: Бале, дар ин чо хама чиз оддй аст. Рамзи зудтарин ҳамон кодест, ки ҳеҷ гоҳ кор намекунад. Аз ин рӯ, шумо бояд ҳамеша аз сатҳи баланд оғоз кунед, дар алгоритмҳо кор кунед. Агар ягон константаҳои кофӣ калон дахолат накунанд, аломати беҳтари O нишонаи бадтарро мезанад. Чизҳои сатҳи паст дар охир мерасанд. Одатан, агар шумо қисми боқимондаи стеки худро ба қадри кофӣ оптимизатсия карда бошед ва то ҳол чизҳои ҷолиб боқӣ монда бошанд, ин сатҳи паст аст. Аммо аз сатҳи баланд чӣ гуна бояд оғоз кард? Шумо аз куҷо медонед, ки кори ба қадри кофӣ баланд анҷом дода шудааст? Хуб... ҳеҷ роҳе нест. Рецептхои тайёр нестанд. Шумо бояд мушкилотро дарк кунед, қарор кунед, ки чӣ кор карданӣ ҳастед (то дар оянда қадамҳои нолозим наандешед) ва пас шумо метавонед профилеро кушоед, ки метавонад чизи муфидро бигӯяд. Дар баъзе мавридҳо, шумо худатон мефаҳмед, ки шумо аз чизҳои нолозим халос шудаед ва вақти он расидааст, ки каме танзимоти сатҳи пастро анҷом диҳед. Ин бешубҳа як намуди махсуси санъат аст. Бисьёр одамон ба корхои нодаркор машгул мешаванд, вале чунон тез харакат мекунанд, ки барои гами хосилнокии мехнат вакт надоранд. Аммо ин то он даме, ки савол рӯирост ба миён меояд. Одатан 99% вақт ҳеҷ кас парвое надорад, ки ман чӣ кор мекунам, то лаҳзае, ки чизи муҳим дар роҳи муҳиме, ки ҳеҷ кас ба он аҳамият намедиҳад, меояд. Ва дар ин ҷо ҳама ба шумо шикоят мекунанд, ки "чаро он аз аввал ба таври комил кор накард". Умуман, ҳамеша чизе барои беҳтар кардани фаъолият вуҷуд дорад. Аммо 99% вақт шумо ҳеҷ гуна роҳнамо надоред! Шумо танҳо кӯшиш мекунед, ки чизе кор кунед ва дар ин раванд чӣ муҳим аст, фаҳмед. Шумо ҳеҷ гоҳ наметавонед пешакӣ бидонед, ки ин порча бояд комил бошад, бинобар ин, дар асл, шумо бояд дар ҳама чиз комил бошед. Аммо ин имконнопазир аст ва шумо ин корро намекунед. Ҳамеша чизҳои зиёде ҳастанд, ки бояд ислоҳ шаванд - ва ин комилан муқаррарӣ аст.

Чӣ тавр бояд як рефактори калон

Андрей: Чӣ тавр шумо дар намоишнома кор мекунед? Ин як мушкили байниҳамдигарист. Масалан, оё ба шумо лозим омад, ки бо мушкилоте кор кунед, ки аз чорроҳаи бисёр функсияҳои мавҷуда ба вуҷуд меоянд?

Клиф: Ман кӯшиш мекунам, ки аз он канорагирӣ кунам. Агар ман донам, ки иҷроиш мушкилот хоҳад буд, ман пеш аз оғози рамзгузорӣ дар бораи он фикр мекунам, махсусан бо сохторҳои додаҳо. Аммо аксар вақт шумо ҳамаи инро дертар мефаҳмед. Ва он гоҳ шумо бояд ба чораҳои шадид равед ва он чизеро, ки ман онро "аз нав нависед ва ғалаба кунед" иҷро кунед: ба шумо лозим аст, ки як порчаи кофӣ калонро гиред. Баъзе аз рамзҳо аз сабаби мушкилоти иҷроиш ё чизи дигар бояд дубора навишта шаванд. Новобаста аз сабаби аз нав навиштани код, аз нав навиштани як порчаи калонтар аз порчаи хурдтар қариб ҳамеша беҳтар аст. Дар ин лахза хама аз тарс ба ларза меоянд: «Худоё, ин кадар кодро ламс карда наметавонӣ!». Аммо дар асл, ин равиш қариб ҳамеша беҳтар кор мекунад. Шумо бояд фавран як масъалаи калонеро ба дӯш гиред, дар атрофи он як доираи калон кашед ва бигӯед: Ман ҳама чизро дар дохили доира аз нав менависам. Сарҳад аз мундариҷаи даруни он, ки бояд иваз карда шавад, хеле хурдтар аст. Ва агар чунин муайян кардани сарҳад ба шумо имкон диҳад, ки кори дарунро ба таври комил анҷом диҳед, дастҳоятон озоданд, он чи мехоҳед, кунед. Вақте ки шумо мушкилотро дарк мекунед, раванди азнавнависӣ хеле осонтар аст, аз ин рӯ як луқмаи калон гиред!
Дар айни замон, вақте ки шумо як азнавнависии калон мекунед ва дарк мекунед, ки иҷроиш мушкилот хоҳад буд, шумо метавонед фавран дар бораи он хавотир шавед. Ин одатан ба чизҳои оддӣ табдил меёбад, ба монанди "маълумотро нусхабардорӣ накунед, маълумотро то ҳадди имкон содда идора кунед, онро хурд кунед". Дар навиштаҷоти калон, роҳҳои стандартии беҳтар кардани кор вуҷуд доранд. Ва онҳо қариб ҳамеша дар атрофи маълумот давр мезананд.

Модели арзиш

Андрей: Дар яке аз подкастҳо шумо дар бораи моделҳои хароҷот дар заминаи ҳосилнокӣ сӯҳбат кардед. Метавонед фаҳмонед, ки бо ин чӣ дар назар доштед?

Клиф: Албатта. Ман дар замоне таваллуд шудаам, ки иҷрои протсессор бениҳоят муҳим буд. Ва ин даврон боз бармегардад - тақдир бе киноя нест. Ман дар айёми мошинҳои ҳаштбитӣ зиндагӣ карданро сар кардам; компютери аввалини ман бо 256 байт кор мекард. Маҳз байт. Ҳама чиз хеле хурд буд. Дастурҳо бояд ҳисоб карда шаванд ва вақте ки мо ба боло рафтани стеки забони барномасозӣ шурӯъ кардем, забонҳо торафт бештар гирифта мешуданд. Assembler буд, баъд Basic, баъд C ва C бисёр тафсилотро, ба монанди тақсимоти реестр ва интихоби дастурҳоро ғамхорӣ мекарданд. Аммо дар он ҷо ҳама чиз комилан равшан буд ва агар ман як мисоли тағирёбандаро нишон додам, он гоҳ ман бор мегирам ва арзиши ин дастур маълум аст. Таҷҳизот миқдори муайяни давраҳои мошинро истеҳсол мекунад, аз ин рӯ суръати иҷрои чизҳои гуногунро метавон танҳо тавассути илова кардани ҳамаи дастурҳое, ки шумо иҷро кардан мехоҳед, ҳисоб кунед. Ҳар як муқоиса/озмоиш/филиал/занг/боркунӣ/мағозаро метавон илова кард ва гуфт: ин вақти иҷроиш барои шумост. Ҳангоми кор оид ба беҳтар кардани кор, шумо бешубҳа диққат медиҳед, ки кадом рақамҳо ба давраҳои хурди гарм мувофиқат мекунанд. 
Аммо вақте ки шумо ба Java, Python ва чизҳои шабеҳ мегузаред, шумо хеле зуд аз сахтафзори сатҳи паст дур мешавед. Арзиши занги гетер дар Java чанд аст? Агар JIT дар HotSpot дуруст бошад дохил карда шудааст, он бор мекунад, аммо агар ин корро накарда бошад, он занги функсия хоҳад буд. Азбаски занг дар ҳалқаи гарм аст, он ҳама оптимизатсияҳои дигарро дар ин давра бекор мекунад. Бинобар ин арзиши аслй хеле зиёд мешавад. Ва шумо фавран қобилияти дидани як пораи кодро аз даст медиҳед ва мефаҳмед, ки мо бояд онро аз рӯи суръати соати протсессор, хотира ва кэши истифодашуда иҷро кунем. Ҳамаи ин танҳо дар сурате ҷолиб мешавад, ки шумо воқеан ба намоиш дохил шавед.
Ҳоло мо худро дар вазъияте мебинем, ки суръати протсессор дар тӯли даҳ сол базӯр зиёд нашудааст. Айёми кӯҳна баргаштанд! Шумо дигар наметавонед ба иҷрои хуби як ришта такя кунед. Аммо агар шумо ногаҳон ба ҳисоббарории параллелӣ ворид шавед, ин бениҳоят душвор аст, ҳама ба шумо мисли Ҷеймс Бонд менигаранд. Шитобҳои даҳ баробар дар ин ҷо одатан дар ҷойҳое рух медиҳанд, ки касе чизеро вайрон кардааст. Ҳамзамон кори зиёдеро талаб мекунад. Барои ба даст овардани суръати XNUMXx, шумо бояд модели хароҷотро фаҳмед. Он чӣ ва чӣ қадар арзиш дорад? Ва барои ин, шумо бояд фаҳмед, ки забон ба сахтафзори аслӣ чӣ гуна мувофиқат мекунад.
Мартин Томпсон барои блоги худ калимаи олиро интихоб кард Ҳамдардии механикӣ! Шумо бояд бифаҳмед, ки сахтафзор чӣ кор хоҳад кард, он чӣ гуна онро иҷро мекунад ва чаро он чӣ кор мекунад, дар ҷои аввал. Бо истифода аз ин, оғоз кардани ҳисобкунии дастурҳо ва муайян кардани вақти иҷроиш хеле осон аст. Агар шумо омӯзиши мувофиқ надошта бошед, шумо танҳо дар як ҳуҷраи торик гурбаи сиёҳро меҷӯед. Ман одамонеро мебинам, ки ҳама вақт корҳоро оптимизатсия мекунанд, ки намедонанд, ки онҳо чӣ кор мекунанд. Онхо бисьёр азоб мекашанд ва ба пешравии ка-лон ноил намешаванд. Ва ҳангоме ки ман як порчаи кодро мегирам, якчанд ҳакҳои хурдро ворид мекунам ва суръати панҷ ё даҳ баробар ба даст меорам, онҳо чунинанд: хуб, ин одилона нест, мо аллакай медонистем, ки шумо беҳтаред. Аҷиб. Ман дар бораи чӣ гап мезанам ... модели хароҷот дар бораи он аст, ки шумо чӣ гуна код менависед ва он ба ҳисоби миёна дар тасвири калон чӣ қадар тез кор мекунад.

Андрей: Ва чӣ тавр шумо метавонед ин гуна ҳаҷмро дар сари худ нигоҳ доред? Оё ин бо таҷрибаи бештар ба даст омадааст, ё? Чунин таҷриба аз куҷо пайдо мешавад?

Клиф: Хуб, ман таҷрибаи худро бо роҳи осонтарин ба даст наовардам. Ман дар Ассамблея дар он рӯзҳое барномарезӣ кардам, ки шумо ҳар як дастурро фаҳмида метавонед. Ин беақл садо медиҳад, аммо аз он вақт инҷониб маҷмӯи дастурҳои Z80 ҳамеша дар сарам, дар хотираи ман боқӣ мемонад. Ман номи одамонро дар давоми як дақиқаи сӯҳбат дар ёд надорам, аммо коди 40 сол пеш навишташударо дар хотир дорам. Ин хандаовар аст, он ба синдром монанд аст "олими аблаҳ".

Омӯзиши оптимизатсияи сатҳи паст

Андрей: Оё роҳи осонтари ворид шудан вуҷуд дорад?

Клиф: Ҳа ва не. Таҷҳизоте, ки ҳамаи мо истифода мебарем, бо гузашти вақт он қадар тағир наёфтааст. Ҳама x86-ро истифода мебаранд, ба истиснои смартфонҳои Arm. Агар шумо ягон намуди дохилкунии хардкорро иҷро накунед, шумо ҳамон корро мекунед. Хуб, оянда. Дастурҳо низ дар тӯли асрҳо тағир наёфтаанд. Шумо бояд рафта дар Ассамблея чизе нависед. На он қадар зиёд, аммо кофӣ барои сар кардани фаҳмидан. Шумо табассум мекунед, аммо ман комилан ҷиддӣ гап мезанам. Шумо бояд мукотибаи байни забон ва сахтафзорро фаҳмед. Пас аз ин ба шумо лозим меояд, ки рафта каме нависед ва барои забони бозича каме компилятори бозича созед. Ба бозича монанд маънои онро дорад, ки он бояд дар вақти мувофиқ сохта шавад. Ин метавонад хеле содда бошад, аммо он бояд дастурҳоро тавлид кунад. Амали тавлиди дастур ба шумо дар фаҳмидани модели хароҷоти пули байни коди сатҳи баланд, ки ҳама менависад ва рамзи мошине, ки дар сахтафзор кор мекунад, кӯмак мекунад. Ин мукотиба ҳангоми навиштани мураттиб дар майна сӯзонда мешавад. Ҳатто соддатарин компилятор. Пас аз ин, шумо метавонед ба Java назар кунед ва далели он, ки ҷараёнҳои семантикии он хеле амиқтаранд ва сохтани пулҳо бар он хеле душвортар аст. Дар Ёва фаҳмидани он, ки пули мо хуб ё бад баромад, чӣ боиси вайрон шудани он мешавад ва чӣ не. Аммо ба шумо ягон нуқтаи ибтидоӣ лозим аст, ки дар он шумо кодро мебинед ва мефаҳмед: "бале, ин қабулкунанда бояд ҳар дафъа ворид карда шавад." Ва он гоҳ маълум мешавад, ки баъзан ин ҳодиса рӯй медиҳад, ба истиснои ҳолатҳое, ки усул хеле калон мешавад ва JIT ҳама чизро ворид мекунад. Фаъолияти чунин ҷойҳоро фавран пешгӯӣ кардан мумкин аст. Одатан, гирандагон хуб кор мекунанд, аммо баъд шумо ба ҳалқаҳои гарми калон назар карда, дарк мекунед, ки дар он ҷо баъзе зангҳои функсионалӣ шино мекунанд, ки онҳо чӣ кор карда истодаанд, намедонанд. Ин мушкили истифодаи густурдаи гетерҳост, сабаби ворид нашудани онҳо дар он аст, ки маълум нест, ки онҳо гетер мебошанд. Агар шумо як пойгоҳи рамзии хеле хурд дошта бошед, шумо метавонед онро ба ёд оред ва баъд бигӯед: ин қабулкунанда ва ин танзимкунанда аст. Дар базаи калони рамзӣ, ҳар як функсия таърихи худро дорад, ки дар маҷмӯъ, ба касе маълум нест. Профайлгар мегӯяд, ки мо дар як ҳалқа 24% вақтро аз даст додем ва барои фаҳмидани он ки ин ҳалқа чӣ кор мекунад, мо бояд ба ҳар як функсия дар дохили он назар кунем. Инро бе омухтани функция фахмидан мумкин нест ва ин процесси даркро ба таври чиддй суст мекунад. Аз ин рӯ, ман гетер ва сетерҳоро истифода намебарам, ман ба сатҳи нав расидаам!
Модели хароҷотро аз куҷо гирифтан мумкин аст? Хуб, шумо метавонед чизе хонед, албатта... Аммо ба фикрам, беҳтарин роҳ амал кардан аст. Сохтани компилятори хурд роҳи беҳтарини фаҳмидани модели хароҷот ва мувофиқ кардани он ба сари худ хоҳад буд. Компилятори хурде, ки барои барномарезии печи печи мувофиқ аст, вазифаи навкор аст. Хуб, ман дар назар дорам, ки агар шумо аллакай малакаҳои барномасозӣ дошта бошед, ин бояд кофӣ бошад. Ҳамаи ин чизҳо ба монанди таҳлили сатре, ки шумо ҳамчун як намуди ифодаи алгебравӣ доред, аз он ҷо бо тартиби дуруст гирифтани дастурҳо барои амалҳои математикӣ, гирифтани арзишҳои дуруст аз регистрҳо - ҳамаи ин якбора анҷом дода мешавад. Ва ҳангоме ки шумо ин корро мекунед, он дар майнаи шумо сабт хоҳад шуд. Ман фикр мекунам, ки ҳама медонанд, ки компилятор чӣ кор мекунад. Ва ин фаҳмиши модели хароҷотро медиҳад.

Намунаҳои амалии баланд бардоштани самаранокӣ

Андрей: Дар вакти кор ба хосилнокии мехнат боз ба чй диккат додан лозим аст?

Клиф: Сохторҳои маълумот. Воқеан, бале, ман муддати тӯлонӣ ба ин дарсҳо таълим надодаам... Мактаби ракетӣ. Ин шавковар буд, аммо кӯшиши зиёдро талаб мекард ва ман ҳам зиндагӣ дорам! ДУРУСТ. Ҳамин тавр, дар яке аз дарсҳои калон ва ҷолиб, "Иҷрои шумо ба куҷо меравад" ман ба донишҷӯён мисол овардам: дувуним гигабайт маълумотҳои финтекро аз файли CSV хонданд ва сипас онҳо бояд миқдори маҳсулоти фурӯхташударо ҳисоб кунанд. . Маълумоти муқаррарии бозор. Бастаҳои UDP аз солҳои 70-ум ба формати матн табдил дода шуданд. Биржаи тиҷории Чикаго - ҳама гуна чизҳо ба монанди равған, ҷуворимакка, лӯбиё ва монанди инҳо. Ин махсулот, микдори муомилот, хачми миёнаи харакати маблагу мол ва гайраро хисоб кардан лозим буд. Ин математикаи савдои хеле содда аст: рамзи маҳсулотро пайдо кунед (ин 1-2 аломат дар ҷадвали ҳаш аст), маблағро гиред, онро ба яке аз маҷмӯаҳои савдо илова кунед, ҳаҷм илова кунед, арзишро илова кунед ва чанд чизи дигар. Математикаи хеле содда. Татбиқи бозичаҳо хеле осон буд: ҳама чиз дар файл аст, ман файлро мехонам ва тавассути он ҳаракат мекунам, сабтҳои алоҳидаро ба сатрҳои Java тақсим мекунам, дар онҳо чизҳои заруриро меҷӯям ва онҳоро мувофиқи математикаи дар боло тавсифшуда илова мекунам. Ва он бо суръати паст кор мекунад.

Бо ин равиш, маълум аст, ки чӣ рӯй дода истодааст ва ҳисоббарории параллелӣ кӯмак намекунад, дуруст? Маълум мешавад, ки танҳо бо интихоби сохторҳои дурусти додаҳо ба панҷ баробар афзоиши ҳосилнокӣ ноил шудан мумкин аст. Ва ин ҳатто барномасозони ботаҷрибаро ба ҳайрат меорад! Дар ҳолати махсуси ман, ҳилла дар он буд, ки шумо набояд дар як ҳалқаи гарм тақсимоти хотираро анҷом диҳед. Хуб, ин тамоми ҳақиқат нест, аммо дар маҷмӯъ - шумо набояд "як маротиба дар X" -ро қайд кунед, вақте ки X кофӣ калон аст. Вақте ки X дувуним гигабайт аст, шумо набояд чизеро "як маротиба дар як ҳарф" ё "як маротиба дар як сатр" ё "як маротиба дар як майдон" ҷудо кунед. Дар ин ҷо вақт сарф мешавад. Ин ҳатто чӣ гуна кор мекунад? Тасаввур кунед, ки ман занг мезанам String.split() ё BufferedReader.readLine(). Readline аз маҷмӯи байтҳое, ки тавассути шабака омадаанд, як маротиба барои ҳар як сатр, барои ҳар як садҳо миллион сатр сатр месозад. Ман ин хатро мегирам, онро таҳлил мекунам ва мепартоям. Чаро ман онро партофта истодаам - хуб, ман онро аллакай коркард кардам, ҳамааш ҳамин аст. Ҳамин тавр, барои ҳар як байт аз ин 2.7G хонда мешавад, дар сатр ду аломат навишта мешавад, яъне аллакай 5.4G ва ба ман барои ҳеҷ чизи дигар лозим нест, бинобар ин онҳо партофта мешаванд. Агар шумо ба фарохмаҷрои хотира нигоҳ кунед, мо 2.7G-ро бор мекунем, ки тавассути хотира ва автобуси хотира дар протсессор мегузарад ва он гоҳ ду маротиба зиёдтар ба хати дар хотира ҷойгиршуда фиристода мешавад ва ҳамаи ин ҳангоми сохтани ҳар як хати нав хароб мешавад. Аммо ман бояд онро хонам, сахтафзор онро мехонад, ҳатто агар ҳама чиз дертар хароб шавад. Ва ман бояд онро нависед, зеро ман сатр сохтам ва кэшҳо пуранд - кэш 2.7G-ро ҷойгир карда наметавонад. Ҳамин тавр, барои ҳар як байти хондаам, ман ду байти дигар мехонам ва ду байти дигар менависам ва дар ниҳоят онҳо таносуби 4:1 доранд - дар ин таносуб мо маҷрои хотираро беҳуда сарф мекунем. Ва он гоҳ маълум мешавад, ки агар ман String.split() — бори охир нест, ки ман ин корро мекунам, шояд дар дарун боз 6—7 майдон бошад. Ҳамин тавр, рамзи классикии хондани CSV ва сипас таҳлили сатрҳо боиси партови фарохмаҷрои хотира тақрибан 14:1 нисбат ба он чизе, ки шумо воқеан мехоҳед дошта бошед, натиҷа медиҳад. Агар шумо ин интихобҳоро партоед, шумо метавонед суръати панҷ баробарро ба даст оред.

Ва он қадар душвор нест. Агар шумо ба код аз кунҷи рост нигоҳ кунед, пас аз фаҳмидани мушкилот ҳамааш хеле содда мешавад. Шумо набояд ҷудо кардани хотираро комилан бас кунед: ягона мушкилӣ дар он аст, ки шумо чизе ҷудо мекунед ва он фавран мемирад ва дар тӯли роҳ он як манбаи муҳимро сӯзонд, ки дар ин ҳолат маҷрои хотира аст. Ва хамаи ин боиси паст шудани хосилнокии мехнат мегардад. Дар x86 шумо одатан бояд давраҳои протсессориро фаъол созед, аммо дар ин ҷо шумо тамоми хотираро хеле пештар сӯзондаед. Роҳи ҳалли он кам кардани миқдори разряд аст. 
Қисми дигари мушкилот дар он аст, ки агар шумо профилаторро ҳангоми тамом шудани рахи хотира иҷро кунед, дуруст вақте ки ин рӯй медиҳад, шумо одатан интизор мешавед, ки кэш бармегардад, зеро он пур аз партовҳое аст, ки шумо навакак истеҳсол кардаед, ҳамаи он сатрҳо. Аз ин рӯ, ҳар як амалиёти боркунӣ ё мағоза суст мешавад, зеро онҳо ба гум шудани кэш оварда мерасонанд - тамоми кэш суст шуда, мунтазири он, ки ахлот онро тарк кунад. Аз ин рӯ, профилатор танҳо садои гарми тасодуфиро дар тамоми ҳалқа нишон медиҳад - дастури алоҳидаи гарм ё ҷой дар код нахоҳад буд. Фақат садо. Ва агар шумо ба давраҳои GC назар кунед, онҳо ҳама Насли ҷавон ва хеле зуд мебошанд - максимум микросекундҳо ё миллисонияҳо. Охир, хамаи ин хотира якбора мемирад. Шумо миллиардҳо гигабайт ҷудо мекунед ва ӯ онҳоро бурида, бурида ва боз бурида. Хамаи ин хеле зуд ба амал меояд. Маълум мешавад, ки давраҳои арзони GC, садои гарм дар тӯли тамоми давра мавҷуданд, аммо мо мехоҳем суръати 5x ба даст орем. Дар ин лаҳза чизе дар саратон пӯшида мешавад ва садо медиҳад: "Ин барои чӣ?!" Зиёдшавии рахи хотира дар ислоҳкунандаи классикӣ нишон дода намешавад; шумо бояд ислоҳкунандаи ҳисобкунаки иҷрои сахтафзорро иҷро кунед ва онро худатон ва бевосита бубинед. Аммо аз ин се нишона ба ин бевосита гумон кардан мумкин нест. Аломати сеюм ин аст, ки вақте ки шумо ба он чизе, ки қайд мекунед, назар кунед, аз профилатор пурсед ва ӯ ҷавоб медиҳад: "Шумо як миллиард сатр сохтед, аммо GC ройгон кор кард." Ҳамин ки ин рӯй медиҳад, шумо мефаҳмед, ки шумо объектҳои аз ҳад зиёд офаридаед ва тамоми хатти хотираро сӯзондаед. Роҳи муайян кардани ин вуҷуд дорад, аммо он равшан нест. 

Мушкилот дар сохтори додаҳост: сохтори бараҳнае, ки дар асоси ҳама чизҳои рух медиҳад, он хеле калон аст, он дар диск 2.7G аст, бинобар ин сохтани нусхаи ин чиз хеле номатлуб аст - шумо мехоҳед онро аз буфери байти шабака фавран бор кунед ба регистрхо, то ки ба сатр панч маротиба пешу пас хондан-навишт. Мутаассифона, Java ба шумо чунин китобхонаро ҳамчун қисми JDK ба таври нобаёнӣ намедиҳад. Аммо ин ночиз аст, дуруст? Аслан, инҳо 5-10 сатри код мебошанд, ки барои татбиқи боркунаки сатри буферии худ истифода мешаванд, ки рафтори синфи сатрро такрор мекунад ва ҳамзамон дар атрофи буфери байтҳои аслӣ печонида мешавад. Дар натиҷа, маълум мешавад, ки шумо тақрибан бо сатр кор карда истодаед, аммо дар асл ишораҳо ба буфер дар он ҷо ҳаракат мекунанд ва байтҳои хом дар ҳеҷ ҷо нусхабардорӣ намешаванд ва ҳамин тавр ҳамон буферҳо такрор ба такрор истифода мешаванд ва системаи оператсионӣ хушҳол аст, ки чизҳои барои худ тарҳрезӣшударо ба ӯҳда гирад, ба монанди буферии пинҳонии дукаратаи ин буферҳои байт ва шумо дигар тавассути ҷараёни беохири маълумоти нолозим дастос намекунед. Дар омади гап, оё шумо мефаҳмед, ки ҳангоми кор бо GC кафолат дода мешавад, ки ҳар як тақсимоти хотира пас аз давраи охирини GC ба протсессор намоён нахоҳад шуд? Аз ин рӯ, ҳамаи инҳо наметавонанд дар кэш бошанд ва он гоҳ 100% кафолат дода мешавад. Ҳангоми кор бо нишоннамо дар x86, хориҷ кардани регистр аз хотира 1-2 цикли соатиро мегирад ва ҳамин ки ин рӯй медиҳад, шумо пардохт мекунед, пардохт мекунед, пардохт мекунед, зеро хотира ҳама фаъол аст НУХ кэш - ва ин арзиши тақсимоти хотира аст. Арзиши воқеӣ.

Ба ибораи дигар, сохтори додаҳо душвортарин чизе барои тағир додан аст. Ва вақте ки шумо дарк мекунед, ки шумо сохтори маълумоти нодурустро интихоб кардаед, ки иҷрои онро дертар мекушад, одатан кори зиёдеро бояд анҷом дод, аммо агар ин тавр накунед, вазъ бадтар мешавад. Пеш аз ҳама, шумо бояд дар бораи сохторҳои додаҳо фикр кунед, ин муҳим аст. Хароҷоти асосӣ дар ин ҷо ба сохторҳои фарбеҳи додаҳо рост меояд, ки онҳо дар услуби "Ман сохтори додаҳои X-ро ба сохтори додаҳои Y нусхабардорӣ кардам, зеро ба ман шакли Y беҳтар маъқул аст." Аммо амалиёти нусхабардорӣ (ки арзон ба назар мерасад) воқеан маҷрои хотираро барбод медиҳад ва дар он ҷо тамоми вақти беҳуда сарфшудаи иҷро дафн мешавад. Агар ман як сатри азими JSON дошта бошам ва ман мехоҳам онро ба дарахти сохтории DOM аз POJO ё чизе табдил диҳам, амалиёти таҳлили ин сатр ва сохтани POJO ва сипас боз дастрасии POJO баъдтар боиси хароҷоти нолозим мегардад - ин арзон нест. Ба истиснои он, ки шумо дар атрофи POJO-ҳо бештар аз як сатр давед. Ба ҷои ин, шумо метавонед кӯшиш кунед, ки сатрро рамзкушоӣ кунед ва танҳо он чизеро, ки ба шумо лозим аст, бидуни табдил додани он ба ягон POJO берун кунед. Агар ҳамаи ин дар роҳе рӯй диҳад, ки аз он ҳадди аксар иҷроиш талаб карда мешавад, барои шумо POJO нест, ба шумо лозим аст, ки ба таври мустақим ба хат кобед.

Чаро забони барномасозии худро эҷод кунед

Андрей: Шумо гуфтед, ки барои фаҳмидани модели хароҷот, шумо бояд забони хурди худро нависед...

Клиф: Забон не, балки мураттиб. Забон ва компилятор ду чизи гуногунанд. Муҳимтарин фарқият дар сари шумост. 

Андрей: Дар омади гап, то ҷое ки ман медонам, шумо барои эҷоди забонҳои худ таҷриба карда истодаед. Барои чӣ?

Клиф: Зеро ман метавонам! Ман нимнафақа ҳастам, бинобар ин ин маҳфили ман аст. Ман тамоми умр забонҳои дигаронро амалӣ кардаам. Ман инчунин дар услуби рамзгузории худ бисёр кор кардам. Ва инчунин барои он ки ман мушкилотро бо забонҳои дигар мебинам. Ман мебинам, ки роҳҳои беҳтари иҷрои корҳои шинос вуҷуд доранд. Ва ман онҳоро истифода мебарам. Ман танҳо аз дидани мушкилот дар худам, дар Java, Python ва дар ҳама забони дигар хаста шудаам. Ҳоло ман дар React Native, JavaScript ва Elm ҳамчун маҳфил менависам, ки на дар бораи нафақа, балки дар бораи кори фаъол аст. Ман инчунин дар Python менависам ва эҳтимолан кор дар омӯзиши мошинсозӣ барои пуштибонии Java идома хоҳам дод. Бисёр забонҳои маъмул вуҷуд доранд ва ҳама хусусиятҳои ҷолиб доранд. Ҳар як шахс дар роҳи худ хуб аст ва шумо метавонед кӯшиш кунед, ки ҳамаи ин хусусиятҳоро якҷоя кунед. Ҳамин тавр, ман чизҳои мароқоварро меомӯзам, рафтори забонро меомӯзам ва кӯшиш мекунам, ки семантикаи оқилона пайдо кунам. Ва то ҳол ман муваффақ ҳастам! Дар айни замон ман бо семантикаи хотира мубориза мебарам, зеро ман мехоҳам онро мисли C ва Java дошта бошам ва модели хотираи қавӣ ва семантикаи хотираро барои борҳо ва мағозаҳо гирам. Ҳамзамон, ба монанди Haskell, хулосаи навъи худкор дошта бошед. Дар ин ҷо ман кӯшиш мекунам, ки хулосаи навъи Ҳаскеллро бо кори хотира ҳам дар C ва ҳам Java омехта кунам. Масалан, дар давоми 2—3 мохи охир ман хамин тавр кор мекардам.

Андрей: Агар шумо забоне созед, ки ҷанбаҳои беҳтар аз забонҳои дигарро мегирад, оё шумо фикр мекунед, ки касе баръакс мекунад: идеяҳои шуморо бигиред ва онҳоро истифода баред?

Клиф: Маҳз ҳамин тавр забонҳои нав пайдо мешаванд! Чаро Java ба C монанд аст? Азбаски C синтаксиси хубе дошт, ки ҳама онро мефаҳмид ва Java аз ин синтаксис илҳом гирифта шуда буд, ба он бехатарии намуд, санҷиши ҳудудҳои массив, GC илова карда шуд ва онҳо инчунин баъзе чизҳоро аз C беҳтар карданд. Онҳо худро илова карданд. Аммо онҳо хеле илҳом гирифта буданд, дуруст? Хама дар сари китфи бузургони пеш аз ту омадаанд — Хамин тавр пешравй ба даст меояд.

Андрей: Тавре ки ман мефаҳмам, забони шумо дар хотира бехатар хоҳад буд. Оё шумо дар бораи татбиқи чизе ба мисли чеки қарз аз Rust фикр кардаед? Оё шумо ба ӯ нигоҳ кардаед, дар бораи ӯ чӣ фикр доред?

Клиф: Хуб, ман тӯли асрҳо C менависам, бо ин ҳама malloc ва ройгон ва тамоми умрро дастӣ идора мекунам. Шумо медонед, ки 90-95% мӯҳлати ҳаёти дастӣ идорашаванда як сохтор дорад. Ва дастӣ иҷро кардани он хеле ва хеле дардовар аст. Ман мехоҳам, ки мураттиб ба шумо танҳо бигӯяд, ки дар он ҷо чӣ рӯй дода истодааст ва шумо бо амалҳои худ ба чӣ ноил шудаед. Барои баъзе чизҳо, чекгари қарз инро аз қуттӣ иҷро мекунад. Ва он бояд ба таври худкор маълумотро намоиш диҳад, ҳама чизро дарк кунад ва ҳатто барои пешниҳоди ин фаҳмиш ба ман бор накунад. Он бояд ҳадди аққал таҳлили маҳаллии фирорро анҷом диҳад ва танҳо агар он ноком шавад, он гоҳ бояд эзоҳҳои навъи, ки умрро тавсиф мекунанд, илова кунад - ва чунин схема назар ба санҷиши қарз ё воқеан ягон санҷиши хотираи мавҷуда хеле мураккабтар аст. Интихоб байни "ҳама чиз хуб аст" ва "ман ҳеҷ чизро намефаҳмам" - не, бояд чизи беҳтаре бошад. 
Ҳамин тавр, ҳамчун шахсе, ки дар C коди зиёде навиштааст, ман фикр мекунам, ки дастгирии назорати автоматии умр аз ҳама муҳим аст. Ман инчунин аз он сер шудам, ки чӣ қадар Java хотираро истифода мебарад ва шикояти асосӣ GC аст. Вақте ки шумо хотираро дар Java ҷудо мекунед, шумо хотираеро, ки дар давраи охирини GC маҳаллӣ буд, баргардонида наметавонед. Дар забонҳое, ки идоракунии дақиқтари хотира доранд, ин тавр нест. Агар шумо malloc-ро даъват кунед, шумо фавран хотираеро мегиред, ки одатан танҳо истифода мешуд. Одатан, шумо бо хотира баъзе корҳои муваққатӣ мекунед ва фавран онро бармегардонед. Ва он фавран ба ҳавзи malloc бармегардад ва сикли навбатии malloc онро дубора берун мекунад. Аз ин рӯ, истифодаи воқеии хотира ба маҷмӯи объектҳои зинда дар вақти муайян кам карда мешавад ва инчунин ихроҷҳо. Ва агар ҳама чиз ба таври комилан ношоиста наафтад, аксари хотираҳо дар кэшҳо ва протсессорҳо мемонанд ва он зуд кор мекунад. Аммо бисёр идоракунии хотираи дастӣ бо malloc ва ройгон даъват бо тартиби дуруст, дар ҷои лозимаро талаб мекунад. Rust метавонад мустақилона ин корро дуруст ҳал кунад ва дар бисёр ҳолатҳо иҷрои боз ҳам беҳтартар диҳад, зеро истеъмоли хотира танҳо ба ҳисоби ҷорӣ кам карда мешавад - дар муқоиса бо интизории даври навбатии GC барои озод кардани хотира. Дар натиҷа, мо роҳи хеле ҷолиби беҳтар кардани корҳоро ба даст овардем. Ва хеле пурқувват - ман дар назар дорам, ки ман ҳангоми коркарди маълумот барои fintech чунин корҳоро анҷом додам ва ин ба ман имкон дод, ки тақрибан панҷ маротиба суръат гирам. Ин як такони хеле бузург аст, махсусан дар ҷаҳоне, ки протсессорҳо суръат намегиранд ва мо то ҳол интизори беҳбудиҳо ҳастем.

Карераи муҳандиси иҷроиш

Андрей: Ман инчунин мехостам, ки умуман дар бораи касбу кор пурсам. Шумо бо кори JIT-и худ дар HotSpot шӯҳрат пайдо кардед ва сипас ба Azul кӯчидед, ки он ҳам як ширкати JVM аст. Аммо мо аллакай бештар ба сахтафзор кор мекардем, на нармафзор. Ва он гоҳ онҳо ногаҳон ба маълумоти Big ва Machine Learning ва сипас ба ошкоркунии қаллобӣ гузаштанд. Ин чӣ гуна рӯй дод? Инҳо соҳаҳои хеле гуногуни рушд мебошанд.

Клиф: Ман муддати тӯлонӣ барномасозӣ мекунам ва тавонистам дарсҳои гуногун гузаронам. Ва вақте ки одамон мегӯянд: "Оҳ, шумо ҳамон касест, ки барои Java JIT кардед!", ин ҳамеша хандаовар аст. Аммо пеш аз он, ман дар болои клони PostScript кор мекардам - ​​забоне, ки Apple як вақтҳо барои принтерҳои лазерии худ истифода мекард. Ва пеш аз он ман як амалисозии забони чорумро анҷом додам. Ман фикр мекунам, ки мавзӯи умумӣ барои ман таҳияи асбобҳост. Дар тамоми умри худ ман асбобҳое месозам, ки дигарон бо онҳо барномаҳои ҷолиби худро менависанд. Аммо ман инчунин дар таҳияи системаҳои амалиётӣ, драйверҳо, дебаггерҳои сатҳи ядро ​​​​, забонҳо барои таҳияи ОС, ки ночиз оғоз ёфтанд, иштирок доштам, аммо бо мурури замон мураккабтар шуданд. Аммо мавзуи асосй хануз хам кор карда баромадани асбобхо мебошад. Қисми зиёди ҳаёти ман дар байни Азул ва Офтоб гузашт ва он дар бораи Ява буд. Аммо вақте ки ман ба маълумоти Big ва Machine Learning дохил шудам, ман кулоҳи зебои худро баргардондам ва гуфтам: "Оҳ, ҳоло мо як мушкили ночиз дорем ва дар он ҷо бисёр чизҳои ҷолиб идома доранд ва одамон кор мекунанд." Ин роҳи бузурги рушд аст.

Бале, ман дар ҳақиқат компютерҳои тақсимшударо дӯст медорам. Аввалин кори ман ҳамчун донишҷӯ дар C, дар як лоиҳаи таблиғотӣ буд. Ин компютер дар микросхемаҳои Zilog Z80 тақсим карда шуд, ки маълумотро барои OCR аналогӣ ҷамъоварӣ мекунад, ки аз ҷониби анализатори воқеии аналогӣ истеҳсол шудааст. Ин як мавзӯи сард ва комилан девона буд. Аммо мушкилот вуҷуд дошт, баъзе қисматҳо дуруст эътироф карда нашуданд, бинобар ин шумо бояд расмро берун карда, ба шахсе нишон диҳед, ки аллакай бо чашмонашон хонда, он чизеро гузориш дода метавонистанд ва аз ин рӯ ҷойҳои корӣ бо маълумот буданд ва ин корҳо забони худро доштанд. Як пуштибоне мавҷуд буд, ки ҳамаи инро коркард мекард - Z80s дар баробари терминалҳои vt100 кор мекунанд - як нафар барои як нафар ва дар Z80 модели барномасозии параллелӣ мавҷуд буд. Баъзе порчаи хотираи умумӣ, ки аз ҷониби ҳамаи Z80s дар дохили конфигуратсияи ситораҳо мубодила мешаванд; Дар пушти пушти низ муштарак буд, ва нисфи RAM дар дохили шабака тақсим карда шуд, ва нисфи дигар хусусӣ буд, ё рафта, ба чизи дигар. Системаи пурмаънои мураккаби мувозӣ тақсимшуда бо хотираи муштарак... нимпайкара. Ин кай буд... Ман ҳатто дар ёд надорам, дар ҷое дар миёнаи солҳои 80-ум. Хеле вакт пеш. 
Бале, биёед фарз кунем, ки 30 сол хеле пеш аст.Мушкилоти марбут ба компютерҳои тақсимшуда муддати хеле тӯлонӣ вуҷуд дошт; одамон кайҳо боз дар ҷанг буданд. Беовулф-кластерҳо. Чунин кластерҳо чунин ба назар мерасанд... Масалан: Ethernet мавҷуд аст ва x86-и тези шумо ба ин Ethernet пайваст аст ва ҳоло шумо мехоҳед хотираи муштараки қалбакиро ба даст оред, зеро он вақт ҳеҷ кас рамзгузории ҳисоббарории тақсимшударо иҷро карда наметавонист, ин хеле душвор буд ва аз ин рӯ вуҷуд дорад. хотираи муштараки қалбакӣ бо саҳифаҳои хотираи муҳофизатӣ дар x86 буд ва агар шумо ба ин саҳифа навиштед, мо ба протсессорҳои дигар гуфтем, ки агар онҳо ба ҳамон хотираи муштарак дастрасӣ пайдо кунанд, он бояд аз шумо бор карда шавад ва аз ин рӯ чизе монанди протокол барои дастгирии ҳамоҳангии кэш пайдо шуд ва нармафзор барои ин. Консепсияи ҷолиб. Мушкилоти аслӣ, албатта, чизи дигар буд. Ҳамаи ин кор кард, аммо шумо зуд ба мушкилоти иҷроиш дучор шудед, зеро ҳеҷ кас моделҳои иҷроишро дар сатҳи кофӣ нафаҳмид - кадом намунаҳои дастрасии хотира вуҷуд доранд, чӣ гуна бояд боварӣ ҳосил кард, ки гиреҳҳо ба ҳамдигар беохир пинг намекунанд ва ғайра.

Он чизе ки ман дар H2O пайдо кардам, ин аст, ки худи таҳиягарон барои муайян кардани он, ки параллелизм дар куҷо пинҳон аст ва дар куҷо нест. Ман як модели рамзгузориро таҳия кардам, ки навиштани рамзи баландсифатро осон ва содда кардааст. Аммо навиштани рамзи суст коркунанда душвор аст, он бад хоҳад буд. Шумо бояд ба таври ҷиддӣ кӯшиш кунед, ки рамзи сустро нависед, шумо бояд усулҳои ғайристандартиро истифода баред. Рамзи тормоз дар назари аввал намоён аст. Дар натиҷа, шумо одатан кодеро менависед, ки зуд кор мекунад, аммо шумо бояд фаҳмед, ки дар ҳолати хотираи муштарак чӣ кор кардан лозим аст. Ҳамаи ин ба массивҳои калон вобаста аст ва рафтори он ба массивҳои калони ғайридавлатӣ дар параллелӣ Java монанд аст. Ман дар назар дорам, тасаввур кунед, ки ду ришта ба массиви параллелӣ менависанд, яке аз онҳо ғолиб меояд ва дигаре мутаносибан мағлуб мешавад ва шумо намедонед, ки кадоме аз он аст. Агар онҳо ноустувор набошанд, пас фармоиш метавонад ҳар чизе ки шумо мехоҳед, бошад - ва ин воқеан хуб кор мекунад. Одамон воқеан дар бораи тартиби амалиётҳо ғамхорӣ мекунанд, онҳо ноустуворро дар ҷойҳои лозима мегузоранд ва онҳо интизоранд, ки мушкилоти иҷрои хотира дар ҷойҳои лозима вуҷуд дорад. Дар акси ҳол, онҳо танҳо кодро дар шакли ҳалқаҳо аз 1 то N менависанд, ки дар он N якчанд триллионҳо аст, ба умеди он, ки ҳама ҳолатҳои мураккаб ба таври худкор мувозӣ мешаванд - ва он дар он ҷо кор намекунад. Аммо дар H2O ин на Java аст ва на Scala; шумо метавонед онро "Java минус минус" ҳисоб кунед, агар хоҳед. Ин услуби хеле равшани барномасозӣ аст ва ба навиштани рамзи оддии C ё Java бо ҳалқаҳо ва массивҳо монанд аст. Аммо дар айни замон хотираро дар терабайт коркард кардан мумкин аст. Ман то ҳол H2O-ро истифода мебарам. Ман онро баъзан дар лоиҳаҳои гуногун истифода мебарам - ва он ҳоло ҳам зудтарин чизест, ки даҳҳо маротиба тезтар аз рақибони худ. Агар шумо Big Data бо маълумоти сутунӣ кор карда истода бошед, пас задани H2O хеле душвор аст.

Мушкилоти техникӣ

Андрей: Мушкилоти бузургтарини шумо дар тамоми касбатон кадом буд?

Клиф: Оё мо кисми техникй ва ё гайритехникии масъаларо мухокима мекунем? Ман гуфта метавонам, ки бузургтарин мушкилот мушкилоти техникӣ нестанд. 
Дар бораи мушкилоти техникӣ. Ман танҳо онҳоро мағлуб кардам. Ман ҳатто намедонам, ки бузургтаринаш чӣ буд, аммо баъзе чизҳои ҷолибе буданд, ки вақти зиёдеро талаб мекарданд, муборизаи равонӣ. Вақте ки ман ба Офтоб рафтам, ман боварӣ доштам, ки ман мураттиби зуд месозам ва як гурӯҳи калонсолон дар ҷавоб гуфтанд, ки ман ҳеҷ гоҳ муваффақ намешавам. Аммо ман ин роҳро пайравӣ кардам, компиляторро ба тақсимкунандаи регистр навиштам ва он хеле зуд буд. Он мисли C1-и муосир зуд буд, аммо тақсимкунанда он вақт хеле сусттар буд ва дар паси андеша ин як мушкилоти бузурги сохтори додаҳо буд. Ба ман он барои навиштани тақсимкунандаи реестри графикӣ лозим буд ва ман дилеммаи байни ифоданокии код ва суръатро, ки дар он давра вуҷуд дошт ва хеле муҳим буд, нафаҳмидам. Маълум шуд, ки сохтори додаҳо одатан аз андозаи кэш дар x86-ҳои он вақт зиёд аст ва аз ин рӯ, агар ман дар аввал тахмин мекардам, ки тақсимкунандаи реестр 5-10 фоизи вақти умумии ҷиттерро кор мекунад, пас дар асл он чунин шуд. 50 фоиз.

Бо гузашти вақт, компилятор тозатар ва муассиртар шуд, дар бештари ҳолатҳо тавлиди коди даҳшатборро қатъ кард ва иҷрои он ба он чизе, ки компилятори C истеҳсол мекунад, шабоҳат пайдо кард. . Агар шумо рамзи монанди C нависед, шумо дар ҳолатҳои бештар ба монанди C кор хоҳед гирифт. Ва ҳар қадаре, ки шумо дуртар равед, ҳамон қадар зуд-зуд шумо рамзи асимптотикӣ бо сатҳи C мувофиқат мекунед, тақсимкунандаи реестр ба чизи мукаммал табдил ёфт... новобаста аз он ки коди шумо зуд ё суст кор мекунад. Ман корро дар тақсимкунанда идома додам, то он интихоби беҳтар кунад. Вай сусттар ва сусттар шуд, аммо дар ҳолатҳое, ки ҳеҷ каси дигар аз ӯҳдааш намебаромад, беҳтар ва беҳтар кор мекард. Ман метавонистам ба тақсимкунандаи регистр ғарқ шавам, як моҳи кори худро дар он ҷо дафн кунам ва ногаҳон тамоми код 5% тезтар иҷро мешавад. Ин борҳо рӯй дод ва тақсимкунандаи реестр ба як кори санъат табдил ёфт - ҳама онро дӯст медоштанд ё нафрат мекарданд ва одамони академия дар мавзӯи "чаро ҳама чиз ин тавр карда мешавад" саволҳо медоданд, чаро не? скан хати, ва чӣ фарқияте дорад. Ҷавоб ҳоло ҳам ҳамон аст: тақсимкунанда дар асоси ранги графикӣ ва кори хеле бодиққат бо коди буферӣ ба силоҳи ғалаба баробар аст, беҳтарин комбинатсия, ки ҳеҷ кас наметавонад онро мағлуб кунад. Ва ин як чизи хеле норавшан аст. Ҳама чизи дигаре, ки мураттиб мекунад, чизҳои хеле хуб омӯхташуда ҳастанд, гарчанде ки онҳо низ ба сатҳи санъат расонида шудаанд. Ман ҳамеша корҳое мекардам, ки бояд мураттибро ба асари санъат табдил диҳад. Аммо ҳеҷ яке аз инҳо чизи ғайриоддӣ набуд - ба истиснои тақсимкунандаи реестр. Ҳилла дар он аст, ки эҳтиёт бошед бурида дар зери сарборӣ ва, агар ин рӯй диҳад (агар манфиатдор бошад, ман метавонам муфассалтар шарҳ диҳам), ин маънои онро дорад, ки шумо метавонед хашмгинтарро бе хатари афтодан дар ҷадвали иҷроиш ба таври хашмгинтар ворид кунед. Дар он рӯзҳо як даста мураттибони мукаммале буданд, ки бо луқмаҳо ва ҳуштакҳо овезон буданд, ки тақсимкунандагони регистрҳо доштанд, аммо ҳеҷ каси дигар ин корро карда наметавонист.

Мушкилот дар он аст, ки агар шумо усулҳоеро илова кунед, ки бояд майдони дохилкунӣ, зиёд ва зиёд кардани майдони дохилшавандаро илова кунед, маҷмӯи арзишҳои истифодашуда фавран аз шумораи регистрҳо зиёдтар мешаванд ва шумо бояд онҳоро буридан лозим аст. Сатҳи интиқодӣ одатан вақте меояд, ки тақсимкунанда таслим мешавад ва як номзади хуб барои рехтани дигар ба маблағи дигар аст, шумо баъзе чизҳои ваҳшӣ мефурӯшед. Арзиши дохилкунӣ дар ин ҷо дар он аст, ки шумо як қисми хароҷотро аз даст медиҳед, хароҷоти занг ва сарфаро аз даст медиҳед, шумо метавонед арзишҳоро дар дохили он бубинед ва минбаъд онҳоро оптимизатсия кунед. Арзиши дохилкунӣ аз он иборат аст, ки миқдори зиёди арзишҳои зинда ба вуҷуд меоянд ва агар тақсимкунандаи реестри шумо зиёда аз зарурӣ сӯхта шавад, шумо фавран аз даст медиҳед. Аз ин рӯ, аксари тақсимкунандагон мушкилот доранд: ҳангоми убури хатти муайян, ҳама чиз дар ҷаҳон бурида мешавад ва ҳосилнокӣ метавонад ба ҳоҷатхона рехта шавад. Онҳое, ки компиляторро амалӣ мекунанд, баъзе эвристикаро илова мекунанд: масалан, барои қатъ кардани сатр аз андозаи кофӣ калон сар карда, зеро тақсимот ҳама чизро вайрон мекунад. Ин аст, ки ғалат дар графи иҷроиш чӣ гуна ба вуҷуд меояд - шумо дар сатр, дар сатр, иҷроиш оҳиста-оҳиста меафзояд - ва баъд авҷ! – он мисли домкрат зуд ба поён меафтад, зеро шумо аз ҳад зиёд қатор кардаед. Пеш аз пайдоиши Java ҳама чиз ҳамин тавр кор мекард. Java воридкунии бештарро талаб мекунад, аз ин рӯ ман бояд тақсимкунандаи худро хеле хашмгинтар гардонам, то он ба ҷои садама афтад ва агар шумо аз ҳад зиёд ворид кунед, он рехтанро оғоз мекунад, аммо пас лаҳзаи "дигар нарезад" ҳанӯз фаро мерасад. Ин як мушоҳидаи ҷолиб аст ва он танҳо ба ман ногаҳон омад, маълум нест, аммо он самараи хуб дод. Ман ба лайнкунии хашмгин машғул шудам ва он маро ба ҷойҳое бурд, ки иҷрои Java ва C паҳлӯ ба паҳлӯ кор мекунанд. Онҳо воқеан наздиканд - ман метавонам рамзи Java-ро нависам, ки нисбат ба рамзи C ва чизҳои ба ин монанд хеле тезтар аст, аммо ба ҳисоби миёна, дар тасвири бузурги чизҳо, онҳо тақрибан муқоисашавандаанд. Ман фикр мекунам, ки як қисми ин шоистагӣ тақсимкунандаи реестр аст, ки ба ман имкон медиҳад, ки ба қадри имкон аблаҳона ворид шавам. Ман танҳо ҳама чизеро, ки мебинам, дохил мекунам. Дар ин ҷо савол ин аст, ки оё тақсимкунанда хуб кор мекунад, оё натиҷа коди оқилона кор мекунад. Ин душвории калон буд: хамаи инро фахмидан ва ба кор андохтани он.

Каме дар бораи тақсимоти феҳрист ва бисёр ядроҳо

Владимир: Мушкилот ба монанди тақсимоти реестр ба як навъ мавзӯи абадӣ ва беохир ба назар мерасанд. Ман ҳайронам, ки оё ягон идеяе вуҷуд дошта бошад, ки умедбахш менамуд ва баъд дар амал ноком шуда бошад?

Клиф: Албатта! Тақсимоти реестр ин соҳаест, ки дар он шумо кӯшиши пайдо кардани баъзе эвристика барои ҳалли мушкилоти пурраи NP мебошад. Ва шумо ҳеҷ гоҳ ба ҳалли комил ноил шуда наметавонед, дуруст? Ин танҳо имконнопазир аст. Инак, тартиб додани пеш аз вақт - он низ бад кор мекунад. Дар ин ҷо сӯҳбат дар бораи баъзе ҳолатҳои миёна меравад. Дар бораи иҷрои маъмулӣ, то шумо метавонед рафта чизеро чен кунед, ки ба фикри шумо иҷрои хуби маъмулӣ аст - дар ниҳоят, шумо барои беҳтар кардани он кор карда истодаед! Тақсими феҳрист як мавзӯъест, ки дар бораи иҷроиш. Вақте ки шумо прототипи аввалро доред, он чизеро, ки лозим аст, кор мекунад ва ранг мекунад, кори иҷроиш оғоз мешавад. Шумо бояд хуб чен карданро ёд гиред. Чаро муҳим аст? Агар шумо маълумоти равшан дошта бошед, шумо метавонед ба соҳаҳои гуногун назар андозед ва бубинед: ҳа, ин ҷо кӯмак кард, аммо дар он ҷо ҳама чиз вайрон шуд! Баъзе идеяҳои хуб пайдо мешаванд, шумо эвристикаи нав илова мекунед ва ногаҳон ҳама чиз ба ҳисоби миёна каме беҳтар кор мекунад. Ё он оғоз намекунад. Ман як қатор ҳолатҳое доштам, ки мо барои иҷрои панҷ фоиз, ки рушди моро аз тақсимкунандаи қаблӣ фарқ мекард, мубориза мебурдем. Ва хар боре, ки чунин менамояд: дар чое бурд мекунй, дар чое маглуб мекунй. Агар шумо асбобҳои хуби таҳлили фаъолият дошта бошед, шумо метавонед идеяҳои гумшударо пайдо кунед ва фаҳмед, ки чаро онҳо ноком мешаванд. Шояд бамаврид аст, ки ҳама чизро ҳамон тавре ки ҳаст, гузоштан, ё шояд ба танзими дақиқтар муносибат кардан, ё берун рафта, чизи дигареро ислоҳ кардан лозим аст. Ин як маҷмӯи пурраи чизҳост! Ман ин хаки олиҷанобро сохтам, аммо ба ман ҳам ба ин, ин ва ин як лозим аст - ва маҷмӯи умумии онҳо баъзе беҳбудиҳо медиҳад. Ва танҳоҳо метавонанд ноком шаванд. Ин хусусияти кори иҷро оид ба масъалаҳои NP-пурра аст.

Владимир: Кас эҳсос мекунад, ки чизҳое мисли ранг кардан дар тақсимкунандагон мушкилоте ҳастанд, ки аллакай ҳал шудаанд. Хуб, ин барои шумо қарор дода шуд, аз рӯи он чизе ки шумо мегӯед, пас оё он ҳам меарзад ...

Клиф: Ин тавр хал нашудааст. Шумо бояд онро ба «ҳал» табдил диҳед. Проблемахои душвор мавчуданд ва онхоро хал кардан лозим аст. Вақте ки ин кор анҷом дода мешавад, вақти он расидааст, ки дар бораи ҳосилнокӣ кор кунем. Шумо бояд ба ин кор мувофиқат кунед - меъёрҳоро иҷро кунед, ченакҳоро ҷамъ кунед, вазъиятҳоро шарҳ диҳед, вақте ки шумо ба версияи қаблӣ бармегардед, хаки кӯҳнаи шумо дубора ба кор шурӯъ кард (ё баръакс, қатъ шуд). Ва то ба чизе ноил нашавед, таслим нашавед. Тавре ки ман аллакай гуфтам, агар ғояҳои аҷибе бошанд, ки кор накарданд, аммо дар соҳаи тақсимоти реестри ғояҳо тақрибан беохир аст. Масалан, шумо метавонед нашрияҳои илмиро хонед. Хол он ки холо ин район назар ба давраи чавониаш хеле сусттар ба харакат даромад ва равшантар гардид. Вале дар ин соха одамони бешумор кор мекунанд ва тамоми фикру андешахояшон сазовори санчишанд, хама дар болояш интизоранд. Ва шумо наметавонед бигӯед, ки онҳо то чӣ андоза хубанд, агар шумо онҳоро санҷед. То чӣ андоза онҳо бо ҳама чизи дигар дар тақсимкунандаи шумо ҳамгиро мешаванд, зеро тақсимкунанда бисёр корҳоро иҷро мекунад ва баъзе ғояҳо дар тақсимкунандаи мушаххаси шумо кор намекунанд, аммо дар тақсимкунандаи дигар онҳо ба осонӣ кор мекунанд. Роҳи асосии ғолиб барои тақсимкунанда ин кашидани ашёи суст берун аз роҳи асосӣ ва маҷбур кардани он аст, ки дар ҳудуди роҳҳои суст тақсим карда шавад. Ҳамин тавр, агар шумо хоҳед, ки GC-ро идора кунед, роҳи сустро пеш гиред, оптимизатсия кунед, истисно партоед, ҳама чизҳо - шумо медонед, ки ин чизҳо нисбатан каманд. Ва онҳо дар ҳақиқат каманд, ман тафтиш кардам. Шумо кори иловагӣ мекунед ва он бисёр маҳдудиятҳоро дар ин роҳҳои суст бартараф мекунад, аммо ин аслан муҳим нест, зеро онҳо суст ва кам сафар мекунанд. Масалан, нишондиҳандаи нул - ин ҳеҷ гоҳ рӯй намедиҳад, дуруст? Шумо бояд якчанд роҳҳоро барои чизҳои гуногун дошта бошед, аммо онҳо набояд ба роҳи асосӣ халал расонанд. 

Владимир: Шумо дар бораи бисёр ядроҳо чӣ фикр доред, вақте ки якбора ҳазорҳо ядроҳо мавҷуданд? Оё ин чизи муфид аст?

Клиф: Муваффақияти GPU нишон медиҳад, ки он хеле муфид аст!

Владимир: Онҳо хеле махсус мебошанд. Дар бораи протсессорҳои таъиноти умумӣ чӣ гуфтан мумкин аст?

Клиф: Хуб, ин модели тиҷоратии Azul буд. Ҷавоб дар замоне баргашт, ки одамон воқеан иҷрои пешгӯишавандаро дӯст медоштанд. Он вақт навиштани рамзи параллелӣ душвор буд. Модели рамзгузории H2O хеле миқёспазир аст, аммо он модели таъиноти умумӣ нест. Шояд нисбат ба истифодаи GPU каме умумӣтар бошад. Мо дар бораи мураккабии кор карда баромадани ин гуна чиз ё мураккабии истифодаи он сухан меронем? Масалан, Азул ба ман дарси ҷолибе дод, ки хеле норавшан аст: кэшҳои хурд муқаррарӣ мебошанд. 

Бузургтарин мушкилот дар ҳаёт

Владимир: Дар бораи мушкилоти ғайри техникӣ чӣ гуфтан мумкин аст?

Клиф: Мушкилоти калонтарин ин буд, ки... бо одамон меҳрубон ва хушмуомила будан. Ва дар натиҷа, ман ҳамеша худро дар ҳолатҳои ниҳоят муноқиша меёфтам. Онҳое, ки ман медонистам, ки корҳо нодуруст пеш мераванд, аммо намедонистам, ки бо ин мушкилот чӣ гуна пеш равем ва аз ӯҳдаи онҳо баромада наметавонистам. Бисьёр проблемахои мудим, ки даххо сол давом мекарданд, хамин тавр ба миён омаданд. Далели он, ки Java дорои компиляторҳои C1 ва C2 аст, натиҷаи бевоситаи ин аст. Далели он, ки дар Java дар тӯли даҳ сол паиҳам ягон компиляцияи бисёрсатҳӣ вуҷуд надошт, инчунин натиҷаи мустақим аст. Маълум аст, ки ба мо чунин система лозим буд, вале маълум нест, ки чаро он вучуд надошт. Ман бо як муҳандис... ё як гурӯҳи муҳандисон мушкилот доштам. Як вактхо, вакте ки дар «Сан» ба кор шуруъ кардам, ман... Хуб, на танхо он вакт, ман умуман хамеша дар хама чиз фикри худро дорам. Ва ман фикр мекардам, ки ин дуруст аст, ки шумо метавонед ин ҳақиқати худро бигиред ва онро сари вақт бигӯед. Хусусан, зеро ман аксар вақт ба таври ҳайратангез ҳақ будам. Ва агар ин равиш ба шумо писанд наояд... махсусан агар шумо ошкоро хато мекунед ва бемаънӣ мекунед... Умуман, кам одамон ин шакли муоширатро таҳаммул карда метавонистанд. Ҳарчанд баъзеҳо метавонистанд, мисли ман. Ман тамоми ҳаёти худро дар асоси принсипҳои меритократӣ бунёд кардам. Агар ба ман ягон чизи нодурустро нишон дихед, дархол ру гардонда мегуям: бемаънй гуфтед. Дар баробари ин, албатта, маъзарат мехохам ва хамаи он чиро, ки агар бошад, бахсашро кайд карда, дигар чорахои дуруст мебинам. Аз тарафи дигар, ман дар бораи фоизи бениҳоят бузурги вақти умумӣ ба таври ҳайратангез дуруст ҳастам. Ва он дар муносибат бо одамон чандон хуб кор намекунад. Ман кӯшиш намекунам, ки хуб бошам, аммо ман саволро рӯирост медиҳам. "Ин ҳеҷ гоҳ кор намекунад, зеро як, ду ва се." Ва онҳо мегуфтанд: "Оҳ!" Оқибатҳои дигаре низ буданд, ки эҳтимол нодида гирифтан беҳтар буд: масалан, оқибатҳое, ки боиси талоқ аз зани ман ва даҳ соли депрессия пас аз он шуданд.

Мушкилот ин мубориза бо одамон аст, бо дарки онҳо дар бораи он ки шумо чӣ кор карда метавонед ё карда наметавонед, чӣ муҳим аст ва чӣ не. Дар бораи услуби рамзгузорӣ мушкилоти зиёде вуҷуд дошт. Ман то ҳол кодҳои зиёде менависам ва дар он рӯзҳо ман ҳатто маҷбур шудам, ки суръати корро суст кунам, зеро ман вазифаҳои аз ҳад зиёди мувозиро иҷро мекардам ва онҳоро бад иҷро мекардам, ба ҷои тамаркуз ба як. Ба қафо нигоҳ карда, ман нисфи кодро барои фармони Java JIT, фармони C2 навиштам. Кодери навбатии зудтарин нисфи суст, қисми дигараш суст навиштааст ва ин коҳиши экспоненсиалӣ буд. Шахси ҳафтум дар ин қатор хеле ва хеле суст буд - ин ҳамеша рӯй медиҳад! Ман бисёр кодро ламс кардам. Ман дидам, ки кӣ чӣ навиштааст, бидуни истисно, ман ба коди онҳо нигоҳ карда, ҳар яки онҳоро дидам ва то ҳол худам бештар аз ҳар кадоми онҳо навиштанро идома медодам. Ин усул бо одамон чандон хуб кор намекунад. Ба баъзе одамон ин маъқул нест. Ва ҳангоме ки аз ӯҳдаи ин кор баромада наметавонанд, ҳар гуна шикоят оғоз мешавад. Масалан, боре ба ман гуфтанд, ки коднависиро бас кунам, зеро ман коди аз ҳад зиёд менависам ва ин дастаро зери хатар мемонд ва ин ҳама ба назари ман шӯхӣ менамуд: ака, агар дастаи боқимонда аз байн равад ва ман код навиштанро давом медиҳам, шумо танҳо нисфи дастаҳоро аз даст медиҳед. Аз тарафи дигар, агар ман навиштани кодро давом диҳам ва шумо нисфи дастаро аз даст медиҳед, ин ба идоракунии хеле бад ба назар мерасад. Ман ҳеҷ гоҳ дар бораи он фикр намекардам, ҳеҷ гоҳ дар ин бора сӯҳбат накардаам, аммо он ҳанӯз дар ҷое дар сари ман буд. Фикр дар қафои май чарх мезад: «Ҳама шумо маро шӯхӣ мекунед?» Аз ин рӯ, бузургтарин мушкил ман ва муносибати ман бо одамон буд. Ҳоло ман худро беҳтар мефаҳмам, ман муддати тӯлонӣ роҳбари як гурӯҳи барномасозон будам ва ҳоло бевосита ба одамон мегӯям: шумо медонед, ки ман ман ҳастам ва шумо бояд бо ман кор кунед - оё дуруст аст, ки ман истодаам. Ин ҷо? Ва ҳангоме ки онҳо бо он мубориза бурданд, ҳама чиз кор кард. Дарвоқеъ, ман на бад ҳастам ва на хуб, ман ягон нияти бад ё орзуи худхоҳӣ надорам, ин танҳо моҳияти ман аст ва ман бояд бо он чӣ гуна зиндагӣ кунам.

Андрей: Ба наздикӣ ҳама дар бораи худшиносӣ барои интровертҳо ва умуман малакаҳои нарм сӯҳбат карданд. Шумо дар ин бора чй гуфта метавонед?

Клиф: Бале, ин фаҳмиш ва дарсест, ки ман аз талоқам аз занам гирифтам. Он чизе ки ман аз талоқ фаҳмидам, худамро фаҳмидам. Ҳамин тавр ман дигар одамонро фаҳмидам. Бифаҳмед, ки ин ҳамкорӣ чӣ гуна кор мекунад. Ин паи хам ба кашфиёт оварда расонд. Огоҳӣ вуҷуд дошт, ки ман кӣ ҳастам ва ман чиро муаррифӣ мекунам. Ман чӣ кор карда истодаам: ё ман бо кор банд ҳастам, ё аз муноқиша канорагирӣ мекунам ё чизи дигар - ва ин сатҳи худшиносӣ воқеан кӯмак мекунад, ки худро дар зери назорат нигоҳ дорам. Пас аз ин ҳама чиз хеле осонтар мешавад. Як чизеро, ки ман на танҳо дар худам, балки дар дигар барномасозон низ кашф кардам, ин қобилияти лафзӣ карда натавонистани фикрҳо дар ҳолати фишори эмотсионалӣ мебошад. Масалан, шумо дар он ҷо нишаста рамзгузорӣ мекунед, дар ҳолати ҷараён, ва он гоҳ онҳо давида ба назди шумо меоянд ва бо ғазаб фарёд мезананд, ки чизе вайрон шудааст ва ҳоло алайҳи шумо чораҳои шадид андешида мешаванд. Ва шумо наметавонед чизе бигӯед, зеро шумо дар ҳолати фишори эмотсионалӣ ҳастед. Дониши гирифташуда ба шумо имкон медиҳад, ки ба ин лаҳза омода шавед, аз он наҷот ёбед ва ба нақшаи ақибнишинӣ гузаред, ки пас аз он шумо метавонед коре кунед. Ҳамин тавр, ҳа, вақте ки шумо дарк мекунед, ки ин ҳама чӣ гуна кор мекунад, ин як воқеаи бузурги ҳаётро тағир медиҳад. 
Ман худам калимаи дурустро ёфта наметавонистам, аммо пайдарпайии амалҳоро ба ёд овардам. Гап дар сари он аст, ки ин аксуламал ба қадри шифоҳӣ ҷисмонӣ аст ва ба шумо фазо лозим аст. Чунин фазо, ба маънои Зен. Ин маҳз он чизест, ки бояд шарҳ дода шавад ва он гоҳ фавран канор равед - аз ҷиҳати ҷисмонӣ дур шавед. Вақте ки ман ба таври шифоҳӣ хомӯш мемонам, ман вазъиятро бо эҳсосот коркард карда метавонам. Вақте ки адреналин ба майнаи шумо мерасад, шуморо ба ҳолати ҷанг ё парвоз мегузарад, шумо дигар чизе гуфта наметавонед, не - акнун шумо аҳмақед, муҳандиси қамчинкоред, ки ҷавоби муносиб дода наметавонед ва ҳатто ҳамларо қатъ карда наметавонед ва ҳамлакунанда озод аст такрор ба такрор хучум кардан. Шумо бояд аввал худатон шавед, назоратро дубора ба даст оред, аз ҳолати "ҷанг ё парвоз" берун шавед.

Ва барои ин ба мо фазои шифоҳӣ лозим аст. Танҳо фазои озод. Агар шумо умуман чизе гӯед, шумо метавонед инро аниқ бигӯед ва сипас рафта, дар ҳақиқат барои худ "фазо" пайдо кунед: дар боғ сайр кунед, худро дар душ маҳкам кунед - ин муҳим нест. Чизи асосӣ ин аст, ки муваққатан аз ин вазъият ҷудо шавед. Ҳамин ки шумо ҳадди аққал чанд сонияро хомӯш мекунед, назорат бармегардад, шумо бодиққат фикр мекунед. "Хуб, ман як навъ аблаҳ нестам, ман корҳои аблаҳӣ намекунам, ман шахси хеле муфид ҳастам." Вақте ки шумо тавонистед худро бовар кунонед, вақти он расидааст, ки ба марҳилаи дигар гузаред: фаҳмед, ки чӣ рӯй дод. Шумо ҳамла карданд, ҳамла аз ҷое, ки шумо интизор набудед, омад, ин як камини беинсоф ва зишт буд. Ин бад аст. Қадами навбатӣ фаҳмидани он аст, ки чаро ҳамлагар ба ин ниёз дошт. Дар ҳақиқат, чаро? Шояд барои он ки худи ӯ хашмгин аст? Чаро ӯ девона аст? Масалан, аз он сабаб, ки ӯ худашро фиреб дод ва масъулиятро қабул карда наметавонад? Ин аст, ки тамоми вазъиятро бодиққат ҳал кардан мумкин аст. Аммо ин барои манёвр, фазои шифоҳӣ лозим аст. Қадами аввалин ин қатъ кардани алоқаи шифоҳӣ мебошад. Аз муҳокима бо калимаҳо худдорӣ кунед. Онро бекор кунед, ҳарчи зудтар дур шавед. Агар ин гуфтугӯи телефонӣ бошад, танҳо телефонро гузоред - ин маҳоратест, ки ман аз муошират бо зани собиқам омӯхтам. Агар сӯҳбат ба ҷои хубе набарояд, танҳо "хайр" гӯед ва телефонро хомӯш кунед. Аз тарафи дигари телефон: "бла бла бла", шумо ҷавоб медиҳед: "ҳа, хайр!" ва телефонро гузоред. Шумо танҳо сӯҳбатро тамом мекунед. Пас аз панҷ дақиқа, вақте ки қобилияти тафаккури оқилона ба шумо бармегардад, шумо каме сард шудед, дар бораи ҳама чиз фикр кардан мумкин аст, ки чӣ рӯй дод ва чӣ рӯй медиҳад. Ва ба таҳияи посухи оқилона шурӯъ кунед, на танҳо аз эҳсосот. Барои ман рахнашавии худшиносӣ маҳз он буд, ки дар ҳолати фишори эмотсионалӣ сухан гуфта наметавонам. Аз ин ҳолат баромадан, фикр кардан ва ба нақша гирифтан чӣ гуна ҷавоб додан ва ҷуброн кардани мушкилот - ин қадамҳои дуруст дар ҳолате мебошанд, ки шумо сухан гуфта наметавонед. Роҳи осонтарини гурехтан аз вазъияте, ки дар он фишори эмотсионалӣ зуҳур мекунад ва танҳо даст кашидан аз иштирок дар ин стресс аст. Пас аз он шумо метавонед фикр кунед, вақте ки шумо фикр карда метавонед, шумо метавонед сухан гӯед ва ғайра.

Воқеан, дар суд адвокати муқобил мекӯшад, ки ин корро бо шумо кунад - ҳоло маълум аст, ки чаро. Чунки у қодир аст, ки шуморо то ба дараҷае пахш кунад, ки шумо ҳатто номатонро талаффуз карда наметавонед. Ба маънои хеле воқеӣ, шумо наметавонед гап занед. Агар ин бо шумо рӯй диҳад ва агар шумо донед, ки шумо худро дар ҷойе, ки ҷангҳои лафзӣ ҷараён доранд, дар ҷойе ба монанди додгоҳ хоҳед ёфт, пас шумо метавонед бо адвокати худ биёед. Адвокат барои шумо истода, ҳамлаи шифоҳиро қатъ мекунад ва онро комилан қонунӣ анҷом медиҳад ва фазои гумшудаи Зен ба шумо бармегардад. Масалан, ман маҷбур шудам, ки ба оилаам якчанд маротиба занг занам, судя дар ин бора хеле дӯстона буд, аммо адвокати мухолиф дод зада, ба ман дод зад, ман ҳатто як калимаро ба забон оварда натавонистам. Дар ин ҳолатҳо, истифодаи миёнарав барои ман беҳтар аст. Миёнарав ҳамаи ин фишорро, ки дар ҷараёни пайваста ба болои шумо мерезад, қатъ мекунад, шумо фазои зарурии Зенро пайдо мекунед ва бо он қобилияти сухан гуфтан бармегардад. Ин як соҳаи тамоми дониш аст, ки дар он бисёр чизҳоро омӯхтан, дар дохили худ кашф кардан лозим аст ва ҳамаи ин ба қарорҳои стратегии сатҳи баланд табдил меёбад, ки барои одамони гуногун фарқ мекунанд. Баъзе одамон мушкилоти дар боло тавсифшударо надоранд; одатан, одамоне, ки фурӯшандагони касбӣ ҳастанд, чунин мушкилот надоранд. Ин ҳама афроде, ки рӯзгори худро бо сухан пеш мебаранд - сарояндаҳо, шоирон, пешвоёни дин ва сиёсатмадорон ҳамеша чизе мегӯянд. Онҳо чунин мушкилот надоранд, аммо ман дорам.

Андрей: Ин... гайричашмдошт буд. Аҷаб, мо аллакай бисёр сӯҳбат кардем ва вақти он расидааст, ки ин мусоҳибаро анҷом диҳем. Мо дар конфронс ҳатман вомехӯрем ва метавонем ин муколамаро идома диҳем. Дар Hydra вохӯред!

Шумо метавонед сӯҳбати худро бо Клифф дар конфронси Hydra 2019, ки рӯзҳои 11-12 июли соли 2019 дар Санкт-Петербург баргузор мешавад, идома диҳед. Вай бо гузориш меояд "Таҷрибаи хотираи транзаксионии Azul Hardware". Билетхоро харидан мумкин аст дар сомонаи расмӣ.

Манбаъ: will.com

Илова Эзоҳ