C ++ An Ruis: mar a thachair

Ma chanas tu aig toiseach an dealbh-chluich gu bheil còd C ++ crochte air a’ bhalla, an uairsin aig an deireadh tha e gu bhith gad losgadh sa chas.

Bjarne Stroustrup

Bho 31 Dàmhair gu 1 Samhain, chaidh co-labhairt C ++ Russia Piter a chumail ann an St. Petersburg - aon de na co-labhairtean prògramadh mòr san Ruis, air a chuir air dòigh le JUG Ru Group. Am measg an luchd-labhairt a fhuair cuireadh tha buill de Chomataidh Inbhean C ++, luchd-labhairt CppCon, ùghdaran leabhraichean O'Reilly, agus luchd-gleidhidh phròiseactan leithid LLVM, libc ++, agus Boost. Tha a’ cho-labhairt ag amas air luchd-leasachaidh eòlach C ++ a tha airson an eòlas a dhoimhneachadh agus an eòlasan iomlaid ann an conaltradh beò. Bidh oileanaich, oileanaich ceumnachaidh agus tidsearan oilthigh a’ faighinn lasachaidhean math.

Bidh an deasachadh Moscow den cho-labhairt ri fhaighinn airson tadhal cho tràth ris a’ Ghiblean an ath-bhliadhna, ach san eadar-ama innsidh na h-oileanaich againn dhut dè na rudan inntinneach a dh’ ionnsaich iad aig an tachartas mu dheireadh. 

C ++ An Ruis: mar a thachair

Dealbh bho clàr co-labhairt

Mu ar deidhinn

Bha dithis oileanach bho Sgoil Eaconamachd Àrd-ìre an Oilthigh Rannsachaidh Nàiseanta - St. Petersburg ag obair air an dreuchd seo:

  • Tha Liza Vasilenko na h-oileanach fo-cheum 4th bliadhna a’ sgrùdadh Chànanan Prògramachaidh mar phàirt den phrògram Matamataig Gnìomhaichte agus Saidheans Coimpiutaireachd. Às deidh dhomh eòlas fhaighinn air a’ chànan C++ anns a’ chiad bhliadhna agam san oilthigh, fhuair mi eòlas às deidh sin ag obair leis tro inntearnasan sa ghnìomhachas. Dh’ fhàg an dealas a th’ agam airson cànanan prògramaidh ann am prògramadh coitcheann agus gnìomh gu sònraichte a chomharra air taghadh aithisgean aig a’ cho-labhairt.
  • Tha Danya Smirnov na h-oileanach sa chiad bhliadhna de phrògram a’ mhaighstir “Prògramadh agus Mion-sgrùdadh Dàta”. Fhad ‘s a bha mi fhathast san sgoil, sgrìobh mi duilgheadasan Olympiad ann an C ++, agus an uairsin thachair dòigh air choireigin gun robh an cànan an-còmhnaidh a’ nochdadh ann an gnìomhan foghlaim agus mu dheireadh thàinig i gu bhith na phrìomh chànan obrach. Cho-dhùin mi pàirt a ghabhail anns a’ cho-labhairt gus m’ eòlas adhartachadh agus cuideachd ionnsachadh mu chothroman ùra.

Anns a’ chuairt-litir, bidh ceannardas na dàimhe gu tric a’ roinn fiosrachadh mu thachartasan foghlaim co-cheangailte ris an rud sònraichte againn. San t-Sultain chunnaic sinn fiosrachadh mu C ++ An Ruis agus chuir sinn romhainn clàradh mar luchd-èisteachd. Seo a’ chiad eòlas a th’ againn air a bhith an sàs ann an co-labhairtean mar seo.

Structar co-labhairt

  • Aithisgean

