Inā i ka hoʻomaka ʻana o ka pāʻani e ʻōlelo ʻoe aia he code C ++ e kau ana ma ka paia, a laila ma ka hopena e paʻa ʻia e pana iā ʻoe ma ka wāwae.
Bjarne Stroustrup
Mai ʻOkakopa 31 a i Nowemapa 1, ua mālama ʻia ka ʻaha kūkā C++ Russia Piter ma St. Loaʻa nā lālā o ka C++ Standards Committee, CppCon speakers, O'Reilly book authors, a me nā mea mālama i nā papahana e like me LLVM, libc++, a me Boost. Kuhi ʻia ka ʻaha kūkā i nā mea hoʻomohala ʻike C++ makemake e hoʻonui i ko lākou ʻike a hoʻololi i nā ʻike ma ke kamaʻilio ola. Hāʻawi ʻia nā haumāna, nā haumāna puka a me nā kumu kulanui me nā uku maikaʻi loa.
Hiki ke kipa ʻia ka paʻi Moscow o ka ʻaha kūkā ma mua o ʻApelila o ka makahiki aʻe, akā i kēia manawa e haʻi aku kā mākou mau haumāna iā ʻoe i nā mea hoihoi a lākou i aʻo ai i ka hanana hope.

Kiʻi mai
No mākou
ʻElua mau haumāna mai ka National Research University Higher School of Economics - St. Petersburg i hana ma kēia pou:
- He haumāna ʻo Liza Vasilenko makahiki 4 e aʻo ana i nā ʻōlelo Programming ma ke ʻano o ka papahana Applied Mathematics and Computer Science. Ma muli o koʻu kamaʻāina ʻana i ka ʻōlelo C++ i koʻu makahiki mua ma ke kulanui, ua loaʻa iaʻu ka ʻike e hana pū me ia ma o nā hana hana ma ka ʻoihana. ʻO ka makemake i nā ʻōlelo hoʻolālā ma ka laulā a me ka hoʻolālā hana i waiho i kāna hōʻailona ma ke koho ʻana i nā hōʻike ma ka hālāwai kūkā.
- ʻO Danya Smirnov he haumāna makahiki 1 o ka papahana o ka haku "Programming and Data Analysis". I koʻu wā ma ke kula, ua kākau wau i nā pilikia Olympiad ma C++, a laila ua puka mau ka ʻōlelo i nā hana hoʻonaʻauao a lilo i ʻōlelo hana nui. Ua hoʻoholo wau e komo i ka ʻaha kūkā e hoʻomaikaʻi i koʻu ʻike a aʻo pū i nā manawa hou.
Ma ka nūhou, kaʻana like pinepine ka alakaʻi kumu i ka ʻike e pili ana i nā hanana hoʻonaʻauao e pili ana i kā mākou ʻoihana. I Kepakemapa ua ʻike mākou i ka ʻike e pili ana iā C++ Russia a ua hoʻoholo mākou e kākau inoa ma ke ʻano he poʻe hoʻolohe. ʻO kēia kā mākou ʻike mua i ke komo ʻana i ia mau ʻaha kūkā.
Hoʻolālā ʻaha kūkā
Nā hōʻike
I loko o nā lā ʻelua, heluhelu ka poʻe akamai i nā hōʻike 30, e uhi ana i nā kumuhana wela he nui: hoʻohana akamai i nā hiʻohiʻona ʻōlelo e hoʻoponopono i nā pilikia i hoʻopili ʻia, nā hoʻolaha ʻōlelo e hiki mai ana e pili ana i ka maʻamau hou, hoʻololi i ka hoʻolālā C ++ a me ka mālama ʻana i ka wā e hana ai me kā lākou hopena, nā laʻana. o ka hoʻolālā papahana hoihoi, a me kekahi mau kikoʻī o lalo o ka ʻōlelo. ʻEkolu mau hana i hana ʻia i ka manawa like, ʻelua ma ka ʻōlelo Lūkini a hoʻokahi ma ka ʻōlelo Pelekania.
Nā ʻāpana kūkākūkā
Ma hope o ka haʻiʻōlelo, ua hoʻoneʻe ʻia nā nīnau a pau i nīnau ʻole ʻia a me nā kūkākūkā i hoʻopau ʻia i nā wahi i koho ʻia no ke kamaʻilio ʻana me nā mea haʻiʻōlelo, i lako ʻia me nā papa hōʻailona. ʻO kahi ala maikaʻi e hoʻokaʻawale i ka hoʻomaha ma waena o nā haʻiʻōlelo me kahi kamaʻilio leʻaleʻa.
Kūkākūkā Uila a me nā kūkākūkā pili ʻole
Inā makemake ʻoe e hāʻawi i kahi hōʻike pōkole, hiki iā ʻoe ke kau inoa ma ka papa keʻokeʻo no ke ahiahi Lightning Talk a loaʻa i ʻelima mau minuke manawa e kamaʻilio e pili ana i kekahi mea ma ke kumuhana o ka hālāwai kūkā. No ka laʻana, kahi hoʻolauna wikiwiki i nā mea hoʻomaʻemaʻe no C ++ (no kekahi he mea hou ia) a i ʻole kahi moʻolelo e pili ana i kahi pōpoki i loko o ka hanauna hawewe sine hiki ke lohe wale ʻia, ʻaʻole ʻike ʻia.
ʻO ke ʻano ʻē aʻe ka papa kūkākūkā "Me ke komite puʻuwai i ka puʻuwai." Aia ma ke kahua kekahi mau lālā o ke kōmike standardization, ma luna o ka projector he kapuahi (ʻoihana - e hana i kahi lewa ʻoiaʻiʻo, akā ʻo ke kumu "no ka mea, ʻoi aku ka leʻaleʻa o nā mea āpau", nīnau e pili ana i ka maʻamau a me ka ʻike ākea o C ++ , me ka ʻole o nā kūkākūkā ʻenehana wela a me nā holiwars. Ua ʻike ʻia aia nō hoʻi i loko o ke kōmike nā kānaka ola i maopopo ʻole i kekahi mea a ʻike ʻole paha i kekahi mea.
No nā mea aloha o nā holivar, ua mau ke kolu o ka hanana ma ka hihia - ka BOF session "Go vs. C++". Lawe mākou i kahi mea aloha Go, he aloha C++, ma mua o ka hoʻomaka ʻana o ke kau, hoʻomākaukau lākou i nā kiʻi paheʻe 100500 ma kahi kumuhana (e like me nā pilikia me nā pūʻolo ma C ++ a i ʻole ka nele o nā generics i Go), a laila he kūkākūkā ola lākou ma waena o lākou iho. me ke anaina, a hoao ka anaina e hoomaopopo i na manao elua i ka manawa hookahi . Inā hoʻomaka kahi holivar ma waho o ka pōʻaiapili, hoʻopili ka mea hoʻoponopono a hoʻolauleʻa i nā ʻaoʻao. He mea hoʻohui kēia ʻano: he mau hola ma hope o ka hoʻomaka ʻana, ʻo ka hapalua wale nō o nā paheʻe i hoʻopau ʻia. Pono e hoʻopale ʻia ka hopena.
Kū ka hoa
Ua hōʻike ʻia nā hoa o ka ʻaha kūkā i loko o nā keʻena - ma nā kuʻi i kamaʻilio e pili ana i nā papahana o kēia manawa, hāʻawi ʻia i nā internships a me ka hana, mālama ʻia nā nīnau a me nā hoʻokūkū liʻiliʻi, a hoʻopaʻa pū i nā makana maikaʻi. I ka manawa like, ua hāʻawi aku kekahi mau hui e hele i nā pae mua o nā nīnauele, hiki ke kōkua i ka poʻe i hele mai ʻaʻole e hoʻolohe wale i nā hōʻike.
Nā kikoʻī loea o nā hōʻike
Ua hoʻolohe mākou i nā hōʻike i nā lā ʻelua. I kekahi manawa ua paʻakikī ke koho i hoʻokahi hōʻike mai nā mea like - ua ʻae mākou e kaʻawale a hoʻololi i ka ʻike i loaʻa i ka wā hoʻomaha. A pēlā nō, me he mea lā ua waiho ʻia ka nui. Ma ʻaneʻi makemake mākou e kamaʻilio e pili ana i nā mea i loko o kekahi o nā hōʻike i ʻike nui ʻia
ʻO nā mea ʻokoʻa ma C ++ ma o ka prism o ka hoʻonohonoho hoʻonohonoho ʻana, ʻo Roman Rusyaev

Holoi mai
E like me ka manaʻo o ke poʻo, nānā ʻo Roma i ka hana me nā ʻokoʻa me ka hoʻohana ʻana iā LLVM ma ke ʻano he laʻana. I ka manawa like, no ka poʻe i hoʻohana ʻole iā Clang i kā lākou hana, hiki i ka hōʻike ke hāʻawi i kekahi manaʻo pehea e hiki ai ke hoʻonui ʻia ke code. ʻO ia ke kumu no ka mea e kamaʻilio ana nā mea hoʻomohala o nā mea hoʻopili a me nā hale waihona puke maʻamau i kekahi i kekahi a hiki i nā hopena kūleʻa he nui ke kūlike.
No laila, no ka mālama ʻana i kahi ʻokoʻa, pono ʻoe e hana i nā mea he nui: e kāhea i ke code handling (inā loaʻa) a i ʻole nā kumuwaiwai manuahi i ka pae o kēia manawa a wili i ka waihona kiʻekiʻe. Ke alakaʻi nei kēia mau mea i ka ʻoiaʻiʻo e hoʻohui ka compiler i nā ʻōlelo aʻoaʻo hou no nā kelepona hiki ke hoʻolei i nā ʻokoʻa. No laila, inā ʻaʻole i hāpai ʻia ka ʻokoʻa, e hana mau ka papahana i nā hana pono ʻole. I mea e hōʻemi ai i ke poʻo, loaʻa iā LLVM kekahi mau heuristics no ka hoʻoholo ʻana i nā kūlana kahi ʻaʻole pono e hoʻohui ʻia nā code lawelawe ʻokoʻa a i ʻole hiki ke hoʻemi ʻia ka helu o nā ʻōlelo aʻoaʻo "keu".
Nānā ka mea haʻiʻōlelo ma kahi o ʻumikūmālua o lākou a hōʻike i nā kūlana ʻelua kahi e kōkua ai lākou i ka wikiwiki o ka hoʻokō ʻana i ka papahana, a me nā mea i pili ʻole kēia mau ʻano.
No laila, alakaʻi ʻo Roman Rusyaev i nā haumāna i ka manaʻo ʻaʻole hiki ke hoʻokō ʻia ke code i loaʻa ka lawelawe ʻokoʻa me ka zero overhead, a hāʻawi i kēia mau ʻōlelo aʻo:
- i ka hoʻomohala ʻana i nā hale waihona puke, pono e haʻalele i nā ʻokoʻa ma ke kumu;
- inā makemake ʻia nā ʻokoʻa, a laila inā hiki, pono e hoʻohui i nā mea hoʻololi noexcept (a const) ma nā wahi āpau i hiki i ka mea hōʻuluʻulu ke hoʻonui i ka mea hiki.
Ma keʻano laulā, ua hōʻoia ka mea haʻiʻōlelo i ka manaʻo e hoʻohana maikaʻi ʻia nā ʻokoʻa i ka liʻiliʻi a haʻalele ʻia paha.
Loaʻa nā paheʻe hōʻike ma ka loulou aʻe:
Nā mea hana, coroutines a me nā mea ʻono ʻē aʻe e wehe ana i ka lolo, ʻo Adi Shavit

Holoi mai
ʻO kekahi o nā hōʻike he nui i kēia ʻaha kūkā i hoʻolaʻa ʻia i nā mea hou i C ++ 20 he poina ʻaʻole wale no kāna hōʻike ʻoniʻoni, akā no kona ʻike maopopo ʻana i nā pilikia i loaʻa me ka loiloi hoʻoili hōʻiliʻili (no ka loop, callbacks).
Hōʻike ʻo Adi Shavit i kēia mau mea: ʻo nā ala i loaʻa i kēia manawa e hele i loko o ka hōʻiliʻili holoʻokoʻa a ʻaʻole hāʻawi i ke komo ʻana i kekahi mokuʻāina kūloko kūloko (a i ʻole lākou e hana i ka hihia o ka callbacks, akā me ka nui o nā hopena maikaʻi ʻole, e like me Callback Hell) . Me he mea lā aia nā mea iterators, akā me lākou ʻaʻole maʻalahi nā mea a pau: ʻaʻohe wahi komo maʻamau a puka i waho (hoʻomaka → hope versus rbegin → rend a pēlā aku), ʻaʻole maopopo ka lōʻihi o kā mākou e hoʻololi ai? E hoʻomaka ana me C++20, hoʻopau ʻia kēia mau pilikia!
ʻO ka koho mua: nā pae. Ma ke kāʻei ʻana i nā mea hoʻohālikelike, loaʻa iā mākou kahi maʻamau maʻamau no ka hoʻomaka a me ka hopena o kahi ʻike, a loaʻa iā mākou ka hiki ke haku. ʻO kēia mau mea a pau e maʻalahi ai ke kūkulu ʻana i nā pipeline hoʻoili ʻikepili piha. Akā ʻaʻole maʻalahi nā mea a pau: aia kahi ʻāpana o ka loiloi helu i loko o ka hoʻokō ʻana o kahi iterator kikoʻī, hiki ke hoʻopili i ke code e hoʻomaopopo a hoʻopau.

Holoi mai
ʻAe, no kēia hihia, ua hoʻohui ʻo C ++ 20 i nā coroutines (nā hana e like me nā mea hana ma Python): hiki ke hoʻopaneʻe ʻia ka hoʻokō ʻana ma ka hoʻihoʻi ʻana i kekahi waiwai o kēia manawa ke mālama nei i kahi kūlana waena. No laila, hoʻokō mākou i ka hana ʻana me ka ʻikepili e like me ka mea i ʻike ʻia, akā hoʻopili pū kekahi i nā loina āpau i loko o kahi coroutine kikoʻī.
Akā aia kahi lele i loko o ka ʻaila: i kēia manawa ua kākoʻo ʻia lākou e nā mea hoʻopili i kēia manawa, a ʻaʻole hoʻi i hoʻokō ʻia e like me kā mākou makemake: no ka laʻana, ʻaʻole pono e hoʻohana i nā kuhikuhi a me nā mea pōkole i nā coroutines. Eia kekahi, aia kekahi mau kaohi i nā mea hiki ke lilo i coroutines, a ʻaʻole i hoʻokomo ʻia nā hana constexpr, constructors/destructors, a me nā mea nui i kēia papa inoa.
No laila, hoʻoponopono nā coroutines i kahi hapa nui o nā pilikia me ka maʻalahi o ka loiloi hoʻoili ʻikepili, akā pono kā lākou hoʻokō i kēia manawa e hoʻomaikaʻi.
Nā Pono Hana:
- Nā kiʻi mai C++ Rusia -
C++ maalea mai Yandex.Taxi, Anton Polukhin
I kaʻu mau hana ʻoihana, i kekahi manawa pono wau e hoʻokō i nā mea kōkua maʻemaʻe: kahi ʻōwili ma waena o ke kikowaena kūloko a me ka API o kekahi waihona, logging a parsing. I kēia hihia, ʻaʻohe mea e pono ai ka hoʻonui ʻana. Akā pehea inā hoʻohana ʻia kēia mau ʻāpana i kekahi o nā lawelawe kaulana loa ma ka RuNet? I kēlā ʻano kūlana, pono ʻoe e hana i nā terabytes i kēlā me kēia hola o nā lāʻau wale nō! A laila helu ʻia kēlā me kēia millisecond a no laila pono ʻoe e hana i nā hoʻopunipuni like ʻole - ua kamaʻilio ʻo Anton Polukhin iā lākou.
ʻO ka laʻana hoihoi loa paha ʻo ia ka hoʻokō ʻana i ke ʻano pointer-to-implementation (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_;
};Ma kēia hiʻohiʻona, makemake mua wau e kāpae i nā faila poʻomanaʻo o nā hale waihona puke waho - e hōʻuluʻulu wikiwiki kēia, a hiki iā ʻoe ke pale iā ʻoe iho mai nā paio inoa a me nā hewa like ʻole.
ʻAe, ua hoʻoneʻe mākou i #include i ka faila .cpp: pono mākou i ka hoʻolaha mua o ka API i ʻōwili ʻia, a me std::unique_ptr. I kēia manawa, loaʻa iā mākou nā hoʻokaʻawale ikaika a me nā mea leʻaleʻa ʻē aʻe e like me ka ʻikepili i hoʻopuehu ʻia ma kahi pūʻulu o ka ʻikepili a me nā hōʻoia hōʻemi. std::aligned_storage hiki ke kōkua i kēia mau mea a pau.
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_;
};ʻO ka pilikia wale nō: pono mākou e kuhikuhi i ka nui a me ka alignment no kēlā me kēia wīwī - e hana mākou i kā mākou pimpl template me nā ʻāpana , e hoʻohana i kekahi mau waiwai kūʻokoʻa a hoʻohui i kahi leka i ka mea luku a mākou i kuhi pono ai i nā mea āpau. :
~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"
);
}No ka mea ua wehewehe ʻia ʻo T i ka wā e hoʻoponopono ai i ka mea luku, e hoʻopili pololei ʻia kēia code a ma ka pae hoʻohui e hoʻopuka i ka nui a me nā waiwai alignment e pono ai e hoʻokomo ʻia e like me nā hewa. No laila, ma ke kumu kūʻai o hoʻokahi holo compilation hou, e hoʻopau mākou i ka hoʻokaʻawale ikaika o nā papa i ʻōwili ʻia, hūnā i ka API i kahi faila .cpp me ka hoʻokō ʻana, a loaʻa hoʻi i kahi hoʻolālā i ʻoi aku ke kūpono no ka caching e ka mea hana.
ʻO ka hoʻopaʻa ʻana a me ka hoʻopaʻa ʻana me he mea lā ʻaʻole ia e haʻi ʻia i kēia loiloi.
Loaʻa nā paheʻe hōʻike ma ka loulou aʻe:
Nā ʻenehana hou no ka mālama ʻana i kāu code DRY, Björn Fahller
Ma kēia kamaʻilio ʻana, hōʻike ʻo Björn Fahller i nā ala like ʻole e pale aku ai i ka hemahema o ka nānā ʻana i nā kūlana hou:
assert(a == IDLE || a == CONNECTED || a == DISCONNECTED);Kamaʻāina ke kani? Ma ka hoʻohana ʻana i nā ʻenehana C++ ikaika i hoʻokomo ʻia i nā kūlana hou, hiki iā ʻoe ke hoʻokō nani i ka hana like me ka ʻole o ka hoʻopaʻi hana. Hoʻohālikelike:
assert(a == any_of(IDLE, CONNECTED, DISCONNECTED));No ka mālama ʻana i ka helu helu paʻa ʻole, pono ʻoe e hoʻohana i nā template variadic a me nā ʻōlelo fold. E noʻonoʻo mākou makemake mākou e nānā i ka like ʻana o nā ʻano like ʻole i ka enum's state_type element. ʻO ka mea mua i hiki i ka naʻau ke kākau i kahi hana kōkua 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) || ...);
}
Hoʻopōʻino kēia hopena waena. I kēia manawa ʻaʻole hiki ke heluhelu ʻia ke code:
assert(is_any_of(state, IDLE, DISCONNECTING, DISCONNECTED)); ʻO nā ʻāpana hoʻohālikelike ʻano ʻole e kōkua i ka hoʻomaikaʻi iki ʻana i ke kūlana. Me kā lākou kōkua, e hoʻololi mākou i nā mea helu o ka enum i ka papa inoa o nā ʻāpana template:
template <state_type ... states>
bool is_any_of(state_type t) {
return ((t == states) | ...);
}
assert(is_any_of<IDLE, DISCONNECTING, DISCONNECTED>(state)); Ma ka hoʻohana ʻana i ke kaʻa i kahi ʻano hoʻohālikelike ʻano ʻole (C++17), hoʻohālikelike ʻia ka hoʻohālikelike ʻana ʻaʻole me nā mea state_type wale nō, akā me nā ʻano primitive hiki ke hoʻohana ʻia e like me nā ʻano hoʻohālikelike ʻano ʻole:
template <auto ... alternatives, typename T>
bool is_any_of(const T& t) {
return ((t == alternatives) | ...);
}Ma o kēia mau hoʻomaikaʻi ʻana, ua hoʻokō ʻia ka syntax fluent i makemake ʻia no nā loiloi:
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);
Ma kēia laʻana, ʻo ke alakaʻi hoʻokaʻawale ʻana e hōʻike i nā ʻāpana hoʻohālike i makemake ʻia i ka mea hōʻuluʻulu, ka mea i ʻike i ke ʻano o nā manaʻo kumu.
ʻOi aku - ʻoi aku ka hoihoi. Ke aʻo nei ʻo Bjorn pehea e hoʻonui ai i ka code i hopena no nā mea hoʻohālikelike ma waho o ==, a laila no nā hana ʻole. Ma ke ala, ua wehewehe ʻia nā hiʻohiʻona e like me no_unique_address attribute (C++20) a me nā ʻāpana template i nā hana lambda (C++20) me ka hoʻohana ʻana i nā laʻana o ka hoʻohana. (ʻAe, ʻoi aku ka maʻalahi o ka hoʻomanaʻo ʻana i ka syntax lambda - ʻehā kēia mau paʻa o nā ʻano āpau. helu helu.
I ka hopena, mai poina e hoʻopololei:
- E hoʻomanaʻo he constexpr nā lambdas no ka manuahi;
- E hoʻohui i ka hoʻouna mua ʻana a e nānā i kāna syntax ʻino e pili ana i ka pūʻulu hoʻohālikelike i ka pani ʻana o ka lambda;
- E hāʻawi i ka mea hoʻopili i nā manawa hou aku no ka optimizations me ka conditional noexcept;
- E mālama pono kākou i ka hoʻopuka hewa ʻana i nā kumu hoʻohālike e hoʻomaikaʻi i nā waiwai hoʻihoʻi o lambdas. E koi ʻia kēia i ka mea hoʻopili e hana i nā loiloi hou aʻe ma mua o ke kāhea ʻia ʻana o ka hana maʻamau - ma ke kahua nānā ʻano.
No nā kikoʻī, e ʻoluʻolu e nānā i nā mea haʻiʻōlelo:
- Hōʻike i nā paheʻe:
ʻO kā mākou mau manaʻo
Hoʻomanaʻo ʻia kā mākou komo mua ʻana ma C++ Russia no kona ikaika. Ua loaʻa iaʻu ka manaʻo o C ++ Russia ma ke ʻano he hanana maoli, kahi i ʻike ʻole ʻia ai ka laina ma waena o ke aʻo ʻana a me ke kamaʻilio ola. ʻO nā mea a pau, mai ke ʻano o ka poʻe haʻiʻōlelo a hiki i nā hoʻokūkū mai nā hoa hana hanana, kūpono i nā kūkākūkā wela. ʻO ka ʻike o ka ʻaha kūkā, ʻo ia hoʻi nā hōʻike, e uhi ana i kahi ākea ākea o nā kumuhana e pili ana i nā hana hou C++, nā noiʻi hihia o nā papahana nui a me nā noʻonoʻo hoʻolālā ideological. Akā, ʻaʻole kūpono ka haʻalele ʻana i ka ʻāpana kaiapili o ka hanana, e kōkua ana i ka pale ʻana i nā pale ʻōlelo e pili ana ʻaʻole me C++ wale nō.
Mahalo mākou i nā mea hoʻonohonoho o ka ʻaha kūkā no ka manawa kūpono e komo i kēlā hanana!
Ua ʻike paha ʻoe i ka pou o ka mea hoʻonohonoho e pili ana i ka wā i hala, kēia manawa a me ka wā e hiki mai ana o C++ Russia .
Mahalo no ka heluhelu ʻana, a ke manaʻolana nei mākou ua kōkua kā mākou haʻi hou ʻana i nā hanana!
Source: www.habr.com
