Wareysi weyn oo lala yeeshay Cliff Click, aabaha JIT ee Java

Wareysi weyn oo lala yeeshay Cliff Click, aabaha JIT ee JavaCliff Click - CTO of Cratus (Dareemaha IoT ee horumarinta nidaamka), aasaasaha iyo la-aasaasaha dhowr xarumood (oo ay ku jiraan Rocket Realtime School, Neurensic iyo H2O.ai) oo leh dhowr bixitaan oo guul leh. Cliff wuxuu qoray soo-sameeyaha ugu horreeya da'da 15 (Pascal ee TRS Z-80)! Waxaa si fiican loogu yaqaanay shaqadiisa C2 ee Java (Badda Nodes IR). Isku-dubbaridiyahani wuxuu adduunka tusay in JIT ay soo saari karto kood tayo sare leh, kaas oo ahaa mid ka mid ah qodobbada soo ifbaxay Java oo ka mid ah aaladaha casriga ah ee casriga ah. Kadib Cliff wuxuu ka caawiyay Azul Systems inay dhisto 864-core mainframe oo leh software Java saafi ah oo taageeraya GC ku joogsiga 500-gigabyte taallo gudaha 10 millise seconds. Guud ahaan, Cliff wuxuu ku guuleystey inuu ka shaqeeyo dhammaan dhinacyada JVM.

 
Habrapost kani waa waraysi weyn oo lala yeeshay Cliff. Waxaan ka hadli doonaa mowduucyada soo socda:

  • U gudubka hagaajinta heerka hoose
  • Sida loo sameeyo refactoring weyn
  • Qaabka Qiimaha
  • Tababarka tayaynta heerka hoose
  • Tusaalooyinka wax ku oolka ah ee hagaajinta waxqabadka
  • Waa maxay sababta aad u abuurto luqadda barnaamijka
  • Xirfadda Injineer Waxqabad
  • Caqabadaha Farsamada
  • Wax yar oo ku saabsan qoondaynta diiwaangelinta iyo multi-cores
  • Caqabadda ugu weyn ee nolosha

Wareysiyada waxaa qaadaya:

  • Andrey Satarin ka Amazon Web Services. Xirfaddiisa, wuxuu ku guuleystey inuu ka shaqeeyo mashaariic kala duwan: wuxuu tijaabiyey NewSQL database qaybsan Yandex, nidaamka ogaanshaha daruuriga ah ee Kaspersky Lab, ciyaar badan oo ku yaal Mail.ru iyo adeeg loogu talagalay xisaabinta qiimaha sarrifka lacagaha qalaad ee Deutsche Bank. Xiiseynaya tijaabinta nidaamka dhabarka weyn iyo qaybsan.
  • Vladimir Sitnikov ka Netcracker. Toban sano oo shaqo ah oo ku saabsan waxqabadka iyo miisaanka NetCracker OS, software ay isticmaalaan hawlwadeenada isgaadhsiinta si ay u habeeyaan nidaamka maaraynta qalabka shabakada iyo shabakada. Xiiseynaya Java iyo Oracle Database arrimaha waxqabadka Qoraaga in ka badan daraasiin waxqabadka hagaajinta ee PostgreSQL JDBC darawalka rasmiga ah.

U gudubka hagaajinta heerka hoose

АндрСй: Waxaad magac weyn ku tahay adduunka ururinta JIT, Java, iyo guud ahaan shaqada waxqabadka, sax? 

gabiga: waa sidaas oo kale!

АндрСйAan ku bilowno su'aalo guud oo ku saabsan shaqada waxqabadka. Maxaad u malaynaysaa doorashada u dhaxaysa tayaynta heerka sare iyo heerka hoose sida ka shaqaynta heerka CPU?

gabiga: Haa, wax walba waa ku fudud yihiin halkan. Koodhka ugu dhakhsaha badan waa kan aan waligiis socon. Sidaa darteed, waxaad had iyo jeer u baahan tahay inaad ka bilowdo heer sare, ka shaqeyso algorithms. Tilmaanta O ee ka wanaagsan waxay garaaci doontaa mid ka sii xun haddii aanay wax joogto ah oo waaweyn soo faragelin. Waxyaabaha heerka hoose ah ayaa u dambeeya. Caadi ahaan, haddii aad si ku filan u hagaajisay inta ka hadhay xidhmadaada oo ay weli jiraan waxyaabo xiiso leh oo hadhay, taasi waa heer hoose. Laakiin sida looga bilaabo heer sare? Sidee ku ogaan kartaa in shaqo heer sare ah oo ku filan la qabtay? Hagaag... maya. Ma jiraan cuntooyin diyaarsan. Waxaad u baahan tahay inaad fahamto dhibaatada, go'aanso waxa aad sameyneyso (si aadan u qaadin tillaabooyin aan loo baahnayn mustaqbalka) ka dibna waxaad daaha ka qaadi kartaa profiler, kaas oo sheegi kara wax faa'iido leh. Mar marka qaarkood, adiga laftaada ayaa garatay in aad ka takhalustay waxyaabo aan loo baahnayn oo ay tahay waqtigii aad samayn lahayd hagaajin heer hoose ah. Tani dhab ahaantii waa nooc farshaxan oo gaar ah. Waxaa jira dad badan oo sameeya waxyaabo aan loo baahnayn, laakiin si degdeg ah u socda oo aan haysan waqti ay ka werweraan wax soo saarka. Laakiin tani waa ilaa su'aashu si cad u soo baxdo. Sida caadiga ah 99% qofna ma danaynayo waxa aan sameeyo, ilaa wakhtiga ay shay muhiim ahi ku soo wajahan yihiin waddada muhiimka ah ee aan cidina dan ka lahayn. Oo halkan qof kastaa wuxuu bilaabaa inuu kugu caayo "sababta ay ugu shaqayn wayday bilowgii hore." Guud ahaan, mar walba waxaa jira wax lagu hagaajiyo waxqabadka. Laakiin 99% wakhtiga ma lihid hogaan! Waxa aad isku dayaysaa oo kaliya in aad wax ka qabato hawshana waxa aad ogaanaysaa waxa muhiimka ah. Marnaba ma ogaan kartid in gabalkani u baahan yahay inuu noqdo mid qumman, markaa, dhab ahaantii, waa inaad ku qumman tahay wax walba. Laakiin tani waa wax aan macquul aheyn mana sameyneysid. Had iyo jeer waxaa jira waxyaabo badan oo lagu hagaajinayo - taasina waa wax iska caadi ah.

Sida loo sameeyo refactoring weyn

АндрСйSideed uga shaqeysaa bandhigga? Tani waa dhibaato isdhaafsi ah. Tusaale ahaan, waligaa ma ku qasbanaatay inaad ka shaqeyso dhibaatooyinka ka yimaada isgoysyada hawlo badan oo jira?

gabiga: Waxaan isku dayaa inaan iska ilaaliyo. Haddii aan ogahay in wax qabadku uu noqon doono arrin, waxaan ka fekeraa ka hor intaanan bilaabin codeing, gaar ahaan qaababka xogta. Laakiin inta badan waxaad ogaan doontaa waxaas oo dhan mar dambe. Kadibna waa inaad tagtaa qiyaaso xad dhaaf ah oo aad sameyso waxa aan ugu yeero "dib u qor oo guuleysato": waxaad u baahan tahay inaad qabsato qayb weyn oo kugu filan. Qaar ka mid ah koodka ayaa wali noqon doona in dib loo qoro sababtoo ah dhibaatooyinka waxqabadka ama wax kale. Si kasta oo ay ahaataba sababta kood dib loogu qorayo, had iyo jeer way fiican tahay in dib loo qoro gabal ka weyn qayb yar. Waqtigan xaadirka ah, qof kastaa wuxuu bilaabay inuu ku ruxo cabsi: "Ilaahayow, ma taaban kartid kood badan!" Laakiin dhab ahaantii, habkani wuxuu had iyo jeer u shaqeeyaa si ka sii wanaagsan. Waxaad u baahan tahay inaad isla markiiba qaadato dhibaato weyn, ku sawir goobaabin weyn oo aad tidhaahdo: Waxaan dib u qori doonaa wax kasta oo gudaha goobada ah. Xadku aad buu uga yar yahay waxa ku jira ee u baahan in la beddelo. Oo haddii xadaynta noocan oo kale ah ee xuduudaha kuu ogolaato inaad si fiican u qabato shaqada gudaha, gacmahaagu waa xor, samee waxaad rabto. Markaad fahamto dhibaatada, habka dib-u-qorista ayaa aad u sahlan, markaa qaado qaniinyo weyn!
Isla mar ahaantaana, marka aad dib u qorto weyn oo aad ogaato in wax qabadku uu noqon doono arrin, waxaad isla markiiba bilaabi kartaa inaad ka welwelto. Tani waxay caadi ahaan isu beddeshaa waxyaabo fudud sida "ha koobiyn xogta, u maamul xogta sida ugu fudud ee suurtogalka ah, ka dhig mid yar." Dib u qorida waaweyn, waxaa jira habab caadi ah oo lagu horumariyo waxqabadka. Waxayna ku dhawaad ​​had iyo jeer ku wareegaan xogta.

Qaabka Qiimaha

АндрСйMid ka mid ah podcast-yada waxaad kaga hadashay moodooyinka qiimaha marka la eego macnaha wax soo saarka. Ma sharaxi kartaa waxa aad ula jeedo tan?

