C++ Russia: sida ay u dhacday

Haddii bilawga riwaayadda aad tiraahdo waxaa ku yaal darbiga C ++ code, ka dibna dhamaadka waxay ku xiran tahay inuu kugu toogto cagta.

Bjarne Stroustrup

Laga soo bilaabo Oktoobar 31-keedii ilaa Noofambar 1, shirkii C++ Russia Piter ayaa lagu qabtay St. Kuhadlayaasha la casuumay waxaa ka mid ah xubnaha Guddiga Heerarka C++, CppCon ku hadla, Qorayaasha buugaagta O'Reilly, iyo ilaaliyayaasha mashaariicda sida LLVM, libc++, iyo Kobcinta. Shirka waxaa loogu talagalay horumarinta C++ ee khibradda u leh kuwaas oo doonaya in ay sii qoto dheereeyaan khibradooda iyo isdhaafsiga khibradaha isgaarsiinta tooska ah. Ardayda, ardayda qalin jabisay iyo macalimiinta jaamacadaha ayaa la siiyaa qiimo dhimis aad u wanaagsan.

Daabacaadda Moscow ee shirka waxay diyaar u noqon doontaa in la booqdo horraantii Abriil ee sanadka soo socda, laakiin inta ka horeysa ardaydeenu waxay kuu sheegi doonaan waxyaabihii xiisaha lahaa ee ay ka barteen dhacdadii ugu dambeysay. 

C++ Russia: sida ay u dhacday

Sawirka album shirka

О нас

Laba arday oo ka socda Jaamacadda Cilmi-baarista Qaranka ee Dugsiga Sare ee Dhaqaalaha - St. Petersburg ayaa ka shaqeeyay boostadan:

  • Liza Vasilenko waa ardayad 4-aad oo jaamacadeed ah oo barata Luuqadaha Programming-ka ee qayb ka ah barnaamijka Xisaabta iyo Sayniska Kombiyuutarka. Markii aan bartay luqadda C++ sannadkii ugu horreeyay ee jaamacadda, waxaan ka helay waayo-aragnimo la shaqeynteeda iyada oo la adeegsanayo layliyo xagga warshadaha ah. Jacaylka aan u qabo luuqadaha barnaamijyada guud ahaan iyo gaar ahaan barnaamijyada shaqaynta ayaa raad ku reebay doorashada warbixinnada shirka.
  • Danya Smirnov waa arday sanadka 1aad ee barnaamijka sayidkiisa "Barnaamijka iyo Falanqaynta Xogta". Anigoo weli ku jira dugsiga, waxaan ku qoray dhibaatooyinka Olympiad ee C++, ka dibna waxay si uun u dhacday in luqaddu si joogto ah u soo baxdo hawlaha waxbarashada oo ugu dambeyntii noqday luqadda shaqada ee ugu weyn. Waxaan go'aansaday inaan ka qaybgalo shirka si aan u horumariyo aqoontayda oo aan sidoo kale wax uga barto fursado cusub.

Warsidaha dhexdiisa, hogaanka kuliyadu waxay inta badan wadaagaan macluumaadka ku saabsan dhacdooyinka waxbarasho ee la xidhiidha takhasuskeena. Bishii Sebtembar waxaan aragnay macluumaadka ku saabsan C ++ Russia oo waxaan go'aansanay in aan iska diiwaan geliyo sidii dhageystayaal. Tani waa waayo-aragnimadeena koowaad ee ka qaybgalka shirarka noocaan ah.

Qaab dhismeedka shirka

  • Warbixinada

Muddo laba maalmood ah, khubaradu waxay akhriyeen 30 warbixinood, oo daboolaya mawduucyo badan oo kulul: isticmaalka xariifnimada leh ee sifooyinka luqadda si loo xalliyo dhibaatooyinka la dabaqay, cusboonaysiinta luqadda ee soo socota ee la xidhiidha heerka cusub, tanaasulka qaabka C ++ iyo taxaddarrada marka la shaqeynayo cawaaqibkooda, tusaaleyaal ee naqshadaha mashruuca ee xiisaha leh, iyo sidoo kale qaar ka mid ah faahfaahinta hoos-u-dhaca ee kaabayaasha luqadda. Saddex bandhig ayaa isku mar dhacay, inta badana laba waa Ruush iyo mid Ingiriisi.

  • Aagagga dooda

