Mena i te timatanga o te takaro ka kii koe kei reira te tohu C++ e iri ana ki te pakitara, ka mutu ka herea koe ki te kopere i to waewae.
Bjarne Stroustrup
Mai i te Oketopa 31 ki te Whiringa-a-rangi 1, i tu te hui C++ Russia Piter ki St. Ko nga kaikorero manuhiri ko nga mema o te Komiti Paerewa C++, nga kaikorero CppCon, nga kaituhi pukapuka O'Reilly, me nga kaitiaki o nga kaupapa penei i te LLVM, libc++, me te Boost. Ko te huihuinga e whai ana ki nga kaihanga mohio C++ e hiahia ana ki te whakahohonu i o raatau tohungatanga me te whakawhiti wheako i roto i nga korero ora. Ko nga akonga, nga akonga paetahi me nga kaiako whare wananga ka whakawhiwhia ki nga utu tino pai.
Ko te putanga o Moscow o te huihuinga ka waatea ki te toro atu i te timatanga o Paenga-whawha o tera tau, engari i tenei wa ka korero a taatau akonga ki a koe he aha nga mea whakamiharo i akohia e ratou i te huihuinga whakamutunga.
Tokorua nga tauira mai i te Whare Wananga Rangahau Motu o te Kura Ohaoha - St. Petersburg i mahi i tenei pou:
Ko Liza Vasilenko he tauira paetahi o te tau 4 e ako ana i nga Reo Papatono hei wahanga o te kaupapa Pangangarau me te Rorohiko Rorohiko. I taku mohiotanga ki te reo C++ i taku tau tuatahi i te whare wananga, no muri mai ka whai wheako ahau ki te mahi ki a ia na roto i nga mahi whakangungu i roto i te umanga. Ko taku kaingākau ki ngā reo whakahōtaka i roto i te whānuitanga me te kaupapa mahi i roto i te waa i waiho tana tohu mo te kowhiringa o nga purongo i te huihuinga.
Ko Danya Smirnov he akonga 1st tau o te kaupapa a te rangatira "Patonotanga me te Raraunga Raraunga". I a au ano i te kura, i tuhi ahau i nga raruraru Olympiad ki te C++, katahi ano ka puta te reo i nga wa katoa i roto i nga mahi matauranga, ka mutu ka noho hei reo mahi matua. I whakatau ahau ki te whai waahi ki te huihuinga hei whakapai ake i oku mohiotanga me te ako ano mo nga huarahi hou.
I roto i te panui, he maha nga korero a te kaiarahi o nga kaiako mo nga huihuinga matauranga e pa ana ki to maatau tohungatanga. I te marama o Hepetema i kite matou i nga korero mo C++ Russia ka whakatau ki te rehita hei kai whakarongo. Koinei to matou wheako tuatahi ki te whai waahi ki enei huihuinga.
Hanganga hui
Ripoata
I roto i nga ra e rua, ka panuihia e nga tohunga nga purongo 30, he maha nga kaupapa wera: te whakamahi mohio o nga ahuatanga reo ki te whakaoti rapanga tono, nga whakahou reo e haere mai ana e pa ana ki te paerewa hou, nga whakararu i roto i te hoahoa C++ me nga whakatupato i te wa e mahi ana me o raatau hua, tauira. o nga hoahoanga kaupapa whakahihiri, me etahi korero i raro i te kaupapa o te hanganga reo. E toru nga whakaaturanga i puta i te wa kotahi, ko te nuinga o nga wa e rua i te reo Ruhia me tetahi i te reo Ingarihi.
Nga waahi matapaki
Whai muri i te whaikorero, ko nga patai katoa kaore ano kia pataia me nga korerorero kaore ano kia oti i whakawhitia ki nga waahi kua tohua mo te whakawhitiwhiti korero me nga kaikorero, me nga papa tohu. He huarahi pai ki te wehe i te wehenga i waenga i nga whaikorero me te korerorero pai.
Nga Korero Uira me nga korerorero opaki
Mena kei te hiahia koe ki te tuku purongo poto, ka taea e koe te haina ki runga i te papa ma mo te korero Uira o te ahiahi me te whai waahi mo te rima meneti ki te korero mo tetahi mea mo te kaupapa o te huihuinga. Hei tauira, he whakataki tere ki nga kai horoi mo C++ (mo etahi he mea hou) he korero ranei mo tetahi pepeke i roto i te whakatipuranga ngaru ira ka rangona noa, engari kaore e kitea.
Ko tetahi atu whakatakotoranga ko te korerorero a te roopu "Ki te ngakau ki te ngakau Komiti." Kei runga i te atamira etahi mema o te komiti whakarite, kei runga i te kaupapa he ahi ahi (mana - ki te hanga i te wairua pono, engari ko te take "no te mea kei te ahi nga mea katoa" he ahua katakata), nga patai mo te paerewa me te tirohanga whanui o C++ , kaore he whakawhitinga korero hangarau wera me nga holiwars. Ko te ahua kei roto ano i te komiti nga tangata ora kaore pea i te tino mohio ki tetahi mea, kaore ranei i te mohio ki tetahi mea.
Mo nga kaiwhaiwhai o holivars, ko te tuatoru o nga huihuinga i noho tonu ki runga i te keehi - ko te huihuinga BOF "Haere ki te C++". Ka mau matou i tetahi hoa aroha ki a Go, he hoa aroha ki a C++, i mua i te tiimata o te huihuinga ka whakarite tahi ratou i nga kiriata 100500 mo tetahi kaupapa (penei i nga raru ki nga kete kei te C++ me te kore o nga momo momo i roto i te Haere), katahi ka ora tonu te korerorero ki a ratou ano. me te hunga whakarongo, ka ngana te hunga whakarongo ki te mohio ki nga whakaaro e rua i te wa kotahi. Mena ka timata te holivar i waho o te horopaki, ka wawao te kaiwhakariterite me te hohou i nga taha. Ko tenei whakatakotoranga he mea taapiri: he maha nga haora i muri i te tiimata, ko te haurua noa o nga kiriata i oti. Ko te mutunga me tino tere.
Ka tu te hoa
Ko nga hoa o te hui i whakakanohi ki roto i nga horo - i nga tuuraa i korero ratou mo nga kaupapa o naianei, i whakawhiwhia ki nga whakangungu me nga mahi, i whakahaere patapatai me nga whakataetae iti, me te tuku i nga taonga papai. I te wa ano, ko etahi o nga kamupene i tuku ki te haere i nga waahanga tuatahi o nga uiuinga, ka whai hua pea mo te hunga i tae mai ehara i te whakarongo ki nga purongo anake.
Nga korero hangarau o nga purongo
I whakarongo matou ki nga purongo i nga ra e rua. I etahi wa he uaua ki te whiriwhiri i tetahi purongo mai i nga korero whakarara - i whakaae matou ki te wehewehe me te whakawhiti i nga matauranga i riro mai i nga wa okioki. Heoi ano, te ahua nei he maha nga mea kua mahue. I konei e hiahia ana matou ki te korero mo nga korero o etahi o nga purongo i kitea e matou he tino pai
He rereke i roto i te C++ na roto i te arotautanga o te hunga whakahiato, Roman Rusyaev
E ai ki te taitara, i titiro a Roman ki te mahi me nga tuunga ma te whakamahi i te LLVM hei tauira. I te wa ano, mo te hunga kaore i te whakamahi i a Clang i roto i a raatau mahi, ka taea tonu e te ripoata te whakaatu me pehea te whakatika i te waehere. I penei na te mea ko nga kaiwhakawhanake o nga kaitoi me nga whare pukapuka paerewa e rite ana ki te whakawhitiwhiti korero ki a raatau ano, a he maha nga otinga angitu ka taea te whakakotahi.
Na, ki te hapai i tetahi tuunga, me mahi koe i te maha o nga mea: waeahia te waehere whakahaere (mehemea) he rauemi kore utu ranei kei te taumata o naianei ka huri ki runga ake te puranga. Ko enei katoa ka arahi ki te meka ka taapirihia e te kaitoha etahi atu tohutohu mo nga waea ka taea pea te maka atu. No reira, ki te kore e whakaarahia te tuunga, ka mahi tonu te kaupapa i nga mahi koretake. Kia taea ai te whakaiti i runga ake, he maha nga heuristics a LLVM mo te whakatau i nga ahuatanga kaore e tika kia taapirihia te waehere whakahaere motuhake, ka taea ranei te whakaiti i te maha o nga tohutohu "atu".
Ka tirohia e te kaikorero mo te tekau ma rua o ratou, ka whakaatu i nga ahuatanga e rua ka awhina i te tere o te whakatinanatanga o nga kaupapa, me nga waahi kaore e tika ana enei tikanga.
No reira, ka arahi a Roman Rusyaev i nga akonga ki te whakatau ko te waehere kei roto i te whakahaere motuhake e kore e taea te whakahaere i nga wa katoa me te kore o runga ake, me te whakaatu i nga tohutohu e whai ake nei:
i te wa e whakawhanake ana i nga whare pukapuka, he pai ki te whakarere i nga tuunga o te kaupapa;
Mena kei te hiahiatia tonu nga tuunga, katahi ka taea te taapiri i nga whakarereke (me te const) ki nga waahi katoa kia taea ai e te kaitoha te arotau i nga mea e taea ana.
I te nuinga o te waa, i whakapumau te kaikorero i te whakaaro he pai ake te whakamahi i nga tuunga ki te iti rawa, ka whakarerea katoatia ranei.
Ko tetahi o nga purongo maha i tenei huihuinga i whakatapua ki nga mahi hou i roto i te C++ 20 he mea maumahara ehara i te mea mo tana whakaaturanga karaehe, engari mo tana maaramatanga o nga raru o mua me te arorau tukatuka kohinga (mo te kopikopiko, nga waea hoki).
E whakaatu ana a Adi Shavit i nga mea e whai ake nei: ko nga tikanga e waatea ana i tenei wa ka uru ki roto i te kohinga katoa kaore e uru ki etahi ahuatanga o roto (ka mahi ranei i roto i te keehi o nga waea whakahoki, engari me te maha o nga paanga kino kino, penei i te Callback Hell) . Ko te ahua kei reira nga kaitoro, engari ahakoa ki a raatau kaore nga mea katoa e tino maeneene: karekau he waahi urunga me nga putanga noa (tīmata → mutunga ki te rbegin → rend me etahi atu), kaore i te maarama kia pehea te roa ka huri? Ka timata i te C++20, ka whakatauhia enei raru!
Kōwhiringa tuatahi: awhe. Ma te takai iterators, ka whiwhi tatou i te atanga noa mo te timatanga me te mutunga o te whitiwhitinga, ka whiwhi hoki tatou i te kaha ki te tito. Ko enei mea katoa ka ngawari ki te hanga i nga paipa tukatuka raraunga katoa. Engari ehara nga mea katoa i te maeneene: ko tetahi waahanga o te arorau tatauranga kei roto i te whakatinanatanga o tetahi kaitoro motuhake, ka taea te whakararu i te waehere ki te maarama me te patuiro.
Ae, mo tenei keehi, ka taapirihia e C++20 nga coroutines (nga mahi he rite te ahua ki nga kaihanga i roto i te Python): ka taea te whakaroa ma te whakahoki i etahi uara o naianei me te pupuri i tetahi ahuatanga takawaenga. No reira, ka whakatutukihia e maatau te mahi me nga raraunga ka rite ki te ahua, engari ki te whakauru i nga arorau katoa ki roto i tetahi coroutine motuhake.
Engari he namu kei roto i te hinu: i tenei wa e tautokohia ana e nga kaitoi o naianei, kaore ano hoki i te whakatinanahia kia rite ki ta matou e pai ai: hei tauira, kaore ano kia pai te whakamahi i nga tohutoro me nga taonga rangitahi i roto i nga coroutines. I tua atu, he here etahi mo nga mea ka taea te coroutines, me nga mahi constexpr, nga kaihanga/kaiwhakangaro, me nga mea matua kaore i uru ki tenei rarangi.
Na, ka whakaotihia e nga coroutine tetahi waahanga nui o nga raru me te ngawari o te arorau tukatuka raraunga, engari ko o raatau whakatinanatanga o naianei me whakapai ake.
Nga tinihanga C++ mai i Yandex.Taxi, Anton Polukhin
I roto i aku mahi ngaio, i etahi wa ka mahia e au etahi mea awhina: he takai i waenga i te atanga o roto me te API o etahi whare pukapuka, te takiuru, te poroporo ranei. I tenei keehi, kaore he hiahia mo etahi atu arotautanga. Engari mehemea ka whakamahia enei waahanga ki etahi o nga ratonga rongonui i runga i te RuNet? I tenei ahuatanga, me mahi koe i nga terabytes mo ia haora o nga poro rakau anake! Na ka tatau ia milliseconds na reira me whai koe ki nga momo tinihanga - i korero a Anton Polukhin mo ratou.
Ko te tauira tino pai ko te whakatinanatanga o te tauira tohu-ki-whakatinana (pimpl).
I tenei tauira, i te tuatahi ka hiahia ahau ki te whakakore i nga konae pane o nga whare pukapuka o waho - ka tere ake te whakahiato, ka taea e koe te tiaki i a koe mai i nga tautohetohe ingoa me etahi atu hapa rite.
Kaati, i nekehia e matou te #include ki te konae .cpp: me whakapuakanga whakamua o te API takai, me te std::unique_ptr. Inaianei kei a maatau nga tohatoha hihiri me etahi atu mea kino penei i nga raraunga kua marara puta noa i te tini o nga raraunga me nga taurangi whakaheke. std::aligned_storage ka taea te awhina i enei mea katoa.
Ko te raru anake: me tohu e koe te rahi me te tirohanga mo ia takai - me hanga ta tatou tauira pimpl me nga tawhā , whakamahia etahi uara karekau me te taapiri i te haki ki te kaitukino i tika nga mea katoa:
I te mea kua tautuhia a T i te wa e tukatuka ana i te kaiwhakangaro, ka tika te whakamaarama i tenei waehere a i te waahanga whakahiato ka puta te rahi e hiahiatia ana me nga uara whakatika e tika ana kia whakauruhia hei hapa. Na, i te utu o tetahi atu oma whakahiato, ka whakakorehia e matou te tohatoha hihiri o nga karaehe takai, ka huna i te API ki roto i te konae .cpp me te whakatinanatanga, ka whiwhi hoki i tetahi hoahoa e pai ake ana mo te keteroki e te tukatuka.
Ko te rakaraka me te poroporo he ahua iti ake te whakamīharo, no reira karekau e whakahuahia i roto i tenei arotake.
Nga tikanga hou mo te pupuri i to waehere kia MORE, Björn Fahller
I roto i tenei korero, e whakaatu ana a Björn Fahller i nga huarahi rereke hei whawhai i te koha o te ahua o nga arowhai ahuatanga.
assert(a == IDLE || a == CONNECTED || a == DISCONNECTED);
He reo mohio? Ma te whakamahi i te maha o nga tikanga C++ kaha i whakaurua mai i nga paerewa tata nei, ka taea e koe te whakamahi huatau i taua mahi me te kore he whiunga mahi. Whakataurite:
Ki te whakahaere i te maha o nga arowhai, me whakamahi tonu koe i nga tauira rerekee me nga korero kopa. Me whakaaro tatou e hiahia ana tatou ki te tirotiro i te rite o etahi taurangi ki te huānga state_type o te enum. Ko te mea tuatahi ka puta ki te hinengaro ko te tuhi i tetahi mahi kaiawhina is_any_of:
Ko nga tawhā tauira kore-momo ka awhina i te whakapai ake i te ahuatanga. Ma ta raatau awhina, ka whakawhitia e matou nga waahanga o te enum ki te rarangi o nga tawhā tauira:
Ma te whakamahi aunoa i roto i te tawhā tauira momo-kore (C++17), ka whakawhanui noa te huarahi ki nga whakataurite ehara i te mea ki nga huānga state_type anake, engari me nga momo taketake ka taea te whakamahi hei tawhā tauira-kore:
I roto i tenei tauira, ko te aratohu tangohanga hei whakaatu i nga tawhā tauira hanganga e hiahiatia ana ki te kaikohi, e mohio ana ki nga momo tohenga kaihanga.
I tua atu - he pai ake. Ka whakaakona a Bjorn me pehea te whakawhanui i te waehere ka puta mo nga kaiwhakariterite i tua atu o ==, katahi mo nga mahi noa. I te huarahi, ko nga ahuatanga penei i te huanga no_unique_address (C++20) me nga tawhā tauira i roto i nga mahi lambda (C++20) ka whakamaramatia ma te whakamahi i nga tauira whakamahi. (Ae, inaianei ko te wetereo lambda he maamaa ake te mahara - e wha enei takirua takirua o nga momo rea katoa.) Ko te otinga whakamutunga ma te whakamahi i nga mahi hei korero mo te kaihanga ka tino whakamahana toku wairua, kaua e whakahua i te kupu tuple i roto i nga tikanga pai o lambda. tātai.
I te mutunga, kaua e wareware ki te whakakoi ake:
Kia mahara ko nga lambdas he constexpr mo te kore utu;
Me taapiri atu te tuku whakamua tino pai me te titiro ki tana wetereo kino e pa ana ki te paanui tawhā i te katinga lambda;
Kia nui ake nga whai waahi ki te kaitoi mo te arotautanga me te kore herekore;
Kia kaha ake te maarama ki te whakaputa hapa i roto i nga tauira na nga uara whakahoki o lambdas. Ma tenei ka kaha te kaikoipi ki te mahi i etahi atu arowhai i mua i te karangatanga o te mahi tauira - i te waahi tirotiro momo.
Ko ta matou whakauru tuatahi ki C++ Russia he mea maumahara mo tona kaha. I whiwhi ahau i te whakaaro o C ++ Russia hei huihuinga pono, kei reira te raina i waenga i te whakangungu me te korero ora kaore e kitea. Ko nga mea katoa, mai i te ahua o nga kaikorero tae atu ki nga whakataetae mai i nga hoa o te huihuinga, e pai ana ki nga korerorero wera. Ko nga korero o te huihuinga, ko nga purongo, e kapi ana i te whanuitanga o nga kaupapa tae atu ki nga mahi hou C++, nga rangahau take o nga kaupapa nui me nga whakaaro hoahoanga whakaaro. Engari karekau he tika ki te wareware i te waahanga hapori o te huihuinga, e awhina ana ki te hinga i nga arai reo e pa ana ki te C++ anake.
Ka mihi matou ki nga kaiwhakahaere o te hui mo te whai waahi ki te uru atu ki tenei huihuinga!
Kua kite pea koe i nga korero a nga kaiwhakarite mo nga korero o mua, o naianei me nga wa kei te heke mai o C++ Russia i runga i te rangitaki JUG Ru.
Nga mihi mo te panui, me te tumanako i awhina to maatau korero mo nga huihuinga!