gabiga: Hubaal. Waxaan ku dhashay xilli waxqabadka processor-ku uu ahaa mid aad muhiim u ah. Oo waagani mar kale ayuu soo noqdaa - qaddarku maaha mid la'aanteed. Waxaan bilaabay inaan noolaado waagii mashiinnada siddeed-bit ah, kombuyuutarkeygii ugu horreeyay wuxuu ku shaqeeyay 256 bytes. Sida saxda ah bytes. Wax walba aad bay u yaraayeen. Tilmaamaha waa in la tiriyaa, markii aan bilownay in aan kor u qaadno xirmooyinka luqadda barnaamijka, luqadaha ayaa qaatay wax badan iyo in ka badan. Waxaa jiray Assembler, ka dibna Basic, ka dibna C, iyo C ayaa daryeeshay wax badan oo tafaasiil ah, sida qoondaynta diiwaangelinta iyo xulashada tilmaamaha. Laakiin wax waliba si cad ayay halkaas ugu caddaayeen, haddii aan tilmaame tusaale u soo jeediyo doorsoomayaasha, markaas waan heli lahaa culays, qiimaha tilmaantanna waa la og yahay. Qalabku wuxuu soo saaraa tiro cayiman oo wareegyada mishiinnada ah, markaa xawaaraha fulinta waxyaabo kala duwan ayaa loo xisaabin karaa si fudud iyadoo la isku daray dhammaan tilmaamaha aad ku soconayso. Isbarbardhigga/tijaabada/laan kasta/wacitaan/load/dukaan kasta waa lagu dari karaa oo la odhan karaa: taasi waa wakhtiga adiga. Markaad ka shaqeyneyso hagaajinta waxqabadka, waxaad hubaal ahaan u bixin doontaa tirooyinka u dhigma wareegyada kulul ee yaryar. 
Laakiin isla markaad u beddesho Java, Python iyo waxyaabo la mid ah, waxaad si dhakhso ah uga guuraysaa qalabka heerka hooseeya. Waa maxay qiimaha lagu wacayo getter gudaha Java? Haddii JIT ee HotSpot ay sax tahay la safan, way soo shubmi doontaa, laakiin haddii aysan tan samayn, waxay noqon doontaa wicitaan shaqo. Maadaama wicitaanku ku jiro wareeg kulul, waxay meesha ka saari doontaa dhammaan hagaajinta wareeggaas. Sidaa darteed, qiimaha dhabta ah wuxuu noqon doonaa mid aad u sarreeya. Oo isla markiiba waxaad lumisaa awoodda aad ku eegi karto qayb kood ah oo aad fahamto inay tahay inaan ku fulinno xawaaraha saacadda processor-ka, xusuusta iyo kaydinta la isticmaalo. Waxaas oo dhan waxay noqonayaan mid xiiso leh oo keliya haddii aad si dhab ah u gasho waxqabadka.
Hadda waxaan isku aragnay xaalad uu xawaarihiisa processor-ku si dhib leh u kordhay toban sano. Maalmihii hore ayaa soo noqday! Mar dambe ma aad tirin kartid waxqabad wanaagsan oo hal xadhig leh. Laakiin haddii aad si lama filaan ah u gasho kombuyuutar barbar-dhac ah, aad ayay u adag tahay, qof kastaa wuxuu ku eegayaa sida James Bond. Dardargelinta XNUMX-laabka ah halkan waxay badanaa ka dhacdaa meelaha uu qof wax ku khalkhaliyay. Concurrency waxay u baahan tahay shaqo badan. Si aad u hesho xawaarahaas XNUMXx, waxaad u baahan tahay inaad fahanto qaabka qiimaha. Waa maxay iyo waa imisa? Oo si tan loo sameeyo, waxaad u baahan tahay inaad fahamto sida carrabku ugu habboon yahay qalabka hoose.
Martin Thompson waxa uu u doortay kelmad aad u wanaagsan balooggiisa Dareenka Makaanikada! Waxaad u baahan tahay inaad fahamto waxa qalabku uu qabanayo, sida saxda ah ee uu u samayn doono, iyo sababta uu u sameeyo waxa uu sameeyo marka hore. Isticmaalka tan, way fududahay in la bilaabo tirinta tilmaamaha oo la ogaado halka wakhtiga fulinta ku socdo. Haddii aadan haysan tababar ku habboon, waxaad kaliya raadineysaa bisad madow qol mugdi ah. Waxaan arkaa dad wanaajiya waxqabadka mar kasta oo aan wax fikrad ah ka lahayn waxa cadaabta ay samaynayaan. Aad bay u dhiban yihiin oo horumar badan ma samaynayaan. Oo markaan qaato kood isku mid ah, ku dheji laba khadad yar yar oo aad hesho shan ama toban laab xawli ah, waxay la mid yihiin: si fiican, taasi maaha mid caddaalad ah, waxaan hore u ogaanay inaad ka fiican tahay. Cajiib. Maxaan ka hadlayaa ... qaabka kharashku wuxuu ku saabsan yahay nooca code ee aad qorto iyo sida ugu dhakhsaha badan ee uu u socdo celcelis ahaan sawirka weyn.

АндрСй: Oo sidee ayaad mugga noocaas ah madaxaaga ugu hayn kartaa? Tan ma lagu gaadhay khibrad dheeraad ah, mise? Xaggee khibradda noocaas ahi ka timi?

gabiga: Hagaag, ma helin waayo-aragnimadayda sida ugu fudud. Waxa aan ku diyaariyay Golaha waagii aad fahmi kari lahayd tilmaam kasta. Waxay u egtahay doqonnimo, laakiin tan iyo markaas jaantuska tilmaamaha Z80 ayaa had iyo jeer ku hadhay madaxayga, xusuustayda. Ma xasuusto magacyada dadka hal daqiiqo gudaheed markaan hadlo, laakiin waxaan xasuustaa kood la qoray 40 sano ka hor. Waa wax lagu qoslo, waxay u egtahay xanuunka syndrome"saynis yahan nacas ah".

Tababarka tayaynta heerka hoose

АндрСй: Ma jirtaa hab ka sahlan oo lagu galo?

gabiga: Haa iyo maya. Qalabkii aan isticmaalno dhamaanteen isma bedelin wax badan waqti ka dib. Qof kastaa wuxuu adeegsadaa x86, marka laga reebo talefannada gacanta ee Arm. Haddii aanad samaynayn nooc ka mid ah dhejinta adag, waxaad samaynaysaa wax la mid ah. Hagaag, ku xigta Tilmaamuhu sidoo kale ma beddelin qarniyo badan. Waxaad u baahan tahay inaad tagto oo aad wax ku qorto Golaha. Ma badna, laakiin waa ku filan in la bilaabo fahamka. Waad dhoola cadeyneysaa, laakiin si dhab ah ayaan u hadlayaa. Waxaad u baahan tahay inaad fahanto xidhiidhka u dhexeeya luqadda iyo qalabka. Intaa ka dib waxaad u baahan tahay inaad tagto oo aad wax yar qorto oo aad sameyso wax yar oo isku dubaridiyaha ah ee luuqad yar. Ciyaar-u-ekaanta waxay la macno tahay in loo baahan yahay in lagu sameeyo waqti macquul ah. Waxay noqon kartaa mid aad u fudud, laakiin waa inay abuurtaa tilmaamo. Ficilka soo saarista tilmaanta ayaa kaa caawin doona inaad fahanto qaabka kharashka ee buundada u dhaxaysa koodka heerka sare ah ee qof kastaa qoro iyo koodka mishiinka ku shaqeeya qalabka. Waraaqahan waxa lagu gubi doonaa maskaxda marka la qorayo isu-duwaha. Xataa isku xidhka ugu fudud. Intaa ka dib, waxaad bilaabi kartaa inaad eegto Java iyo xaqiiqda ah in xuddunta semantic ay aad uga qoto dheer tahay, oo ay aad u adag tahay in la dhiso buundooyinka. Java, aad bay u adag tahay in la fahmo in buundadayadu noqotay mid wanaagsan iyo inay xun tahay, waxa keenaya inay burburto iyo waxa aan dhici doonin. Laakiin waxaad u baahan tahay nooc ka mid ah barta bilawga ah ee aad fiiriso koodka oo aad fahamto: "Haa, qalabkan waa in la dhex geliyaa mar kasta." Kadibna waxay soo baxday in mararka qaarkood tani ay dhacdo, marka laga reebo xaaladda marka habka uu noqdo mid aad u weyn, iyo JIT waxay bilaabataa inay wax walba ku dhejiso. Waxqabadka meelahan oo kale waa la saadaalin karaa isla markiiba. Caadi ahaan getters si fiican ayey u shaqeeyaan, laakiin markaa waxaad eegtaa wareegyada kulul ee waaweyn oo waxaad ogaataa inay jiraan wicitaanno waxqabadyo ah oo ku wareegsan halkaas oo aan garanayn waxay samaynayaan. Tani waa dhibka ka jira isticmaalka baahsan ee loo yaqaan 'getters', sababta aan loo dhejin karin ayaa ah iyada oo aan la caddayn in ay yihiin qalab. Haddii aad leedahay saldhig kood yar oo aad u yar, waxaad si fudud u xasuusan kartaa ka dibna waxaad tidhaahdaa: kani waa getter, tanina waa dejiye. Saldhig weyn oo kood ah, shaqo kastaa waxay ku nooshahay taariikhdeeda, taas oo guud ahaan, aan cidna la garanayn. Profiler-ku wuxuu leeyahay waxaan luminay 24% wakhtiga loop qaar ka mid ah iyo si loo fahmo waxa loop-kani samaynayo, waxaan u baahanahay inaan eegno hawl kasta oo gudaha ah. Suuragal maaha in tan la fahmo iyada oo aan la baranin shaqada, tanina waxay si dhab ah u dhimaysaa habka fahamka. Taasi waa sababta aanan u isticmaalin getters iyo setters, waxaan gaadhay heer cusub!
Xagee laga helaa qaabka qiimaha? Hagaag, wax waad akhrin kartaa, dabcan... Laakiin waxaan filayaa in habka ugu fiican uu yahay ficil. Samaynta iskudubarid yar ayaa noqon doonta habka ugu fiican ee lagu fahmi karo qaabka kharashka oo aad madaxaaga geliso. Isku-dubarid yar oo ku habboon barnaamijka microwave-ka ayaa hawl u ah bilawga. Hagaag, waxaan ula jeedaa, haddii aad hore u leedahay xirfadaha barnaamijka, markaa taasi waa inay ku filnaataa. Dhammaan waxyaalahaas oo dhan waxay ka mid yihiin kala-soocidda xadhigga aad haysato sida nooc ka mid ah tibaaxaha aljabrada, ka soo saarista tilmaamaha hawlgallada xisaabeed ee halkaas si sax ah, qaadashada qiyamka saxda ah ee diiwaannada - waxaas oo dhan ayaa la sameeyaa hal mar. Oo intaad sameyso, waxay ku daabici doontaa maskaxdaada. Waxaan filayaa in qof kastaa garanayo waxa uu sameeyo iskudubariduhu. Waxayna tani siin doontaa fahamka qaabka kharashka.