Thairis air dà latha, leugh eòlaichean 30 aithisg, a’ còmhdach mòran de chuspairean teth: cleachdadh innleachdach de fheartan cànain gus fuasgladh fhaighinn air duilgheadasan gnìomhaichte, ùrachaidhean cànain a tha ri thighinn an co-cheangal ris an inbhe ùr, co-rèiteachadh ann an dealbhadh C ++ agus ceumannan nuair a bhios iad ag obair leis na builean aca, eisimpleirean ailtireachd pròiseict inntinneach, a bharrachd air beagan mion-fhiosrachaidh mun bhun-structar cànain. Chaidh trì taisbeanaidhean a chumail aig an aon àm, mar as trice dhà ann an Ruisis agus aon sa Bheurla.

  • Sònaichean deasbaid

Às deidh na h-òraid, chaidh a h-uile ceist nach deach iarraidh agus còmhraidhean neo-chrìochnaichte a ghluasad gu raointean sònraichte airson conaltradh leis an luchd-labhairt, uidheamaichte le bùird comharran. Dòigh mhath air am briseadh air falbh eadar òraidean le còmhradh tlachdmhor.

  • Còmhraidhean dealanach agus còmhraidhean neo-fhoirmeil

Ma tha thu airson aithisg ghoirid a thoirt seachad, faodaidh tu clàradh air a’ bhòrd gheal airson an oidhche Lightning Talk agus faigh còig mionaidean de ùine airson bruidhinn mu rud sam bith air cuspair na co-labhairt. Mar eisimpleir, ro-ràdh sgiobalta air innealan-glanaidh airson C ++ (dha cuid bha e ùr) no sgeulachd mu bhiast ann an ginealach tonn sine nach cluinnear ach, ach nach fhaicear.

