Otu anyị si sụgharịa ahịrị nde 10 nke koodu C++ na ọkọlọtọ C++14 (ma mesịa gaa na C++17)

Oge ụfọdụ gara aga (n'oge mgbụsị akwụkwọ nke 2016), n'oge mmepe nke ụdị ọzọ nke 1C: Enterprise technology platform, ajụjụ bilitere n'ime otu mmepe banyere ịkwado ọkọlọtọ ọhụrụ ahụ. C + 14 na koodu anyị. Ntughari na ọkọlọtọ ọhụrụ, dịka anyị chere, ga-enye anyị ohere ide ọtụtụ ihe n'ụzọ mara mma, dị mfe na ntụkwasị obi, ma mee ka nkwado na mmezi nke koodu ahụ dị mfe. Ma ọ dị ka ọ nweghị ihe pụrụ iche na ntụgharị asụsụ, ma ọ bụrụ na ọ bụghị maka ọnụ ọgụgụ nke ntọala koodu na njirimara akọwapụtara nke koodu anyị.

Maka ndị na-amaghị, 1C: Enterprise bụ gburugburu maka mmepe ngwa ngwa nke ngwa azụmahịa nke cross-platform na oge ọsọ maka igbu ha na OS dị iche iche na DBMS. Na mkpokọta, ngwaahịa a nwere:

  • Ụyọkọ nkesa ngwa, na-arụ ọrụ na Windows na Linux
  • Ahịa, na-arụ ọrụ na ihe nkesa site na http (s) ma ọ bụ ọnụọgụ abụọ nke ya, na-arụ ọrụ na Windows, Linux, macOS
  • Onye ahịa webụ, na-agba ọsọ na Chrome, Internet Explorer, Microsoft Edge, Firefox, Safari nchọgharị (edere na Javascript)
  • gburugburu mmepe (Nhazi), na-arụ ọrụ na Windows, Linux, macOS
  • Ngwa nchịkwa sava ngwa, na-agba ọsọ na Windows, Linux, macOS
  • Onye ahịa mkpanaka, ijikọ na ihe nkesa site na http (s), na-arụ ọrụ na ngwaọrụ mkpanaka na-agba gam akporo, iOS, Windows
  • Ekwentị mkpanaaka - usoro maka ịmepụta ngwa mkpanaka na-anọghị n'ịntanetị nwere ike ịmekọrịta, na-agba ọsọ na gam akporo, iOS, Windows
  • gburugburu mmepe 1C: Ngwa mmepe ụlọ ọrụ, nke e dere na Java
  • Server Usoro mmekọrịta

Anyị na-agbalị ịde otu koodu maka sistemụ arụmọrụ dị iche iche dị ka o kwere mee - koodu koodu ihe nkesa bụ 99% nkịtị, koodu ndị ahịa bụ ihe dịka 95%. Edere ikpo okwu teknụzụ 1C:Enterprise na C++ yana njirimara koodu dị nso ka enyere n'okpuru:

  • 10 nde ahịrị nke koodu C ++,
  • 14 puku faịlụ,
  • 60 puku klas,
  • ụzọ ọkara nde.

Ekwesịrị ịtụgharị ihe ndị a niile ka ọ bụrụ C++14. Taa, anyị ga-agwa gị otu anyị si mee nke a na ihe anyị zutere na usoro ahụ.

Otu anyị si sụgharịa ahịrị nde 10 nke koodu C++ na ọkọlọtọ C++14 (ma mesịa gaa na C++17)

Nkwuputa

Ihe niile edere n'okpuru ebe a gbasara ọrụ ngwa ngwa / ngwa ngwa, (ọ bụghị) nnukwu nchekwa nchekwa site na mmejuputa klas ọkọlọtọ na ụlọ akwụkwọ dị iche iche pụtara otu ihe: nke a bụ eziokwu maka anyị. Ọ ga-ekwe omume na mmejuputa ọkọlọtọ ga-adabara nke ọma maka ọrụ gị. Anyị malitere site na ọrụ nke anyị: anyị weere data nke ndị ahịa anyị na-ahụkarị, na-agba ọsọ na-ahụkarị na ha, na-eleba anya na arụmọrụ, ọnụ ọgụgụ ebe nchekwa riri, wdg, wee nyochaa ma anyị na ndị ahịa anyị nwere afọ ojuju na nsonaazụ dị otú ahụ ma ọ bụ na anyị enweghị afọ ojuju. . Ha wee mee ihe dabere.

Ihe anyị nwere

Na mbido, anyị dere koodu maka ikpo okwu 1C: Enterprise 8 na Microsoft Visual Studio. Ọrụ ahụ malitere na mmalite 2000s ma anyị nwere ụdị Windows naanị. Dị ka o kwesịrị ịdị, kemgbe ahụ emebela koodu ahụ nke ọma, edegharịala ọtụtụ usoro kpamkpam. Mana edere koodu ahụ dịka ọkọlọtọ 1998 si dị, ma dịka ọmụmaatụ, oghere dị iche iche na-ekewa brackets n'akuku aka nri anyị ka nchịkọta wee gaa nke ọma, dị ka nke a:

vector<vector<int> > IntV;

Na 2006, na mwepụta nke ụdị ikpo okwu 8.1, anyị malitere ịkwado Linux wee gbanwee gaa n'ọbá akwụkwọ ọkọlọtọ nke ndị ọzọ. STLPport. Otu n'ime ihe kpatara mgbanwe ahụ bụ iji ahịrị obosara rụọ ọrụ. Na koodu anyị, anyị na-eji std :: wstring, nke dabere na ụdị wchar_t, n'oge niile. Ogo ya na Windows bụ 2 bytes, na Linux ndabara bụ 4 bytes. Nke a butere ndakọrịta nke usoro ọnụọgụ abụọ anyị n'etiti onye ahịa na nkesa, yana data dị iche iche na-adịgide adịgide. Iji nhọrọ gcc, ị nwere ike ịkọwapụta na nha wchar_t n'oge a na-achịkọta bụkwa 2 bytes, mana ị nwere ike ichefu iji ọbá akwụkwọ ọkọlọtọ sitere na nchịkọta, n'ihi na ọ na-eji glibc, nke a na-achịkọtakwa maka 4-byte wchar_t. Ihe ndị ọzọ kpatara ya bụ mmejuputa klaasị ọkọlọtọ ka mma, nkwado maka tebụl hash, na ọbụna nṅomi nke semantics nke ịkwaga n'ime arịa, nke anyị ji arụsi ọrụ ike. Na otu ihe ọzọ, dị ka ha na-ekwu ikpeazụ ma ọ dịghị ihe ọzọ, bụ eriri arụmọrụ. Anyị nwere klas nke anyị maka eriri, n'ihi na ... N'ihi nkọwapụta nke ngwanro anyị, a na-eji arụ ọrụ eriri eme ihe n'ọtụtụ ebe yana nke a dị oke mkpa maka anyị.

Eriri eriri anyị gbadoro ụkwụ na echiche njikarịcha eriri nke ekwuputara laa azụ na mbido 2000s Andrei Alexandrescu. Mgbe e mesịrị, mgbe Alexandrescu na-arụ ọrụ na Facebook, na aro ya, a na-eji eriri na engine Facebook arụ ọrụ na ụkpụrụ ndị yiri ya (lee ọbá akwụkwọ). nzuzu).

