Agallamh sgoinneil le Cliff Click, athair cruinneachadh JIT ann an Java

Agallamh sgoinneil le Cliff Click, athair cruinneachadh JIT ann an JavaCliff Cliff - CTO de Cratus (mothachaidhean IoT airson leasachadh pròiseas), stèidheadair agus co-stèidheadair grunn chompanaidhean tòiseachaidh (a’ gabhail a-steach Rocket Realtime School, Neurensic agus H2O.ai) le grunn ar-a-mach soirbheachail. Sgrìobh Cliff a’ chiad neach-cruinneachaidh aige aig aois 15 (Pascal airson an TRS Z-80)! Tha e ainmeil airson na h-obrach aige air C2 ann an Java (The Sea of ​​Nodes IR). Sheall an neach-cruinneachaidh seo don t-saoghal gum b’ urrainn do JIT còd àrd-inbhe a thoirt gu buil, a bha mar aon de na factaran ann an nochdadh Java mar aon de na prìomh àrd-ùrlaran bathar-bog ùr-nodha. An uairsin chuidich Cliff Azul Systems gus prìomh fhrèam 864-core a thogail le bathar-bog fìor Java a thug taic do GC stad air tiùrr 500-gigabyte taobh a-staigh milliseconds 10. San fharsaingeachd, chaidh aig Cliff air obrachadh air gach taobh den JVM.

 
Tha an habrapost seo na dheagh agallamh le Cliff. Bruidhnidh sinn air na cuspairean a leanas:

  • Eadar-ghluasad gu optimizations ìre ìosal
  • Mar a nì thu ath-bheothachadh mòr
  • Modail cosgais
  • Trèanadh optimization ìre ìosal
  • Eisimpleirean practaigeach de leasachadh coileanaidh
  • Carson a chruthaicheas tu do chànan prògramaidh fhèin
  • Dreuchd innleadair coileanaidh
  • Dùbhlain Teicnigeach
  • Beagan mu riarachadh chlàran agus ioma-cridhe
  • An dùbhlan as motha ann am beatha

Tha an t-agallamh air a stiùireadh le:

  • Andrey Satarin bho Amazon Web Services. Na chùrsa-beatha, chaidh aige air a bhith ag obair ann am pròiseactan gu tur eadar-dhealaichte: rinn e deuchainn air an stòr-dàta sgaoilte NewSQL ann an Yandex, siostam lorg sgòthan ann an Kaspersky Lab, geama ioma-chluicheadair ann am Mail.ru agus seirbheis airson prìsean iomlaid cèin a thomhas ann an Deutsche Bank. Ùidh ann a bhith a’ dèanamh deuchainn air backend mòr agus siostaman sgaoilte.
  • Vladimir Sitnikov bho Netcracker. Deich bliadhna de dh’ obair air coileanadh agus scalability NetCracker OS, bathar-bog air a chleachdadh le gnìomhaichean cian-conaltraidh gus pròiseasan riaghlaidh uidheamachd lìonra is lìonraidh a dhèanamh fèin-ghluasadach. Ùidh ann an cùisean coileanaidh Stòr-dàta Java agus Oracle. Ùghdar air còrr air dusan leasachadh coileanaidh ann an draibhear oifigeil PostgreSQL JDBC.

Eadar-ghluasad gu optimizations ìre ìosal

Андрей: Tha thu nad ainm mòr ann an saoghal cruinneachadh JIT, Java, agus obair coileanaidh san fharsaingeachd, ceart? 

bearradh: Tha e mar sin!

Андрей: Feuch an tòisich sinn le cuid de cheistean coitcheann mu obair dèanadais. Dè do bheachd air an roghainn eadar optimizations àrd-ìre agus ìre ìosal mar a bhith ag obair aig ìre CPU?

bearradh: Tha, tha a h-uile dad sìmplidh an seo. Is e an còd as luaithe an tè nach ruith a-riamh. Mar sin, feumaidh tu an-còmhnaidh tòiseachadh bho ìre àrd, ag obair air algorithms. Buailidh comharradh O nas fheàrr comharradh O nas miosa, mura dèan cuid de chuibhrichean mòra gu leòr eadar-theachd. Bidh cùisean ìre ìosal a’ dol mu dheireadh. Mar as trice, ma tha thu air an còrr den stac agad a bharrachadh math gu leòr agus gu bheil stuth inntinneach air fhàgail fhathast, tha sin aig ìre ìosal. Ach ciamar a thòisicheas tu bho ìre àrd? Ciamar a tha fios agad gu bheil obair àrd-ìre gu leòr air a dhèanamh? Uill... chan eil dòigh. Chan eil reasabaidhean deiseil ann. Feumaidh tu an duilgheadas a thuigsinn, co-dhùnadh dè a tha thu a 'dol a dhèanamh (gus nach gabh thu ceumannan neo-riatanach san àm ri teachd) agus an uairsin faodaidh tu am pròifil a lorg, a dh'fhaodas rudeigin feumail a ràdh. Aig àm air choreigin, tuigidh tu fhèin gu bheil thu air faighinn cuidhteas rudan neo-riatanach agus tha an t-àm ann gleusadh aig ìre ìosal a dhèanamh. Tha seo gu cinnteach na sheòrsa sònraichte de ealain. Tha mòran dhaoine a 'dèanamh rudan neo-riatanach, ach a' gluasad cho luath 's nach eil ùine aca a bhith draghail mu chinneasachd. Ach seo gus an èirich a’ cheist gu h-obann. Mar as trice 99% den ùine chan eil duine a’ gabhail cùram de na nì mi, gus an àm nuair a thig rud cudromach air an t-slighe èiginneach nach eil dragh aig duine sam bith. Agus an seo tha a h-uile duine a’ tòiseachadh a’ cur dragh ort mu dheidhinn “carson nach do dh’ obraich e gu foirfe bhon fhìor thoiseach. ” San fharsaingeachd, tha an-còmhnaidh rudeigin ri leasachadh ann an coileanadh. Ach 99% den ùine chan eil stiùireadh sam bith agad! Tha thu dìreach a’ feuchainn ri toirt air rudeigin obrachadh agus sa phròiseas tha thu a’ faighinn a-mach dè tha cudromach. Chan urrainn dhut a-riamh fios a bhith agad ro-làimh gum feum am pìos seo a bhith foirfe, mar sin, gu dearbh, feumaidh tu a bhith foirfe anns a h-uile dad. Ach tha seo do-dhèanta agus cha dèan thu e. Tha an-còmhnaidh tòrr rudan ri rèiteachadh - agus tha sin gu tur àbhaisteach.

Mar a nì thu ath-bheothachadh mòr

Андрей: Ciamar a tha thu ag obair air taisbeanadh? Is e duilgheadas tar-ghnèitheach a tha seo. Mar eisimpleir, an robh agad a-riamh ri bhith ag obair air duilgheadasan a tha ag èirigh bho eadar-ghearradh mòran de ghnìomhachd gnàthach?

bearradh: Feuchaidh mi ri sheachnadh. Ma tha fios agam gum bi coileanadh na chùis, bidh mi a’ smaoineachadh mu dheidhinn mus tòisich mi air còdadh, gu sònraichte le structaran dàta. Ach gu tric gheibh thu a-mach seo gu math nas fhaide air adhart. Agus an uairsin feumaidh tu a dhol gu ceumannan mòra agus dèan na tha mi ag ràdh “ath-sgrìobhadh agus ceannsachadh”: feumaidh tu grèim fhaighinn air pìos mòr gu leòr. Bidh feum fhathast air cuid den chòd ath-sgrìobhadh air sgàth duilgheadasan coileanaidh no rudeigin eile. Ge bith dè an adhbhar airson còd ath-sgrìobhadh, tha e cha mhòr an-còmhnaidh nas fheàrr pìos nas motha ath-sgrìobhadh na pìos nas lugha. Aig an àm seo, bidh a h-uile duine a ’tòiseachadh a’ crathadh le eagal: “O mo Dhia, chan urrainn dhut suathadh air uimhir de chòd!” Ach gu dearbh, tha an dòigh-obrach seo cha mhòr an-còmhnaidh ag obair mòran nas fheàrr. Feumaidh tu duilgheadas mòr a ghabhail sa bhad, tarraing cearcall mòr timcheall air agus a ràdh: Bidh mi ag ath-sgrìobhadh a h-uile dad taobh a-staigh a ’chearcaill. Tha a 'chrìoch mòran nas lugha na an t-susbaint a-staigh a dh' fheumar a chur na àite. Agus ma tha an leithid de mhìneachadh de chrìochan a 'toirt cothrom dhut an obair a-staigh a dhèanamh gu foirfe, tha do làmhan saor, dèan na tha thu ag iarraidh. Cho luath ‘s a thuigeas tu an duilgheadas, tha am pròiseas ath-sgrìobhaidh tòrr nas fhasa, mar sin gabh grèim mòr!
Aig an aon àm, nuair a nì thu ath-sgrìobhadh mòr agus a thuigeas tu gu bheil coileanadh gu bhith na chùis, faodaidh tu tòiseachadh sa bhad a bhith draghail mu dheidhinn. Mar as trice bidh seo a’ tionndadh gu rudan sìmplidh mar “na dèan lethbhreac de dhàta, stiùir dàta cho sìmplidh sa ghabhas, dèan beag e.” Ann an ath-sgrìobhaidhean mòra, tha dòighean àbhaisteach ann airson coileanadh a leasachadh. Agus cha mhòr nach eil iad an-còmhnaidh a 'dol timcheall dàta.

Modail cosgais

Андрей: Ann am fear de na podcasts bhruidhinn thu mu mhodalan cosgais ann an co-theacsa cinneasachd. An urrainn dhut mìneachadh dè bha thu a’ ciallachadh le seo?