Is e cruth eile an deasbad panail “With a Heart to Heart Committee.” Air an àrd-ùrlar tha cuid de bhuill den chomataidh cunbhalachaidh, tha àite teine ​​​​air an proiseactair (gu h-oifigeil - gus faireachdainn dùrachdach a chruthachadh, ach tha an adhbhar “leis gu bheil a h-uile càil AIR AN TIRE" a’ coimhead nas èibhinn), ceistean mu inbhe agus sealladh coitcheann C ++ , às aonais còmhraidhean teignigeach teasachaidh agus holiwars. Thionndaidh e a-mach gu bheil daoine beò air a’ chomataidh is dòcha nach eil buileach cinnteach mu rudeigin no is dòcha nach eil eòlach air rudeigin.

Airson luchd-leantainn holivars, bha an treas tachartas fhathast air a 'chùis - seisean BOF "Go vs. C ++". Gabhaidh sinn leannan Go, leannan C ++, ro thoiseach an t-seisein bidh iad le chèile ag ullachadh 100500 sleamhnag air cuspair (leithid duilgheadasan le pacaidean ann an C ++ no dìth generics ann an Go), agus an uairsin bidh còmhradh beòthail aca eatorra fhèin agus leis an luchd-èisteachd, agus bidh an luchd-èisteachd a’ feuchainn ri dà shealladh a thuigsinn aig an aon àm. Ma thòisicheas holivar a-mach às a’ cho-theacsa, bidh am modaireatair a’ dol an sàs agus a’ rèiteachadh nam pàrtaidhean. Tha an cruth seo addictive: grunn uairean a thìde às deidh tòiseachadh, cha deach ach leth de na sleamhnagan a chrìochnachadh. Dh'fheumadh an deireadh a bhith air a luathachadh gu mòr.

  • Com-pàirtiche a 'seasamh

Bha com-pàirtichean na co-labhairt air an riochdachadh anns na tallaichean - aig na standan bha iad a’ bruidhinn mu phròiseactan gnàthach, a’ tabhann inntearnasan agus cosnadh, a’ cumail ceisteachain agus co-fharpaisean beaga, agus cuideachd a’ cruinneachadh dhuaisean math. Aig an aon àm, thairg cuid de chompanaidhean eadhon a dhol tro na ciad ìrean de agallamhan, a dh'fhaodadh a bhith feumail dhaibhsan a thàinig chan ann a-mhàin airson èisteachd ri aithisgean.

Mion-fhiosrachadh teicnigeach mu na h-aithisgean

Dh’èist sinn ri aithisgean an dà latha. Aig amannan bha e duilich aon aithisg a thaghadh bhon fheadhainn co-shìnte - dh'aontaich sinn a bhith a 'roinn agus ag iomlaid an eòlais a fhuair sinn aig àm briseadh. Agus eadhon mar sin, tha e coltach gu bheil mòran air fhàgail a-mach. An seo bu mhath leinn bruidhinn mu na tha ann an cuid de na h-aithisgean a b’ inntinniche dhuinn

Eisimpleirean ann an C ++ tro phriosma optimizations compiler, Roman Rusyaev

C ++ An Ruis: mar a thachair
Sleamhnachadh bho taisbeanaidhean

Mar a tha an tiotal a’ moladh, choimhead Ròmanach air a bhith ag obair le eisgeachdan a’ cleachdadh LLVM mar eisimpleir. Aig an aon àm, dhaibhsan nach bi a’ cleachdadh Clang nan cuid obrach, faodaidh an aithisg fhathast beagan beachd a thoirt seachad air mar a dh’ fhaodadh an còd a bhith air a mheudachadh. Tha seo air sgàth gu bheil luchd-leasachaidh luchd-cruinneachaidh agus leabharlannan àbhaisteach co-fhreagarrach a’ conaltradh ri chèile agus faodaidh mòran fhuasglaidhean soirbheachail a bhith aig an aon àm.

Mar sin, gus eisgeachd a làimhseachadh, feumaidh tu tòrr rudan a dhèanamh: cuir fios gu còd làimhseachaidh (ma tha sin ann) no goireasan an-asgaidh aig an ìre làithreach agus snìomh suas an stac nas àirde. Tha seo uile a’ ciallachadh gu bheil an neach-cruinneachaidh a’ cur a-steach stiùireadh a bharrachd airson fiosan a dh’ fhaodadh eisgeachdan a thilgeil. Mar sin, mura tèid an eisgeachd a thogail, nì am prògram gnìomhan neo-riatanach fhathast. Gus dòigh air choireigin a lughdachadh, tha grunn heuristics aig LLVM airson a bhith a’ dearbhadh shuidheachaidhean far nach fheumar còd làimhseachaidh eisgeachd a chuir ris no an àireamh de stiùiridhean “a bharrachd” a lughdachadh.

Bidh an neach-labhairt a’ sgrùdadh timcheall air dusan dhiubh agus a’ sealltainn an dà chuid suidheachadh far a bheil iad a’ cuideachadh le bhith a’ luathachadh coileanadh a’ phrògraim, agus an fheadhainn far nach eil na dòighean sin iomchaidh.

Mar sin, tha Roman Rusyaev a’ toirt oileanaich chun a’ cho-dhùnaidh nach urrainnear còd anns a bheil làimhseachadh eisgeachd a chuir gu bàs an-còmhnaidh le neoni os an cionn, agus a’ toirt seachad a’ chomhairle a leanas:

  • nuair a thathar a’ leasachadh leabharlannan, is fhiach e ann am prionnsapal a thrèigsinn eisgeachdan;
  • ma tha feum air eisgeachdan fhathast, an uairsin nuair a ghabhas e dèanamh is fhiach mion-atharraichean noexcept (agus const) a chur ris anns a h-uile àite gus an urrainn don neach-cruinneachaidh an fheum as fheàrr a dhèanamh.

San fharsaingeachd, dhaingnich an neach-labhairt am beachd gu bheil e nas fheàrr eisgeachdan a chleachdadh gu ìre as ìsle no an trèigsinn gu tur.

Gheibhear sleamhnagan na h-aithisg aig a’ cheangal a leanas: [“Eisgeachdan C ++ tro lionsa optimizations compiler LLVM”]

Gineadairean, coroutines agus mìlseachd eile a tha a’ gluasad an eanchainn, Adi Shavit

C ++ An Ruis: mar a thachair
Sleamhnachadh bho taisbeanaidhean

Bha aon de na h-aithisgean aig a’ cho-labhairt seo coisrigte do innleachdan ann an C ++20 cuimhneachail chan ann a-mhàin airson an taisbeanadh dathte aige, ach cuideachd airson a bhith ag aithneachadh gu soilleir na duilgheadasan a th’ ann le loidsig giollachd cruinneachaidh (airson lùb, fios air ais).

Tha Adi Shavit a’ soilleireachadh na leanas: bidh na dòighean a tha rim faighinn an-dràsta a’ dol tron ​​​​chruinneachadh gu lèir agus chan eil iad a’ toirt cothrom air cuid de staid eadar-mheadhanach a-staigh (no bidh iad a ’dèanamh a thaobh fios air ais, ach le àireamh mhòr de bhuaidhean mì-thlachdmhor, leithid Callback Ifrinn) . Bhiodh e coltach gu bheil luchd-aithris ann, ach eadhon leotha chan eil a h-uile dad cho rèidh: chan eil puingean inntrigidh is fàgail cumanta (tòisich → deireadh versus rbegin → rend agus mar sin air adhart), chan eil e soilleir dè cho fada ‘s a bhios sinn ag aithris? A’ tòiseachadh le C ++20, tha na duilgheadasan sin air am fuasgladh!

A 'chiad roghainn: raointean. Le bhith a’ pasgadh iterators, gheibh sinn eadar-aghaidh cumanta airson toiseach is deireadh itealain, agus gheibh sinn comas sgrìobhadh cuideachd. Tha seo uile ga dhèanamh furasta pìoban giollachd dàta làn-chuimseach a thogail. Ach chan eil a h-uile dad cho rèidh: tha pàirt den loidsig àireamhachaidh suidhichte taobh a-staigh buileachadh iterator sònraichte, a dh’ fhaodas an còd a thuigsinn agus a dheasbad.

C ++ An Ruis: mar a thachair
Sleamhnachadh bho taisbeanaidhean

Uill, airson a ’chùis seo, chuir C ++ 20 coroutines ris (gnìomhan aig a bheil giùlan coltach ri gineadairean ann am Python): faodar cur gu bàs a chuir dheth le bhith a’ tilleadh beagan luach gnàthach fhad ‘s a tha thu a’ gleidheadh ​​​​staid eadar-mheadhanach. Mar sin, bidh sinn a’ coileanadh chan ann a-mhàin ag obair le dàta mar a tha e a’ nochdadh, ach cuideachd a’ toirt a-steach a h-uile loidsig taobh a-staigh coroutine sònraichte.

Ach tha cuileag anns an acainn: aig an àm seo chan eil iad a 'faighinn taic ach gu ìre bho luchd-cruinneachaidh a th' ann mar-thà, agus chan eil iad air an cur an gnìomh cho sgiobalta 'sa bu mhath leinn: mar eisimpleir, chan fhiach fhathast iomraidhean agus stuthan sealach a chleachdadh ann an coroutines. A bharrachd air an sin, tha cuid de chuingealachaidhean air dè a dh’ fhaodadh a bhith nan coroutines, agus chan eil gnìomhan constexpr, luchd-togail / luchd-sgrios, agus prìomh fheadhainn air an toirt a-steach don liosta seo.

Mar sin, bidh coroutines a’ fuasgladh pàirt chudromach de na duilgheadasan le sìmplidheachd loidsig giollachd dàta, ach tha feum air leasachadh air na gnìomhan gnàthach aca.

Stuthan:

C ++ cleasan bho Yandex.Taxi, Anton Polukhin

Anns na gnìomhan proifeasanta agam, uaireannan feumaidh mi rudan dìreach cuideachail a chuir an gnìomh: còmhdach eadar an eadar-aghaidh a-staigh agus API cuid de leabharlann, logadh no parsadh. Anns a 'chùis seo, mar as trice chan eil feum air optimization a bharrachd. Ach dè ma thèid na co-phàirtean sin a chleachdadh ann an cuid de na seirbheisean as mòr-chòrdte air an RuNet? Ann an suidheachadh mar sin, bidh agad ri terabytes a phròiseasadh gach uair a thìde de logaichean a-mhàin! An uairsin tha a h-uile millisecond a ’cunntadh agus mar sin feumaidh tu a dhol gu diofar chleasan - bhruidhinn Anton Polukhin mun deidhinn.

Is dòcha gur e an eisimpleir as inntinniche buileachadh a’ phàtrain puing-gu-buileachadh (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_; 
};

Anns an eisimpleir seo, an-toiseach tha mi airson cuir às do fhaidhlichean cinn leabharlannan taobh a-muigh - cruinnichidh seo nas luaithe, agus faodaidh tu thu fhèin a dhìon bho chòmhstri ainmean agus mearachdan eile den aon seòrsa. 

Ceart gu leòr, ghluais sinn #include chun an fhaidhle .cpp: feumaidh sinn ro-aithris air an API fillte, a bharrachd air std::unique_ptr. A-nis tha cuibhreannan fiùghantach againn agus rudan mì-thlachdmhor eile leithid dàta sgapte thairis air dòrlach de dhàta agus geallaidhean nas lugha. std::faodaidhaligned_storage cuideachadh le seo uile. 

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_; 
};

