Ukuzaji wa lugha c. §1 Maelezo ya jumla kuhusu lugha. Hatua za muundo wa programu. Mifano ya mzunguko wa maisha ya maombi. Mifano ya Maisha ya Maombi

C++ ni lugha ya programu iliyokusanywa kwa madhumuni ya jumla ambayo inachanganya sifa za lugha za kiwango cha juu na za kiwango cha chini. Ikilinganishwa na mtangulizi wake, lugha ya programu ya C, umakini mkubwa hulipwa kusaidia upangaji unaolenga kitu na wa kawaida. Jina "lugha ya programu ya C++" linatokana na lugha ya programu ya C, ambayo opereta isiyo ya kawaida ++ inaashiria ongezeko la kigezo.

Lugha ya programu ya C ++ inatumiwa sana kwa maendeleo ya programu. Yaani, kuundwa kwa programu mbalimbali za maombi, maendeleo ya mifumo ya uendeshaji, madereva ya kifaa, pamoja na michezo ya video na mengi zaidi. Iliundwa mwanzoni mwa miaka ya 1980 na Björn Stroustrup. Alikuja na maboresho kadhaa kwa lugha ya programu ya C kwa mahitaji yake mwenyewe. hizo. Hapo awali hakukuwa na mipango ya kuunda lugha ya programu ya C++.

Inaauni dhana za upangaji kama vile upangaji wa utaratibu, upangaji unaolenga kitu, upangaji wa jumla, hutoa ustadi, mkusanyiko tofauti, utunzaji wa kipekee, uondoaji wa data, tamko la aina za vitu (darasa), utendakazi pepe.

Jina la lugha linalotokana linatokana na kiendeshaji cha nyongeza cha C++ unary postfix (kuongeza thamani ya kutofautisha kwa moja). Jina C+ halikutumiwa kwa sababu lilikuwa kosa la kisintaksia katika C na pia kwa sababu jina lilichukuliwa na lugha nyingine. Lugha pia haikuitwa D kwa sababu "ni kiendelezi cha C na haijaribu kurekebisha matatizo kwa kuondoa vipengele vya C."

Faida za lugha:

1. Scalability. Programu hutengenezwa katika C++ kwa aina mbalimbali za majukwaa na mifumo.

2. Uwezo wa kufanya kazi kwa kiwango cha chini na kumbukumbu, anwani, bandari.

3. Uwezo wa kuunda algoriti za jumla za aina tofauti za data, utaalam wao na hesabu katika hatua ya ujumuishaji kwa kutumia violezo.

4. Msalaba-jukwaa. Vikusanyaji vinapatikana kwa idadi kubwa ya majukwaa, na programu zinatengenezwa katika C++ kwa aina mbalimbali za majukwaa na mifumo.

5. Ufanisi. Lugha imeundwa kumpa mpanga programu udhibiti wa juu zaidi wa vipengele vyote vya muundo wa programu na utaratibu wa utekelezaji.

Hasara za lugha:

1. Uwepo wa vipengele vingi vinavyokiuka kanuni za usalama wa aina husababisha ukweli kwamba makosa ya hila yanaweza kuingia kwa urahisi kwenye programu za C ++.