Tusaalooyinka wax ku oolka ah ee hagaajinta waxqabadka

АндрСй: Maxaa kale oo ay tahay inaad fiiro gaar ah u yeelato markaad ka shaqeyneyso wax soo saarka?

gabigaQaab dhismeedka xogta. By habka, haa, ma aanan barin fasaladan muddo dheer ... Dugsiga Gantaalka. Waxay ahayd madadaalo, laakiin waxay u baahnayd dadaal badan, sidoo kale waxaan haystaa nolol! OK Sidaa darteed, mid ka mid ah fasallada waaweyn ee xiisaha leh, "Xaggee waxqabadkaagu aadaa," waxaan ardayda siiyay tusaale: laba gigabytes iyo badh xogta fintech ayaa laga akhriyay faylka CSV ka dibna waxay ahayd inay xisaabiyaan tirada alaabta la iibiyay. . Xogta suuqa saxda ah ee joogtada ah. Xirmooyinka UDP ayaa loo beddelay qaab qoraal ilaa 70-meeyadii. Chicago Mercantile Exchange - dhammaan noocyada shay sida subagga, galleyda, soybeans, wax la mid ah. Waxay ahayd lagama maarmaan in la tiriyo alaabtan, tirada macaamilada, celceliska mugga dhaqdhaqaaqa lacagaha iyo alaabta, iwm. Waa xisaab ganacsi oo aad u fudud: hel lambarka badeecada (taas oo ah 1-2 xaraf miiska xashiishka), hel qaddarka, ku dar mid ka mid ah jaangooyooyinka ganacsiga, ku dar mugga, ku dar qiime, iyo laba waxyaalood oo kale. Xisaab aad u fudud. Hirgelinta toydu waxay ahayd mid toos ah: wax walbaa waxay ku jiraan faylka, waxaan akhriyay faylka oo aan dhex wareegayaa, qaybinta diiwaannada shakhsi ahaaneed ee xargaha Java, raadinta waxyaabaha lagama maarmaanka ah iyaga oo ku daraya sida waafaqsan xisaabta kor lagu sharaxay. Waxayna ku shaqeysaa xoogaa xawli hooseeya.

Habkan, way iska caddahay waxa socda, kombuyuutarada isbar-bar yaaca ah kuma caawin doonto, sax? Waxay soo baxday in kororka shan-laab ee waxqabadka lagu gaari karo si fudud iyadoo la dooranayo qaababka xogta saxda ah. Tanina waxay la yaabban tahay xitaa barnaamij-yaqaannada khibradda leh! Kiiskeyga gaarka ah, khiyaamadu waxay ahayd inaadan u qoondayn meelaynta xusuusta ee loop kulul. Waa hagaag, tani maaha runta oo dhan, laakiin guud ahaan - waa inaadan muujin "hal mar X" marka X uu ku filan yahay. Marka X uu yahay laba gigabytes iyo badh, waa inaadan u qoondayn wax "xarafkiiba hal mar", ama "hal mar xariiq", ama "halkii beer", wax la mid ah. Tani waa meesha waqtiga lagu qaato. Sidee tani xitaa u shaqeysaa? Bal qiyaas aniga oo wacay String.split() ama BufferedReader.readLine(). Readline waxa uu ka sameeyaa xadhig ka soo baxay bayt ka soo dul maray shabakada, hal mar xariiq kasta, mid kasta oo ka mid ah boqollaal milyan oo xariiq. Sadarkan ayaan qaatay, kala sooc oo iska tuur. Waa maxay sababta aan u tuurayo - si fiican, mar hore ayaan ka shaqeeyay, taasi waa dhammaan. Markaa, byte kasta oo laga akhriyo kuwan 2.7G, laba xaraf ayaa lagu qori doonaa khadka, taas oo ah, horeba 5.4G, oo uma baahni wax kale, markaa waa la tuuray. Haddii aad u fiirsato xadhkaha xusuusta, waxaanu ku shubaynaa 2.7G kaas oo dhex mara xusuusta iyo baska xusuusta ee Processor-ka, ka dibna laba jibaar ayaa loo soo diraa khadka ku jira xusuusta, waxaanas oo dhami way jajabaan marka khad kasta oo cusub la sameeyo. Laakiin waxaan u baahanahay inaan akhriyo, qalabku wuu akhriyaa, xitaa haddii wax walba ay dib u jajabaan. Oo waa inaan qoraa sababtoo ah waxaan sameeyay khad, kaydkuna waa buuxaan - kaydku ma qaadi karo 2.7G. Markaa, byte kasta oo aan akhriyo, waxaan akhriyaa laba bytes oo kale oo aan qoro laba bytes oo kale, ugu dambeyntiina waxay leeyihiin saamiga 4: 1 - saamigan waxaan ku dhumineynaa xawaaraha xusuusta. Kadibna waxaa soo baxday in haddii aan sameeyo String.split() - Tani maaha markii ugu dambeysay ee aan tan sameeyo, waxaa jiri kara 6-7 beerood oo kale oo gudaha ah. Markaa koodhka caadiga ah ee akhrinta CSV ka dibna kala shaandhaynta xargaha waxay keenaysaa qashinka xadhkaha xadhkaha xusuusta ee ku saabsan 14: 1 marka loo eego waxaad runtii jeclaan lahayd inaad haysato. Haddii aad iska tuurto xulashooyinkan, waxaad heli kartaa xawaare shan laab ah.

Mana aha sidaas u adag. Haddii aad dhinaca midig ka eegto koodka, dhammaan waxa ay noqonayaan wax fudud marka aad ogaato dhibaatada. Waa inaadan joojin dhammaan qoondaynta xusuusta: dhibka kaliya ayaa ah inaad u qoondayso shay oo isla markiiba wuu dhimanayaa, oo jidka ku gubtay kheyraad muhiim ah, taas oo kiiskan ah xajmiga xajmiga xusuusta. Waxayna taasi keentaa in wax soo saarku hoos u dhaco. On x86 waxaad u baahan tahay inaad si firfircoon u gubto wareegyada processor-ka, laakiin halkan waxaad gubtay dhammaan xusuusta waqti hore. Xalku waa in la yareeyo qadarka dheecaanka. 
Qaybta kale ee dhibaatadu waa in haddii aad ordo profiler marka xariijimaha xusuusta ka baxo, isla marka ay dhacdo, waxaad caadi ahaan sugaysaa kaydka si uu u soo noqdo sababtoo ah waxaa ka buuxa qashin aad hadda soo saartay, dhammaan khadadkaas. Sidaa darteed, hawl kasta ama dukaan kasta ayaa noqda mid gaabis ah, sababtoo ah waxay u horseedaan khasnado seegay - dhammaan kaydka ayaa noqday mid gaabis ah, sugaya qashinka si uu uga tago. Sidaa darteed, profiler-ku waxa uu muujin doonaa qaylo diirran oo random ah oo lagu mariyay wareegga oo dhan - ma jiri doonto tilmaamo kulul oo gaar ah ama meel koodka ah. Kaliya buuq. Oo haddii aad eegto wareegyada GC, dhamaantood waa Jiilka da'da yar oo aad u dheereeya - microse seconds ama millise seconds ugu badnaan. Ka dib oo dhan, dhammaan xusuustaas ayaa isla markiiba dhimata. Waxaad u qoondaysay balaayiin gigabytes ah, wuuna gooyay iyaga oo gooyay, oo haddana gooyay. Waxaasoo dhan waxay u dhacaan si degdeg ah. Waxay soo baxday in ay jiraan wareegyo GC raqiis ah, buuq diiran oo wareegga oo dhan ah, laakiin waxaan rabnaa inaan helno xawaare 5x ah. Waqtigan xaadirka ah, wax waa in ay xiraan madaxaaga oo ay ku dhawaaqaan: "Waa maxay sababta tani?!" Xad-dhaafka xad-dhaafka ah ee xariijimaha xusuusta laguma soo bandhigin cilladaha caadiga ah; waxaad u baahan tahay inaad socodsiiso qalabka wax-ka-hortagga cilladaha oo aad u aragto naftaada iyo si toos ah. Laakiin tan si toos ah loogama shakin karo saddexdan calaamadood. Calaamadda saddexaad waa marka aad eegto waxa aad iftiimiso, weydii profiler-ka, oo wuxuu ku jawaabay: "Waxaad samaysay hal bilyan oo saf, laakiin GC-gu wuxuu u shaqeeyay bilaash." Isla marka ay tani dhacdo, waxaad ogaanaysaa inaad abuurtay walxo badan oo aad gubtay dhammaan haadka xusuusta. Waxaa jirta hab lagu ogaan karo tan, laakiin ma muuqato. 

Dhibaatadu waxay ku jirtaa qaab dhismeedka xogta: qaab dhismeedka qaawan ee ka hooseeya wax kasta oo dhaca, aad buu u weyn yahay, waa 2.7G on disk, markaa samaynta nuqul ka mid ah shaygan waa mid aan loo baahnayn - waxaad dooneysaa inaad isla markiiba ka soo dejiso bakhaarka byte network. Geli diiwaanka, si aan loo akhriyin-gudbinta shan jeer hore iyo gadaal. Nasiib darro, Java kuma siinayso maktabad noocaas ah oo qayb ka ah JDK si caadi ah. Laakiin tani waa wax yar, sax? Asal ahaan, kuwani waa 5-10 xariiq oo kood ah oo loo isticmaali doono in lagu hirgeliyo xadhkahaaga xadhkaha goostay, kaas oo soo noqnoqda hab-dhaqanka fasalka xadhigga, iyada oo lagu duubo hareeraha hoose ee byte-ka. Natiijo ahaan, waxaa soo baxday in aad ku shaqeyneyso sidii adigoo xargaha leh, laakiin dhab ahaantii tilmaamayaasha xayndaabka ayaa u guuraya halkaas, iyo bytes-ka cayriin meel kasta lama koobiyeeyo, sidaas darteed isla baqshiinka ayaa dib loo isticmaalaa marar badan, iyo Nidaamka qalliinka waxa uu ku faraxsan yahay in uu naftiisa ku qaato waxyaabaha loogu talagalay, sida laba-jibbaarada qarsoon ee kaydiyeyaashan byte-ga ah, oo aadan mar dambe ku dhex milmayn qulqulka aan dhammaadka lahayn ee xogta aan loo baahnayn. Dhanka kale, ma fahantay in marka aad la shaqaynayso GC, ay dammaanad qaadayso in qoondayn kasta oo xusuusta ahi aanay muuqan doonin processor-ka kadib wareeggii ugu dambeeyay ee GC? Sidaa darteed, waxaas oo dhan suurtagal maaha inay ku jiraan kaydka, ka dibna 100% dammaanad-xumo ayaa dhacda. Markaad la shaqeyneyso tilmaame, x86, ka-goynta diiwaanka xusuusta waxay qaadataa 1-2 wareegyo saacad, isla marka ay taasi dhacdo, waxaad bixineysaa, bixisaa, bixisaa, sababtoo ah xusuusta oo dhan waa shidan. Sagaal khasnado - tanina waa qiimaha qoondaynta xusuusta. Qiimaha dhabta ah.