bearradh: Gu cinnteach. Rugadh mi ann an àm nuair a bha coileanadh pròiseasar air leth cudromach. Agus tha an àm seo a 'tilleadh a-rithist - chan eil an dàn gun ìoranas. Thòisich mi a 'fuireach ann an làithean innealan ochd-bit; bha a 'chiad choimpiutair agam ag obair le 256 bytes. Dìreach bytes. Bha a h-uile dad glè bheag. B’ fheudar stiùireadh a chunntadh, agus mar a thòisich sinn a’ gluasad suas an stac cànain prògramaidh, ghabh na cànanan air adhart barrachd is barrachd. Bha Assembler ann, an uairsin Basic, an uairsin thug C, agus C aire do mhòran fiosrachaidh, leithid riarachadh clàr agus taghadh stiùiridh. Ach bha a h-uile dad gu math soilleir an sin, agus nan dèanainn comharradh air eisimpleir de chaochladair, gheibhinn luchd, agus tha fios air cosgais an stiùiridh seo. Bidh am bathar-cruaidh a’ toirt a-mach àireamh sònraichte de chuairtean inneal, agus mar sin faodar astar cur gu bàs diofar rudan a thomhas dìreach le bhith a’ cur ris an stiùireadh gu lèir a tha thu gu bhith a’ ruith. Dh’ fhaodadh gach coimeas/deuchainn/meur/gairm/luchd/stòr a bhith air a chur ris agus a ràdh: sin an ùine cur gu bàs dhut. Nuair a bhios tu ag obair air coileanadh a leasachadh, bidh thu gu cinnteach a’ toirt aire do na h-àireamhan a tha a’ freagairt ri cearcallan beaga teth. 
Ach cho luath ‘s a thionndaidheas tu gu Java, Python agus rudan coltach ris, bidh thu gu sgiobalta a’ gluasad air falbh bho bhathar-cruaidh ìre ìosal. Dè a’ chosgais a th’ ann a bhith a’ gairm neach-faighinn ann an Java? Ma tha JIT ann an HotSpot ceart inline, luchdaichidh e, ach mura do rinn e seo, is e gairm gnìomh a bhios ann. Leis gu bheil an gairm air lùb teth, bheir e thairis air a h-uile optimization eile san lùb sin. Mar sin, bidh an fhìor chosgais mòran nas àirde. Agus sa bhad caillidh tu an comas coimhead air pìos còd agus tuigidh tu gum bu chòir dhuinn a chuir an gnìomh a thaobh astar gleoc pròiseasar, cuimhne agus tasgadan air a chleachdadh. Bidh seo uile inntinneach a-mhàin ma gheibh thu a-steach don choileanadh.
A-nis tha sinn ann an suidheachadh far nach eil astar pròiseasar air a dhol suas airson deich bliadhna. Tha na seann làithean air ais! Chan urrainn dhut tuilleadh cunntadh air deagh choileanadh aon-snàthainn. Ach ma thèid thu a-steach gu coimpiutaireachd co-shìnte gu h-obann, tha e uamhasach duilich, bidh a h-uile duine a’ coimhead ort mar Seumas Bond. Mar as trice bidh luathachadh deich uiread an seo a’ tachairt ann an àiteachan far a bheil cuideigin air rudeigin a dhèanamh suas. Feumaidh concurrency tòrr obrach. Gus an astar XNUMXx sin fhaighinn, feumaidh tu am modail cosgais a thuigsinn. Dè agus dè a chosgas e? Agus airson seo a dhèanamh, feumaidh tu tuigsinn mar a tha an teanga a 'freagairt air a' bhathar-cruaidh bunaiteach.
Thagh Màrtainn MacThòmais deagh fhacal airson a bhlog Co-fhaireachdainn meacanaigeach! Feumaidh tu tuigsinn dè tha am bathar-cruaidh a’ dol a dhèanamh, dè dìreach a nì e, agus carson a nì e na bhios e a’ dèanamh sa chiad àite. Le bhith a’ cleachdadh seo, tha e gu math furasta tòiseachadh air stiùireadh cunntaidh agus faighinn a-mach càite a bheil an ùine cur gu bàs a’ dol. Mura h-eil an trèanadh iomchaidh agad, tha thu dìreach a’ coimhead airson cat dubh ann an seòmar dorcha. Bidh mi a’ faicinn daoine a’ dèanamh an coileanadh as fheàrr fad na h-ùine aig nach eil fios dè an ifrinn a tha iad a’ dèanamh. Bidh iad a’ fulang mòran agus chan eil iad a’ dèanamh mòran adhartais. Agus nuair a bheir mi an aon phìos còd, sleamhnaich a-steach beagan hacks agus faigh astar còig no deich uiread, tha iad mar: uill, chan eil sin cothromach, bha fios againn mu thràth gu robh thu nas fheàrr. Gu h-iongantach. Cò mu dheidhinn a tha mi a’ bruidhinn… tha am modail cosgais mu dheidhinn dè an seòrsa còd a sgrìobhas tu agus dè cho luath sa ruitheas e sa chumantas san dealbh mhòr.

Андрей: Agus ciamar a chumas tu a leithid de leabhar nad cheann? A bheil seo air a choileanadh le barrachd eòlais, no? Cò às a tha an leithid de eòlas a’ tighinn?

bearradh: Uill, cha d’ fhuair mi m’ eòlas anns an dòigh as fhasa. Rinn mi prògramadh san t-Seanadh air ais anns na làithean nuair a thuigeas tu a h-uile stiùireadh. Tha e a’ faireachdainn gòrach, ach bhon uairsin tha an seata stiùiridh Z80 air fuireach nam cheann, nam chuimhne. Chan eil cuimhne agam air ainmean dhaoine taobh a-staigh mionaid bho bhith a’ bruidhinn, ach tha cuimhne agam air còd a chaidh a sgrìobhadh o chionn 40 bliadhna. Tha e èibhinn, tha e coltach ri syndrome"eòlaiche-inntinn".

Trèanadh optimization ìre ìosal

Андрей: A bheil dòigh nas fhasa faighinn a-steach?

bearradh: Tha agus chan eil. Chan eil am bathar-cruaidh a bhios sinn uile a’ cleachdadh air atharrachadh cho mòr thar ùine. Bidh a h-uile duine a’ cleachdadh x86, ach a-mhàin fònaichean sgairteil Arm. Mura h-eil thu a 'dèanamh seòrsa de dh' inneal cruaidh cruaidh, tha thu a 'dèanamh an aon rud. Ceart gu leòr, an ath rud. Chan eil an stiùireadh cuideachd air atharrachadh airson linntean. Feumaidh tu a dhol a sgrìobhadh rudeigin anns an t-Seanadh. Chan eil mòran, ach gu leòr airson tòiseachadh air tuigsinn. Tha thu a’ gàireachdainn, ach tha mi a’ bruidhinn gu tur dha-rìribh. Feumaidh tu an conaltradh eadar cànan agus bathar-cruaidh a thuigsinn. Às deidh sin feumaidh tu a dhol a sgrìobhadh beagan agus beagan compiler dèideagan a dhèanamh airson beagan cànan dèideagan. Tha coltach ri dèideag a’ ciallachadh gum feumar a dhèanamh ann an ùine reusanta. Faodaidh e a bhith gu math sìmplidh, ach feumaidh e stiùireadh a ghineadh. Cuidichidh an gnìomh a bhith a 'cruthachadh stiùireadh thu thu a' tuigsinn a 'mhodail cosgais airson na drochaid eadar a' chòd àrd-ìre a bhios a h-uile duine a 'sgrìobhadh agus an còd inneal a tha a' ruith air a 'bhathar-chruaidh. Thèid an conaltradh seo a losgadh a-steach don eanchainn aig an àm a thèid an neach-cruinneachaidh a sgrìobhadh. Fiù 's an neach-cruinneachaidh as sìmplidh. Às deidh sin, faodaidh tu tòiseachadh a ’coimhead air Java agus an fhìrinn gu bheil a chasm semantach tòrr nas doimhne, agus tha e tòrr nas duilghe drochaidean a thogail thairis air. Ann an Java, tha e tòrr nas duilghe a thuigsinn an do thionndaidh an drochaid againn math no dona, dè a bheir air tuiteam às a chèile agus dè nach dèan. Ach feumaidh tu seòrsa de thoiseach tòiseachaidh far am bi thu a’ coimhead air a’ chòd agus a’ tuigsinn: “seadh, bu chòir an neach-faighinn seo a bhith air a chòmhdach a h-uile uair.” Agus an uairsin bidh e a 'tionndadh a-mach gum bi seo uaireannan a' tachairt, ach a-mhàin an suidheachadh nuair a dh'fhàsas an dòigh ro mhòr, agus an JIT a 'tòiseachadh a' toirt a-steach a h-uile càil. Faodar coileanadh àiteachan mar sin a ro-innse sa bhad. Mar as trice bidh luchd-faighinn ag obair gu math, ach an uairsin bidh thu a’ coimhead air lùban mòra teth agus tuigidh tu gu bheil cuid de dh’ fhiosan gnìomh a’ seòladh timcheall an sin aig nach eil fios dè a tha iad a’ dèanamh. Is e seo an duilgheadas le cleachdadh farsaing de ghetters, is e an adhbhar nach eil iad air an inlinedadh nach eil e soilleir an e getter a th’ annta. Ma tha bunait còd fìor bheag agad, faodaidh tu dìreach cuimhneachadh air agus an uairsin a ràdh: is e getter a tha seo, agus is e neach-seata a tha seo. Ann am bunait còd mòr, tha a h-eachdraidh fhèin aig gach gnìomh, nach eil, san fharsaingeachd, aithnichte do dhuine sam bith. Tha am pròifil ag ràdh gun do chaill sinn 24% den ùine air lùb air choireigin agus gus tuigsinn dè a tha an lùb seo a’ dèanamh, feumaidh sinn coimhead air gach gnìomh a-staigh. Tha e do-dhèanta seo a thuigsinn gun a bhith a 'sgrùdadh a' ghnìomh, agus tha seo gu mòr a 'slaodadh sìos a' phròiseas tuigse. Sin as coireach nach bi mi a’ cleachdadh getters agus setters, tha mi air ìre ùr a ruighinn!
Càite am faigh thu am modail cosgais? Uill, 's urrainn dhut rudeigin a leughadh, gu dearbha... Ach tha mi a' smaoineachadh gur e an dòigh as fheàrr air a dhol an gnìomh. Is e a bhith a’ dèanamh inneal-cruinneachaidh beag an dòigh as fheàrr air a’ mhodail cosgais a thuigsinn agus a chuir a-steach nad cheann fhèin. Tha inneal-cruinneachaidh beag a bhiodh freagarrach airson prògramadh microwave na obair airson neach-tòiseachaidh. Uill, tha mi a’ ciallachadh, ma tha sgilean prògramaidh agad mu thràth, bu chòir sin a bhith gu leòr. Tha na rudan sin uile mar a bhith a’ parsadh sreang a tha agad mar sheòrsa de abairt ailseabra, a’ toirt a-mach stiùireadh airson obair matamataigeach às an sin san òrdugh cheart, a’ toirt na luachan ceart bho chlàran - tha seo uile air a dhèanamh aig an aon àm. Agus fhad ‘s a nì thu e, bidh e air a chlò-bhualadh nad eanchainn. Tha mi a 'smaoineachadh gu bheil fios aig a h-uile duine dè a bhios compiler a' dèanamh. Agus bheir seo tuigse air a 'mhodail cosgais.