An aon dhuilgheadas: feumaidh tu meud agus co-thaobhadh a shònrachadh airson gach còmhdach - dèanamaid ar teamplaid pimpl le paramadairean , cleachd cuid de luachan neo-riaghailteach agus cuir seic ris an sgriosadair gun d’ fhuair sinn a h-uile càil ceart: 

~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"
    ); 
}

Leis gu bheil T air a mhìneachadh mar-thà nuair a thathar a’ giullachd an destructor, thèid an còd seo a pharsadh gu ceart agus aig an ìre cruinneachaidh bheir e a-mach na luachan meud is co-thaobhadh riatanach a dh’ fheumar a chuir a-steach mar mhearachdan. Mar sin, aig cosgais aon ruith cruinneachaidh a bharrachd, gheibh sinn cuidhteas an riarachadh fiùghantach de chlasaichean fillte, cuir am falach an API ann am faidhle .cpp leis a’ bhuileachadh, agus gheibh sinn dealbhadh a tha nas freagarraiche airson tasgadh leis a’ phròiseasar.

Cha robh coltas cho drùidhteach air logadh is parsadh agus mar sin cha tèid iomradh a thoirt air san ath-bhreithneachadh seo.

Gheibhear sleamhnagan na h-aithisg aig a’ cheangal a leanas: ["C ++ cleasan bho thacsi"]