Si kale haddii loo dhigo, qaababka xogta ayaa ah waxa ugu adag ee la beddelo. Oo marka aad ogaato in aad dooratay qaab-dhismeedka xogta khaldan kaas oo dili doona waxqabadka dambe, inta badan waxaa jira shaqo badan oo la qabanayo, laakiin haddii aadan samayn, arrimuhu way ka sii dari doonaan. Ugu horreyntii, waxaad u baahan tahay inaad ka fekerto qaababka xogta, tani waa muhiim. Qiimaha ugu muhiimsan halkan wuxuu ku dhacaa qaababka xogta dufanka, kuwaas oo bilaabay in loo isticmaalo qaabka "Waxaan koobiyeeyay qaab dhismeedka xogta X qaab-dhismeedka xogta Y sababtoo ah waxaan si fiican u jeclahay qaabka Y." Laakiin hawlgalka nuqulka (taas oo u muuqata mid raqiis ah) ayaa dhab ahaantii khasaarisa xawaaraha xusuusta waana meesha dhammaan wakhtiga fulinta ee khasaaray lagu aasay. Haddii aan haysto xadhig weyn oo JSON ah oo aan rabo inaan u beddelo geed DOM habaysan oo POJOs ah ama shay, hawlgalka jeexjeexa xadhigga iyo dhisida POJO, ka dibna gelitaanka POJO mar dambe, waxay keeni doontaa kharash aan loo baahnayn - waa ma jabna. Marka laga reebo haddii aad ku ordo agagaarka POJOs in ka badan inta aad ku hareeraysan tahay xadhig. Gacanta ka baxsan, waxaad isku dayi kartaa inaad furto xargaha oo aad ka soo saarto kaliya waxaad u baahan tahay halkaas, adoon u rogin wax POJO ah. Haddii waxaas oo dhami ay ku dhacaan waddo ka soo baxda waxqabadka ugu sarreeya ee loo baahan yahay, ma jiraan POJOs adiga, waxaad u baahan tahay inaad si toos ah u qoddo khadka.

Waa maxay sababta aad u abuurto luqadda barnaamijka

АндрСй: Waxaad sheegtay si aad u fahamto qaabka kharashka, waxaad u baahan tahay inaad qorto luqadaada yar...

gabiga: Ma aha luqad, laakiin isku-dubarid. Af iyo ururiye waa laba shay oo kala duwan. Farqiga ugu muhiimsan waa madaxaaga. 

АндрСй: Wallaahi, inta aan ogahay, waxaad tijaabinaysaa sidii aad u abuuri lahayd luqado aad adigu leedahay. Maxay?

gabiga: Sababtoo ah waan awoodaa! Waxaan ahay hawlgab badheed, markaa tani waa hiwaayaddeyda. Nolosheyda oo dhan waxaan fulinayay luqadaha dadka kale. Waxa kale oo aan in badan ka shaqeeyay qaabka codaynta. Iyo sidoo kale sababtoo ah waxaan ku arkaa dhibaatooyinka luqadaha kale. Waxaan arkaa inay jiraan siyaabo ka wanaagsan oo lagu sameeyo waxyaabo la yaqaan. Waana isticmaali lahaa. Kaliya waan ka daalay inaan arko dhibaatooyinka naftayda, Java, Python, luqad kasta oo kale. Hadda waxaan ku qoraa React Native, JavaScript iyo Elm sidii hiwaayad aan ku saabsanayn hawlgab, laakiin ku saabsan shaqo firfircoon. Waxaan sidoo kale ku qoraa Python, waxayna u badan tahay, inay sii wadi doonto shaqada barashada mashiinka ee dhabarka Java. Waxaa jira luqado badan oo caan ah dhamaantoodna waxay leeyihiin astaamo xiiso leh. Qof kastaa wuu ku fiican yahay sidiisa oo waxaad isku dayi kartaa inaad isku keento dhammaan sifooyinkaas. Markaa, waxaan baranayaa waxyaalaha i xiiseeya, hab-dhaqanka luqadda, iskuna dayaya inaan la imaado micnaha macquulka ah. Oo ilaa hadda waan guulaysanayaa! Waqtigan xaadirka ah waxaan la halgamayaa semantics xusuusta, sababtoo ah waxaan rabaa in aan haysto sida C iyo Java, oo aan helo qaabka xusuusta xooggan iyo semantics xusuusta ee xamuulka iyo dukaamada. Isla mar ahaantaana, hayso fikradda nooca tooska ah sida Haskell. Halkan, waxaan isku dayayaa in aan isku daro nooca Haskell-u eg iyo shaqada xusuusta ee C iyo Java labadaba. Tani waa waxa aan samaynayay 2-3 bilood ee la soo dhaafay, tusaale ahaan.

АндрСй: Haddi aad dhisto luqad afafka kale ka wanagsan, ma kula tahay in qof uu samaynayo caksigeeda: qaado fikradahaaga oo isticmaal?

gabiga: Tani waa sida saxda ah ee luqadaha cusub u muuqdaan! Maxay Java ula mid tahay C? Sababtoo ah C wuxuu lahaa syntax wanaagsan oo qof kastaa fahmay Javana waxaa dhiirigeliyay ereygan, isagoo ku daray badbaadada nooca, array bounds checking, GC, sidoo kale waxay hagaajiyeen waxyaabo ka mid ah C. Waxay ku dareen iyaga. Laakiin wax badan ayaa loo waxyooday, sax? Qof kastaa wuxuu ku taagan yahay garbaha ragii kaa horeeyay – sidaas ayaa horumar lagu gaaray.

АндрСй: Sida aan u fahmay, luqaddaadu waxay ahaan doontaa mid xafidan. Miyaad ka fikirtay hirgelinta shay sida jeegaga amaahda ee Rust? Ma u eegtay isaga, maxaad u malaynaysaa isaga?

gabiga: Hagaag, waxaan qorayay C muddo da 'ah, iyada oo dhammaan malloc-kan oo dhan oo lacag la'aan ah, oo gacanta lagu maamulayo noloshayda. Waad ogtahay, 90-95% wakhtiga nolosha gacanta lagu hago ayaa leh qaab isku mid ah. Waxayna aad iyo aad u xanuun badan tahay in gacanta lagu sameeyo. Waxaan jeclaan lahaa isku-dubariduhu inuu si fudud kuugu sheego waxa halkaas ka socda iyo waxa aad ku guulaysatay ficilkaaga. Waxyaabaha qaarkood, jeegeeyaha amaahda ayaa tan ka sameeya meel ka baxsan sanduuqa. Oo waa inay si toos ah u soo bandhigtaa macluumaadka, fahamtaa wax walba, oo xataa iguma culaysin soo bandhigida fahamkan. Waa in ay samayso ugu yaraan falanqaynta baxsadka maxalliga ah, oo kaliya haddii ay ku guuldareysato, markaas waxay u baahan tahay in ay ku darto tafaasiisha nooca qeexi doona nolosha - iyo nidaamka noocan oo kale ah aad uga dhib badan yahay hubiyaha amaahda, ama xaqiiqo ah wax kasta oo xusuusta hadda jira. Doorashada u dhaxaysa "wax walbaa way fiican yihiin" iyo "waxba ma fahmin" - maya, waa inay jiraan wax ka fiican. 
Marka, sida qof wax badan ku qoray kood C, waxaan u maleynayaa in taageerada si toos ah loo xakameeyo nolosha ay tahay waxa ugu muhiimsan. Waxaan sidoo kale ka dheregsanahay inta Java ay isticmaasho xusuusta, cabashada ugu weynina waa GC. Markaad u qoondayso xusuusta Java, dib uma soo celin doontid xusuusta maxalli ahaan jirtay wareeggii GC ee u dambeeyay. Tani maahan kiiska luqadaha leh maaraynta xusuusta saxda ah. Haddii aad wacdo malloc, waxaad isla markiiba helaysaa xusuusta inta badan la isticmaalay. Caadiyan waxaad samaysaa waxyaabo ku meel gaar ah oo xasuus leh oo isla markiiba dib u soo celi. Oo isla markiiba waxay ku soo noqotaa barkadda malloc, iyo wareegga xiga ee malloc ayaa mar kale soo saara. Sidaa darteed, isticmaalka xusuusta dhabta ah waxaa lagu yareeyaa isku dhafka walxaha noolaha waqti go'an, oo lagu daray qulqulo. Oo haddii wax waliba aysan ku daadin si gebi ahaanba aan fiicnayn, inta badan xusuusta waxay ku dhammaataa kaydinta iyo processor-ka, waxayna u shaqeysaa si dhakhso ah. Laakiin waxay u baahan tahay wax badan oo maaraynta xusuusta gacanta ah oo leh malloc oo bilaash ah oo loogu yeedhay nidaamka saxda ah, meesha saxda ah. Daxalku wuxuu si sax ah u maareyn karaa tan, marar badanna wuxuu bixiyaa waxqabad ka sii wanaagsan, maadaama isticmaalka xusuusta lagu soo koobay xisaabinta hadda - oo ka soo horjeeda sugitaanka wareegga GC ee soo socda si loo xoreeyo xusuusta. Natiijo ahaan, waxaan helnay hab aad u xiiso badan oo lagu hagaajinayo waxqabadka. Oo aad u xoog badan - waxaan ula jeedaa, waxaan sameeyay waxyaabahan oo kale markii xogta fintech la sameeyay, tani waxay ii ogolaatay inaan helo xawaare dhan shan jeer. Taasi waa kor u kac weyn oo aad u weyn, gaar ahaan adduunka halkaas oo soo-saareyaashu aysan si degdeg ah u socon oo aan wali sugeyno hagaajin.