2. Usaidizi duni wa modularity. Kuunganisha kiolesura cha moduli ya nje kupitia uwekaji wa kichakataji awali cha faili ya kichwa (#include) hupunguza kasi ya ukusanyaji wakati wa kuunganisha idadi kubwa ya moduli.

3. Lugha ya C++ ni ngumu kujifunza na kutunga.

4. Baadhi ya ubadilishaji wa aina sio rahisi. Hasa, operesheni kwenye nambari ambayo haijasainiwa na iliyosainiwa hutoa matokeo ambayo hayajasainiwa.

5. Baadhi ya watu wanaona ukosefu wa mfumo wa kukusanya takataka uliojengewa ndani kuwa ni hasara ya lugha ya C++. Kwa upande mwingine, C++ ina zana za kutosha za karibu kuondoa utumiaji wa viashiria hatari; hakuna shida za kimsingi katika utekelezaji na utumiaji wa ukusanyaji wa takataka (katika kiwango cha maktaba, sio kiwango cha lugha). Kutokuwepo kwa mkusanyiko wa takataka uliojengewa ndani huruhusu mtumiaji kuchagua mkakati wake wa usimamizi wa rasilimali.

Je, ni sababu gani ya hadhi hii ya lugha C? Kwa kihistoria, lugha hii haiwezi kutenganishwa na mfumo wa uendeshaji wa Unix, ambao sasa unakabiliwa na kuzaliwa upya. Miaka ya 60 ilikuwa enzi ya uundaji wa mifumo ya uendeshaji na lugha za kiwango cha juu cha programu. Wakati huo, OS na wakusanyaji zilitengenezwa kwa kila aina ya kompyuta, na mara nyingi hata lugha zao za programu (kumbuka, kwa mfano, PL/I). Wakati huo huo, kawaida ya matatizo yanayotokea katika kesi hii tayari imekuwa dhahiri. Jibu la ufahamu wa hali hii ya kawaida lilikuwa jaribio la kuunda mfumo wa uendeshaji wa simu za mkononi, na hii ilihitaji lugha ya programu ya simu ya mkononi kwa usawa. C ikawa lugha kama hiyo, na Unix ikawa OS ya kwanza iliyoandikwa karibu kabisa katika lugha ya kiwango cha juu.

Uhusiano wa karibu na Unix uliipa lugha C uwanja wa majaribio ambao hakuna lugha nyingine ilikuwa nayo wakati huo. Shida za upangaji wa mifumo zilizingatiwa kwa usahihi kuwa ngumu zaidi kwenye tasnia wakati huo. Kwa sehemu kubwa, walikuwa wanategemea mashine hivi kwamba wengi hawakufikiria hata kuyasuluhisha tofauti kuliko kwenye mkusanyiko. Lugha za kiwango cha juu zilikusudiwa kwa programu ya programu na zilitekelezwa tu kazi ndogo sana zinazohitajika kwa kazi ya mfumo, mara nyingi tu kwa aina fulani ya mashine.

Tangu mwanzo, lugha ya C iliundwa ili kazi za mfumo ziandikwe ndani yake. Waundaji wa C hawakuunda mfano wa kufikirika wa mtekelezaji wa lugha, lakini walitekeleza ndani yake uwezo huo ambao ulihitajika zaidi katika mazoezi ya programu ya mfumo. Hizi zilikuwa kimsingi njia za kazi ya moja kwa moja na kumbukumbu, miundo ya udhibiti wa miundo na shirika la kawaida la programu. Na kimsingi hakuna kitu kingine kilichojumuishwa katika lugha. Kila kitu kingine kiliwekwa kwenye maktaba ya wakati wa kukimbia. Kwa hivyo, wapinzani wakati mwingine hurejelea lugha ya C kama mkusanyiko wa muundo. Lakini haijalishi walisema nini, mbinu hiyo ilifanikiwa sana. Shukrani kwake, kiwango kipya kilifikiwa katika suala la unyenyekevu na uwezo wa lugha.

Walakini, kuna jambo moja zaidi ambalo liliamua kufaulu kwa lugha. Waumbaji walitenganisha kwa ustadi sana mali zinazotegemea mashine na huru ndani yake. Shukrani kwa hili, programu nyingi zinaweza kuandikwa kwa ulimwengu wote - utendaji wao hautegemei processor na usanifu wa kumbukumbu. Sehemu chache zinazotegemea maunzi za msimbo zinaweza kubinafsishwa katika moduli tofauti. Na kwa kutumia kichakataji, unaweza kuunda moduli ambazo, zikikusanywa kwenye majukwaa tofauti, zitatoa msimbo unaolingana unaotegemea mashine.

Sintaksia ya lugha C imeleta utata mwingi. Mbinu za ufupisho zinazotumiwa ndani yake, ikiwa zinatumiwa sana, zinaweza kufanya programu isisomeke kabisa. Lakini, kama Dijkstra alisema, njia sio za kulaumiwa kwa ukweli kwamba zinatumiwa bila kusoma. Kwa kweli, vifupisho vya sintaksia vilivyopendekezwa katika C vinalingana na hali za kawaida za kawaida katika mazoezi. Ikiwa tutazingatia muhtasari kama nahau za uwasilishaji wa hali kama hizi unaoeleweka na kompakt, basi faida zake huwa zisizo na masharti na dhahiri.

Kwa hivyo, C iliibuka kama lugha ya programu ya mfumo wa ulimwengu wote. Lakini hakukaa ndani ya mipaka hii. Mwisho wa miaka ya 80, lugha ya C, ikiwa imesukuma Fortran nje ya nafasi yake ya uongozi, ilipata umaarufu mkubwa kati ya waandaaji wa programu kote ulimwenguni na ilianza kutumika katika anuwai ya kazi zilizotumika. Jukumu kubwa hapa lilichezwa na kuenea kwa Unix (na kwa hivyo C) katika mazingira ya chuo kikuu, ambapo kizazi kipya cha waandaaji wa programu kilifunzwa.

Kama lugha zote, C imeboreshwa hatua kwa hatua, lakini maboresho mengi hayajakuwa makubwa. Muhimu zaidi kati ya haya, labda, inapaswa kuzingatiwa kuanzishwa kwa uainishaji mkali wa aina za kazi, ambayo iliongeza kwa kiasi kikubwa uaminifu wa mawasiliano kati ya moduli katika C. Maboresho hayo yote yaliwekwa mwaka wa 1989 katika kiwango cha ANSI, ambacho bado kinafafanua C lugha.

Lakini ikiwa kila kitu ni cha kupendeza, basi kwa nini lugha zingine zote zinaendelea kutumika, ambayo inaunga mkono uwepo wao? Kisigino cha Achilles cha lugha ya C kilikuwa kwamba iligeuka kuwa ya kiwango cha chini sana kwa majukumu ambayo yaliwekwa kwenye ajenda katika miaka ya 90. Aidha, tatizo hili lina vipengele viwili. Kwa upande mmoja, zana za kiwango cha chini sana zilijengwa katika lugha - kimsingi usimamizi wa kumbukumbu na hesabu ya anwani. Sio bila sababu kwamba kubadilisha uwezo kidogo wa wasindikaji kuna athari chungu sana kwenye programu nyingi za C. Kwa upande mwingine, C haina vipengele vya juu - aina za data za abstract na vitu, polymorphism, utunzaji wa ubaguzi. Matokeo yake, katika programu za C, mbinu ya kutekeleza kazi mara nyingi hutawala maudhui yake.

Majaribio ya kwanza ya kurekebisha mapungufu haya yalianza kufanywa mapema miaka ya 80. Hata wakati huo, Bjarne Stroustrup katika AT&T Bell Labs alianza kukuza kiendelezi cha lugha ya C chini ya jina la msimbo. Mtindo wa maendeleo ulikuwa sawa kabisa na roho ambayo lugha ya C yenyewe iliundwa - vipengele fulani vilianzishwa ndani yake ili kufanya kazi ya watu maalum na vikundi iwe rahisi zaidi. Mtafsiri wa kwanza wa kibiashara wa lugha hiyo mpya, anayeitwa C++, alionekana mnamo 1983. Ilikuwa prosesa iliyotafsiri programu katika msimbo wa C. Hata hivyo, kuzaliwa halisi kwa lugha kunaweza kuchukuliwa kuwa uchapishaji wa kitabu cha Stroustrup mwaka wa 1985. Ilikuwa kutoka wakati huu ambapo C ++ ilianza kupata umaarufu duniani kote.

Ubunifu kuu wa C ++ ni utaratibu wa darasa, ambayo inafanya uwezekano wa kufafanua na kutumia aina mpya za data. Mtayarishaji programu anaelezea uwakilishi wa ndani wa kitu cha darasa na seti ya mbinu za utendakazi za kufikia uwakilishi huu. Mojawapo ya malengo yaliyopendekezwa wakati wa kuunda C++ lilikuwa hamu ya kuongeza asilimia ya utumiaji tena wa nambari iliyoandikwa tayari. Wazo la madarasa lilitoa utaratibu wa urithi kwa hili. Urithi hukuruhusu kuunda madarasa mapya (yaliyotokana) na uwakilishi uliopanuliwa na njia zilizorekebishwa, bila kuathiri nambari iliyokusanywa ya madarasa ya asili (ya msingi). Wakati huo huo, urithi hutoa moja ya taratibu za kutekeleza polymorphism - dhana ya msingi ya programu inayoelekezwa na kitu, kulingana na ambayo kanuni hiyo inaweza kutumika kufanya aina moja ya usindikaji wa aina tofauti za data. Kwa kweli, upolimishaji pia ni mojawapo ya njia za kuhakikisha utumiaji wa msimbo tena.

Kuanzishwa kwa madarasa hakumalizii ubunifu wote wa lugha ya C++. Inatumia utaratibu kamili wa utunzaji wa ubaguzi, kukosekana kwa ambayo katika C ilifanya iwe ngumu zaidi kuandika programu za kuaminika, utaratibu wa kiolezo - utaratibu wa kisasa wa kizazi kikubwa uliojengwa kwa undani katika lugha, kufungua njia nyingine ya kutumia tena nambari, na mengi zaidi.

Kwa hivyo, mwelekeo wa jumla wa ukuzaji wa lugha ulilenga kupanua uwezo wake kwa kuanzisha miundo mipya ya kiwango cha juu huku ikidumisha utangamano kamili na ANSI C iwezekanavyo. Bila shaka, mapambano ya kuongeza kiwango cha lugha pia yaliendelea. mbele ya pili - madarasa sawa hufanya iwezekanavyo, kwa mbinu yenye uwezo, kuficha shughuli za kiwango cha chini, ili msanidi programu ataacha kufanya kazi moja kwa moja na kumbukumbu na vyombo vinavyotegemea mfumo. Hata hivyo, lugha haina taratibu zinazomlazimisha msanidi programu kuunda programu kwa usahihi, na waandishi hawajatoa mapendekezo yoyote ya kimfumo ya kutumia miundo yake ya kisasa zaidi. Pia hawakutunza kwa wakati ufaao kuunda maktaba ya darasa la kawaida ambayo hutekelezea miundo ya data inayopatikana mara kwa mara.

Yote hii ilisababisha ukweli kwamba watengenezaji wengi walilazimishwa kuchunguza labyrinths ya semantiki za lugha wenyewe na kupata kwa uhuru nahau zinazofanya kazi kwa mafanikio. Kwa mfano, katika hatua ya kwanza ya ukuzaji wa lugha, waundaji wengi wa maktaba za darasa walitafuta kuunda safu moja ya madarasa na Kitu cha kawaida cha darasa la msingi. Wazo hili lilikopwa kutoka kwa Smalltalk, mojawapo ya lugha maarufu zaidi zinazoelekezwa kwa kitu. Walakini, iligeuka kuwa haiwezekani kabisa katika C ++ - safu zilizoundwa kwa uangalifu za maktaba za darasa ziligeuka kuwa zisizobadilika, na kazi ya madarasa haikuwa dhahiri. Ili maktaba za darasa ziweze kutumika, ilibidi zitolewe kwa msimbo wa chanzo.

Kuibuka kwa madarasa ya template kukanusha kabisa mwelekeo huu wa maendeleo. Urithi ulianza kutumika tu katika hali ambapo ilikuwa ni lazima kutoa toleo maalum la darasa lililopo. Maktaba zilianza kujumuisha madarasa tofauti na madaraja madogo yasiyohusiana. Walakini, kando ya njia hii, utumiaji wa msimbo ulianza kupungua, kwani katika C ++ matumizi ya polymorphic ya madarasa kutoka kwa viwango vya kujitegemea haiwezekani. Kuenea kwa matumizi ya templates husababisha ongezeko lisilokubalika la kiasi cha kanuni zilizokusanywa - tusisahau, templates zinatekelezwa kwa kutumia mbinu za macrogeneration.

Mojawapo ya mapungufu makubwa zaidi ya C++, ambayo ilirithi kutoka kwa syntax ya C, ni uwezo wa mkusanyaji kuelezea muundo wa ndani wa madarasa yote yaliyotumiwa. Kama matokeo, kubadilisha muundo wa ndani wa uwakilishi wa darasa la maktaba husababisha hitaji la kukusanya tena programu zote ambapo maktaba hii inatumiwa. Hii inazuia sana wasanidi wa maktaba kuziboresha, kwa sababu wakati wa kutoa toleo jipya, lazima wadumishe upatanifu wa mfumo wa jozi na lile la awali. Tatizo hili ndilo linalowafanya wataalam wengi kuamini kuwa C++ haifai kwa kuendesha miradi mikubwa na mikubwa sana.

Na bado, licha ya mapungufu yaliyoorodheshwa na hata kutokuwepo kwa kiwango cha lugha (hii ni baada ya zaidi ya miaka kumi na tano ya matumizi!), C ++ inabakia mojawapo ya lugha maarufu zaidi za programu. Nguvu zake ziko hasa katika utangamano wake wa karibu kabisa na lugha ya C. Shukrani kwa hili, watayarishaji wa programu za C ++ wanapata maendeleo yote yaliyofanywa katika C. Wakati huo huo, C ++, hata bila matumizi ya madarasa, huleta idadi ya vile muhimu. vipengele vya ziada na manufaa kwa C ambayo wengi huitumia kama C .

Kama ilivyo kwa mfano wa kitu cha C++, mradi tu programu yako isiwe kubwa sana (mamia ya maelfu ya mistari), inaweza kutumika kabisa. Mwelekeo wa hivi majuzi kuelekea programu inayotegemea vipengele huimarisha tu nafasi ya C++. Wakati wa kuendeleza vipengele vya mtu binafsi, mapungufu ya C ++ bado hayaonekani, na kuunganisha vipengele kwenye mfumo wa kazi haufanyiki tena katika ngazi ya lugha, lakini katika kiwango cha mfumo wa uendeshaji.

Kwa kuzingatia yote ambayo yamesemwa, matarajio ya C++ hayaonekani kuwa mbaya. Ingawa hatakuwa na ukiritimba kwenye soko la lugha ya programu. Pengine jambo pekee tunaloweza kusema kwa uhakika ni kwamba lugha hii haitadumu upanuzi mwingine wa kisasa. Sio bure kwamba wakati Java ilipoonekana, ilipokea uangalifu wa karibu sana. Lugha, ambayo iko karibu katika sintaksia ya C++, na kwa hivyo inaonekana kujulikana kwa watayarishaji programu wengi, imeepushwa na mapungufu dhahiri zaidi ya C++, iliyorithiwa kutoka miaka ya 70. Walakini, Java haionekani kutimiza jukumu ambalo watu wengine wameikabidhi.

Jukumu maalum la lugha za C/C++ katika programu ya kisasa hufanya iwe haina maana kabisa kutoa anwani maalum kwenye mtandao ambapo unaweza kupata vifaa juu yao. Kuna maeneo mengi sana kama haya. Hata hivyo, ikiwa una nia ya kujifunza zaidi kuhusu mageuzi ya C ++, basi anza na makala hii fupi http://citforum.syzran.ru/programming/prg96/76.shtml.

Alexander Sergeev, [barua pepe imelindwa]
Nakala kutoka kwa jarida la BYTE/Russia, Machi 2000

Ili kuonyesha wazi matumizi ya lugha zilizoelezewa katika mazoezi, tulichagua kazi ambayo ilihitajika kuingiza safu ya nambari kutoka kwa pembejeo ya kawaida au kutoka kwa faili, na kisha kutoa zile zisizo za kawaida tu, kwa mpangilio wa nyuma. . Hili ni mojawapo ya matatizo rahisi ambayo kimsingi yanahitaji kufanya kazi na safu, vitanzi, matawi na I/O ili kulitatua, na pia hukuruhusu kuonyesha simu za kawaida. Wakati huo huo, inaonekana na inaonekana kwa urahisi.

Kuorodhesha 1. C

1 #pamoja na /* Unganisha vitendaji vya I/O */ 2 3 batili kuu(utupu) 4 ( 5 int M; /* Mkusanyiko wa nambari 10 kamili, ikihesabu kutoka 0 */ 6 int N; 7 kwa (N=0; N<10; ++N) /* Вводим не более 10 чисел */ 8 if (EOF == scanf ("%d, M+N)) 9 break; /* Если конец файла, прерываем цикл */ 10 11 for (-N; N>=0; --N) /* Tunapitia safu katika kinyume */ 12 ikiwa (M[N]%2) /* agiza na uchapishe zisizo za kawaida */ 13 printf("%d\n", M[N]); 14 )

  • Mstari wa 3. Katika C/C++, utekelezaji wa programu daima huanza na kazi kuu.
  • Mstari wa 7 na 11. Katika kichwa cha kitanzi, mpangilio wa awali, hali ya kuendelea, na utawala wa kuhesabu tena parameter ya kitanzi huonyeshwa, ikitenganishwa na semicolons. Uendeshaji ++ Na -/- - vifupisho maarufu zaidi vya lugha ya C, ikimaanisha kuongezeka na kupungua kwa kutofautisha, ambayo ni, kuongezeka na kupungua kwa thamani yake kwa moja.
  • Mstari wa 8. Kazi scanf inaingia, kulingana na fomati iliyoainishwa na paramu ya kwanza, maadili ya anuwai ambayo anwani zake zimeainishwa na vigezo vilivyobaki. Hapa anwani ambapo thamani imeingizwa inahesabiwa kwa kutumia hesabu ya anwani kwa anwani ya eneo la safu M kukabiliana huongezwa na N vipengele. Athari sawa inaweza kupatikana kwa kuandika &M[N].
  • Mstari wa 12. Uendeshaji % huhesabu sehemu iliyobaki. Hali ya Opereta kama inazingatiwa kutekelezwa ikiwa thamani ya nambari ya usemi ni tofauti na sifuri.
  • Mstari wa 13. Kazi chapa- uchapishaji kwa umbizo hufanya kazi kwa njia ile ile scanf, lakini badala ya anwani hupitishwa maadili kuwa pato.
1 #pamoja na 2 3 kiolezo safu ya darasa 4 ( 5 ya umma: Mkusanyiko (T Ukubwa=1) : M (T mpya), N(Ukubwa), n(0) () 6 Mpangilio (batili) (futa M;) 7 T Hesabu (batili) const ( return n; ) Opereta 8 T (int i) const ( rudisha M[i]; ) 9 batili Ongeza (T Data); 10 ya faragha: 11 T* M; // Anwani ya kumbukumbu iliyosambazwa 12 int N, n; // N - kusambazwa, n - kutumika 13); 14 15 kiolezo Array tupu ::Ongeza(T Data) 16 ( ikiwa (N-n) // Ikiwa zote zilizotengwa 17 zinatumika ( int* P = T mpya; // nafasi, sambaza zaidi 18 kwa (int i=0; i A; // Safu ya nambari kamili za ukubwa 28 huku (1) // Kitanzi kisicho na kikomo 29 ( int N; 30 cin >> N; // cin - mkondo wa kawaida wa pembejeo 31 ikiwa (cin.eof()) vunja; // Toka kwenye kitanzi hadi mwisho wa faili 32 A.Add(N); // Ongeza nambari iliyoingizwa kwenye safu 33 ) 34 kwa (int N=A.Count()-1; N>=0; --N) // Tembea kupitia safu 35 ikiwa ( A[N]%2) 36 cout<, na uhifadhi kumbukumbu
  • Mstari wa 3-13. Darasa la kiolezo limetangazwa Safu na parameter T. Ni safu ya ukubwa wa kutofautiana ya vitu vya aina T. Bila shaka, katika kazi yetu hakuna haja ya kutumia darasa la template. Walakini, tulitaka kuonyesha jinsi C++ inavyoweza kuunda muundo wa data wa aina nyingi ambao unaweza kufanya kazi na aina yoyote ya kipengee.
  • Mstari wa 5. Mjenzi wa darasa. Inaanzisha uwakilishi wa kitu. Kwa mfano, katika shamba M anwani ya kizuizi cha kumbukumbu iliyoagizwa na operesheni imeingia mpya T.
  • Mstari wa 8. Mfano wa upakiaji wa operesheni. Kazi mwendeshaji itaitwa wakati mabano ya mraba yanaonekana upande wa kulia wa kitu cha darasa Safu.
  • Mstari wa 9. Kazi hii ndiyo kuu katika utekelezaji. Inaongeza vipengele kwenye safu, na kuipanua kama inahitajika. Kwa kuwa ni ngumu zaidi kuliko wengine, ufafanuzi wake unachukuliwa kutoka kwa maelezo ya darasa. Kazi zilizoelezewa katika mwili wa darasa hutekelezwa katika C++ si kwa kupiga simu, lakini kwa uingizwaji wa ndani. Hii inaharakisha programu, ingawa inaongeza saizi yake.
  • Mstari wa 15-24. Ufafanuzi wa Kazi Safu::Ongeza (T)(hilo ndilo jina lake kamili, kwa njia).
  • Mstari wa 27. Unda kitu cha aina Safu. Kiolezo Aggau parameterized na aina int.

C++ (soma c-plus-plus) ni lugha ya upangaji yenye madhumuni ya jumla iliyokusanywa, iliyoandikwa kwa takwimu ambayo unaweza kuunda programu za kiwango chochote cha utata.
Kwa zaidi ya miaka 20, lugha hii imekuwa miongoni mwa lugha tatu maarufu na zinazohitajika sana za upangaji programu. (Unaweza kuthibitisha hili kwa kutembelea tovuti ya TIOBE).
Lugha hiyo ilianzia mwanzoni mwa miaka ya 1980, wakati mfanyakazi wa Bell Labs Björn Stroustrup alipokuja na maboresho kadhaa ya lugha ya C kwa mahitaji yake mwenyewe.

Bjarne Stroustrup - muundaji wa lugha ya C++

Stroustrup aliamua kupanua lugha ya C kwa uwezo unaopatikana katika lugha ya Simula. C, ikiwa ni lugha ya msingi ya mfumo wa UNIX ambao kompyuta za Bell zilitumia, ni ya haraka, yenye vipengele vingi, na inabebeka. Stroustrup aliongeza uwezo wa kufanya kazi na madarasa na vitu. Kama matokeo, shida za modeli za vitendo ziligeuka kuwa rahisi kusuluhisha kwa suala la wakati wa maendeleo (shukrani kwa utumiaji wa madarasa kama Simula) na kwa suala la wakati wa kuhesabu (shukrani kwa kasi ya C).
Hivi ndivyo msanidi wa lugha anazungumza juu yake:



Mnamo 1998, kiwango cha lugha ya kwanza, kinachojulikana kama C++98, kilichapishwa na kamati ya viwango. C++ inaendelea kubadilika ili kukidhi mahitaji ya leo. Moja ya vikundi vinavyoendeleza lugha ya C++ na kuwasilisha mapendekezo ya kuiboresha kwa Kamati ya Viwango ya C++ ni Kuongeza, ambayo inahusika, kati ya mambo mengine, katika kuboresha uwezo wa lugha kwa kuongeza vipengele vya metaprogramming. Kiwango cha hivi karibuni kilitolewa mwaka wa 2017 na kinaitwa C++17. Kiwango kinachofuata hakitachukua muda mrefu kuja na kinatarajiwa kuonekana mnamo 2020.
Hakuna mtu anayemiliki haki za lugha ya C++; ni bure. Mnamo Machi 2016, kikundi cha kazi WP21 C ++ kiliundwa nchini Urusi. Kikundi kilipangwa kukusanya mapendekezo ya kiwango cha C++, kuyatuma kwa kamati na kuyatetea katika mikutano mikuu ya Shirika la Kimataifa la Kuweka Viwango.
C++ ni lugha ya dhana nyingi (kutoka kwa neno dhana - mtindo wa kuandika programu za kompyuta), ikiwa ni pamoja na aina mbalimbali za mitindo na teknolojia za programu. Mara nyingi huainishwa kama lugha inayoelekezwa na kitu, lakini kwa kusema kweli, hii sivyo. Wakati wa mchakato wa kazi, msanidi hupokea uhuru kamili katika kuchagua zana ili tatizo kutatuliwa kwa kutumia mbinu fulani kutatuliwa kwa ufanisi iwezekanavyo. Kwa maneno mengine, C++ hailazimishi programu kufuata mtindo mmoja tu wa ukuzaji wa programu (kwa mfano, inayoelekezwa kwa kitu).
C++ ina maktaba ya kawaida ya kawaida inayojumuisha kontena na kanuni za kawaida, I/O, misemo ya kawaida, usaidizi wa kusoma maandishi mengi na vipengele vingine. C++ imeathiri lugha nyingi za programu, ikiwa ni pamoja na: Java, C#, D. Kwa kuwa C++ ni ya familia ya lugha kulingana na syntax ya lugha ya C, unaweza kujua kwa urahisi lugha zingine za programu za familia hii: JavaScript, PHP. , Perl, Objective-C na wengine wengi . nk, pamoja na lugha ya mzazi yenyewe - C. ()
Wakati wa kuwepo kwake, lugha ya C++ imepata ngano zinazoendelea ambazo hukanushwa kwa urahisi (tazama hapa: Sehemu ya 1 na Sehemu ya 2)

Historia ya kutolewa kwa lugha na viwango

1983

Muundaji wa lugha hiyo ni Björn Stroustrup, mfanyakazi wa Bell Labs, alianzisha toleo la awali la lugha ya C++ (“C pamoja na madarasa”)

1985

Toleo la kwanza la kibiashara la C++, lugha inachukua jina lake la kisasa

1986

Kutolewa kwa toleo la kwanza la Lugha ya Programu ya C++ - kitabu kilichotolewa kwa C++ kilichoandikwa na Björn Stroustrup

1998

Kiwango cha kimataifa cha lugha ya C++ kimeidhinishwa: ISO/IEC 14882:1998 "Standard for the C++ Programming Language"

2003
2005

Ripoti ya Kiufundi ya Maktaba 1 (TR1) imetolewa. Ingawa si sehemu rasmi ya kiwango, ripoti ilieleza viendelezi kwa maktaba ya kawaida ambayo inapaswa kujumuishwa katika toleo linalofuata la lugha ya C++.

2011

Kutolewa kwa kiwango kipya - C ++11 au ISO/IEC 14882:2011; kiwango kipya kilijumuisha nyongeza kwa msingi wa lugha na upanuzi wa maktaba ya kawaida, ikijumuisha sehemu kubwa ya TR1

2014

Kutolewa kwa kiwango cha C++14 (“Kiwango cha Kimataifa cha ISO/IEC 14882:2014(E) Lugha ya Kupanga C++”); C++14 inaweza kuonekana kama kiendelezi kidogo juu ya C++11, iliyo na marekebisho mengi ya hitilafu na uboreshaji mdogo.

2017

Kutolewa kwa kiwango kipya - C++1z (C++17). Kiwango hiki kilianzisha mabadiliko mengi na nyongeza. Kwa mfano, STD ilijumuisha maktaba za kiwango cha C11, mfumo wa faili kulingana na nyongeza::mfumo wa faili, na maktaba mengi ya majaribio ya TS I.

2020

C++20 ni jina lisilo rasmi la kiwango cha ISO/IEC kwa lugha ya programu ya C++, ambayo inatarajiwa kufuata C++17. Rasimu ya kiwango cha N4800.

C++ Falsafa

Katika kitabu chake The Design and Evolution of C++ (2007), Björn Stroustrup anaeleza kanuni alizofuata wakati wa kubuni C++ (iliyofupishwa):

  • Pata lugha ya kusudi la jumla iliyo na aina za data tuli, ufanisi na ubebekaji wa lugha C.
  • Moja kwa moja na kikamilifu kuunga mkono aina ya mitindo ya programu.
  • Mpe mpangaji programu uhuru wa kuchagua, hata ikiwa inampa fursa ya kuchagua vibaya.
  • Dumisha utangamano na C kadiri uwezavyo, na hivyo kufanya mabadiliko rahisi kutoka kwa upangaji programu ya C iwezekanavyo.
  • Epuka tofauti kati ya C na C++: muundo wowote ambao ni halali katika lugha zote mbili lazima uwe na maana sawa katika kila moja yao na uelekeze kwa tabia sawa ya programu.
  • Epuka vipengele ambavyo vinategemea jukwaa au si vya ulimwengu wote.
  • "Usilipe kwa kile ambacho hutumii" - hakuna kipengele cha lugha kinachopaswa kusababisha kupungua kwa utendakazi wa programu ambazo hazitumii.
  • Usihitaji mazingira magumu zaidi ya programu.

C na C++

Sintaksia ya C++ imerithiwa kutoka kwa lugha ya C. Ingawa, rasmi, moja ya kanuni za C++ inabaki kudumisha utangamano na lugha ya C, kwa kweli, vikundi vya usanifishaji vya lugha hizi haziingiliani, na mabadiliko wanayofanya hayafanyi. tu hazihusiani, lakini mara nyingi kimsingi zinapingana kimawazo. Kwa hivyo, vipengele ambavyo viwango vipya vya C huongeza kwenye kernel ni katika vipengele vya kawaida vya C ++ vya maktaba ya kawaida na haviko kwenye kernel kabisa, kwa mfano, safu za nguvu, safu zilizo na mipaka iliyowekwa, vifaa vya usindikaji sambamba. Kulingana na Stroustrup, kuchanganya ukuzaji wa lugha hizi mbili kunaweza kuwa na faida kubwa, lakini haiwezekani kwa sababu za kisiasa. Kwa hivyo utangamano wa vitendo kati ya C na C++ utapotea polepole.
Katika mfano huu, kulingana na mkusanyaji uliotumiwa, ama "C++" au "C" itatolewa:

Mpango 9.1

#pamoja na int main() ( printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++" : "C"); rudisha 0; )

Hii ni kutokana na ukweli kwamba wahusika wa kudumu katika C ni wa aina int , na katika C++ wao ni wa aina char , lakini ukubwa wa aina hizi ni tofauti.

Mifano ya Maisha ya Maombi

Mzunguko wa maisha programu ni kipindi cha muda ambacho huanza kutoka wakati uamuzi unafanywa juu ya hitaji la kuunda bidhaa ya programu na huisha wakati imeondolewa kabisa kutoka kwa huduma. Mzunguko huu ni mchakato wa kujenga na kuendeleza programu. Kuna mifano kadhaa ya mzunguko wa maisha.
Mfano wa Cascade mzunguko wa maisha (mfano wa maporomoko ya maji ya Kiingereza) ulipendekezwa mnamo 1970 na Winston Royce. Inatoa utekelezaji wa mlolongo wa hatua zote za mradi kwa mpangilio maalum. Mpito hadi hatua inayofuata inamaanisha kukamilika kamili kwa kazi katika hatua ya awali. Mahitaji yaliyoamuliwa katika hatua ya uundaji wa mahitaji yameandikwa madhubuti katika mfumo wa maelezo ya kiufundi na yameandikwa kwa maendeleo yote ya mradi. Kila hatua huishia kwa kutolewa kwa seti kamili ya hati zinazotosha kuruhusu uendelezaji uendelezwe na timu nyingine ya maendeleo.
Hatua za mradi kulingana na mfano wa maporomoko ya maji:

  1. Uundaji wa mahitaji;
  2. Kubuni;
  3. Utekelezaji;
  4. Upimaji;
  5. Utekelezaji;
  6. Uendeshaji na matengenezo.

Katika mfano wa cascade, mpito kutoka kwa awamu moja ya mradi hadi nyingine inadhani kuwa matokeo ya awamu ya awali ni sahihi kabisa. Katika miradi mikubwa hii karibu haiwezekani kufanikiwa. Kwa hiyo, mfano huu unafaa tu kwa kuendeleza mradi mdogo. (W. Royce mwenyewe hakuzingatia mtindo huu na alitumia mfano wa kurudia).
Mfano wa kurudia
Njia mbadala ya mfano wa cascade ni mfano wa maendeleo ya mara kwa mara na ya kuongezeka (IID), ambayo yalipokea kutoka kwa T. Gilb katika miaka ya 70. jina la mtindo wa mageuzi. Muundo wa IID unahusisha kuvunja mzunguko wa maisha ya mradi katika mlolongo wa marudio, ambayo kila moja inafanana na "mradi mdogo", ikiwa ni pamoja na michakato yote ya maendeleo inayotumika kuunda vipande vidogo vya utendaji ikilinganishwa na mradi kwa ujumla. Lengo la kila marudio ni kupata toleo la kufanya kazi la mfumo wa programu, ikiwa ni pamoja na utendakazi unaofafanuliwa na maudhui yaliyounganishwa ya marudio yote ya awali na ya sasa. Matokeo ya marudio ya mwisho yana utendakazi wote unaohitajika wa bidhaa. Kwa hivyo, kwa kukamilika kwa kila iteration, bidhaa hupokea ongezeko - ongezeko - kwa uwezo wake, ambayo, kwa hiyo, huendeleza mageuzi.


Lahaja anuwai za mbinu ya kurudia zinatekelezwa katika mbinu za kisasa zaidi za maendeleo:

Mchakato wa Maendeleo - Mchakato wa Rational Unified (RUP)

Mchakato wa Rational Unified (RUP)(mchakato wa umoja wa kimantiki) ni mbinu ya ukuzaji programu inayodumishwa na Rational Software (IBM). Mbinu hutoa mapendekezo kwa hatua zote za maendeleo: kutoka kwa mfano wa biashara hadi kupima na kuagiza programu ya kumaliza. Lugha ya Kielelezo Iliyounganishwa (UML) inatumika kama lugha ya kielelezo.
Mzunguko kamili wa maisha ya ukuzaji wa bidhaa una awamu nne, ambayo kila moja inajumuisha marudio moja au zaidi.

  • Hatua ya awali (kuanzishwa)
  • Kuamua upeo wa mradi na kiasi cha rasilimali zinazohitajika. Mahitaji ya msingi, vikwazo na utendaji muhimu wa bidhaa huamua. Hatari zinatathminiwa. Mipango ya utekelezaji. Mwishoni mwa awamu ya awali, mafanikio ya Malengo ya Malengo ya Maisha yanatathminiwa, ambayo yanaonyesha makubaliano kati ya wadau ili kuendeleza mradi.

  • Ufafanuzi
  • Mahitaji ya hati. Ubunifu, utekelezaji na upimaji wa usanifu unaoweza kutekelezwa. Ufafanuzi wa masharti na gharama. Kupunguza hatari kuu. Kukamilika kwa awamu ya maendeleo kwa mafanikio kunamaanisha kufikia Malengo ya Usanifu wa Maisha.

  • Ujenzi
  • Katika awamu ya "Jenga", utendaji mwingi wa bidhaa unatekelezwa: muundo wa maombi umekamilika, msimbo wa chanzo umeandikwa. Awamu ya Muundo inaisha kwa toleo la kwanza la nje la mfumo na hatua ya Awali ya Uwezo wa Uendeshaji.

  • Utangulizi
  • Katika awamu ya "Utekelezaji", toleo la mwisho la bidhaa huundwa na kuhamishwa kutoka kwa msanidi hadi kwa mteja. Hii ni pamoja na mpango wa majaribio ya beta, mafunzo ya watumiaji na kubainisha ubora wa bidhaa. Iwapo ubora haukidhi matarajio ya mtumiaji au vigezo vilivyowekwa katika Awamu ya Kuanza, awamu ya Utekelezaji inarudiwa tena. Kukamilisha malengo yote kunamaanisha kufikia hatua muhimu ya Utoaji wa Bidhaa na kukamilisha mzunguko kamili wa utayarishaji.



"Teknolojia ya habari. Uhandisi wa mfumo na programu. Michakato ya mzunguko wa maisha ya programu". Kiwango hiki kilipitishwa na Shirika la Shirikisho la Udhibiti wa Kiufundi na Metrology wa Shirikisho la Urusi na ni sawa na kiwango cha kimataifa cha ISO/IEC 12207:2008. Kiwango hiki huanzisha muundo wa jumla wa michakato ya mzunguko wa maisha ya programu ambayo inaweza kufuatwa katika tasnia ya programu. Kiwango hakipendekezi mtindo maalum wa mzunguko wa maisha. Masharti yake ni ya kawaida kwa mifano yoyote ya mzunguko wa maisha, mbinu na teknolojia za kuunda programu. Inaelezea muundo wa michakato ya mzunguko wa maisha bila kubainisha jinsi ya kutekeleza au kukamilisha shughuli na kazi zilizojumuishwa katika michakato hiyo.

Uwasilishaji kwa somo
Mada za ujumbe
  • Free Software Foundation (FSF)
  • Leseni za programu za bure
  • FreeSoftware na Chanzo Huria
  • Historia ya maendeleo ya lugha za programu
  • Historia ya lugha ya C. C na C++
  • Hadithi
  • Ukosoaji wa C++
  • Historia ya UNIX
  • Mfano wa mzunguko wa maisha ya programu ya ond
  • UML (Lugha Iliyounganishwa ya Kuiga)
  • Mfumo wa Suluhisho la Microsoft
  • IDE ya programu ya C/C++ kwenye Windows
  • Wakusanyaji wa C/C++
  • Kuunda Programu ya Console kwenye Windows
Maswali
  1. Kwa nini mfano wa maporomoko ya maji ya maendeleo ya programu haitumiki katika miradi mikubwa?
  2. Kuna tofauti gani kati ya maporomoko ya maji na mifano ya maendeleo ya mara kwa mara?
  3. Orodhesha hatua za ukuzaji wa programu katika mbinu ya Rational Unified Process (RUP).

Historia ya uumbaji

Lugha hiyo ilianzia mwanzoni mwa miaka ya 1980, wakati mfanyakazi wa Bell Labs Björn Stroustrup alipokuja na maboresho kadhaa ya lugha ya C kwa mahitaji yake mwenyewe. Wakati Stroustrup alianza kufanya kazi katika Bell Labs mwishoni mwa miaka ya 1970 juu ya shida katika nadharia ya foleni (kama inavyotumika kwa simu za mfano), aligundua kuwa majaribio ya kutumia lugha za modeli zilizopo wakati huo hayakuwa na ufanisi, na utumiaji wa lugha za mashine zenye ufanisi zaidi. ilikuwa ngumu sana kutekeleza kwa uwazi wao mdogo. Kwa hivyo, lugha ya Simula ina vipengele ambavyo vinaweza kuwa muhimu sana kwa kutengeneza programu kubwa, lakini ni polepole sana, na lugha ya BCPL ina kasi ya kutosha, lakini iko karibu sana na lugha za kiwango cha chini na haifai kwa kuunda programu kubwa.

Akikumbuka tajriba ya tasnifu yake, Stroustrup aliamua kuongezea lugha C (mrithi wa BCPL) kwa uwezo unaopatikana katika lugha ya Simula. C, ikiwa ni lugha ya msingi ya mfumo wa UNIX ambao kompyuta za Bell zilitumia, ni ya haraka, yenye vipengele vingi, na inabebeka. Stroustrup aliongeza uwezo wa kufanya kazi na madarasa na vitu. Kama matokeo, shida za modeli za vitendo ziligeuka kuwa rahisi kusuluhisha kwa suala la wakati wa maendeleo (shukrani kwa utumiaji wa madarasa kama Simula) na kwa suala la wakati wa kuhesabu (shukrani kwa kasi ya C). Kwanza kabisa, madarasa (yaliyo na encapsulation), urithi wa darasa, ukaguzi wa aina kali, vitendaji vya ndani na hoja chaguo-msingi ziliongezwa kwa C. Matoleo ya awali ya lugha, ambayo awali yaliitwa "C with classes", yalipatikana mwaka wa 1980.

Alipokuwa akitengeneza C kwa kutumia madarasa, Stroustrup aliandika programu inayoitwa cfront, mfasiri anayebadilisha msimbo wa chanzo C na madarasa kuwa msimbo wa chanzo C. Hii iliwezesha kufanyia kazi lugha mpya na kuitumia kwa vitendo, kwa kutumia miundombinu ambayo tayari inapatikana katika UNIX kwa ajili ya maendeleo katika C. Lugha mpya, bila kutarajia kwa mwandishi, alipata umaarufu mkubwa kati ya wenzake na hivi karibuni Stroustrup hakuweza tena kumuunga mkono kibinafsi, akijibu maelfu ya maswali.

Wakati wa kuunda C++, Björn Stroustrup alitaka
  • Pata lugha ya kusudi la jumla iliyo na aina za data tuli, ufanisi na ubebekaji wa lugha C.
  • Inasaidia moja kwa moja na kwa ukamilifu aina mbalimbali za mitindo ya upangaji, ikijumuisha upangaji wa kiutaratibu, uondoaji wa data, upangaji unaolenga kitu, na upangaji wa kawaida.
  • Mpe mpangaji programu uhuru wa kuchagua, hata ikiwa inampa fursa ya kuchagua vibaya.
  • Dumisha utangamano na C kadiri uwezavyo, na hivyo kufanya mabadiliko rahisi kutoka kwa upangaji programu ya C iwezekanavyo.
  • Epuka tofauti kati ya C na C++: muundo wowote ambao ni halali katika lugha zote mbili lazima uwe na maana sawa katika kila moja yao na uelekeze kwa tabia sawa ya programu.
  • Epuka vipengele ambavyo vinategemea jukwaa au si vya ulimwengu wote.
  • “Usilipe kwa kile ambacho hutumii”—hakuna kipengele cha lugha kinachopaswa kusababisha uharibifu wa utendakazi kwa programu ambazo hazitumii.
  • Usihitaji mazingira magumu zaidi ya programu.

Chaguo la C kama msingi wa kuunda lugha mpya ya programu inaelezewa na ukweli kwamba lugha C:

1. ni lugha yenye madhumuni mengi, mafupi na ya kiwango cha chini;
2. yanafaa kwa ajili ya kutatua matatizo mengi ya mfumo;
3. kutekelezwa kila mahali na kwa kila kitu;
4. inaingiliana na mazingira ya programu ya UNIX.

- B. Stroustrup. C++ lugha ya programu. Sehemu ya 1.6

Licha ya kasoro kadhaa zinazojulikana za lugha ya C, Stroustrup aliamua kuitumia kama msingi, kwani "C ina shida zake, lakini lugha iliyokuzwa kutoka mwanzo ingekuwa nayo, na tunajua shida za C." Kwa kuongezea, hii ilifanya iwezekane kupata haraka mkusanyaji wa mfano (mbele), ambayo ilitafsiri tu vipengele vilivyoongezwa vya kisintaksia katika lugha asilia ya C.

C++ ilipokua, vipengele vingine vilijumuishwa ambavyo vilishughulikia uwezo wa miundo C, na kwa hivyo swali la kuacha upatanifu wa lugha kwa kuondoa viunzi vilivyopitwa na wakati liliibuliwa mara kwa mara. Walakini, utangamano umedumishwa kwa sababu zifuatazo:

  • uhifadhi wa msimbo wa sasa, ulioandikwa awali katika C na kuhamishiwa moja kwa moja kwa C ++;
  • kuondoa hitaji la kuwafundisha tena waandaaji wa programu ambao hapo awali walisoma C (wanahitaji tu kujifunza zana mpya za C ++);
  • kuondoa mkanganyiko kati ya lugha wakati zinatumiwa pamoja ("ikiwa lugha mbili zinatumiwa pamoja, tofauti zao zinapaswa kuwa ndogo au kubwa sana kwamba haiwezekani kuchanganya lugha").

Kufikia 1983, vipengele vipya vilikuwa vimeongezwa kwa lugha, kama vile vitendaji dhahania, utendaji kazi na upakiaji kupita kiasi wa opereta, marejeleo, vidhibiti, udhibiti wa mtumiaji juu ya udhibiti wa kumbukumbu bila malipo, ukaguzi wa aina ulioboreshwa, na mtindo mpya wa maoni (//). Lugha iliyotokana haikuwa tena toleo lililoongezwa la C ya kawaida na ilibadilishwa jina kutoka C na madarasa hadi "C++". Utoaji wake wa kwanza wa kibiashara ulifanyika mnamo Oktoba 1985.

Jina la lugha linalotokana linatokana na kiendeshaji cha nyongeza cha C++ unary postfix (kuongeza thamani ya kutofautisha kwa moja).

Kabla ya usanifishaji rasmi kuanza, lugha iliendelezwa hasa na Stroustrup kujibu maombi kutoka kwa jumuiya ya programu. Kazi ya maelezo ya kawaida ya lugha ilifanywa na kazi zilizochapishwa kwenye C ++ iliyoandikwa na Stroustrup (maelezo ya lugha, mwongozo wa kumbukumbu, na kadhalika).

Historia ya viwango

Mnamo 1985, toleo la kwanza la Lugha ya Programu ya C++ lilichapishwa, kutoa maelezo ya kwanza ya lugha, ambayo yalikuwa muhimu sana kwa sababu ya ukosefu wa kiwango rasmi.


Mnamo 1989, toleo la 2.0 la C++ lilitolewa. Vipengele vyake vipya vilijumuisha urithi mwingi, madarasa ya kufikirika, kazi za wanachama tuli, utendakazi wa kila mara, na washiriki wanaolindwa. Mnamo 1990, "Mwongozo wa Marejeleo ya Annotated kwa C ++" ulichapishwa, ambayo baadaye ikawa msingi wa kiwango. Masasisho ya hivi majuzi yamejumuisha violezo, vighairi, nafasi za majina, aina mpya za utumaji na aina ya boolean.

Maktaba ya Kawaida ya C++ pia iliibuka nayo. Nyongeza ya kwanza kwa maktaba ya kawaida ya C++ ilikuwa mitiririko ya I/O, ambayo hutoa njia ya kuchukua nafasi ya utendakazi wa jadi wa C printf na scanf. Baadaye, maendeleo muhimu zaidi ya maktaba ya kawaida yalikuwa kujumuishwa kwa Maktaba ya Kiolezo cha Kawaida.

Mnamo 1998, kiwango cha lugha cha ISO/IEC 14882:1998 (kinachojulikana kama C++98), kilichoundwa na Kamati ya Viwango ya C++ ( ISO/IEC JTC1/SC22/WG21 kikundi kazi), kilichapishwa. Kiwango cha C++ hakielezi jinsi vitu vinavyoitwa majina, baadhi ya maelezo ya kipekee ya kushughulikia, na vipengele vingine vya kina vya utekelezaji, na kufanya msimbo wa kitu unaotolewa na wakusanyaji tofauti kutopatana. Hata hivyo, viwango vingi vimeundwa na vyama vya tatu kwa usanifu maalum na mifumo ya uendeshaji.

Mnamo 2005, Ripoti ya Kiufundi ya Maktaba 1 (iliyofupishwa kama TR1) ilitolewa. Ingawa si sehemu rasmi ya kiwango, ripoti inaeleza viendelezi kwa maktaba ya kawaida ambayo waandishi walitarajia kujumuishwa katika toleo linalofuata la lugha ya C++. Usaidizi wa TR1 unaboreka katika takriban vikusanyaji vyote vya C++ vinavyotumika.

Tangu 2009, kazi imefanywa kusasisha kiwango cha awali, toleo la awali la kiwango kipya lilikuwa la kwanza C++09, na mwaka mmoja baadaye C++0x, leo C++11, ambalo lilijumuisha nyongeza kwenye msingi wa lugha na upanuzi wa maktaba ya kawaida, ikiwa ni pamoja na kujumuisha sehemu kubwa ya TR1.

C++ inaendelea kubadilika ili kukidhi mahitaji ya leo. Mojawapo ya vikundi vinavyoendeleza lugha ya C++ na kuwasilisha mapendekezo ya uboreshaji wake kwa Kamati ya Viwango vya C++ ni Boost, ambayo inajishughulisha, miongoni mwa mambo mengine, katika kuboresha uwezo wa lugha hiyo kwa kuiongezea vipengele vya upangaji programu.

Hakuna mtu anayemiliki haki za lugha ya C++; ni bure. Hata hivyo, hati ya kiwango cha lugha yenyewe (bila kujumuisha rasimu) haipatikani bila malipo.

Wakati sifa yako inafanya kazi kwa faida yako

Usimamizi wa jamii

Uundaji wa Toni ya Sauti. Usindikaji wa haraka wa maoni hasi na mazuri kwa niaba ya chapa. Usimamizi wa mawasiliano kulingana na hali maalum. Tafsiri ya masuala yenye matatizo kwa mteja.

Mawakala wa ushawishi

Uundaji na utekelezaji wa "virtuals" kwenye vikao na mitandao ya kijamii. Kuna hifadhidata ya akaunti zilizoboreshwa na za moja kwa moja kwenye tovuti zaidi ya 300.

Kufanya kazi na hakiki

Kuandika, kuratibu na kuchapisha hakiki kuhusu chapa kwenye majukwaa ya juu na tovuti za kukagua. Kuchakata na kufunika maoni hasi na mazuri. Matokeo yake, uzembe unalazimishwa hatua kwa hatua kutoka kwa matokeo ya utafutaji.

Ufuatiliaji wa mitandao ya kijamii

Kufanya kazi na Youscan, IQbuzz, mifumo ya Uchanganuzi wa Chapa. Udhibiti wa kutajwa kwa chapa. Kutambua maarifa muhimu na kujibu mara moja hasi. Chombo cha lazima cha kufuatilia maoni ya wateja.

Uchambuzi na utafiti

Uchambuzi wa uwanja wa habari, utafiti wa kitengo cha bidhaa na washindani wakuu wa chapa. Zana hii inashughulikia kazi kutoka kwa ufuatiliaji wa sifa na uuzaji wa wakati halisi hadi utafiti wa kina.

SERM

Uchambuzi wa kina wa matokeo ya utafutaji kwa maneno muhimu yaliyochaguliwa. Kukusanya marejeleo kuhusu mteja kwenye mitandao ya kijamii, vikao na tovuti za habari. Kuunda mkakati wa kushughulikia habari hasi. Mteja hupokea uwasilishaji unaodhibitiwa kikamilifu katika TOP10.