Dòighean ùr-nodha airson do chòd a chumail TRY, Björn Fahller

Anns an òraid seo, tha Björn Fahller a’ sealltainn grunn dhòighean eadar-dhealaichte gus cuir an-aghaidh an locht stoidhle a th’ ann an ath-sgrùdaidhean staid:

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

Fuaim eòlach? Le bhith a’ cleachdadh grunn dhòighean cumhachdach C ++ a chaidh a thoirt a-steach ann an inbhean o chionn ghoirid, faodaidh tu an aon ghnìomhachd a chuir an gnìomh gu grinn gun pheanas coileanaidh sam bith. Dèan coimeas:   

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

Gus àireamh neo-stèidhichte de sgrùdaidhean a làimhseachadh, feumaidh tu sa bhad teamplaidean eadar-dhealaichte agus abairtean fillte a chleachdadh. Gabhamaid ris gu bheil sinn airson sgrùdadh a dhèanamh air co-ionannachd grunn chaochladairean ri eileamaid state_type an enum. Is e a’ chiad rud a thig gu inntinn gnìomh cuideachaidh a sgrìobhadh is_any_of:


enum state_type { IDLE, CONNECTED, DISCONNECTED };

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

Tha an toradh eadar-mheadhanach seo na bhriseadh dùil. Gu ruige seo chan eil an còd a’ fàs nas leughaidh:

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

Cuidichidh paramadairean teamplaid neo-sheòrsa gus an suidheachadh a leasachadh beagan. Le an cuideachadh, gluaisidh sinn na h-eileamaidean àireamhach den enum gu liosta paramadairean teamplaid: 

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