Eisimpleirean practaigeach de leasachadh coileanaidh

Андрей: Dè eile a bu chòir dhut aire a thoirt dhut nuair a bhios tu ag obair air cinneasachd?

bearradh: Structaran dàta. Co-dhiù, tha, chan eil mi air na clasaichean sin a theagasg airson ùine mhòr ... Sgoil Rocaid. Bha e spòrsail, ach bha feum air tòrr oidhirp, agus tha beatha agam cuideachd! ceart gu leòr. Mar sin, ann an aon de na clasaichean mòra agus inntinneach, “Càite an tèid do choileanadh,” thug mi eisimpleir dha na h-oileanaich: chaidh dà gigabytes gu leth de dhàta fintech a leughadh bho fhaidhle CSV agus an uairsin bha aca ri obrachadh a-mach an àireamh de thoraidhean a chaidh a reic. . Dàta margaidh cuir strìochag gu cunbhalach. Pacaidean UDP air an atharrachadh gu cruth teacsa bho na 70an. Chicago Mercantile Exchange - a h-uile seòrsa de rudan mar ìm, arbhar, pònairean soighe, rudan mar sin. Bha e riatanach na toraidhean sin a chunntadh, an àireamh de ghnothaichean, meud cuibheasach gluasad airgead is bathar, msaa. Is e matamataigs malairt gu math sìmplidh a th’ ann: lorg an còd toraidh (is e sin caractaran 1-2 anns a ’chlàr hash), faigh an t-suim, cuir ri aon de na seataichean malairt, cuir meud, cuir luach ris, agus rud no dhà eile. Matamataig gu math sìmplidh. Bha buileachadh dèideagan gu math sìmplidh: tha a h-uile dad ann am faidhle, leugh mi am faidhle agus gluaisidh mi troimhe, a 'roinn chlàran fa leth ann an sreathan Java, a' coimhead airson na rudan riatanach annta agus gan cur suas a rèir na matamataig a chaidh a mhìneachadh gu h-àrd. Agus bidh e ag obair aig cuid de astar ìosal.

Leis an dòigh-obrach seo, tha e follaiseach dè a tha a’ dol, agus cha chuidich coimpiutaireachd co-shìnte, ceart? Tha e a 'tionndadh a-mach gum faodar àrdachadh còig uiread ann an coileanadh a choileanadh dìreach le bhith a' taghadh nan structaran dàta ceart. Agus tha seo a’ cur iongnadh air eadhon prògramadairean eòlach! Anns a 'chùis shònraichte agam, b' e an cleas nach bu chòir dhut cuibhreannan cuimhne a dhèanamh ann an lùb teth. Uill, chan e seo an fhìrinn gu lèir, ach san fharsaingeachd - cha bu chòir dhut cuideam a chuir air “aon uair ann an X” nuair a tha X mòr gu leòr. Nuair a tha X dà gigabytes gu leth, cha bu chòir dhut rud sam bith a riarachadh "aon uair gach litir", no "aon uair gach loidhne", no "aon uair gach raon", rud sam bith mar sin. Seo far a bheilear a’ caitheamh ùine. Ciamar a tha seo eadhon ag obair? Smaoinich mi a 'dèanamh gairm String.split() no BufferedReader.readLine(). Readline a’ dèanamh sreang à seata de bytes a thàinig thairis air an lìonra, aon uair airson gach loidhne, airson gach aon de na ceudan de mhilleanan de loidhnichean. Bidh mi a 'gabhail an loidhne seo, ga pharsadh agus ga thilgeil air falbh. Carson a tha mi ga thilgeil air falbh - uill, tha mi air a phròiseasadh mu thràth, sin agad. Mar sin, airson gach byte a thèid a leughadh bhon 2.7G seo, thèid dà charactar a sgrìobhadh san loidhne, is e sin, 5.4G mu thràth, agus chan eil feum agam orra airson dad nas fhaide, gus an tèid an tilgeil air falbh. Ma choimheadas tu air leud-bann na cuimhne, bidh sinn a’ luchdachadh 2.7G a thèid tron ​​​​bhus cuimhne is cuimhne sa phròiseasar, agus an uairsin thèid a dhà uimhir a chuir chun loidhne a tha na chuimhne, agus tha seo uile air a chreachadh nuair a thèid gach loidhne ùr a chruthachadh. Ach feumaidh mi a leughadh, bidh am bathar-cruaidh ga leughadh, eadhon ged a thèid a h-uile càil a bhriseadh nas fhaide air adhart. Agus feumaidh mi a sgrìobhadh sìos oir chruthaich mi loidhne agus tha na caches làn - chan urrainn don tasgadan 2.7G a ghabhail. Mar sin, airson a h-uile byte a leugh mi, leugh mi dà bytes a bharrachd agus sgrìobh mi dà bytes eile, agus aig a’ cheann thall tha co-mheas 4: 1 aca - anns a ’cho-mheas seo tha sinn a’ caitheamh leud-bann cuimhne. Agus an uairsin bidh e a 'tionndadh a-mach ma nì mi String.split() - chan e seo an turas mu dheireadh a nì mi seo, is dòcha gu bheil raointean 6-7 eile a-staigh. Mar sin bidh an còd clasaigeach airson leughadh CSV agus an uairsin a’ parsadh nan sreangan a’ leantainn gu sgudal leud-bann cuimhne timcheall air 14: 1 an coimeas ris na bu mhath leat a bhith. Ma thilgeas tu air falbh na taghaidhean sin, gheibh thu luaths còig uiread.

Agus chan eil e cho doirbh. Ma choimheadas tu air a’ chòd bhon cheàrn cheart, bidh e uile gu math sìmplidh nuair a thuigeas tu an duilgheadas. Cha bu chòir dhut stad a chur air a bhith a 'riarachadh cuimhne gu tur: is e an aon dhuilgheadas gum bi thu a' riarachadh rudeigin agus gu bheil e a 'bàsachadh sa bhad, agus air an t-slighe bidh e a' losgadh goireas cudromach, a tha sa chùis seo mar leud-bann cuimhne. Agus tha seo uile a 'leantainn gu lùghdachadh ann an toradh. Air x86 mar as trice feumaidh tu cearcallan pròiseasar a losgadh gu gnìomhach, ach an seo loisg thu a h-uile cuimhne fada na bu thràithe. Is e am fuasgladh an ìre de sgaoileadh a lughdachadh. 
Is e am pàirt eile den duilgheadas ma ruitheas tu am pròifil nuair a ruitheas an stripe cuimhne a-mach, dìreach nuair a thachras e, mar as trice bidh thu a’ feitheamh ris an tasgadan tilleadh oir tha e làn de sgudal a rinn thu, na loidhnichean sin uile. Mar sin, bidh a h-uile gnìomhachd luchdan no stòr a ’fàs slaodach, leis gu bheil iad a’ leantainn gu call tasgadan - tha an tasgadan gu lèir air fàs slaodach, a ’feitheamh ri sgudal fhàgail. Mar sin, bidh am pròifil dìreach a 'sealltainn fuaim blàth air thuaiream air a smeuradh air feadh an lùb gu lèir - cha bhi stiùireadh teth no àite sam bith anns a' chòd. A-mhàin fuaim. Agus ma choimheadas tu air na cuairtean GC, tha iad uile nan Ginealach Òg agus gu math luath - microseconds no milliseconds aig a’ char as àirde. Às deidh na h-uile, bidh a 'chuimhne seo a' bàsachadh sa bhad. Bidh thu a’ riarachadh billeanan gigabytes, agus bidh e gan gearradh, agus gan gearradh, agus gan gearradh a-rithist. Bidh seo uile a’ tachairt gu math luath. Tha e a ’tionndadh a-mach gu bheil cearcallan GC saor, fuaim blàth air feadh a’ chearcall gu lèir, ach tha sinn airson astar 5x fhaighinn. Aig an àm seo, bu chòir rudeigin dùnadh nad cheann agus fuaim: "carson a tha seo?!" Chan eil tar-shruth stiall cuimhne air a thaisbeanadh anns an dì-bhugadair clasaigeach; feumaidh tu an debugger counter dèanadas bathar-cruaidh a ruith agus fhaicinn thu fhèin agus gu dìreach. Ach chan urrainnear seo a chreidsinn gu dìreach bho na trì comharran sin. Is e an treas symptom nuair a choimheadas tu air na tha thu a’ soilleireachadh, faighnich don phròifil, agus fhreagair e: “Rinn thu billean sreath, ach dh’ obraich an GC an-asgaidh. ” Cho luath ‘s a thachras seo, tuigidh tu gu bheil thu air cus stuthan a chruthachadh agus air an t-sreath cuimhne gu lèir a losgadh. Tha dòigh ann airson seo a thuigsinn, ach chan eil e follaiseach. 