Xirfadda Injineer Waxqabad

АндрСй: Waxaan sidoo kale jeclaan lahaa in aan wax ka weydiiyo guud ahaan mihnadaha shaqada. Waxaad caan ku noqotay shaqadaada JIT ee HotSpot ka dibna waxaad u guurtay Azul, oo sidoo kale ah shirkad JVM ah. Laakiin waxaan horeyba uga shaqaynaynay qalab badan marka loo eego software-ka. Kadibna waxay si lama filaan ah u wareegeen Xogta Weyn iyo Barashada Mashiinnada, ka dibna waxay u wareegeen ogaanshaha khiyaanada. Sidee tani ku dhacday? Kuwani waa meelo aad u kala duwan oo horumarineed.

gabiga: Muddo dheer ayaan barnaamijka waday waxaana ku guuleystey in aan qaato xiisado kala duwan. Oo markay dadku yidhaahdaan: "Oh, waxaad tahay qofka JIT u sameeyay Java!", had iyo jeer waa wax lagu qoslo. Laakiin intaa ka hor, waxaan ka shaqaynayey clone of PostScript - luqadda Apple mar u isticmaali jirtay daabacaadadeeda laysarka. Intaa ka horna waxaan sameeyay hirgelinta luqadda Forth. Waxaan u maleynayaa in mawduuca guud ee aniga ii ah uu yahay horumarinta qalabka. Nolosheyda oo dhan waxaan samaynayey qalab ay dadka kale ku qoraan barnaamijyadooda wanaagsan. Laakiin waxaan sidoo kale ku lug lahaa horumarinta nidaamyada hawlgalka, darawallada, debuggers heerka kernel, luqadaha horumarinta OS, kuwaas oo bilaabay wax fudud, laakiin waqti ka dib noqday mid aad u adag. Laakiin mawduuca ugu muhiimsan ayaa weli ah horumarinta qalabka. Qayb weyn oo noloshayda ka mid ah ayaa dhex martay Azul iyo Sun, waxayna ku saabsan tahay Java. Laakiin markii aan galay Xogta Weyn iyo Barashada Mashiinnada, waxaan dib u saaray koofiyaddaydii quruxda badnayd oo waxaan idhi, "Oh, hadda waxaan haysanaa dhibaato aan fududayn, waxaana jira waxyaabo badan oo xiiso leh oo socda oo dadku waxay samaynayaan." Tani waa waddo horumarineed oo weyn oo la qaado.

Haa, runtii waan jeclahay xisaabinta la qaybiyay. Shaqadaydii ugu horreysay waxay ahayd arday ahaan C, mashruuc xayaysiis ah. Tan waxa lagu qaybiyey xisaabinta Chips Zilog Z80 kaas oo soo ururiyay xogta analooga OCR, oo uu soo saaray falanqeeye analooga ah. Waxay ahayd mawduuc qabow oo gebi ahaanba waalan. Waxaase jirtay dhibaatooyin, qayb si sax ah looma aqoonsanin, markaa waxay ahayd inaad sawir la soo baxdo oo aad tustid qof indhihiisa wax ku akhrin kara oo soo sheegi kara waxa uu sheegayo, sidaas darteed waxaa jiray shaqooyin xog ah, iyo shaqooyinkan. waxay lahaayeen afkooda . Waxaa jiray gadaal ka baaraandegay waxaas oo dhan - Z80s oo barbar socda vt100 terminal oo ordaya - qofba hal qof, waxaana jiray qaab barnaamij isku mid ah oo Z80 ah. Qaar ka mid ah gabal caadiga ah ee xusuusta la wadaago dhammaan Z80s gudahood qaabeynta xiddiga; Diyaaradda dhabarka ayaa sidoo kale la wadaagay, kala badh RAM-ka ayaa la wadaagay shabakada dhexdeeda, badh kalena wuxuu ahaa mid gaar ah ama aaday wax kale. Nidaam isku mid ah oo macno leh oo isku mid ah oo la qaybiyey oo leh xusuusta la wadaago ... Goorma ayay tani ahayd ... xitaa ma xasuusan karo, meel ku taal bartamihii 80-meeyadii. Muddo dheer ka hor. 
Haa, aan ka soo qaadno in 30 sano ay tahay waqti dheer ka hor. Beowulf- rucubyo. Kooxaha noocan oo kale ah waxay u egyihiin ... Tusaale ahaan: waxaa jira Ethernet oo x86-gaaga degdega ah wuxuu ku xiran yahay Ethernet-kan, oo hadda waxaad dooneysaa inaad hesho xusuusta la wadaago ee been-abuurka ah, sababtoo ah qofna ma samayn karo koodka kombuyuutarka la qaybiyay markaa, aad bay u adagtahay sidaas darteed waxaa jira Waxay ahayd xusuusta been-abuurka ah ee la wadaago oo leh bogagga xusuusta ilaalinta ee x86, iyo haddii aad u qorto boggan, ka dib waxaan u sheegnay soo-saareyaal kale in haddii ay galaan isla xusuusta la wadaago, ay u baahan tahay in lagaa soo dejiyo, oo sidaas darteed wax la mid ah borotokoolka taageerada isku xirnaanta kaydka ayaa soo muuqday iyo software tan. Fikrad xiiso leh. Dhibaatada dhabta ah, dabcan, waxay ahayd wax kale. Waxaas oo dhami way shaqeeyeen, laakiin si dhakhso ah ayaad u heshay dhibaatooyinka waxqabadka, sababtoo ah qofna ma fahmin moodooyinka waxqabadka heer ku filan - waa maxay qaababka helitaanka xusuusta ee jira, sida loo hubiyo in noodhku uusan midba midka kale si aan kala sooc lahayn ping, iyo wixii la mid ah.

Waxa aan la imid H2O waa in ay yihiin kuwa horumariya laftooda kuwaas oo mas'uul ka ah go'aaminta meesha isku midka ah ee qarsoon iyo meelaha aysan ahayn. Waxa aan la imid qaab codayn ah oo ka dhigaya qorista kood hawl-sare ah mid fudud oo fudud. Laakiin qorista koodka qunyar socodka ah waa adag tahay, waxay u ekaan doontaa mid xun. Waxaad u baahan tahay inaad si dhab ah isugu daydo inaad qorto koodka gaabis ah, waa inaad isticmaashaa habab aan caadi ahayn. Koodhka bareegga ayaa muuqda jaleecada hore. Natiijo ahaan, waxaad inta badan qortaa kood si degdeg ah u socda, laakiin waa inaad ogaataa waxa aad samaynayso kiiska xusuusta la wadaago. Waxaas oo dhami waxay ku xidhan yihiin habab waaweyn oo hab-dhaqanka halkaas ka jira waxa uu la mid yahay arraysyada waaweyn ee aan isbeddelayn ee barbar socda Java. Waxaan ula jeedaa, qiyaas in laba dunood ay u qoraan array barbar socda, mid ka mid ah ayaa guulaysta, ka kalena, sidaas oo kale, waa laga badiyaa, oo aanad garanayn mid ka mid ah. Haddii aysan ahayn kuwo isbedbeddelaya, markaa amarku wuxuu noqon karaa wax kasta oo aad rabto - tanina runtii si fiican ayey u shaqeysaa. Dadku waxay runtii daneeyaan nidaamka hawlgalka, waxay geliyaan isbedelo meelaha saxda ah, waxayna filayaan dhibaatooyinka waxqabadka xusuusta ee meelaha saxda ah. Haddii kale, waxay si fudud u qori lahaayeen koodka qaab wareeg ah oo ka socda 1 ilaa N, halkaas oo N ay tahay trillions, rajada laga qabo in dhammaan kiisaska adag ay si toos ah isu barbar dhigaan - oo halkaas kuma shaqeyneyso. Laakiin gudaha H2O kani maaha Java ama Scala; waxaad u qaadan kartaa β€œJava minus minus” haddii aad rabto. Kani waa qaab barnaamijeed aad u cad oo la mid ah qorista C ama code fudud oo leh wareegyo iyo arrays. Laakiin isla markaa, xusuusta waxaa lagu farsamayn karaa terabytes. Wali waxaan isticmaalaa H2O. Waxaan u isticmaalaa waqti ka waqti mashaariicda kala duwan - oo weli waa waxa ugu dhaqsiyaha badan, daraasiin jeer ka dhaqso badan tartamayaasha ay. Haddii aad ku samaynayso Data Big xogta columnar, aad bay u adag tahay in la garaaco H2O.

Caqabadaha Farsamada

АндрСй: Maxay ahayd caqabaddaada ugu weyn ee xirfaddaada oo dhan?

gabiga: Ma waxaan ka hadlaynaa qaybta farsamada ama kuwa aan farsamada ahayn? Waxaan odhan lahaa caqabadaha ugu waaweyni maaha kuwo farsamo. 
Sida caqabadaha farsamada. Si fudud ayaan uga adkaaday. Xitaa ma aqaan waxa ugu weyn, laakiin waxaa jiray qaar aad u xiiso badan oo qaatay waqti xoogaa ah, halgan maskaxeed. Markii aan Sun u tagay, waxaan hubay in aan samayn doono isku-dubarid degdeg ah, iyo kooxo waayeel ah oo ka jawaabaya in aanan waligey guulaysan. Laakin waxaan raacay dariiqan, waxaan u qoray soo-sameeyaha hoos u qaybiyaha diiwaanka, waxayna ahayd mid aad u degdeg badan. Waxay ahayd sida ugu dhakhsaha badan C1 casriga ah, laakiin qoondeeyaha ayaa aad u gaabis ahaa waagaas, iyo dib u eegista waxay ahayd dhibaato qaab dhismeedka xogta weyn. Waxaan u baahday inaan qoro qoondeeyaha diiwaanka garaafyada mana fahmin dhibaatada u dhaxaysa muujinta koodhka iyo xawaaraha, kaas oo jiray waagaas oo ahaa mid aad muhiim u ah. Waxay soo baxday in qaab dhismeedka xogta uu inta badan ka sarreeyo cabbirka kaydka x86 ee wakhtigaas, sidaa darteed, haddii aan markii hore u qaatay in qoondeeyaha diiwaanka uu shaqeyn doono 5-10 boqolkiiba wadarta wakhtiga jitter, ka dibna dhab ahaantii waxay soo baxday inay noqoto. 50 boqolkiiba.