Le bhith a’ cleachdadh auto ann am paramadair teamplaid neo-sheòrsa (C ++17), tha an dòigh-obrach dìreach a’ dèanamh coimeas ri coimeasan chan ann a-mhàin le eileamaidean state_type, ach cuideachd le seòrsachan prìomhadail a ghabhas cleachdadh mar pharaimearan teamplaid neo-sheòrsa:


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

Tro na leasachaidhean leantainneach seo, tha an co-chòrdadh fileanta airson sgrùdaidhean air a choileanadh:


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);

Anns an eisimpleir seo, tha an iùl lùghdachaidh a’ moladh na crìochan teamplaid structar a tha thu ag iarraidh don neach-cruinneachaidh, aig a bheil eòlas air na seòrsaichean argamaidean neach-togail. 

Nas fhaide - nas inntinniche. Bidh Bjorn a’ teagasg mar as urrainn dhut an còd a thig gu buil airson gnìomhaichean coimeas nas fhaide na ==, agus an uairsin airson gnìomhachd neo-riaghailteach. Air an t-slighe, tha feartan leithid feart no_unique_address (C ++20) agus paramadairean teamplaid ann an gnìomhan lambda (C ++20) air am mìneachadh a’ cleachdadh eisimpleirean cleachdaidh. (Tha, a-nis tha co-chòrdadh lambda eadhon nas fhasa a chuimhneachadh - is iad sin ceithir paidhrichean leantainneach de bhratagan de gach seòrsa). calculus.

Aig a 'cheann thall, na dì-chuimhnich a sgioblachadh:

  • Cuimhnich gu bheil lambdas saor an-asgaidh; 
  • Nach cuir sinn air adhart foirfe agus coimhead air a cho-chòrdadh grànda a thaobh a’ phasgan paramadair ann an dùnadh lambda;
  • Bheir sinn barrachd chothroman don neach-cruinneachaidh airson optimizations le gun chumhachan; 
  • Bheir sinn aire do thoraidhean mearachd nas so-thuigsinn ann an teamplaidean le taing do luachan tilleadh soilleir lambdas. Bheir seo air an neach-cruinneachaidh barrachd sgrùdaidhean a dhèanamh mus tèid gnìomh an teamplaid a ghairm - aig ìre sgrùdaidh seòrsa. 

Airson mion-fhiosrachadh, thoir sùil air na stuthan òraid: 

Ar beachdan

Bha a’ chiad chom-pàirteachadh againn ann an C ++ na Ruis cuimhneachail airson cho dian sa bha e. Fhuair mi beachd air C ++ na Ruis mar thachartas dùrachdach, far a bheil an loidhne eadar trèanadh agus conaltradh beò cha mhòr do-fhaicsinneach. Tha a h-uile dad, bho fhaireachdainn an luchd-labhairt gu na co-fharpaisean bho chom-pàirtichean an tachartais, cuideachail airson còmhraidhean teasachaidh. Tha susbaint na co-labhairt, anns a bheil aithisgean, a’ còmhdach raon farsaing de chuspairean a’ toirt a-steach innleachdan C ++, sgrùdaidhean cùise air pròiseactan mòra agus beachdachadh air ailtireachd ideòlach. Ach bhiodh e mì-chothromach dearmad a dhèanamh air pàirt shòisealta an tachartais, a chuidicheas le bhith a’ faighinn thairis air cnapan-starra cànain a thaobh chan ann a-mhàin ri C ++.

Tha sinn a’ toirt taing do luchd-eagrachaidh na co-labhairt airson an cothrom pàirt a ghabhail ann an tachartas mar seo!
Is dòcha gu bheil thu air post an luchd-eagrachaidh fhaicinn mun àm a dh’ fhalbh, an-diugh agus an àm ri teachd aig C ++ na Ruis air blog JUG Ru.

Tapadh leibh airson leughadh, agus tha sinn an dòchas gun robh an ath-aithris againn de thachartasan cuideachail!

Source: www.habr.com

Cuir beachd ann