Tha an duilgheadas ann an structar an dàta: an structar lom a tha mar bhunait air a h-uile càil a thachras, tha e ro mhòr, tha e 2.7G air diosc, agus mar sin tha e glè neo-mhiannach leth-bhreac den rud seo a dhèanamh - tha thu airson a luchdachadh bhon bhufair byte lìonra sa bhad a-steach do na clàran, gus nach leugh thu - sgrìobhadh chun loidhne air ais is air adhart còig tursan. Gu mì-fhortanach, chan eil Java a 'toirt dhut leabharlann mar sin mar phàirt den JDK gu bunaiteach. Ach tha seo caran, ceart? Gu bunaiteach, is iad seo 5-10 loidhnichean de chòd a thèid a chleachdadh gus an luchd-sreang bufair agad fhèin a chuir an gnìomh, a bhios ag ath-aithris giùlan a’ chlas sreang, fhad ‘s a bhios iad a’ còmhdach timcheall a ’bhufair byte aig a’ bhonn. Mar thoradh air an sin, tha e a ’tionndadh a-mach gu bheil thu ag obair cha mhòr mar gum biodh le sreangan, ach gu dearbh tha comharran don bhufair a’ gluasad an sin, agus chan eil na bytes amh air an lethbhreacadh an àite sam bith, agus mar sin bidh na h-aon bufairean air an ath-chleachdadh a-rithist is a-rithist, agus tha an siostam-obrachaidh toilichte a bhith a’ gabhail ort fhèin na rudan a tha e air a dhealbhadh airson, leithid bufferadh dùbailte falaichte de na bufairean byte sin, agus chan eil thu a’ bleith tuilleadh tro shruth gun chrìoch de dhàta neo-riatanach. Co-dhiù, a bheil thu a’ tuigsinn, nuair a bhios tu ag obair le GC, gu bheil e cinnteach nach bi gach riarachadh cuimhne ri fhaicinn don phròiseasar às deidh a’ chearcall GC mu dheireadh? Mar sin, is dòcha nach urrainn seo a bhith san tasgadan, agus an uairsin bidh call cinnteach 100% a’ tachairt. Nuair a bhios tu ag obair le puing, air x86, bheir toirt air falbh clàr bhon chuimhne 1-2 cearcall cloc, agus cho luath ‘s a thachras seo, bidh thu a’ pàigheadh, a ’pàigheadh, a’ pàigheadh, oir tha an cuimhne uile air adhart NINE tasgadan - agus is e seo cosgais riarachadh cuimhne. Fìor luach.

Ann am faclan eile, is e structaran dàta an rud as duilghe atharrachadh. Agus aon uair ‘s gu bheil fios agad gu bheil thu air an structar dàta ceàrr a thaghadh a mharbhas coileanadh nas fhaide air adhart, mar as trice bidh tòrr obrach ri dhèanamh, ach mura dèan thu sin, fàsaidh cùisean nas miosa. An toiseach, feumaidh tu smaoineachadh air structaran dàta, tha seo cudromach. Tha a 'phrìomh chosgais an seo a' tuiteam air structaran dàta geir, a tha a 'tòiseachadh air an cleachdadh ann an stoidhle "Rinn mi lethbhreac de structar dàta X gu structar dàta Y oir is toil leam cumadh Y nas fheàrr." Ach tha an obair leth-bhreac (a tha coltach saor) gu dearbh a’ caitheamh leud-bann cuimhne agus sin far a bheil an ùine cur gu bàs air a thiodhlacadh. Ma tha sreath mhòr de JSON agam agus gu bheil mi airson a thionndadh gu craobh structaraichte DOM de POJOn no rudeigin, bidh gnìomhachd parsadh an t-sreang sin agus togail POJO, agus an uairsin faighinn chun POJO a-rithist nas fhaide air adhart, a’ leantainn gu cosgais neo-riatanach - is e chan eil saor. Ach a-mhàin ma ruitheas tu timcheall POJOs tòrr nas trice na ruitheas tu timcheall sreang. Offhand, faodaidh tu an àite sin feuchainn ris an t-sreang a dhì-chrioptachadh agus na tha a dhìth ort a thoirt a-mach às an sin, gun a bhith ga thionndadh gu POJO sam bith. Ma thachras seo uile air slighe às a bheil feum air coileanadh as àirde, gun POJOs dhut, feumaidh tu dòigh air choireigin a chladhach a-steach don loidhne gu dìreach.

Carson a chruthaicheas tu do chànan prògramaidh fhèin

Андрей: Thuirt thu gum feum thu do chànan beag fhèin a sgrìobhadh gus am modail cosgais a thuigsinn.

bearradh: Chan e cànan, ach fear-cruinneachaidh. Tha dà rud eadar-dhealaichte ann an cànan agus fear-cruinneachaidh. Tha an diofar as cudromaiche nad cheann. 

Андрей: Co-dhiù, cho fad 's as aithne dhomh, tha thu a' feuchainn ri do chànanan fhèin a chruthachadh. Airson dè?

bearradh: A chionn 's urrainn dhomh! Tha mi leth-dhreuchdail, mar sin is e seo mo chur-seachad. Tha mi air a bhith a’ cur cànanan dhaoine eile an gnìomh fad mo bheatha. Dh’obraich mi tòrr cuideachd air an stoidhle còdaidh agam. Agus cuideachd leis gu bheil mi a’ faicinn trioblaidean ann an cànanan eile. Tha mi a’ faicinn gu bheil dòighean nas fheàrr ann rudan eòlach a dhèanamh. Agus bhithinn gan cleachdadh. Tha mi dìreach sgìth de bhith a’ faicinn trioblaidean annam fhìn, ann an Java, ann am Python, ann an cànan sam bith eile. Bidh mi a-nis a’ sgrìobhadh ann an React Native, JavaScript agus Elm mar chur-seachad nach eil mu dheidhinn cluaineas, ach mu obair ghnìomhach. Bidh mi cuideachd a’ sgrìobhadh ann am Python agus, is dòcha, leanaidh mi ag obair air ionnsachadh innealan airson backends Java. Tha mòran chànanan mòr-chòrdte ann agus tha feartan inntinneach aca uile. Tha a h-uile duine math nan dòigh fhèin agus faodaidh tu feuchainn ris na feartan sin uile a thoirt còmhla. Mar sin, tha mi a’ sgrùdadh rudan a tha inntinneach dhomh, giùlan cànain, a’ feuchainn ri semantics reusanta a lorg. Agus gu ruige seo tha mi a’ soirbheachadh! Aig an àm seo tha mi a’ strì le semantics cuimhne, oir tha mi airson a bhith mar ann an C agus Java, agus modal cuimhne làidir fhaighinn agus semantics cuimhne airson luchdan is stòran. Aig an aon àm, bi co-dhùnadh seòrsa fèin-ghluasadach mar ann an Haskell. An seo, tha mi a’ feuchainn ri co-dhùnadh seòrsa coltach ri Haskell a mheasgachadh le obair cuimhne ann an C agus Java. Seo na tha mi air a bhith a’ dèanamh airson na mìosan 2-3 mu dheireadh, mar eisimpleir.

Андрей: Ma thogas tu cànan a bheir taobhan nas fheàrr bho chànanan eile, an saoil thu gun dèan cuideigin a chaochladh: gabh do bheachdan agus cleachd iad?

bearradh: Seo dìreach mar a tha cànanan ùra a’ nochdadh! Carson a tha Java coltach ri C? Leis gu robh co-chòrdadh math aig C a bha a h-uile duine a 'tuigsinn agus bha Java air a bhrosnachadh leis a' cho-chòrdadh seo, a 'cur ri seòrsa sàbhailteachd, sgrùdadh crìochan raon, GC, agus leasaich iad cuideachd cuid de rudan bho C. Chuir iad ris an fheadhainn aca fhèin. Ach bha iad air am brosnachadh gu mòr, ceart? Tha a h-uile duine na sheasamh air guailnean nam fuamhairean a thàinig air thoiseach ort - sin mar a tha adhartas ga dhèanamh.

Андрей: Mar a thuigeas mi e, bidh do chainnt sàbhailte nad chuimhne. An do smaoinich thu mu bhith a’ cur an gnìomh rudeigin mar neach-dearbhaidh iasad bho Rust? An tug thu sùil air, dè do bheachd air?

bearradh: Uill, tha mi air a bhith a’ sgrìobhadh C airson aoisean, leis a h-uile malloc seo agus an-asgaidh, agus le làimh a’ riaghladh na beatha. Tha fios agad, tha an aon structar aig 90-95% de ùine beatha fo smachd làimhe. Agus tha e gu math, gu math goirt a dhèanamh le làimh. Bu mhath leam gun innis an neach-cruinneachaidh dhut dè a tha a’ dol an sin agus na choilean thu leis na rinn thu. Airson cuid de rudan, bidh neach-dearbhaidh iasad a’ dèanamh seo a-mach às a’ bhogsa. Agus bu chòir dha fiosrachadh a thaisbeanadh gu fèin-ghluasadach, a h-uile dad a thuigsinn, agus gun eadhon uallach a chuir orm leis an tuigse seo a thaisbeanadh. Feumaidh e co-dhiù mion-sgrùdadh teicheadh ​​​​ionadail a dhèanamh, agus dìreach ma dh’ fhailicheas e, feumaidh e notaichean seòrsa a chuir ris a bheir cunntas air beatha - agus tha sgeama mar sin tòrr nas iom-fhillte na neach-dearbhaidh iasad, no gu dearbh inneal-dearbhaidh cuimhne sam bith a th ’ann. Tha an roghainn eadar “a h-uile dad gu math” agus “chan eil mi a’ tuigsinn dad” - chan eil, feumaidh rudeigin nas fheàrr a bhith ann. 
Mar sin, mar chuideigin a tha air tòrr còd a sgrìobhadh ann an C, tha mi a’ smaoineachadh gur e taic airson smachd beatha fèin-ghluasadach an rud as cudromaiche. Tha mi sgìth cuideachd leis na tha Java a’ cleachdadh cuimhne agus is e am prìomh ghearan an GC. Nuair a bhios tu a’ riarachadh cuimhne ann an Java, chan fhaigh thu air ais a’ chuimhne a bha ionadail aig a’ chearcall GC mu dheireadh. Chan eil seo fìor ann an cànanan le riaghladh cuimhne nas mionaidiche. Ma chuireas tu fios gu malloc, gheibh thu sa bhad an cuimhne a bha mar as trice dìreach air a chleachdadh. Mar as trice bidh thu a’ dèanamh rudan sealach le cuimhne agus ga thilleadh air ais sa bhad. Agus tillidh e sa bhad chun amar malloc, agus bidh an ath chearcall malloc ga tharraing a-mach a-rithist. Mar sin, tha fìor chleachdadh cuimhne air a lughdachadh gu seata de stuthan beò aig àm sònraichte, a bharrachd air aoidion. Agus mura h-eil a h-uile càil ag aoidion ann an dòigh gu tur drabasta, thig a’ mhòr-chuid den chuimhne gu crìch ann an caches agus am pròiseasar, agus bidh e ag obair gu sgiobalta. Ach tha feum air mòran de riaghladh cuimhne làimhe le malloc agus an-asgaidh air a ghairm san òrdugh cheart, san àite cheart. Is urrainn dha meirge seo a làimhseachadh gu ceart leis fhèin, agus ann an iomadh cùis bheir e coileanadh eadhon nas fheàrr, leis gu bheil caitheamh cuimhne air a lughdachadh gu dìreach an àireamhachadh gnàthach - an àite a bhith a’ feitheamh ris an ath chearcall GC gus cuimhne a shaoradh. Mar thoradh air an sin, fhuair sinn dòigh air leth inntinneach airson coileanadh a leasachadh. Agus gu math cumhachdach - tha mi a 'ciallachadh, rinn mi rudan mar sin nuair a bha mi a' giullachd dàta airson fintech, agus leig seo leam luaths fhaighinn timcheall air còig tursan. Tha sin na bhrosnachadh mòr, gu sònraichte ann an saoghal far nach eil pròiseasairean a’ fàs nas luaithe agus tha sinn fhathast a’ feitheamh ri leasachaidhean.