Waqtigu markuu socday, iskudubariduhu wuxuu noqday mid nadiif ah oo waxtar badan, wuxuu joojiyay abuurista koodh xun marar badan, waxqabadkuna wuxuu sii kordhay inuu u ekaado waxa uu soo saaro C compiler. . Haddii aad u qorto koodka sida C, waxaad heli doontaa waxqabad sida C xaalado badan. Oo intaad sii socotay, inta badan waxaad helaysaa kood si asymptotically ku beegay heerka C, qoondeeyaha diiwaanka wuxuu bilaabay inuu u ekaado wax dhammaystiran... iyadoon loo eegin inuu koodkaagu si degdeg ah u socdo iyo inuu gaabinayo. Waxaan sii waday inaan ka shaqeeyo qoondeeyaha si aan u sameeyo doorashooyin wanaagsan. Waxa uu noqday mid gaabis ah oo gaabis ah, laakiin waxa uu bixiyay waxqabad ka wanaagsan oo ka wanaagsan xaaladaha aan cid kale la qabsan karin. Waxaan ku dhex quusi ​​karaa qoondeeyaha diiwaanka, ku aaso hal bil oo shaqo ah halkaas, si lama filaan ah dhammaan koodka ayaa bilaabi doona fulinta 5% dhaqso. Tani waxay dhacday waqti ka dib, oo qaybiyaha diiwaanka wuxuu noqday wax shaqo farshaxan ah - qof kastaa wuu jeclaa ama wuu necbahay, dadka akadeemiyadda ayaa waydiiyay su'aalo ku saabsan mawduuca "sababta wax walba loo sameeyo", maxaa diidaya. scan line, oo maxay ku kala duwan yihiin. Jawaabtu weli waa isku mid: qoondeeye ku salaysan midabaynta garaafyada oo ay weheliso shaqo aad u taxaddar leh oo leh koodhka kaydinta waxay la mid tahay hubka guusha, isku dhafka ugu fiican ee aan cidina ka adkaan karin. Tanina waa wax aan cad ahayn. Wax kasta oo kale oo isku-dubariduhu sameeyo waxaa jira waxyaabo si fiican loo bartay, inkastoo sidoo kale la keenay heerka farshaxanka. Had iyo jeer waxaan samayn jiray waxyaabo ay ahayd inay u beddelaan iskudubbaridka shaqo farshaxan. Laakiin midna ma ahayn wax aan caadi ahayn - marka laga reebo qoondeeyaha diiwaanka. Xeeladdu waa in aad taxaddar muujiso gooyay culeyska saaran iyo, haddii ay tani dhacdo (waxaan ku sharxi karaa faahfaahin dheeraad ah haddii aad xiiseyneyso), tani waxay ka dhigan tahay inaad si xoog leh u dhex geli karto, iyada oo aan khatarta ah inaad ku dhacdo kink jadwalka waxqabadka. Waagaas, waxa jiray koox koox-kooxeedyo buuxa ah, oo la laadlaadsan jiray foori iyo foori, kuwaas oo lahaa qalab-qeybiyaha, laakiin cid kale ma samayn karto.

Dhibaatadu waxay tahay in haddii aad ku darto hababka ku xiran inlining, kordhinta iyo kordhinta aagga gudaha, qiimaha la isticmaalo ayaa isla markiiba ka sarreeya tirada diiwaannada, waana inaad gooysaa iyaga. Heerka xasaasiga ah sida caadiga ah wuxuu yimaadaa marka qoondeeyaha uu quusto, iyo hal musharax oo wanaagsan oo loogu talagalay daadinta ayaa u qalma mid kale, waxaad iibin doontaa waxyaabo guud ahaan duurjoogta ah. Qiimaha halkan ku dhejinta waa inaad lumiso qayb ka mid ah dusha sare, kor u kaca wicitaanka iyo badbaadinta, waxaad arki kartaa qiyamka gudaha oo aad sii wanaajin karto. Qiimaha soo jiidashada ayaa ah in tiro badan oo qiyam ah oo nool la sameeyay, iyo haddii qoondeeyaha diiwaankaagu uu gubto wax ka badan lagama maarmaanka ah, isla markiiba waad lumisaa. Sidaa darteed, alaab-qeybiyeyaasha intooda badani waxay leeyihiin dhibaato: marka gudaha-gelintu ka gudubto xariiq gaar ah, wax kasta oo adduunka ah ayaa bilaabmaya in la gooyo wax soo saarkana waxaa lagu daadin karaa musqusha. Kuwa hirgeliya iskudubaridku waxay ku daraan qaar ka mid ah heuristics: tusaale ahaan, si ay u joojiyaan inlining, laga bilaabo qaar ka mid ah cabbir weyn oo ku filan, maadaama qoondayntu ay wax walba burburin doonto. Tani waa sida kink ee garaafka waxqabadka loo sameeyay - adiga oo khadka ku jira, khadka, waxqabadka si tartiib tartiib ah u koraya - ka dibna kor u kaca! - Wuxuu u soo dhacaa sida jaakadda dheereeya sababtoo ah aad buu u safan yahay. Sidan ayay wax walba u shaqaynayeen ka hor imaanshaha Java. Java waxay u baahan tahay wax badan oo dheeri ah, sidaa darteed waxaan ku qasbanaaday inaan ka dhigo qoondeeyahayga mid aad u dagaal badan si uu u soo baxo halkii uu shilku ka dhici lahaa, iyo haddii aad khadka aad u badan gasho, waxay bilaabataa inay daadiso, laakiin markaa "daad ka badan" wali way imanaysaa. Tani waa indho-indhayn xiiso leh oo waxay iigu timid meel aan jirin, maaha mid cad, laakiin si fiican ayay u bixisay. Waxa aan qaatay indho-indhayn gardarro leh oo waxa ay i geysay meelaha ay Java iyo waxqabadka C-ga isku dhinac shaqeeyaan. Runtii way isku dhow yihiin - waxaan qori karaa koodka Java oo si aad ah uga dhaqso badan code C iyo wax la mid ah, laakiin celcelis ahaan, sawirka weyn ee waxyaalaha, waxay yihiin qiyaas ahaan isbarbardhig. Waxaan u maleynayaa in qayb ka mid ah mudnaantan ay tahay qoondeeyaha diiwaanka, kaas oo ii ogolaanaya inaan khadka u galo sida nacasnimada ah ee suurtogalka ah. Kaliya wax kasta oo aan arko ayaan khadka toosiyaa. Su'aashu halkan waa haddii qoondeeyaha si fiican u shaqeeyo, haddii natiijadu tahay code si caqli-gal ah u shaqeynaya. Tani waxay ahayd caqabad weyn: in la fahmo waxaas oo dhan oo laga dhigo mid shaqaynaysa.

Wax yar oo ku saabsan qoondaynta diiwaangelinta iyo multi-cores

Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€Dhibaatooyinka sida qoondaynta diiwaan-gelinta waxay u egyihiin nooc ka mid ah mawduuc aan dhammaad lahayn oo weligeed ah. Waxaan la yaabanahay haddii ay jirtay fikrad u muuqatay rajo oo haddana ku fashilantay ficil ahaan?

gabiga: Hubaal! Qoondaynta diwaangelintu waa aag aad isku daydo inaad heuristics ka hesho si aad u xalliso dhibka NP dhamaystiran. Oo weligaa ma gaadhi kartid xal qumman, sax? Tani waa wax aan macquul aheyn. Fiiri, Isku-dubarid kahor wakhtiga - sidoo kale si liidata ayay u shaqeysaa. Wadahadalka halkan wuxuu ku saabsan yahay kiisas dhexdhexaad ah. Ku saabsan waxqabadka caadiga ah, si aad u tagi karto oo aad qiyaasto wax aad u maleyneyso inuu yahay waxqabadka caadiga ah ee wanaagsan - ka dib oo dhan, waxaad ka shaqeyneysaa inaad hagaajiso! Qoondaynta diwaangelintu waa mawduuc ku saabsan waxqabadka. Markaad haysato prototype-ka ugu horreeya, wuu shaqeeyaa oo rinjiyeynayaa waxa loo baahan yahay, shaqada waxqabadka ayaa bilaabmaysa. Waxaad u baahan tahay inaad barato inaad si fiican u cabbirto. Maxay muhiim u tahay? Haddii aad haysatid xog cad, waxaad eegi kartaa meelo kala duwan oo aad aragto: haa, way ka caawisay halkan, laakiin taasi waa meesha wax walba jabeen! Qaar ka mid ah fikradaha wanaagsan ayaa soo baxa, waxaad ku darsataa heuristics cusub oo si lama filaan ah wax walbaa waxay bilaabaan inay shaqeeyaan wax yar ka wanaagsan celcelis ahaan. Ama ma bilaabato. Waxaan lahaa tiro badan oo kiisas ah oo aan u dagaalamaynay waxqabadka boqolkiiba shanta ah ee ka soocaya horumarkeena iyo qoondeeyaha hore. Mar kastana waxay u egtahay sidan: meel aad ku guulaysato, meel aad ku guulaysato. Haddii aad haysato qalab falanqaynta waxqabadka wanaagsan, waxaad heli kartaa fikradaha lumay oo aad fahmi kartaa sababta ay u fashilmaan. Waxaa laga yaabaa inay mudan tahay in wax walba sida ay yihiin looga tago, ama laga yaabee in la qaato hab ka sii daran oo hagaajinta, ama bixidda iyo hagaajinta shay kale. Waa waxyaalo farabadan! Waxaan sameeyay jabsigan qabow, laakiin sidoo kale waxaan u baahanahay kan, iyo kan, iyo kan - iyo isku darka wadarta guud wuxuu siinayaa xoogaa horumar ah. Keliyaashana way fashilmi karaan. Tani waa dabeecadda shaqada waxqabadka ee dhibaatooyinka NP-buuxda.

Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€: Qofku waxa uu dareemaya in waxyaabaha sida rinjiyeynta ee alaab-qeybiyeyaasha ay yihiin dhibaato mar hore la xalliyay. Hagaag, adiga ayaa lagu go'aamiyay, adoo ku xukumaya waxaad sheegayso, markaa xitaa ma mudan tahay markaa...