Khudbadda ka dib, dhammaan su'aalaha aan la is weydiin iyo doodaha aan dhammaan waxaa loo wareejiyay goobo gaar ah oo loogu talagalay in lala xiriiriyo dadka hadlaya, oo lagu qalabeeyay boodhadhka calaamadaynta. Hab wanaagsan oo aad u fogaato nasashada u dhaxaysa khudbadaha oo leh sheeko macaan.

  • Sheeko hillaac iyo doodo aan rasmi ahayn

Haddii aad rabto inaad bixiso warbixin gaaban, waxaad isku qori kartaa Hadalka Hillaaca fiidkii ee sabuuradda cad oo aad hesho shan daqiiqo oo wakhti ah oo aad kaga hadasho wax kasta oo ku saabsan mawduuca shirka. Tusaale ahaan, horudhac degdeg ah oo ku saabsan nadaafadda C++ (qaar way ku cusub tahay) ama sheeko ku saabsan cayayaanka jiilka mawjadaha sine ah oo la maqli karo oo keliya, laakiin aan la arki karin.

Qaab kale waa dood-cilmiyeedka "Guddiga Qalbi-Dhagax." Masraxa waxaa ku jira qaar ka mid ah xubnaha guddiga jaangooyooyinka, mashruucu wuxuu ku yaal meel dabka lagu shido (si rasmi ah - si loo abuuro jawi daacad ah, laakiin sababta "sababtoo ah wax walbaa waxay ku jiraan dabka" waxay u muuqataa mid madadaalo leh), su'aalo ku saabsan heerka iyo aragtida guud ee C++ , iyada oo aan doodo farsamo oo kulkulul iyo holiwars ku jirin. Waxaa soo baxday in guddiga sidoo kale ay ka kooban yihiin dad nool oo laga yaabo in aan si buuxda wax loo hubin ama laga yaabo in aysan waxba ogeyn.