Ahịrị anyị jiri teknụzụ kachasị mma abụọ:

  1. Maka ụkpụrụ dị nkenke, a na-eji ihe nchekwa ime n'ime eriri ihe n'onwe ya (anaghị achọ oke ebe nchekwa ọzọ).
  2. Maka ndị ọzọ niile, a na-eji igwe arụ ọrụ eme ihe Detuo na Dee. A na-echekwa uru eriri ahụ n'otu ebe, a na-ejikwa counter ntụaka n'oge ọrụ/mgbanwe.

Iji mee ka mkpokọta ikpo okwu dị ngwa, anyị wepụrụ mmejuputa iyi ahụ na ụdị STLPort anyị (nke anyị ejighị), nke a nyere anyị mkpokọta 20% ngwa ngwa. N'ikpeazụ, anyị ga-eji obere oge eme ihe agbam ume. Boost na-eji iyi dị egwu eme ihe, ọkachasị na API ọrụ ya (dịka ọmụmaatụ, maka igbu osisi), yabụ anyị ga-agbanwe ya iji wepu ojiji nke iyi. Nke a, n'aka nke ya, mere ka o siere anyị ike ịkwaga na ụdị Boost ọhụrụ.

Ụzọ nke atọ

Mgbe ị na-aga na ọkọlọtọ C++14, anyị tụlere nhọrọ ndị a:

  1. Kwalite STLPort anyị megharịrị gaa na ọkọlọtọ C++14. Nhọrọ ahụ siri ike, n'ihi na ... nkwado maka STLPort kwụsịrị na 2010, anyị ga-arụkwa koodu ya n'onwe anyị.
  2. Ntugharị gaa na mmejuputa STL ọzọ dakọtara na C++14. Ọ bụ ihe na-achọsi ike na mmejuputa a bụ maka Windows na Linux.
  3. Mgbe ị na-achịkọta maka OS ọ bụla, jiri ọba akwụkwọ arụnyere n'ime mkpokọta kwekọrọ.