gabiga: Sidan oo kale looma xaliyo. Adiga ayay tahay inaad u beddesho "la xalliyo". Waxaa jira dhibaatooyin adag oo u baahan in la xalliyo. Marka tan la sameeyo, waa waqtigii laga shaqeyn lahaa wax soo saarka. Waxaad u baahan tahay inaad si habboon u wajahdo shaqadan - samee jaangooyooyin, ururiso mitir, sharax xaaladaha marka, markii aad dib ugu laabatay noocii hore, jabsigaagii hore uu bilaabay inuu dib u shaqeeyo (ama lidkeed, joogsaday). Hana niyad jabin ilaa aad wax ka gaadho. Sida aan horeba u sheegay, haddii ay jiraan fikrado qabow oo aan shaqayn, laakiin berrinkii qoondaynta diiwaannada fikradaha waa qiyaastii aan dhammaad lahayn. Waxaad, tusaale ahaan, akhrin kartaa daabacado cilmiyaysan. Inkasta oo hadda deegaankani uu bilaabay inuu si tartiib tartiib ah u socdo oo uu ka sii caddaado dhallinyaranimadiisii. Si kastaba ha ahaatee, waxaa jira dad aan tiro lahayn oo ka shaqeeya goobtan, fikradahooda oo dhanna waxay mudan yihiin in la isku dayo, dhammaantood waxay ku sugayaan baalasha. Oo ma sheegi kartid sida ay u wanaagsan yihiin ilaa aad isku daydo mooyee. Intee in le'eg ayay u dhexgalaan wax kasta oo kale oo ku jira qoondeeyahaaga, sababtoo ah qoondeeyaha ayaa wax badan qabta, fikradaha qaarna kuma shaqeyn doonaan qoondeeyahaaga gaarka ah, laakiin qaybiye kale si fudud ayay u shaqeyn doonaan. Habka ugu muhiimsan ee lagu guuleysto qoondeeyaha waa in la jiido walxaha gaabiska ah ee ka baxsan waddada weyn oo lagu qasbo in lagu kala qaybiyo xuduudaha waddooyinka gaabiska ah. Markaa haddii aad rabto inaad maamusho GC, qaado dariiqa gaabis ah, hagaajiso, iska tuur wax ka reeban, dhammaan walxahaas - waad ogtahay in waxyaalahani ay yihiin kuwo naadir ah. Runtiina waa naadir, waan hubiyay. Waxaad qabataa shaqo dheeraad ah waxayna meesha ka saaraysaa xannibaado badan oo ku saabsan waddooyinkan gaabis ah, laakiin run ahaantii dhib ma leh sababtoo ah way gaabis yihiin oo marar dhif ah ayay safraan. Tusaale ahaan, tilmaame null ah - waligeed ma dhacayso, sax? Waxaad u baahan tahay inaad haysato waddooyin dhowr ah oo kala duwan, laakiin waa inaysan faragelin tan ugu weyn. 

Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€: Maxaad u malaynaysaa ku saabsan multi-cores, marka ay jiraan kumannaan ka mid ah hal mar? Tani ma wax faa'iido leh baa?

gabiga: Guusha GPU-gu waxay tusinaysaa inay faa'iido badan leedahay!

Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€: Waa kuwo takhasus leh. Ka warran Processor-yaasha ujeeddada guud?

gabiga: Hagaag, taasi waxay ahayd qaabka ganacsi ee Azul. Jawaabtu waxay soo noqotay xilli ay dadku si dhab ah u jeclaayeen waxqabadka la saadaalin karo. Way adkeyd in la qoro kood isku midka ah waagaas. Qaabka koodka H2O waa mid si heer sare ah loo cabbiri karo, laakiin maaha qaab ujeedo guud ah. Laga yaabee in yar oo guud marka loo eego marka la isticmaalayo GPU. Ma waxaan ka hadlaynaa kakanaanta ay leedahay horumarinta shay noocaas ah mise kakanaanta isticmaalkiisa? Tusaale ahaan, Azul wuxuu i baray cashar xiiso leh, oo aan ahayn mid aan caddayn: kaydinta yaryar waa caadi. 

Caqabadda ugu weyn ee nolosha

Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€Ka waran caqabadaha aan farsamada ahayn?

gabiga: Caqabadda ugu weyni waxay ahayd in aan la noqon... naxariis iyo wanaag dadka. Taasina waxay keentay, in aan si joogto ah naftayda u arko xaalado aad u khilaafsan. Kuwii aan ku ogaa in ay wax khaldan yihiin, laakiin aan garanayn si ay uga gudbaan dhibaatooyinkaas oo ay xamili waayeen. Dhibaatooyin badan oo muddada dheer ah, oo socday tobanaan sano, ayaa ku kacay habkan. Xaqiiqda ah in Java uu leeyahay isku-xirayaasha C1 iyo C2 waa natiijada tooska ah ee tan. Xaqiiqda ah inaysan jirin isku-dubarid heerar badan oo Java ah toban sano oo xiriir ah sidoo kale waa natiijo toos ah. Waa iska cadahay in aan u baahanahay nidaamkan oo kale, laakiin ma cadda sababta uu u jiri waayay. Waxaan dhibaato kala kulmay hal injineer...ama koox injineero ah. Hal mar, markii aan bilaabay shaqada Sun, waxaan ahaa ... Hagaag, ma aha oo kaliya, guud ahaan had iyo jeer waxaan qabaa fikradeyda wax walba. Oo waxaan u maleeyay inay run tahay inaad runtan oo keliya qaadan karto oo aad u sheegto. Gaar ahaan maadaama aan si naxdin leh u saxsanaa inta badan. Oo haddii aadan jeclayn habkan ... gaar ahaan haddii aad si cad u khaldan tahay oo aad samaynayso wax aan macno lahayn ... Guud ahaan, dad yar ayaa u dulqaadan kara qaabkan isgaadhsiinta. In kasta oo qaar ay awoodi karaan, sidayda oo kale. Noloshayda oo dhan waxaan ku dhisay mabaadi'da mudnaanta leh. Haddii aad i tusto wax qaldan, isla markiiba waan soo jeesan doonaa oo waxaan ku idhi: wax aan jirin baad tidhi. Isla mar ahaantaana, dabcan, waan ka cudur daaranayaa iyo dhammaan, waxaan xusi doonaa mudan, haddii ay jiraan, oo aan qaadi doono tallaabooyin kale oo sax ah. Dhanka kale, waxaan si naxdin leh ugu saxnahay boqolkiba naxdin leh ee wadarta wakhtiga. Oo si fiican uma shaqaynayso xidhiidhka dadka. Iskuma dayo inaan fiicnaado, laakiin su'aasha si bareer ah ayaan u weydiinayaa. "Tani weligeed ma shaqayn doonto, sababtoo ah mid, laba iyo saddex." Oo waxay la mid ahaayeen, "Oh!" Waxaa jiray cawaaqibyo kale oo ay u badan tahay in laga yaabo in la iska indhatiro: tusaale ahaan, kuwa horseeday furiinka xaaskeyga iyo toban sano oo niyad jab ah intaas ka dib.

Caqabaddu waa halgan aad dadka kula jirto, iyaga oo la socda aragtidooda waxa aad samayn karto ama aanad samayn karin, waxa muhiimka ah iyo waxa aan ahayn. Waxaa jiray caqabado badan oo ku saabsan qaabka codeeynta. Weli wax badan oo kood ah ayaan qoraa, maalmahaasna xitaa waa inaan hoos u dhigaa sababtoo ah waxaan qabanayay hawlo badan oo isbarbar socda oo aan si liidata u qabanayo, halkii aan diiradda saari lahaa mid. Dib u milicsiga, waxaan qoray kala badh koodka amarka Java JIT, amarka C2. Codeeyaha ku xiga ee ugu dhakhsaha badan ayaa u qoray kala badh sida gaabis ah, badhkii ku xigayna mid gaabis ah, waxaanay ahayd hoos u dhac jibbaaran. Qofka toddobaad ee safkan wuxuu ahaa mid aad iyo aad u gaabis ah - taasi had iyo jeer way dhacdaa! Waxaan taabtay kood badan. Waxa aan eegay cidda qortay, iyada oo aan laga reebin, waxaan ku dhaygagay koodkooda, mid walbana dib u eegay, welina waxa aan sii waday in aan wax ka qoro mid ka mid ah. Habkani si fiican uguma shaqeeyo dadka. Dadka qaarkiis ma jecla tan. Oo markii ay xamili waayeen, dhammaan noocyada cabashooyinka ayaa bilaabma. Tusaale ahaan, mar ayaa la igu yidhi jooji codaynta, sababtoo ah waxaan qorayaa koodka badan oo khatar gelinaya kooxda, dhammaan waxay igula ekaayeen kaftan: saaxiib, haddii kooxda inteeda kale la waayo oo aan sii qoro code, adiga Kaliya waxaan lumin doonaa kala bar. Dhanka kale, haddii aan sii wado qorista koodka oo aad lumiso kala bar kooxda, taasi waxay u egtahay maamul xumo. Waligay si dhab ah ugama fikirin, waligay kama hadlin, laakiin wali meel madaxayga ayay ku jirtay. Fikirka ayaa dhabarka dambe ee maskaxdayda ku wareegayay: "Dhammaantiin miyaad i kaftamaysaan?" Markaa, dhibka ugu weyn wuxuu ahaa aniga iyo xiriirka aan la leeyahay dadka. Hadda si fiican ayaan naftayda u fahmayaa, waxaan ahaa hoggaamiye kooxeed barnaamij-yaqaannada muddo dheer, oo hadda waxaan si toos ah u sheegaa dadka: waad ogtahay, anigu waxaan ahay qofka aan ahay, waana inaad ila macaamilootaa - ma hagaagsan tahay haddii aan istaago halkan? Oo markii ay bilaabeen in ay wax ka qabtaan, wax walba waa shaqeeyay. Dhab ahaantii, ma ihi mid xun mana fiicna, ma lihi wax niyad xumo ah ama rabitaan nafsi ah, waa uun nuxurkayga, waxaanan u baahanahay inaan si uun ula noolaado.