Dreuchd innleadair coileanaidh

Андрей: Bu mhath leam cuideachd faighneachd mun cuairt mu dhreuchdan san fharsaingeachd. Dh’ èirich thu gu follaiseachd leis an obair JIT agad aig HotSpot agus an uairsin ghluais thu gu Azul, a tha cuideachd na chompanaidh JVM. Ach bha sinn mu thràth ag obair barrachd air bathar-cruaidh na bathar-bog. Agus an uairsin thionndaidh iad gu h-obann gu Dàta Mòr agus Ionnsachadh Inneal, agus an uairsin gu lorg foill. Ciamar a thachair seo? Tha iad sin nan raointean leasachaidh gu math eadar-dhealaichte.

bearradh: Tha mi air a bhith a’ dèanamh phrògraman airson ùine mhòr agus tha mi air tòrr chlasaichean eadar-dhealaichte a ghabhail. Agus nuair a chanas daoine: “oh, is tusa an tè a rinn JIT airson Java!”, tha e an-còmhnaidh èibhinn. Ach ron sin, bha mi ag obair air clon de PostScript - an cànan a chleachd Apple uair airson a chlò-bhualadairean leusair. Agus roimhe sin rinn mi cur an gnìomh cànan Fhoirthe. Tha mi a’ smaoineachadh gur e leasachadh innealan an cuspair cumanta dhòmhsa. Fad mo bheatha tha mi air a bhith a’ dèanamh innealan leis am bi daoine eile a’ sgrìobhadh na prògraman fionnar aca. Ach bha mi cuideachd an sàs ann an leasachadh siostaman obrachaidh, draibhearan, debuggers ìre kernel, cànanan airson leasachadh OS, a thòisich a-mach beag, ach thar ùine dh'fhàs barrachd is barrachd iom-fhillte. Ach is e am prìomh chuspair fhathast leasachadh innealan. Chaidh pàirt mhòr de mo bheatha seachad eadar Azul agus Sun, agus bha e mu dheidhinn Java. Ach nuair a fhuair mi a-steach gu Dàta Mòr agus Ionnsachadh Inneal, chuir mi air ais an ad eireachdail agam agus thuirt mi, “O, a-nis tha duilgheadas nach eil cho beag againn, agus tha tòrr rudan inntinneach a’ dol agus daoine a’ dèanamh rudan.” Is e slighe leasachaidh math a tha seo ri ghabhail.

Tha, is fìor thoil leam coimpiutaireachd sgaoilte. Bha a’ chiad obair agam mar oileanach ann an C, air pròiseact sanasachd. Chaidh seo a sgaoileadh coimpiutaireachd air sgoltagan Zilog Z80 a chruinnich dàta airson analog OCR, air a thoirt gu buil le fìor anailisiche analog. Bha e na chuspair fionnar agus gu tur meallta. Ach bha duilgheadasan ann, cha deach cuid de phàirt aithneachadh gu ceart, agus mar sin dh'fheumadh tu dealbh a thoirt a-mach agus a shealltainn do neach a bha comasach air leughadh le an sùilean mu thràth agus aithris a dhèanamh air na thuirt e, agus mar sin bha obraichean ann le dàta, agus na h-obraichean sin bha an cànan aca fhèin. Bha cùl-taic ann a bha a’ giullachd seo uile - Z80s a’ ruith ann an co-shìnte le cinn-uidhe vt100 a’ ruith - aon airson gach neach, agus bha modal prògramadh co-shìnte air an Z80. Pìos cuimhne cumanta air a cho-roinn leis a h-uile Z80s taobh a-staigh rèiteachadh rionnag; Chaidh an backplane a roinn cuideachd, agus chaidh leth den RAM a roinn taobh a-staigh an lìonra, agus bha leth eile prìobhaideach no chaidh e gu rudeigin eile. Siostam sgaoilte co-shìnte brìoghmhor iom-fhillte le cuimhne co-roinnte... Cuin a bha seo... chan eil cuimhne agam eadhon, am badeigin ann am meadhan nan 80an. O chionn fhada. 
Seadh, gabhamaid ris gu bheil 30 bliadhna air ais gu math fada.Tha duilgheadasan co-cheangailte ri coimpiutaireachd sgaoilte air a bhith ann airson ùine mhòr; tha daoine air a bhith a’ cogadh riutha o chionn fhada Beowulf- cnuasaichean. Mar eisimpleir: tha Ethernet ann agus tha an x86 luath agad ceangailte ris an Ethernet seo, agus a-nis tha thu airson cuimhne co-roinnte meallta fhaighinn, leis nach b’ urrainn do dhuine sam bith còdadh coimpiutaireachd sgaoilte a dhèanamh an uairsin, bha e ro dhoirbh agus mar sin ann bha cuimhne co-roinnte meallta le duilleagan cuimhne dìon air x86, agus ma sgrìobh thu chun duilleag seo, an uairsin dh’ innis sinn do luchd-giullachd eile ma gheibh iad cothrom air an aon chuimhne co-roinnte, gum feumadh e a luchdachadh bhuat, agus mar sin rudeigin mar phròtacal airson taic nochd co-leanailteachd cache agus bathar-bog airson seo. Bun-bheachd inntinneach. B 'e an fhìor dhuilgheadas, gu dearbh, rudeigin eile. Dh'obraich seo uile, ach fhuair thu duilgheadasan coileanaidh gu luath, oir cha do thuig duine na modalan coileanaidh aig ìre math gu leòr - dè na pàtrain ruigsinneachd cuimhne a bha ann, mar a nì thu cinnteach nach robh na nodan a 'bualadh air a chèile, agus mar sin air adhart.

Is e an rud a thàinig mi a-steach ann an H2O gur e an luchd-leasachaidh fhèin a tha an urra ri bhith a’ dearbhadh càite a bheil co-shìnteachd falaichte agus far nach eil. Thàinig mi suas le modal còdaidh a rinn sgrìobhadh còd àrd-choileanadh furasta agus sìmplidh. Ach tha e duilich còd ruith slaodach a sgrìobhadh, seallaidh e dona. Feumaidh tu feuchainn gu mòr ri còd slaodach a sgrìobhadh, feumaidh tu dòighean neo-àbhaisteach a chleachdadh. Tha an còd breiceadh ri fhaicinn aig a’ chiad sealladh. Mar thoradh air an sin, mar as trice bidh thu a’ sgrìobhadh còd a ruitheas gu sgiobalta, ach feumaidh tu obrachadh a-mach dè a nì thu a thaobh cuimhne co-roinnte. Tha seo uile ceangailte ri arrays mòra agus tha an giùlan an sin coltach ri arrays mòra neo-luaineach ann an Java co-shìnte. Tha mi a 'ciallachadh, smaoinich gu bheil dà snàithlean a' sgrìobhadh gu sreath co-shìnte, aon dhiubh a 'buannachadh, agus am fear eile, a rèir sin, a' call, agus chan eil fios agad dè am fear a th 'ann. Mura h-eil iad luaineach, faodaidh an òrdugh a bhith ge bith dè a tha thu ag iarraidh - agus tha seo ag obair glè mhath. Tha cùram mòr aig daoine mu òrdugh gnìomhachd, bidh iad a’ cur luaineach anns na h-àiteachan ceart, agus tha iad an dùil ri duilgheadasan coileanaidh co-cheangailte ri cuimhne anns na h-àiteachan ceart. Rud eile, bhiodh iad dìreach a’ sgrìobhadh còd ann an cruth lùban bho 1 gu N, far a bheil N beagan trilleanan, an dòchas gum bi a h-uile cùis iom-fhillte gu fèin-ghluasadach co-shìnte - agus nach obraich e an sin. Ach ann an H2O chan e Java no Scala a tha seo; faodaidh tu beachdachadh air “Java minus minus” ma tha thu ag iarraidh. Is e stoidhle prògramadh fìor shoilleir a tha seo agus tha e coltach ri bhith a’ sgrìobhadh còd sìmplidh C no Java le lùban agus arrays. Ach aig an aon àm, faodar cuimhne a phròiseasadh ann an terabytes. Tha mi fhathast a’ cleachdadh H2O. Bidh mi ga chleachdadh bho àm gu àm ann an diofar phròiseactan - agus tha e fhathast mar an rud as luaithe, dusanan de thursan nas luaithe na na farpaisich aige. Ma tha thu a’ dèanamh Dàta Mòr le dàta colbh, tha e gu math duilich H2O a bhualadh.

Dùbhlain Teicnigeach

Андрей: Dè an dùbhlan as motha a tha air a bhith agad nad chùrsa-beatha air fad?

bearradh: A bheil sinn a 'bruidhinn air a' phàirt theicnigeach no neo-theicnigeach den chùis? Chanainn nach e na dùbhlain theicnigeach na dùbhlain as motha. 
A thaobh dùbhlain theicnigeach. Rinn mi a’ chùis orra gu sìmplidh. Chan eil fios agam eadhon dè am fear as motha a bh’ ann, ach bha feadhainn gu math inntinneach ann a thug tòrr ùine, strì inntinn. Nuair a chaidh mi gu Sun, bha mi cinnteach gun dèanainn compiler luath, agus thuirt grunn sheann daoine mar fhreagairt nach soirbhich leam gu bràth. Ach lean mi an t-slighe seo, sgrìobh mi compiler sìos gu neach-riarachaidh a’ chlàir, agus bha e gu math luath. Bha e cho luath ri C1 an latha an-diugh, ach bha an riarachadh tòrr nas slaodaiche air ais an uairsin, agus le bhith a’ coimhead air ais bha e na dhuilgheadas structar dàta mòr. Bha feum agam air airson inneal clàr grafaigeach a sgrìobhadh agus cha do thuig mi an dileab eadar faireachdainn còd agus luaths, a bha ann san àm sin agus a bha gu math cudromach. Thionndaidh e a-mach gu bheil structar an dàta mar as trice nas àirde na meud an tasgadan air x86s aig an àm sin, agus mar sin, ma bha mi a’ gabhail ris an toiseach gun obraicheadh ​​​​riaradair a’ chlàir a-mach 5-10 sa cheud den ùine jitter iomlan, an uairsin ann an da-rìribh thionndaidh e a-mach gur e 50 sa cheud.