Taageerayaasha holivars, dhacdo saddexaad ayaa ku hadhay kiiska - fadhiga BOF "Go vs. C ++". Waxaan soo qaadanaa Go lover, C++ lover, ka hor bilowga fadhiga waxay si wada jir ah u diyaariyaan 100500 bog oo mawduuc ah (sida dhibaatooyinka baakadaha C++ ama la'aanta generic ee Go), ka dibna waxay yeelanayaan dood xiiso leh dhexdooda. dhagaystayaasha, dhagaystayaashuna waxay isku dayaan inay fahmaan laba aragtiyood hal mar. Haddii holivarku ka bilowdo macnaha guud, dhexdhexaadiyuhu wuu soo dhexgalay oo heshiisiinayaa dhinacyada. Qaabkani waa qabatin: dhowr saacadood ka dib bilawga, kaliya badh ka mid ah boggaga ayaa la dhammeeyey. Dhamaadka waxay ahayd in si weyn loo dardargeliyo.

  • Shuraakada taagan

Hay’adaha wada shaqaynta leh ee shirkan ka qayb galay ayaa waxaa lagu soo bandhigay hoolka shirarka ee tarabuunka, waxayna ka hadleen mashaariicda hadda socda, waxay soo bandhigeen tababaro iyo shaqo abuur, su’aalo iyo tartamo yar yar oo la qabtay, waxayna sidoo kale halkaas ku soo bandhigeen abaalmarino qaali ah. Isla mar ahaantaana, shirkadaha qaar ayaa xitaa soo bandhigay in ay maraan marxaladaha hore ee wareysiyada, taas oo faa'iido u yeelan karta kuwa u yimid kaliya maaha inay dhagaystaan ​​​​warbixinnada.

Faahfaahin farsamo oo ku saabsan warbixinnada

Waxaan dhageysanay warbixino labada maalmood ah. Mararka qaarkood way adkeyd in hal warbixin laga xusho kuwii isbarbar-dhiga ahaa – waxa aan ku heshiinay in aan kala tagno oo aan is dhaafsano aqoonta la kororsado xilliyada nasashada. Sidaas oo ay tahayna waxaad mooddaa in wax badan laga tegay. Halkan waxaan kaga hadlaynaa nuxurka warbixinada qaar oo aan helnay kuwa ugu xiisaha badan

Ka-reebitaanka C++ iyada oo loo marayo prism of compiler optimizations, Roman Rusyaev

C++ Russia: sida ay u dhacday
Ka soo gal bandhigyo

Sida cinwaanka soo jeedinaya, Roman wuxuu eegay la shaqaynta ka reebban isagoo isticmaalaya LLVM tusaale ahaan. Isla mar ahaantaana, kuwa aan u isticmaalin Clang shaqadooda, warbixintu waxay wali siin kartaa fikrad ah sida koodhka loo hagaajin karo. Tani waa sababta oo ah kuwa soo saarayaasha iyo maktabadaha caadiga ah waxay wada xiriiraan midba midka kale oo xalal badan oo guul leh ayaa isku soo beegmay.

Marka, si aad u maareyso ka reeban, waxaad u baahan tahay inaad sameyso waxyaabo badan: wac koodhka maaraynta (haddii ay jiraan) ama agabka bilaashka ah ee heerka hadda la joogo oo kor u qaad xidhmada sare. Waxaas oo dhan waxay keenaysaa xaqiiqda ah in iskudubariduhu ku daro tilmaamo dheeri ah oo loogu talagalay wicitaanada suurtagalka ah inay tuuraan waxyaabo ka reeban. Sidaa darteed, haddii ka-reebitaanka aan si dhab ah loo kicin, barnaamijku wuxuu weli samayn doonaa ficillo aan loo baahnayn. Si si uun loo dhimo kharashka dheeraadka ah, LLVM waxay haysaa dhawr heuristics si loo go'aamiyo xaaladaha ka reeban koodhka maaraynta aan loo baahnayn in lagu daro ama tirada tilmaamaha "dheeraad ah" waa la dhimi karaa.

Af-hayeenku waxa uu eegayaa daraasiin iyaga ka mid ah oo tusaya labada xaaladoodba halka ay ka caawinayaan dedejinta fulinta barnaamijka, iyo kuwa hababkani aanay khusayn.

Sidaa darteed, Roman Rusyaev wuxuu ardayda u horseeday gabagabada in koodhka ay ku jiraan maaraynta ka reeban tahay had iyo jeer aan lagu fulin karin eber, wuxuuna bixiyaa talada soo socota:

  • Marka la dhisayo maktabadaha, waxaa habboon in laga tago waxyaabaha ka reeban mabda'a ahaan;
  • haddii laga reebo weli loo baahan yahay, ka dib mar kasta oo ay suurtogal tahay waxaa mudan in lagu daro maya marka laga reebo (iyo const) wax ka beddelayaasha meel kasta si uu isku-dubariduhu u horumariyo inta ugu badan ee suurtogalka ah.

Guud ahaan, afhayeenku wuxuu xaqiijiyay aragtida ah in ka-reebitaanka si fiican loo isticmaalo ugu yaraan ama laga tago gebi ahaanba.

Bogagga warbixinta waxaa laga heli karaa xiriirka soo socda: ["C++ ka reebban muraayada LLVM compiler optimizations"]

Koronto-dhaliyeyaasha, coroutines iyo macaan-maskax kale oo maskaxeed, Adi Shavit

C++ Russia: sida ay u dhacday
Ka soo gal bandhigyo

Mid ka mid ah warbixinnada faraha badan ee shirkan loogu go'aamiyay hal-abuurka C++20 ayaa ahaa mid xusuus mudan kaliya maahan soo bandhigiddeeda midabka leh, laakiin sidoo kale si cad ayaa loo aqoonsan lahaa dhibaatooyinka jira ee ku saabsan macquulnimada habaynta ururinta (loop, callbacks).

Adi Shavit wuxuu iftiiminayaa kuwan soo socda: hababka hadda la heli karo waxay maraan ururinta oo dhan mana bixiyaan helitaanka qaar ka mid ah gobolka dhexe ee gudaha (ama waxay ku sameeyaan kiiska dib-u-celinta, laakiin leh tiro badan oo waxyeellooyin aan fiicneyn, sida Callback Hell) . Waxay u egtahay in ay jiraan dib-u-eegayaal, laakiin xitaa iyaga wax walba maahan kuwo siman: ma jiraan meelo laga soo galo iyo kuwa laga baxo (bilaw → dhamaadka vs rbegin → rend iyo wixii la mid ah), ma cadda ilaa inta aan ku celcelin doono? Laga bilaabo C++20, dhibaatooyinkan waa la xaliyay!

Doorashada koowaad: kala duwanaanshaha. Markaynu duubno titerators, waxaynu helnaa is-dhexgal guud oo bilawga iyo dhammaadka soo noqnoqda, waxaanan sidoo kale helnaa karti aan wax ku curinno. Waxaas oo dhami waxay fududeynayaan in la dhiso dhuumaha habaynta xogta oo dhamaystiran. Laakiin wax walba maahan kuwo siman: qayb ka mid ah xisaabinta xisaabinta waxay ku taallaa gudaha hirgelinta cusboonaysiinta gaarka ah, taas oo adkeyn karta koodhka si loo fahmo oo loo saxo.

C++ Russia: sida ay u dhacday
Ka soo gal bandhigyo

Hagaag, kiiskan, C ++ 20 wuxuu ku daray coroutines (hawlaha habdhaqankoodu la mid yahay koronto-dhaliyeyaasha Python): fulinta dib ayaa loo dhigi karaa iyadoo la soo celinayo qaar ka mid ah qiimaha hadda jira iyadoo la ilaalinayo xaalad dhexe. Sidaa darteed, waxaan ku guuleysaneynaa ma aha oo kaliya ka shaqeynta xogta sida ay u muuqato, laakiin sidoo kale waxay soo koobeysaa dhammaan macquulnimada gudaha corutine gaar ah.

Laakiin waxaa jira duqsi ku jira boomaatada: waqtigan xaadirka ah waxaa kaliya oo qayb ahaan taageera compilers hadda jira, sidoo kale looma hirgelin si habsami leh sida aan rabno: tusaale ahaan, weli maaha mid u qalma isticmaalka tixraacyada iyo walxaha ku-meel-gaarka ah ee coroutines. Waxaa dheer, waxaa jira xoogaa xaddidaad ah oo ku saabsan waxa noqon kara coroutines, iyo hawlaha constexpr, wax-dhisayaasha/wax-buriyeyaasha, iyo kuwa ugu muhiimsan kuma jiraan liiskan.

Markaa, coroutines waxay xalliyaan qayb muhiim ah oo ka mid ah dhibaatooyinka iyadoo la raacayo fududaynta macquulka habaynta xogta, laakiin hirgelintooda hadda waxay u baahan yihiin horumar.

Qalabka:

Khiyaamooyinka C++ ee Yandex.Taxi, Anton Polukhin

Dhaqdhaqaaqyadayda xirfadeed, mararka qaarkood waa inaan hirgeliyaa waxyaabo kaabayaal ah: duubka u dhexeeya interface gudaha iyo API ee maktabadda qaar, gooyn ama kala saarid. Xaaladdan oo kale, inta badan looma baahna wax hagaajin dheeraad ah. Laakiin maxaa dhacaya haddii qaybahan loo isticmaalo qaar ka mid ah adeegyada ugu caansan ee RuNet? Xaaladdan oo kale, waa inaad ku shaqeysaa terabyte-ka saacaddii oo kaliya oo ah geedo geedo ah! Markaa millise seconds kasta ayaa lagu tiriyaa, sidaas darteed waa inaad isticmaashaa farsamooyin kala duwan - Anton Polukhin ayaa ka hadlay.

Waxaa laga yaabaa in tusaalaha ugu xiisaha badan uu ahaa hirgelinta habka tilmaame-fulinta (pimpl). 

#include <third_party/json.hpp> //PROBLEMS! 
struct Value { 
    Value() = default; 
    Value(Value&& other) = default; 
    Value& operator=(Value&& other) = default; 
    ~Value() = default; 

    std::size_t Size() const { return data_.size(); } 

private: 
    third_party::Json data_; 
};

Tusaalahan, marka hore waxaan rabaa inaan ka takhaluso faylasha madaxa ee maktabadaha dibadda - tani waxay si dhakhso ah u ururin doontaa, waxaadna ka ilaalin kartaa naftaada isku dhacyada magaca iyo khaladaadka kale ee la midka ah. 

Hagaag, waxaan u guurnay #include faylka .cpp: waxaan u baahanahay ku dhawaaqid hore oo API duuban, iyo sidoo kale std :: gaar_ptr. Hadda waxaan haynaa qoondayn firfircoon iyo waxyaabo kale oo aan fiicneyn sida xogta oo ku kala firirsan xogta badan iyo dammaanadaha la dhimay. std :: aligned_storage ayaa kaa caawin kara waxaas oo dhan. 

struct Value { 
// ... 
private: 
    using JsonNative = third_party::Json; 
    const JsonNative* Ptr() const noexcept; 
    JsonNative* Ptr() noexcept; 

    constexpr std::size_t kImplSize = 32; 
    constexpr std::size_t kImplAlign = 8; 
    std::aligned_storage_t<kImplSize, kImplAlign> data_; 
};

Dhibaatada kaliya ee: waxaad u baahan tahay inaad qeexdo cabbirka iyo toosinta duub kasta - aynu ka dhigno qaab-dhismeedka pimpl oo leh cabbirro. , isticmaal qaar ka mid ah qiyamka aan sabab lahayn oo ku dar jeeg burburiyaha in aan helnay wax kasta oo sax ah: 

~FastPimpl() noexcept { 
    validate<sizeof(T), alignof(T)>(); 
    Ptr()->~T(); 
}

template <std::size_t ActualSize, std::size_t ActualAlignment>
static void validate() noexcept { 
    static_assert(
        Size == ActualSize, 
        "Size and sizeof(T) mismatch"
    ); 
    static_assert(
        Alignment == ActualAlignment, 
        "Alignment and alignof(T) mismatch"
    ); 
}

Maadaama T hore loo qeexay marka la farsameynayo burburiyaha, koodhkan si sax ah ayaa loo kala saari doonaa oo marxaladda isku-dubaridku wuxuu soo saari doonaa cabbirka loo baahan yahay iyo qiyamka toosinta ee u baahan in la geliyo sida khaladaad. Sidaa darteed, qiimaha mid ka mid ah socodsiinta isku-darka dheeriga ah, waxaan ka takhalusnaa qoondaynta firfircoon ee fasallada duuban, ku qarin API-ga faylka .cpp ee hirgelinta, iyo sidoo kale hel naqshad ku habboon kaydinta processor-ka.

Goynta iyo kala saarista waxay u muuqatay mid aan fiicneyn sidaas darteed laguma sheegi doono dib u eegistan.

Bogagga warbixinta waxaa laga heli karaa xiriirka soo socda: ["C++ xeeladaha Taxi"]

Farsamooyinka casriga ah ee lagu ilaalinayo koodhkaaga qallayl, Björn Fahller

Hadalkan, Björn Fahller wuxuu muujinayaa dhowr siyaabood oo kala duwan oo lagula dagaallamo cilladaha habaysan ee hubinta xaaladaha soo noqnoqda:

assert(a == IDLE || a == CONNECTED || a == DISCONNECTED);

Ma u muuqataa mid la yaqaan? Adigoo isticmaalaya farsamooyin badan oo C ++ awood leh oo lagu soo bandhigay heerarkii dhawaa, waxaad si xarrago leh u hirgelin kartaa isla shaqeynta iyada oo aan wax ciqaab ah laga qaadin. Is barbar dhig:   

assert(a == any_of(IDLE, CONNECTED, DISCONNECTED));

Si aad u xakamayso tiro jeegag ah, waxaad isla markiiba u baahan tahay inaad isticmaasho qaabab kala duwan oo aad laabiso tibaaxo. Aan ka soo qaadno in aan rabno in aan hubinno sinnaanta doorsoomayaasha kala duwan ee tirooyinka state_type element. Waxa ugu horreeya ee maskaxda ku soo dhaca waa in la qoro shaqada caawiye waa_mid kasta:


enum state_type { IDLE, CONNECTED, DISCONNECTED };

template <typename ... Ts>
bool is_any_of(state_type s, const Ts& ... ts) { 
    return ((s == ts) || ...); 
}

Natiijadan dhexdhexaadka ah waa niyad jab. Ilaa hadda koodku ma noqonayo mid la akhriyi karo:

assert(is_any_of(state, IDLE, DISCONNECTING, DISCONNECTED)); 

Xuduudaha template-ka ee aan-nooca ahayn ayaa wax yar ka caawin doona hagaajinta xaaladda. Caawinaadkooda, waxaan u wareejin doonaa walxaha la tirin karo ee tirooyinka liiska cabbirrada template: 

template <state_type ... states>
bool is_any_of(state_type t) { 
    return ((t == states) | ...); 
}
	
assert(is_any_of<IDLE, DISCONNECTING, DISCONNECTED>(state)); 

Adigoo isticmaalaya otomaatig ah cabbirka qaab-dhismeedka aan-nooca ahayn (C++17), habku wuxuu si fudud u guud dhigayaa isbarbardhigga ma aha oo kaliya walxaha state_type, laakiin sidoo kale noocyada asaasiga ah ee loo isticmaali karo cabbirrada qaab-dhismeedka aan-nooca ahayn:


template <auto ... alternatives, typename T>
bool is_any_of(const T& t) {
    return ((t == alternatives) | ...);
}

Horumaradan isdaba jooga ah ee la sameeyay, hab-raac sax ah oo la doonayo ee hubinta ayaa lagu gaadhay:


template <class ... Ts>
struct any_of : private std::tuple<Ts ...> { 
// поленимся и унаследуем конструкторы от tuple 
        using std::tuple<Ts ...>::tuple;
        template <typename T>
        bool operator ==(const T& t) const {
                return std::apply(
                        [&t](const auto& ... ts) {
                                return ((ts == t) || ...);
                        },
                        static_cast<const std::tuple<Ts ...>&>(*this));
        }
};

template <class ... Ts>
any_of(Ts ...) -> any_of<Ts ... >;
 
assert(any_of(IDLE, DISCONNECTING, DISCONNECTED) == state);

Tusaalahan, hagaha ka-goynta waxa uu u adeegaa si uu u soo jeediyo jaangooyooyinka qaab-dhismeedka la doonayo isu-duwaha, kaas oo yaqaan noocyada doodaha wax-dhisaha. 

Dheeraad ah - xiiso badan. Bjorn wuxuu baraa sida loo guudyeeyo koodka ka soo baxa isbarbardhigga hawlwadeennada ka baxsan ==, ka dibna hawlgallada aan loo baahnayn. Jidka dhexdiisa, sifooyinka sida no_unique_address sifada (C++20) iyo cabbiraadaha template ee hawlaha lambda (C++20) ayaa lagu sharaxay iyadoo la isticmaalayo tusaalooyin isticmaalka. (Haa, hadda lambda syntax xitaa way fududahay in la xasuusto - kuwani waa afar lammaane oo isku xigta oo nooc kasta ah.) Xalka kama dambaysta ah ee la isticmaalayo hawlaha sida faahfaahinta dhisaha ayaa runtii diirraya naftayda, ma aha in la xuso tuple muujinta ee dhaqanka ugu fiican ee lambda. calculus.

Dhammaadka, ha ilaawin inaad turxaan bixiso:

  • Xusuusnow in lambdas ay yihiin constexpr bilaash ah; 
  • Aynu ku darno gudbinta saxda ah oo aynu eegno erayadeeda foosha xun ee la xidhiidha xidhmada cabbirka ee xidhitaanka lambda;
  • Aynu siino isu-duwaha fursado badan oo hagaajin ah oo leh shuruudo aan ka ahayn; 
  • Aynu daryeelno soo saarista qaladka la fahmi karo ee qaab-dhismeedka iyadoo ay ugu wacan tahay qiimaha soo celinta cad ee lambdas. Tani waxay ku qasbi doontaa iskudubariduhu inuu sameeyo jeegag badan ka hor inta aan shaqada template-ka dhab ahaan loogu yeedhin - heerka hubinta nooca. 

Faahfaahinta, fadlan tixraac agabka muxaadarada: 

Aragtideenna

Ka qaybgalkeena ugu horreeya ee C++ Russia waxay ahayd mid lagu xasuusan karo xoojinta. Waxaan helay aragtida C ++ Russia oo ah dhacdo daacad ah, halkaas oo khadka u dhexeeya tababarka iyo isgaarsiinta tooska ah ay ku dhowdahay mid aan la fahmi karin. Wax walba, laga bilaabo niyadda dadka hadlaya ilaa tartamada ka soo qaybgalayaasha dhacdada, waxay ku habboon yihiin doodo kulul. Nuxurka shirka, oo ka kooban warbixinno, wuxuu daboolayaa mowduucyo kala duwan oo caddaalad ah oo ay ku jiraan C++ hal-abuurka, daraasadaha kiisaska mashaariicda waaweyn iyo tixgelinta qaab-dhismeedka fikirka. Laakiin waxay noqon doontaa cadaalad darro in la iska indho tiro qaybta bulshada ee dhacdada, taas oo ka caawisa in laga gudbo caqabadaha luqadda ee la xidhiidha C++ oo keliya.

Waxaan uga mahadcelineynaa qabanqaabiyeyaasha shirka fursadda ay uga qaybqaataan munaasabaddan oo kale!
Waxaa laga yaabaa inaad aragtay boostada qabanqaabiyeyaasha ee ku saabsan la soo dhaafay, hadda iyo mustaqbalka C++ Russia on blog-ka JUG Ru.

Waad ku mahadsan tahay akhrinta, waxaana rajeyneynaa in ka sheekeynta dhacdooyinka ay ahayd mid waxtar leh!

Source: www.habr.com

Add a comment