АндрСй: Dhawaan qof kastaa wuxuu bilaabay inuu ka hadlo is-wacyigelinta is-dhexgalka, iyo xirfadaha jilicsan guud ahaan. Maxaad ka odhan kartaa arrintan?

gabiga: Haa, taasi waxay ahayd aragtidii iyo casharkii aan ka bartay furriinka aan kala furay xaaskayga. Waxa aan ka bartay furriinka waa in aan naftayda fahamno. Sidan ayaan ku bilaabay inaan fahmo dadka kale. Faham sida isdhexgalkani u shaqeeyo. Tani waxay keentay in la ogaado midba midka kale. Waxaa jiray baraarujin ah qofka aan ahay iyo waxa aan matalo. Maxaan samaynayaa: ama waxaan ku mashquulsanahay hawsha, ama waxaan ka fogaanayaa isku dhac, ama wax kale - iyo heerka wacyiga naftu wuxuu runtii caawiyaa naftayda inaan xakameyno. Taas ka dib wax walba si fudud ayay u socdaan. Hal shay oo aan ogaaday naftayda oo keliya maaha, laakiin sidoo kale barnaamijyada kale ayaa ah awood la'aanta in aan afka laga sheego marka aad ku jirto xaalad niyad jab ah. Tusaale ahaan, waxaad fadhidaa halkaas codaynta, xaalad qulqulaya, ka dibna way kuu soo yaaceen oo waxay bilaabeen inay ku qayliyaan in wax jaban yihiin oo hadda tallaabooyin adag ayaa lagaa qaadi doonaa. Oo ma odhan kartid kelmad sababtoo ah waxaad ku jirtaa xaalad walaac shucuureed. Aqoonta la helay ayaa kuu ogolaaneysa inaad u diyaargarowdo xilligan, ka badbaado oo aad u gudubto qorshe dib u gurasho, ka dib waxaad samayn kartaa wax. Markaa haa, marka aad bilowdo inaad garato sida ay u wada shaqeeyaan, waa dhacdo weyn oo nolosha wax ka beddesha. 
Aniga qudhaydu maan heli karin ereyo sax ah, laakiin waxaan xusuustay isku xigxiga falalka. Ujeedadu waxay tahay in falcelintani ay tahay mid jidheed inta ay tahay mid afka ah, waxaadna u baahan tahay meel bannaan. Goobtan oo kale, macnaha Zen. Tani waa dhab ahaan waxa loo baahan yahay in la sharaxo, ka dibna isla markiiba ka dhaqaaq - jidh ahaan ka bax. Marka aan afka ka aamuso, waxaan xaaladda u habayn karaa dareen ahaan. Marka adrenaline uu gaaro maskaxdaada, kuu beddelo dagaalka ama qaabka duulimaadka, waxba ma dhihi kartid, maya - hadda waxaad tahay doqon, injineer wax garaaca, ma awoodo jawaab celin hufan ama xitaa joojinta weerarka, weeraryahankuna waa xor. si mar kale loo weeraro. Waa inaad marka hore noqotaa nafsadaada, dib u soo ceshataa xakamaynta, ka bax habka "dagaalka ama duulista".

Taasna waxaan u baahanahay meel afka ah. Kaliya meel banaan Haddii aad wax uun tidhaahdo, markaa waxaad si sax ah u odhan kartaa, ka dibna tag oo si dhab ah u raadi "meel" naftaada: u soco beerta, naftaada ku xidh qubeyska - dhib ma leh. Waxa ugu weyni waa in si ku meel gaar ah loo xidho xaaladaas. Isla marka aad damiso ugu yaraan dhowr ilbiriqsi, xakamaynta ayaa soo noqonaysa, waxaad bilaabaysaa inaad si miyir qabta u fikirto. "Hagaag, ma ihi nooc doqon ah, ma sameeyo waxyaabo nacas ah, waxaan ahay qof faa'iido leh." Marka aad awooddo inaad naftaada qanciso, waa waqtigii aad u gudbi lahayd marxaladda xigta: fahamka wixii dhacay. Waa lagu soo weeraray, weerarku wuxuu ka yimid meel aadan ka fileyn, wuxuu ahaa gaadmo aan daacad ahayn, oo fool xun. Tani waa xun. Talaabada xigta waa in la fahmo sababta uu u baahan yahay weeraryahanku. Runtii, waayo? Ma laga yaabaa in isaga laftiisa uu xanaaqsan yahay? Muxuu u waalan yahay? Tusaale ahaan, sababtoo ah isaga ayaa is-difaacay oo ma aqbali karo mas'uuliyadda? Tani waa habka si taxadar leh loo maareeyo xaaladda oo dhan. Laakiin tani waxay u baahan tahay meel loogu talagalay maneuver, meel afka ah. Tallaabada ugu horreysa waa in la gooyo xiriirka afka ah. Ka fogow dooda erayada. Jooji, u soco sida ugu dhakhsaha badan. Haddi ay tahay wada hadal taleefoon, kaliya xidh - tani waa xirfad aan ka bartay la xidhiidhka xaaskayga hore. Haddi sheekadu meel fiican ku soconayn, kaliya dheh "nabadgelyo" oo xidh. Dhanka kale ee taleefanka: "blah blah blah", waxaad ku jawaabtay: "haa, bye!" oo xidho. Waad dhameeysaa hadalka. Shan daqiiqo ka dib, markii awooda inaad si caqli gal ah u fikirto ayaa kugu soo laabatay, wax yar ayaad qaboojisay, waxaa suurtogal ah in aad ka fikirto wax walba, wixii dhacay iyo waxa dhici doona. Oo bilow samaynta jawaab celin fikir leh, intii aad ka falcelin lahayd caadifad. Aniga ahaan, horumarka laga gaaray is-wacyigelinta ayaa si sax ah u ahayd xaqiiqda ah in haddii ay dhacdo walaac shucuureed aanan hadli karin. Ka bixida xaaladdan, ka fikirida iyo qorsheynta sida looga jawaabo oo magdhowga dhibaatooyinka - kuwani waa tillaabooyinka saxda ah ee kiiska marka aadan hadli karin. Habka ugu fudud ayaa ah in laga cararo xaalada uu ku jiro walaaca shucuureed oo aad si fudud u joojiso ka qayb qaadashada diiqadan. Intaa ka dib waxaad noqonaysaa qof fikiri kara, markaad fikiri karto, waxaad noqonaysaa mid hadli karta, iwm.

Jid ahaan, maxkamada dhexdeeda, qareenka ka soo horjeeda wuxuu isku dayaa inuu tan kugu sameeyo - hadda way caddahay sababta. Sababtoo ah wuxuu awood u leeyahay inuu ku cabudhiyo xaalad noocaas ah oo aadan xitaa ku dhawaaqi karin magacaaga, tusaale ahaan. Dareen dhab ah, ma awoodid inaad hadasho. Haddii ay taasi kugu dhacdo, oo aad ogaato in aad isku arki doonto meel ay ka socdaan dagaallo afka ah, oo ah goob maxkamadeed, markaas waxaad la iman kartaa qareenkaaga. Qareenku wuu kuu istaagi doonaa oo joojin doonaa weerarka afka ah, wuxuuna u samayn doonaa si buuxda oo sharci ah, booska Zen ee lumayna wuu kugu soo laaban doonaa. Tusaale ahaan, waxaan ku qasbanaaday in aan waco qoyskayga dhowr jeer, garsooruhu aad ayuu ula saaxiibay arrintan, laakiin qareenka iga soo horjeeda ayaa ku qayliyay oo igu qayliyay, xitaa ma heli karin erey gees ka gees ah. Xaaladahan, isticmaalka dhexdhexaadiyaha ayaa sida ugu fiican aniga ahaan ii shaqeeya. Dhexdhexaadiyuhu wuxuu joojinayaa dhammaan cadaadiskan kugu soo qulqulaya qulqulka joogtada ah, waxaad helaysaa booska Zen ee lagama maarmaanka ah, iyo iyada oo leh awoodda hadalka ayaa soo laabanaysa. Tani waa goob aqooneed oo dhan oo ay ku jiraan wax badan oo lagu baranayo, wax badan oo aad naftaada ku ogaan karto, waxaas oo dhan waxay isu beddelaan go'aanno istiraatijiyadeed oo heerkoodu sarreeyo oo ay ku kala duwan yihiin dad kala duwan. Dadka qaarkiis ma qabaan dhibaatooyinka kor lagu soo sheegay; badanaa, dadka xirfadlayaasha ah ee iibka ah ma haystaan. Dhammaan dadkaas oo noloshoodu ku soo baxdo erayo - fanaaniin caan ah, abwaanno, culumaa'udiin iyo siyaasiyiin, had iyo jeer waxay leeyihiin wax ay ku hadlaan. Dhibaatooyin noocaas ah ma haystaan, laakiin anigu waan qabaa.

АндрСй: Waxay ahayd... lama filaan. Wanaagsan, in badan ayaanu wada hadalnay, waxaana la gaadhay waqtigii la joojin lahaa waraysigan. Waxaa hubaal ah inaan ku kulmi doono shirka, waxaana awood u yeelan doonaa inaan sii wadno wada hadalkan. Ku arag Hydra!

Waxaad sii wadi kartaa wada hadalkaaga Cliff shirka Hydra 2019, kaas oo lagu qaban doono Luulyo 11-12, 2019 St. Petersburg. Wuxuu la imaan doonaa warbixin "Khibradda xusuusta macaamilka ee Azul Hardware". Tigidhada waa la iibsan karaa bogga rasmiga ah.

Source: www.habr.com

Add a comment