Mar a chaidh an ùine air adhart, dh’fhàs an t-inneal-cruinneachaidh nas glaine agus nas èifeachdaiche, sguir e a’ gineadh còd uamhasach ann am barrachd chùisean, agus thòisich coileanadh a’ sìor fhàs coltach ris na bhios compiler C. Mura sgrìobh thu, gu dearbh, beagan crap nach luathaich eadhon C. . Ma sgrìobhas tu còd mar C, gheibh thu coileanadh mar C ann am barrachd chùisean. Agus mar as fhaide a chaidh thu, mar as trice a fhuair thu còd a bha asymptotically aig an aon àm ri ìre C, thòisich riarachadh a’ chlàir a’ coimhead mar rudeigin coileanta... ge bith a bheil an còd agad a’ ruith luath no slaodach. Lean mi ag obair air an riarachadh gus toirt air taghaidhean nas fheàrr a dhèanamh. Dh'fhàs e nas slaodaiche agus nas slaodaiche, ach thug e coileanadh nas fheàrr agus nas fheàrr ann an cùisean far nach b 'urrainn do dhuine sam bith eile dèiligeadh. B ’urrainn dhomh dàibheadh ​​​​a-steach do neach-riarachaidh clàraidh, mìos de dh’ obair a thiodhlacadh an sin, agus gu h-obann thòisicheadh ​​​​an còd gu lèir a ’cur an gnìomh 5% nas luaithe. Thachair seo uair às deidh ùine agus thàinig neach-riarachaidh a’ chlàir gu bhith na obair ealain - bha gaol aig a h-uile duine air no bha gràin aige air, agus chuir daoine bhon acadamaidh ceistean air a’ chuspair “carson a tha a h-uile càil air a dhèanamh mar seo”, carson scan loidhne, agus dè an diofar. Tha am freagairt fhathast mar an ceudna: tha cuibhreann stèidhichte air dath grafa agus obair gu math faiceallach leis a 'chòd bufair co-ionnan ri armachd buaidh, am measgachadh as fheàrr nach urrainn do dhuine sam bith a' chùis a dhèanamh. Agus is e rud caran neo-fhollaiseach a tha seo. Tha a h-uile càil eile a nì an compiler an sin gu ìre mhath air a dheagh sgrùdadh, ged a chaidh an toirt gu ìre ealain cuideachd. Bha mi an-còmhnaidh a’ dèanamh rudan a bha còir an compiler a thionndadh gu bhith na obair ealain. Ach cha robh gin de seo dad iongantach - ach a-mhàin an neach-riarachaidh clàr. Is e an cleas a bhith faiceallach Geàrr sìos fo luchd agus, ma thachras seo (is urrainn dhomh mìneachadh nas mionaidiche ma tha ùidh agam), tha seo a’ ciallachadh gun urrainn dhut loidhne a-steach nas ionnsaigheach, gun a bhith ann an cunnart tuiteam thairis air cnap sa chlàr coileanaidh. Anns na làithean sin, bha dòrlach de luchd-cruinneachaidh làn-sgèile, crochte le baubles agus fìdeagan, aig an robh luchd-riarachaidh clàraidh, ach cha b’ urrainn do dhuine sam bith eile a dhèanamh.

Is e an duilgheadas a th ’ann ma chuireas tu dòighean a tha fo ùmhlachd inlining, àrdachadh agus àrdachadh air an raon inlining, bidh an seata de luachan cleachdte sa bhad nas àirde na an àireamh de chlàran, agus feumaidh tu an gearradh. Mar as trice thig an ìre èiginneach nuair a bheir an neach-riarachaidh seachad, agus is fhiach aon tagraiche math airson dòrtadh fear eile, reicidh tu cuid de rudan fiadhaich san fharsaingeachd. Is e luach inlining an seo gum bi thu a’ call pàirt den chosgais os cionn, os cionn a ’ghairm agus a’ sàbhaladh, chì thu na luachan a-staigh agus is urrainn dhut an fheum as fheàrr a dhèanamh dhiubh. Is e cosgais inlining gu bheil àireamh mhòr de luachan beò air an cruthachadh, agus ma bhios an neach-sgaoilidh clàr agad a ’losgadh suas nas motha na tha riatanach, caillidh tu sa bhad. Mar sin, tha duilgheadas aig a ’mhòr-chuid de luchd-sònrachaidh: nuair a bhios in-loidhne a’ dol thairis air loidhne shònraichte, bidh a h-uile càil san t-saoghal a ’tòiseachadh air a ghearradh sìos agus faodar cinneasachd a shruthladh sìos an taigh beag. Bidh an fheadhainn a bhios a 'cur an gnìomh an cruinneachaidh a' cur cuid de heuristics: mar eisimpleir, gus stad a chur air inlining, a 'tòiseachadh le cuid de mheud mòr gu leòr, oir bidh cuibhreannan a' milleadh a h-uile càil. Seo mar a tha kink anns a’ ghraf coileanaidh air a chruthachadh - bidh thu inline, inline, bidh an coileanadh a’ fàs gu slaodach - agus an uairsin a ’soirbheachadh! - tuitidh e mar sheacaid luath oir bha thu a’ lìnigeadh cus. Seo mar a bha a h-uile càil ag obair mus tàinig Java. Tha feum aig Java air tòrr a bharrachd inlining, agus mar sin bha agam ri mo riarachadh a dhèanamh tòrr nas ionnsaigheach gus am bi e a’ dol a-mach seach a bhith a’ tuiteam, agus ma chuireas tu a-steach cus, tòisichidh e a’ dòrtadh, ach an uairsin thig am mionaid “gun a bhith a’ dòrtadh tuilleadh ”fhathast. Is e sealladh inntinneach a tha seo agus thàinig e thugam a-mach à àite sam bith, gun a bhith follaiseach, ach phàigh e gu math. Thòisich mi a-steach ionnsaigheach agus thug e mi gu àiteachan far a bheil coileanadh Java agus C ag obair taobh ri taobh. Tha iad gu math faisg - is urrainn dhomh còd Java a sgrìobhadh a tha gu math nas luaithe na còd C agus rudan mar sin, ach gu cuibheasach, anns an dealbh mhòr de rudan, tha iad an ìre mhath coimeasach. Tha mi a’ smaoineachadh gur e pàirt den airidheachd seo an riarachadh clàr, a leigeas leam inline a dhèanamh cho gòrach sa ghabhas. Tha mi dìreach a’ cuir a-steach a h-uile dad a chì mi. Is e a’ cheist an seo a bheil an riarachadh ag obair gu math, a bheil an toradh ag obair gu tùrail còd. B’ e dùbhlan mòr a bha seo: seo uile a thuigsinn agus toirt air obrachadh.

Beagan mu riarachadh chlàran agus ioma-cridhe

Владимир: Tha duilgheadasan mar riarachadh chlàran coltach ri cuspair sìorraidh gun chrìoch. Saoil an robh beachd ann a-riamh a bha coltas gealltanach agus an uairsin air fàiligeadh ann an cleachdadh?

bearradh: Gu cinnteach! Tha riarachadh clàr na raon anns am feuch thu ri cuid de heuristics a lorg gus fuasgladh fhaighinn air duilgheadas làn NP. Agus chan urrainn dhut a-riamh fuasgladh foirfe a choileanadh, ceart? Tha seo dìreach do-dhèanta. Coimhead, cruinneachadh Ahead of Time - tha e cuideachd ag obair gu dona. Tha an còmhradh an seo mu dheidhinn cuid de chùisean cuibheasach. Mu choileanadh àbhaisteach, gus an urrainn dhut a dhol a thomhas rudeigin a tha thu a’ smaoineachadh a tha math coileanadh àbhaisteach - às deidh a h-uile càil, tha thu ag obair gus a leasachadh! Tha riarachadh clàr na chuspair mu dheidhinn coileanadh. Aon uair 's gum bi a' chiad prototype agad, bidh e ag obair agus a 'peantadh na tha a dhìth, tòisichidh an obair coileanaidh. Feumaidh tu ionnsachadh tomhas math. Carson a tha e cudromach? Ma tha dàta soilleir agad, faodaidh tu coimhead air diofar raointean agus faicinn: seadh, chuidich e an seo, ach sin far an do bhris a h-uile càil! Bidh cuid de bheachdan math a ’tighinn am bàrr, cuiridh tu heuristics ùra ris agus gu h-obann bidh a h-uile càil a’ tòiseachadh ag obair beagan nas fheàrr sa chumantas. No chan eil e a 'tòiseachadh. Bha dòrlach de chùisean agam far an robh sinn a’ sabaid airson coileanadh còig sa cheud a rinn eadar-dhealachadh air ar leasachadh bhon riarachadh a bh’ ann roimhe. Agus a h-uile uair a tha e coltach ri seo: an àiteigin a bhuannaicheas tu, an àiteigin a chailleas tu. Ma tha innealan sgrùdaidh coileanaidh math agad, gheibh thu na beachdan a tha a’ call agus tuigidh tu carson a tha iad a’ fàiligeadh. Is dòcha gum b’ fhiach e a h-uile càil fhàgail mar a tha e, no ‘s dòcha dòigh-obrach nas cunnartaiche a ghabhail a thaobh mion-gleusadh, no a dhol a-mach agus rudeigin eile a chàradh. Is e dòrlach de rudan a th’ ann! Rinn mi an hack fionnar seo, ach tha feum agam air an fhear seo cuideachd, agus am fear seo, agus am fear seo - agus tha an cothlamadh iomlan aca a’ toirt beagan leasachaidhean. Agus faodaidh loners fàiligeadh. Is e seo nàdar obair dèanadais air duilgheadasan NP-crìochnaichte.

Владимир: Tha aon a 'faighinn a' faireachdainn gu bheil rudan mar peantadh ann an allocators na dhuilgheadas a chaidh a rèiteachadh mar-thà. Uill, tha e air a cho-dhùnadh dhut, a’ breithneachadh leis na tha thu ag ràdh, mar sin am b’ fhiach e an uairsin...