Ajụjụ nhọrọ nke mbụ n'ihi oke ọrụ.

Anyị chere banyere nhọrọ nke abụọ ruo oge ụfọdụ; weere dị ka onye ndoro-ndoro ochichi libc+, ma n'oge ahụ ọ naghị arụ ọrụ n'okpuru Windows. Iji bubata libc++ na Windows, ị ga-arụ ọtụtụ ọrụ - dịka ọmụmaatụ, dee ihe niile gbasara eri, mmekọrịta eri na atomity, ebe ọ bụ na a na-eji libc++ na mpaghara ndị a. POSIX API.

Anyị wee họrọ ụzọ nke atọ.

Mgbanwe

Yabụ, anyị ga-eji ụlọ ọba akwụkwọ nke ndị na-agụ akwụkwọ kwekọrọ na iji SLTPort dochie anya (Visual Studio 2015 maka Windows, gcc 7 maka Linux, clang 8 maka macOS).

Ọ dabara nke ọma, koodu anyị edere tumadi dị ka ụkpụrụ si dị ma ejighị ụdị aghụghọ aghụghọ niile, yabụ ịkwaga n'ọbá akwụkwọ ọhụrụ gara n'ihu nke ọma, site n'enyemaka nke ederede na-edochi aha ụdị, klaasị, aha aha na gụnyere na isi mmalite. faịlụ. Mbugharị ahụ metụtara faịlụ isi mmalite 10 (n'ime 000). char14_t dochie wchar_t; anyị kpebiri ịhapụ iji wchar_t, n'ihi na char000_t na-ewe 16 bytes na OS niile ma ghara imebi ndakọrịta koodu n'etiti Windows na Linux.

Enwere ụfọdụ obere ihe omume. Dịka ọmụmaatụ, na SLTPort, enwere ike ịtụba onye na-ekwu okwu n'ezoghị ọnụ na ntụnye aka na mmewere, na ebe ụfọdụ na koodu anyị, ejiri ya mee ihe. N'ọbá akwụkwọ ọhụrụ ọ dịghịzi ekwe omume ime nke a, ekwesịrị iji aka nyochaa ma degharịa akụkụ ndị a.

Ya mere, ntinye koodu zuru oke, a na-achịkọta koodu maka sistemụ arụmọrụ niile. Oge erugo maka ule.

Nnwale mgbe mgbanwe ahụ gasịrị gosipụtara ọdịda arụmọrụ (n'ebe ụfọdụ ruo 20-30%) na mmụba nke oriri ebe nchekwa (ruo 10-15%) ma e jiri ya tụnyere ụdị ochie nke koodu ahụ. Nke a bụ, karịsịa, n'ihi arụmọrụ dị elu nke eriri ọkọlọtọ. Ya mere, anyị ga-eji ahịrị nke anyị emezigharịrị ọzọ.

A na-ekpughere akụkụ na-adọrọ mmasị nke mmejuputa arịa dị na ọba akwụkwọ agbakwunyere: efu (na-enweghị ihe) std :: map na std :: setịpụrụ site na ụlọ akwụkwọ arụnyere na-ekenye ebe nchekwa. Na n'ihi njirimara mmejuputa iwu, n'ebe ụfọdụ na koodu, a na-emepụta ọtụtụ ihe na-adịghị efu nke ụdị a. A na-ekenye arịa ebe nchekwa ọkọlọtọ ntakịrị, maka otu mgbọrọgwụ, mana maka anyị, nke a mechara bụrụ ihe dị egwu - n'ọtụtụ ọnọdụ, arụmọrụ anyị dara nke ukwuu na oriri ebe nchekwa mụbara (ma e jiri ya tụnyere STLPort). Ya mere, na koodu anyị, anyị dochiri ụdị ihe abụọ a site na ụlọ akwụkwọ ndị a na-arụ ọrụ na ntinye ha site na Boost, ebe ihe ndị a na-enweghị njirimara a, nke a na-edozi nsogbu ahụ site na nkwụsịtụ na ụbara oriri ebe nchekwa.

Dị ka ọ na-emekarị mgbe mgbanwe dị ukwuu na nnukwu ọrụ, ntinye mbụ nke koodu isi anaghị arụ ọrụ n'enweghị nsogbu, na ebe a, karịsịa, nkwado maka ndị na-eme ihe nbibi na mmejuputa Windows bịara dị irè. Nzọụkwụ site nzọụkwụ anyị gara n'ihu, na n'oge opupu ihe ubi nke 2017 (mbipute 8.3.11 1C:Enterprise) njem ahụ agwụla.

Nsonaazụ

Ntughari na ọkọlọtọ C++14 were anyị ihe dịka ọnwa isii. Ọtụtụ mgbe, otu onye nrụpụta (ma nke tozuru oke) rụrụ ọrụ na ọrụ ahụ, na n'ọkwa ikpeazụ, ndị nnọchi anya otu ndị na-ahụ maka mpaghara ụfọdụ jikọtara ya - UI, ụyọkọ nkesa, akụrụngwa mmepe na nchịkwa, wdg.

Mgbanwe ahụ mere ka ọrụ anyị dị mfe na ịkwaga na ụdị ọkọlọtọ kachasị ọhụrụ. Ya mere, mbipute 1C:Enterprise 8.3.14 (na mmepe, ntọhapụ ahaziri n'isi afọ na-abịa) ka ebufelarị na ọkọlọtọ. C++17.

Mgbe njem ahụ gasịrị, ndị mmepe nwere nhọrọ ndị ọzọ. Ọ bụrụ na mbụ anyị nwere ụdị STL nke anyị gbanwetụrụ na otu std namespace, ugbu a, anyị nwere klas ọkọlọtọ sitere na ọba akwụkwọ arụnyere arụnyere na std namespace, na stdx namespace - ahịrị anyị na arịa anyị kachasị maka ọrụ anyị, na nkwalite - na ụdị nkwalite kachasị ọhụrụ. Na onye nrụpụta na-eji klaasị ndị ahụ dabara nke ọma iji dozie nsogbu ya.

Mmezu “nwa afọ” nke ndị na-ewu ihe na-akwagharị na-enyekwa aka na mmepe (ịkwaga constructors) maka ọtụtụ klaasị. Ọ bụrụ na klaasị nwere onye nrụpụta ihe na klaasị a na-etinye ya n'ime akpa, mgbe ahụ STL na-eme ka ịdepụta ihe dị n'ime akpa (dịka ọmụmaatụ, mgbe akpa ahụ gbasaa ma ọ dị mkpa ịgbanwe ikike na ebe nchekwa).

Otu ngaji nke tar

Ikekwe ihe na-adịghị mma (ma ọ bụghị oké egwu) na-esi na mbugharị bụ na anyị na-eche ihu mmụba nke olu. obj faịlụ, na nsonaazụ zuru oke nke wuo ya na faịlụ etiti niile malitere iburu 60-70 GB. Omume a bụ n'ihi ihe dị iche iche nke ụlọ akwụkwọ ọta akara ọgbara ọhụrụ, bụ ndị na-adịchaghị mkpa maka nha faịlụ ọrụ ewepụtara. Nke a anaghị emetụta ọrụ nke ngwa a chịkọtara, ma ọ na-akpata ọtụtụ nsogbu na mmepe, karịsịa, ọ na-abawanye oge nchịkọta. Ihe achọrọ maka ohere diski efu na sava wuo yana na igwe nrụpụta na-abawanye. Ndị mmepe anyị na-arụ ọrụ n'ọtụtụ nsụgharị nke ikpo okwu n'otu oge, na ọtụtụ narị gigabytes nke faịlụ etiti na-emepụta ihe isi ike na ọrụ ha mgbe ụfọdụ. Nsogbu a adịghị mma, mana ọ bụghị ihe siri ike; anyị yigharịrị ihe ngwọta ya ugbu a. Anyị na-atụle teknụzụ dịka otu n'ime nhọrọ maka idozi ya ịdị n'otu wuo (karịsịa, Google na-eji ya mgbe ọ na-emepụta ihe nchọgharị Chrome).

isi: www.habr.com

Tinye a comment