bearradh: Chan eil e air a rèiteachadh mar sin. Is ann leatsa a dh’ fheumas a thionndadh gu “fuasgladh”. Tha duilgheadasan duilich ann agus feumar am fuasgladh. Aon uair 's gu bheil seo air a dhèanamh, tha an t-àm ann a bhith ag obair air cinneasachd. Feumaidh tu dèiligeadh ris an obair seo a rèir sin - dèan slatan-tomhais, cruinnich metrics, mìnich suidheachaidhean nuair, nuair a thill thu air ais gu dreach roimhe, nuair a thòisich an seann hack agad ag obair a-rithist (no a chaochladh, stad). Agus na leig seachad gus an coilean thu rudeigin. Mar a thuirt mi mu thràth, ma tha beachdan fionnar ann nach do dh'obraich, ach ann an raon riarachadh chlàran bheachdan tha e timcheall air gun chrìoch. Faodaidh tu, mar eisimpleir, foillseachaidhean saidheansail a leughadh. Ged a tha an raon seo a-nis air tòiseachadh a 'gluasad mòran nas slaodaiche agus air fàs nas soilleire na bha e na òige. Ach, tha mòran dhaoine ag obair san raon seo agus is fhiach na beachdan aca uile fheuchainn, tha iad uile a’ feitheamh anns na sgiathan. Agus chan urrainn dhut innse dè cho math 'sa tha iad mura feuch thu iad. Dè cho math ’s a tha iad a’ fighe a-steach leis a h-uile càil eile anns a’ chuibhreann agad, oir bidh neach-riarachaidh a’ dèanamh tòrr rudan, agus chan obraich cuid de bheachdan anns a’ chuibhreann shònraichte agad, ach ann an cuibhreann eile bidh iad gu furasta. Is e am prìomh dhòigh air buannachadh airson an neach-sgaoilidh an stuth slaodach a tharraing taobh a-muigh a’ phrìomh shlighe agus toirt air sgoltadh air crìochan nan slighean slaodach. Mar sin ma tha thu airson GC a ruith, gabh an t-slighe slaodach, dèan dì-optimachadh, tilg eisgeachd, an stuth sin uile - tha fios agad gu bheil na rudan sin gu math tearc. Agus tha iad gu math tearc, rinn mi sgrùdadh. Bidh thu a’ dèanamh obair a bharrachd agus bidh e a’ toirt air falbh mòran de na cuingeachaidhean air na slighean slaodach sin, ach chan eil e gu diofar leis gu bheil iad slaodach agus is ann ainneamh a bhios iad a’ siubhal. Mar eisimpleir, puing null - cha tachair e a-riamh, ceart? Feumaidh tu grunn shlighean a bhith agad airson diofar rudan, ach cha bu chòir dhaibh bacadh a chur air a 'phrìomh fhear. 

Владимир: Dè do bheachd air ioma-cores, nuair a tha mìltean de choraichean ann aig an aon àm? An e rud feumail a tha seo?

bearradh: Tha soirbheachas an GPU a 'sealltainn gu bheil e gu math feumail!

Владимир: Tha iad gu math sònraichte. Dè mu dheidhinn pròiseasairean adhbhar coitcheann?

bearradh: Uill, b 'e sin modail gnìomhachais Azul. Thàinig am freagairt air ais ann an àm nuair a bha meas mòr aig daoine air coileanadh a bha dùil. Bha e duilich còd co-shìnte a sgrìobhadh air ais an uairsin. Tha am modail còdaidh H2O gu math scalable, ach chan e modail adhbhar coitcheann a th’ ann. Is dòcha beagan nas fharsainge na nuair a bhios tu a’ cleachdadh GPU. A bheil sinn a 'bruidhinn mu cho iom-fhillte' sa tha leasachadh a leithid de rud no cho iom-fhillte 'sa tha e a bhith ga chleachdadh? Mar eisimpleir, dh'ionnsaich Azul leasan inntinneach dhomh, rud nach eil follaiseach: tha caches beaga àbhaisteach. 

An dùbhlan as motha ann am beatha

Владимир: Dè mu dheidhinn dùbhlain neo-theicnigeach?

bearradh: Cha b' e an dùbhlan a bu mhotha a bhith... coibhneil agus snog ri daoine. Agus mar thoradh air an sin, lorg mi mi fhìn an-còmhnaidh ann an suidheachaidhean fìor còmhstri. An fheadhainn far an robh fios agam gu robh cùisean a’ dol ceàrr, ach cha robh fios agam ciamar a ghluaiseas mi air adhart leis na duilgheadasan sin agus nach b’ urrainn dhomh an làimhseachadh. Dh'èirich mòran de dhuilgheadasan fad-ùine, a mhair airson deicheadan, san dòigh seo. Tha an fhìrinn gu bheil luchd-cruinneachaidh C1 agus C2 aig Java mar thoradh dìreach air seo. Tha an fhìrinn nach robh cruinneachadh ioma-ìre ann an Java airson deich bliadhna ann an sreath cuideachd na thoradh dìreach. Tha e follaiseach gu robh feum againn air siostam mar seo, ach chan eil e follaiseach carson nach robh e ann. Bha trioblaidean agam le aon innleadair... neo buidheann de innleadairean. Uair dhe na h-uairean, nuair a thòisich mi ag obair aig Sun, bha mi... Ceart gu leòr, chan ann a-mhàin an uairsin, sa chumantas bidh mo bheachd fhìn an-còmhnaidh air a h-uile càil. Agus bha mi a’ smaoineachadh gu robh e fìor gum b’ urrainn dhut dìreach an fhìrinn seo a ghabhail leat agus innse dha ceann air adhart. Gu sònraichte leis gu robh mi uamhasach ceart a’ mhòr-chuid den ùine. Agus mura h-eil an dòigh-obrach seo a’ còrdadh riut… gu sònraichte ma tha thu follaiseach gu bheil thu ceàrr agus a’ dèanamh neòinean... San fharsaingeachd, is e glè bheag de dhaoine a b’ urrainn gabhail ris an t-seòrsa conaltraidh seo. Ged a dh’ fhaodadh cuid, mar mise. Tha mi air mo bheatha gu lèir a thogail air prionnsapalan meritocratic. Ma sheallas tu dhomh rudeigin cearr, tionndaidhidh mi air ball mun cuairt agus their mi: thuirt thu neonach. Aig an aon àm, gu dearbh, tha mi duilich agus a h-uile càil, bheir mi fa-near na buannachdan, ma tha gin ann, agus nì mi gnìomhan ceart eile. Air an làimh eile, tha mi uamhasach ceart mu cheudad uamhasach mòr den ùine iomlan. Agus chan eil e ag obair glè mhath ann an dàimhean le daoine. Chan eil mi a’ feuchainn ri bhith snog, ach tha mi a’ cur na ceist gu sgiobalta. “Chan obraich seo gu bràth, oir aon, dhà agus trì.” Agus bha iad mar, "O!" Bha builean eile ann a b’ fheàrr a dhìochuimhneachadh: mar eisimpleir, an fheadhainn a lean gu sgaradh-pòsaidh bho mo bhean agus deich bliadhna de trom-inntinn às deidh sin.

Is e strì a th’ ann an dùbhlan le daoine, leis a’ bheachd a th’ aca air dè as urrainn no nach urrainn dhut a dhèanamh, dè tha cudromach agus dè nach eil. Bha iomadh dùbhlan ann mu stoidhle còdaidh. Bidh mi fhathast a’ sgrìobhadh tòrr còd, agus anns na làithean sin bha agam ri fàs nas slaodaiche oir bha mi a’ dèanamh cus ghnìomhan co-shìnte agus gan dèanamh gu dona, an àite a bhith ag amas air aon. A’ coimhead air ais, sgrìobh mi leth a’ chòd airson an àithne Java JIT, an àithne C2. Sgrìobh an ath chòdadair as luaithe leth cho slaodach, an ath leth cho slaodach, agus b’ e crìonadh eas-chruthach a bh’ ann. Bha an seachdamh duine san t-sreath seo gu math slaodach - bidh sin an-còmhnaidh a’ tachairt! Bhuail mi tòrr còd. Choimhead mi air cò sgrìobh dè, gun eisgeachd, choimhead mi air a’ chòd aca, rinn mi ath-sgrùdadh air gach fear dhiubh, agus lean mi orm a’ sgrìobhadh barrachd mi-fhìn na gin dhiubh. Chan eil an dòigh-obrach seo ag obair glè mhath le daoine. Tha cuid nach toil le seo. Agus nuair nach urrainn dhaibh a làimhseachadh, tòisichidh a h-uile seòrsa gearan. Mar eisimpleir, chaidh innse dhomh aon uair stad a chuir air còdadh oir bha mi a’ sgrìobhadh cus còd agus bha e a’ cur an sgioba ann an cunnart, agus bha e uile coltach ri fealla-dhà dhomh: a dhuine, ma dh’ fhalbhas an còrr den sgioba agus ma chumas mi a’ sgrìobhadh còd, thusa. cha chaill iad ach leth sgiobaidhean. Air an làimh eile, ma chumas mi a’ sgrìobhadh còd agus ma chailleas tu leth an sgioba, tha sin coltach ri fìor dhroch riaghladh. Cha do smaoinich mi a-riamh mu dheidhinn, cha do bhruidhinn mi a-riamh mu dheidhinn, ach bha e fhathast an àiteigin nam cheann. Bha an smuain a’ snìomh ann an cùl m’ inntinn: “A bheil thu uile gam magadh?” Mar sin, b’ e an duilgheadas as motha mise agus mo dhàimhean le daoine. A-nis tha mi gam thuigsinn fhèin tòrr nas fheàrr, bha mi nam stiùiriche sgioba airson luchd-prògramaidh airson ùine mhòr, agus a-nis tha mi ag innse gu dìreach do dhaoine: tha fios agad, is mise cò mi, agus feumaidh tu dèiligeadh rium - a bheil e ceart gu leòr ma sheasas mi? an seo? Agus nuair a thòisich iad a’ dèiligeadh ris, dh’obraich a h-uile càil. Gu dearbh, chan eil mi dona no math, chan eil droch rùn no miannan fèin-thoileil agam, is e dìreach mo bhrìgh a th’ ann, agus feumaidh mi fuireach leis ann an dòigh air choireigin.

Андрей: Dìreach o chionn ghoirid thòisich a h-uile duine a’ bruidhinn mu dheidhinn fèin-mhothachadh airson introverts, agus sgilean bog san fharsaingeachd. Dè as urrainn dhut a ràdh mu dheidhinn seo?

bearradh: 'S e, b' e sin an lèirsinn agus an leasan a dh'ionnsaich mi bhon sgaradh-pòsaidh agam bho mo bhean. Bha na dh'ionnsaich mi bhon sgaradh-pòsaidh a 'tuigsinn mi fhìn. Seo mar a thòisich mi air daoine eile a thuigsinn. Tuig mar a tha an eadar-obrachadh seo ag obair. Dh'adhbhraich seo lorgan aon às deidh a chèile. Bha mothachadh ann air cò mise agus na tha mi a’ riochdachadh. Dè tha mi a’ dèanamh: an dàrna cuid tha mi a’ gabhail ùidh anns a’ ghnìomh, no tha mi a’ seachnadh còmhstri, no rudeigin eile - agus tha an ìre fèin-mhothachaidh seo gu mòr a’ cuideachadh gus smachd a chumail orm fhìn. Às deidh seo, thèid a h-uile càil gu math nas fhasa. Is e aon rud a lorg mi chan ann a-mhàin annam fhìn, ach cuideachd ann am prògramadairean eile an neo-chomas beachdan a chuir an cèill nuair a tha thu ann an staid de chuideam tòcail. Mar eisimpleir, tha thu nad shuidhe an sin a ’còdadh, ann an staid sruthadh, agus an uairsin thig iad a’ ruith thugad agus tòisichidh iad a ’sgreuchail ann an hysterics gu bheil rudeigin briste agus a-nis thèid ceumannan mòra a ghabhail nad aghaidh. Agus chan urrainn dhut facal a ràdh a chionn 's gu bheil thu ann an staid de dhuilgheadas tòcail. Leigidh an t-eòlas a fhuair thu dhut ullachadh airson na h-ùine seo, a bhith beò agus gluasad air adhart gu plana teàrnaidh, às deidh sin faodaidh tu rudeigin a dhèanamh. Mar sin tha, nuair a thòisicheas tu a’ tuigsinn mar a tha e uile ag obair, is e tachartas mòr a tha ag atharrachadh beatha a th’ ann. 
Cha b 'urrainn dhomh fhìn na faclan ceart a lorg, ach chuimhnich mi air sreath nan gnìomhan. Is e a’ phuing gu bheil an ath-bhualadh seo cho corporra ‘s a tha e labhairteach, agus feumaidh tu àite. Àite mar sin, anns an t-seadh Zen. Is e seo dìreach a dh’ fheumar a mhìneachadh, agus an uairsin ceum air falbh sa bhad - dìreach ceum air falbh gu corporra. Nuair a dh’fhanas mi sàmhach gu labhairteach, is urrainn dhomh an suidheachadh a làimhseachadh gu tòcail. Mar a bhios an adrenaline a ’ruighinn an eanchainn agad, gad thionndadh gu modh sabaid no itealaich, chan urrainn dhut dad a ràdh tuilleadh, chan eil - a-nis tha thu nad amadan, innleadair cuip, neo-chomasach air freagairt reusanta no eadhon stad air an ionnsaigh, agus tha an neach-ionnsaigh an-asgaidh ionnsaigh a thoirt a-rithist agus a-rithist. Feumaidh tu a bhith nad thu fhèin an-toiseach a-rithist, smachd fhaighinn air ais, faighinn a-mach às a’ mhodh “sabaid no itealaich”.

Agus airson seo feumaidh sinn àite labhairteach. Dìreach àite an-asgaidh. Ma chanas tu dad idir, faodaidh tu dìreach sin a ràdh, agus an uairsin falbh agus lorg “àite” dhut fhèin: rachaibh airson cuairt sa phàirc, glas thu fhèin san fhras - chan eil e gu diofar. Is e am prìomh rud dì-cheangal sealach bhon t-suidheachadh sin. Cho luath ‘s a thionndaidheas tu dheth airson co-dhiù beagan dhiog, thig smachd air ais, tòisichidh tu a’ smaoineachadh gu sobr. “Ceart gu leòr, chan e seòrsa de dh’ amadan a th’ annam, cha bhith mi a’ dèanamh rudan gòrach, tha mi nam dhuine gu math feumail." Aon uair ‘s gu bheil thu air a bhith comasach dhut fhèin a chreidsinn, tha an t-àm ann gluasad air adhart chun ath ìre: a’ tuigsinn na thachair. Chaidh ionnsaigh a thoirt ort, thàinig an ionnsaigh às nach robh dùil agad ris, b’ e ambush mì-onarach, borb a bh’ ann. Tha seo dona. Is e an ath cheum tuigsinn carson a bha feum aig an neach-ionnsaigh air seo. Gu dearbh, carson? Is dòcha a chionn 's gu bheil e fhèin feargach? Carson a tha e às mo chiall? Mar eisimpleir, a chionn 's gun do chuir e às dha fhèin agus nach urrainn dha uallach a ghabhail? Is e seo an dòigh air dèiligeadh gu faiceallach ris an t-suidheachadh gu lèir. Ach feumaidh seo àite airson gluasad, àite labhairteach. Is e a’ chiad cheum conaltradh beòil a bhriseadh dheth. Seachain còmhradh le faclan. Sguir dheth, coisich air falbh cho luath 'sa ghabhas. Mas e còmhradh fòn a th’ ann, dìreach croch suas - is e seo sgil a dh’ ionnsaich mi bho bhith a’ conaltradh ri mo bhean a bha roimhe. Mura h-eil an còmhradh a’ dol gu math, dìreach can “beannachd leat” agus croch suas. Bho thaobh eile a’ fòn: “blah blah blah”, tha thu a’ freagairt: “seadh, beannachd!” agus croch suas. Tha thu dìreach a’ cur crìoch air a’ chòmhradh. Còig mionaidean às deidh sin, nuair a thilleas an comas smaoineachadh ciallach thugad, tha thu air fuarachadh beagan, bidh e comasach smaoineachadh air a h-uile càil, dè thachair agus dè a thachras a-nis. Agus tòisich air freagairt smaoineachail a chuir ri chèile, an àite a bhith dìreach a’ freagairt a-mach à faireachdainn. Dhòmhsa, b’ e an adhartas ann am fèin-mhothachadh dìreach an fhìrinn nach urrainn dhomh bruidhinn air eagal cuideam tòcail. A 'faighinn a-mach às an stàit seo, a' smaoineachadh agus a 'dealbhadh mar a dhèiligeas tu ri duilgheadasan agus a dhìoladh - is iad sin na ceumannan ceart anns a' chùis nuair nach urrainn dhut bruidhinn. Is e an dòigh as fhasa ruith air falbh bhon t-suidheachadh anns a bheil cuideam tòcail ga nochdadh fhèin agus dìreach stad a bhith a’ gabhail pàirt anns an cuideam seo. Às deidh sin bidh thu comasach air smaoineachadh, nuair as urrainn dhut smaoineachadh, gheibh thu cothrom bruidhinn, agus mar sin air adhart.

Air an t-slighe, anns a 'chùirt, bidh an neach-lagha a tha na aghaidh a' feuchainn ri seo a dhèanamh dhut - a-nis tha e soilleir carson. Leis gu bheil comas aige do chumail suas gu leithid de staid nach urrainn dhut eadhon d’ ainm fhuaimneachadh, mar eisimpleir. Ann an seagh fìor, chan urrainn dhut bruidhinn. Ma thachras seo dhut, agus ma tha fios agad gum faigh thu thu fhèin ann an àite far a bheil blàran beòil a ’dol an-aghaidh, ann an àite mar chùirt, faodaidh tu tighinn còmhla ris an neach-lagha agad. Seasaidh an neach-lagha dhut agus cuiridh e stad air an ionnsaigh labhairteach, agus nì e e ann an dòigh gu tur laghail, agus tillidh an t-àite Zen caillte thugad. Mar eisimpleir, b’ fheudar dhomh fios a chuir gu mo theaghlach uair no dhà, bha am britheamh gu math càirdeil mu dheidhinn seo, ach bha an neach-lagha a bha na aghaidh a’ sgreuchail agus ag èigheach orm, cha b’ urrainn dhomh eadhon facal fhaighinn air an oir. Anns na cùisean sin, bidh cleachdadh eadar-mheadhanair ag obair as fheàrr dhòmhsa. Bidh an t-eadar-mheadhanair a 'stad a' chuideam seo a tha a 'dòrtadh ort ann an sruth leantainneach, lorgaidh tu an àite Zen riatanach, agus leis a' chomas bruidhinn bidh e a 'tilleadh. Is e raon eòlais iomlan a tha seo anns a bheil tòrr ri sgrùdadh, tòrr ri lorg annad fhèin, agus tha seo uile a’ tionndadh gu co-dhùnaidhean ro-innleachdail àrd-ìre a tha eadar-dhealaichte airson diofar dhaoine. Tha cuid de dhaoine aig nach eil na duilgheadasan a tha air am mìneachadh gu h-àrd; mar as trice, chan eil iad aig daoine a tha nan luchd-reic proifeasanta. Na daoine sin uile a bhios a’ dèanamh am beòshlaint le faclan - seinneadairean ainmeil, bàird, ceannardan creideimh agus luchd-poilitigs, bidh rudeigin aca ri ràdh an-còmhnaidh. Chan eil duilgheadasan mar sin aca, ach tha mi.

Андрей: Bha e... ris nach robh dùil. Sgoinneil, tha sinn air tòrr a bhruidhinn mu thràth agus tha an t-àm ann crìoch a chuir air an agallamh seo. Coinnichidh sinn gu cinnteach aig a’ cho-labhairt agus bidh e comasach dhuinn leantainn air adhart leis a’ chòmhradh seo. Chì mi thu aig Hydra!

Faodaidh tu leantainn air adhart leis a’ chòmhradh agad le Cliff aig co-labhairt Hydra 2019, a thèid a chumail air 11-12 Iuchar, 2019 ann an St. Thig e le aithris "An eòlas cuimhne eadar-ghnìomhach Azul Hardware". Faodar tiogaidean a cheannach air an làrach-lìn oifigeil.

Source: www.habr.com

Cuir beachd ann