Share to: share facebook share twitter share wa share telegram print page

C++

C++
C++ standartlar komiteti tárepinen tastıyıqlanǵan logotip
Paradigmaları Kóp paradigmalı: proceduralı, imperativ, funkcional, obyektke baǵdarlanǵan, ulıwma, modulli
Shańaraǵı C
Dóretiwshi Byarn Straustrup
Baǵdarlamashı ISO/IEC JTC 1 (Birlesken texnikalıq komitet 1) / SC 22 (Qosımsha komitet 22) / WG 21 (21-jumıs toparı)
Birinshi shıǵarılıwı 1985
Turaqlı versiyası C++23 (ISO/IEC 14882:2024) / 19 oktyabr 2024
Sınaq versiyası C++26 / 5 avgust 2025
Tiplestiriw tártibi Statikalıq, kúshli, nominativ, tolıq emes shıǵarılǵan
Operaciyalıq sistema Kross-platforma
Fayl keńeytpeleri .C, .cc, .cpp, .cxx, .c++, .h, .H, .hh, .hpp, .hxx, .h++ .cppm, .ixx
Veb-saytı isocpp.org
Tiykarǵı implementaciyalar GCC, LLVM Clang, Microsoft Visual C++, Embarcadero C++Builder, Intel C++ Compiler, IBM XL C++, EDG
Tásir etken tiller Ada, ALGOL 68, BCPL, C, CLU, F#, ML, Mesa, Modula-2, Simula, Smalltalk
Tásirlengen tiller Ada 95, C#, C99, Carbon, Chapel, Clojure, D, Java, JS++, Lua, Nim, Objective-C++, Perl, PHP, Python, Rust, Seed7

C++ — daniyalı kompyuter ilimpazı Byarn Straustrup tárepinen jaratılǵan joqarı dárejeli, ulıwma maqsetli programmalastırıw tili. Dáslep 1985-jılı C programmalastırıw tiliniń keńeytpesi retinde obyektke baǵdarlanǵan programmalastırıw (OBP) imkaniyatların qostı, sonnan keyin waqıt ótiwi menen jáne de kóp OBP hám basqa imkaniyatlardı qosıp, ádewir keńeydi; 1997/C++98 standartlastırıwınan baslap, C++ mikrokompyuterler sıyaqlı sistemalar ushın yaki Linux yamasa Windows sıyaqlı operaciyalıq sistemalardı jaratıw ushın tómen dárejeli yadtı manipulyaciyalaw qurallarına qosımsha retinde funkcional imkaniyatlardı qostı, hátte keyinirek ulıwma programmalastırıw (shablonlar arqalı) sıyaqlı imkaniyatlar da payda boldı. C++ ádette kompilyaciyalanatuǵın til retinde ámelge asırıladı hám kóp islep shıǵarıwshılar, sonıń ishinde Free Software Foundation, LLVM, Microsoft, Intel, Embarcadero, Oracle hám IBM C++ kompilyatorların usınadı[1].

C++ sistemalı programmalastırıw hám ornatılǵan, resursları sheklengen programmalıq támiynat hám úlken sistemalardı esapqa alıp, onıń dizaynınıń tiykarǵı ózgeshelikleri retinde islew ónimdarlıǵı, nátiyjeliligi hám qollanıw beyimliligi menen joybarlanǵan[2]. C++ sonday-aq, basqa da kóp tarawlarda paydalı bolıp tabıldı, onıń tiykarǵı kúshli tárepleri programmalıq támiynat infrastrukturası hám resursları sheklengen qosımshalar, sonıń ishinde kompyuter qosımshaları, video oyınlar, serverler (mısalı, elektron kommerciya, veb-izlew yaki maǵlıwmatlar bazası) hám ónimdarlıǵı áhmiyetli qosımshalar (mısalı, telefon kommutatorları yaki kosmos zondları) bolıp tabıladı[3].

C++ Xalıqaralıq Standartlastırıw Shólkemi (ISO) tárepinen standartlastırılǵan, eń sońǵı standart versiyası 2024-jıl oktyabr ayında ISO/IEC 14882:2024 (rásmiy emes túrde C++23 dep ataladı) retinde ISO tárepinen ratifikaciyalanǵan hám járiyalanǵan. C++ programmalastırıw tili dáslep 1998-jılı ISO/IEC 14882:1998 retinde standartlastırılǵan, soń oǵan C++03, C++11, C++14, C++17 hám C++20 standartları menen ózgerisler kirgizilgen. Házirgi C++23 standartı olardıń ornın jańa imkaniyatlar hám keńeytilgen standart kitapxana menen basadı. 1998-jılǵı dáslepki standartlastırıwdan aldın, C++ 1979-jıldan baslap Bell Labs kompaniyasında Straustrup tárepinen C tiliniń keńeytpesi retinde islep shıǵılǵan; ol C tiline uqsas, biraq programmanı shólkemlestiriw ushın joqarı dárejeli imkaniyatlardı usınatuǵın nátiyjeli hám qolaylı tildi qálegen[4]. 2012-jıldan baslap, C++ úsh jıllıq shıǵarıw kestesinde bolıp,[5] C++26 keyingi jobalastırılǵan standart bolıp esaplanadı[6].

Tariyxı

Byarn Straustrup, C++ tilin jaratıwshı, óziniń AT&T Nyu-Djersidegi keńsesinde, shama menen 2000-jıl

1979-jılı daniyalı kompyuter ilimpazı Byarn Straustrup C++ tiliniń baslawshısı bolǵan «Klasslı C» ústinde isley basladı[7]. Jańa tildi jaratıw motivaciyası Straustruptıń PhD dissertaciyası ushın programmalastırıw tájiriybesinen kelip shıqqan. Straustrup Simula tiliniń úlken programmalıq támiynattı islep shıǵıw ushın júdá paydalı imkaniyatları bar ekenin, biraq bul tildiń ámeliy qollanıw ushın júdá áste ekenin, al BCPL tez, biraq úlken programmalıq támiynattı islep shıǵıw ushın dım tómen dárejeli ekenin anıqladı. Straustrup AT&T Bell Labs kompaniyasında isley baslaǵanda, ol bólistirilgen esaplawlarǵa baylanıslı UNIX yadrosın analizlew mashqalasına ushıradı. Óziniń PhD tájiriybesin eslep, Straustrup C tilin Simula sıyaqlı imkaniyatlar menen jetilistiriwge kiristi[8]. C tili onıń ulıwma maqsetli, tez, portativ hám keńnen qollanılatuǵını ushın tańlandı. C hám Simula tilleriniń tásirinen tısqarı, bul jańa tilge ALGOL 68, Ada, CLU hám ML sıyaqlı basqa tiller de tásir etti.

Dáslep, Straustruptıń «Klasslı C» tili C kompilyatorına, Cpre-ge, klasslar, tuwındı klasslar, qatań tiplestiriw, ishki funkciyalar (inlining) hám standart argumentler sıyaqlı imkaniyatlardı qostı[9].

2015-jılı Parijde C++11 imkaniyatları boyınsha ótkerilip atırǵan viktorina

1982-jılı Straustrup «Klasslı C» tiliniń miyrasxorın islep shıǵıwdı basladı, onı bir neshe basqa atamalardan keyin «C++» dep atadı (++ C tilindegi inkrement operatorı bolıp esaplanadı). Jańa imkaniyatlar qosıldı, sonıń ishinde virtual funkciyalar, funkciya hám operatorlardı qayta júklew, siltemeler, konstantalar, tipke qáwipsiz erkin yadtı bólistiriw (new/delete), jaqsılanǵan tipti tekseriw hám eki qıya sızıq (//) penen jazılatuǵın BCPL stilindegi bir qatarlı kommentariyalar. Sonıń menen birge, Straustrup C++ ushın jańa, óz aldına kompilyator Cfront-tı islep shıqtı.

1984-jılı Straustrup birinshi aǵımlı kirgiziw/shıǵarıw kitapxanasın ámelge asırdı. Atalǵan shıǵarıw funkciyasınıń ornına shıǵarıw operatorın usınıw ideyasın Dag MakIlroy usınǵan (ol burın Unix kanalların usınǵan edi).

1985-jılı «C++ programmalastırıw tili» kitabınıń birinshi basılımı shıǵarıldı, bul kitap sol waqıtta rásmiy standart bolmaǵanlıqtan, til ushın tiykarǵı derek boldı[10]. C++ tiliniń birinshi kommerciyalıq realizaciyası sol jıldıń oktyabr ayında shıǵarıldı.

1989-jılı C++ 2.0 shıǵarıldı, onıń izinen 1991-jılı «C++ programmalastırıw tili» kitabınıń jańartılǵan ekinshi basılımı shıqtı[11]. 2.0 versiyasındaǵı jańa imkaniyatlarǵa kóp miyrasxorlıq, abstrakt klasslar, statikalıq klass aǵzaları funkciyaları, konstantalıq klass aǵzaları funkciyaları hám qorǵalǵan aǵzalar kirdi. 1990-jılı «Annotaciyalanǵan C++ maǵlıwmatnaması» járiyalandı. Bul jumıs keleshektegi standart ushın tiykar boldı. Keyinirek qosılǵan imkaniyatlarǵa shablonlar, ayrıqsha jaǵdaylar, atamalar keńisligi, jańa túrlendiriwler hám logikalıq tipi kirdi.

1998-jılı C++98 shıǵarılıp, tildi standartlastırdı, al 2003-jılı kishi jańalaw (C++03) shıǵarıldı.

C++98 den keyin, C++ salıstırmalı túrde áste rawajlandı, tek 2011-jılı C++11 standartı shıǵarılǵanǵa shekem. Bul standart kóp sanlı jańa imkaniyatlardı qostı, standart kitapxananı jáne de keńeytti hám C++ baǵdarlamashılarına kóbirek qolaylıqlar usındı. 2014-jıldıń dekabr ayında shıǵarılǵan kishi C++14 jańalawınan keyin, C++17 de túrli jańa qosımshalar kirgizildi[12]. 2020-jıldıń fevral ayında juwmaqlanǵannan keyin,[13] C++20 standartınıń joybarı 2020-jıl 4-sentyabrde maqullandı hám 2020-jıl 15-dekabrde rásmiy túrde járiyalandı[14][15].

2018-jıl 3-yanvarda Straustrup «C++ programmalastırıw tilin konceptuallastırǵanı hám islep shıqqanı ushın» injeneriya tarawındaǵı Charlz Stark Dreyper sıylıǵınıń 2018-jılǵı jeńimpazı dep járiyalandı[16].

2022-jıl dekabr ayında C++ TIOBE indeksinde úshinshi orındı iyelep, indeks tariyxında birinshi ret Java-dan ozdı. 2024-jıl noyabr ayınıń maǵlıwmatlarına sáykes, bul til Python-nan keyin ekinshi orında, al Java úshinshi orında[17].

2025-jıl mart ayında Straustrup til birlespesin onı qorǵawǵa shaqırdı. Bul til yadtı qol menen basqarıwǵa imkaniyat beretuǵınlıqtan, baǵdarlamashı tárepinen abaysızda qáte qollanılǵanda, programmalarǵa buferdiń tolıp ketiwi sıyaqlı qáwipsizlik qáwiplerin payda etetuǵın qáteler kirgiziliwi múmkin[18].

Etimologiyası

Straustruptıń pikirinshe, «bul atama C tilinen evolyuciyalıq ózgerislerdiń tábiyatın kórsetedi»[19]. Bul atama Rik Maskittige tiyisli (1983-jıldıń ortası) hám birinshi ret 1983-jılı dekabrde qollanılǵan. 1992-jılı Maskittiden rásmiy emes túrde atama haqqında soralǵanda, ol onıń házil retinde berilgenin aytqan. Atama C tiliniń ++ operatorınan (ol ózgeriwshiniń mánisin arttıradı) hám jetilistirilgen kompyuter programmasın kórsetiw ushın «+» belgisin qollanıwdıń keń tarqalǵan atama konvenciyasınan kelip shıqqan.

C++ tilin islep shıǵıw dáwirinde, ol óziniń sońǵı atamasın alǵanǵa shekem «jańa C» hám «Klasslı C»[20] dep atalǵan.

Filosofiyası

C++ tiliniń pútkil ómiri dawamında, onıń rawajlanıwı hám evolyuciyası bir qatar principlerge tiykarlanǵan:

  • Ol haqıyqıy máseleler menen basqarılıwı kerek hám onıń qásiyetleri real dúnya programmalarında dárhal paydalı bolıwı tiyis.
  • Hárbir qásiyet ámelge asırılatuǵın bolıwı kerek (bunı islewdiń anıq jolı bolıwı kerek).
  • Baǵdarlamashılar ózleriniń programmalastırıw stilin erkin tańlawı kerek, hám bul stil C++ tárepinen tolıq qollap-quwatlanıwı tiyis.
  • Paydalı qásiyetke ruqsat beriw C++ tiliniń hár qanday múmkin bolǵan qáte qollanılıwınıń aldın alıwdan áhmiyetlirek.
  • Ol programmalardı óz aldına, anıq belgilengen bóleklerge shólkemlestiriw ushın imkaniyatlar beriwi kerek, hám óz aldına islep shıǵılǵan bóleklerdi birlestiriw ushın imkaniyatlar beriwi tiyis.
  • Tipler sistemasın jasırın buzıwlarǵa jol qoyılmaydı (biraq anıq buzıwlarǵa ruqsat etiledi; yaǵnıy, baǵdarlamashı tárepinen anıq soralǵanlarǵa).
  • Paydalanıwshılar tárepinen jaratılǵan tipler ornatılǵan tipler sıyaqlı birdey qollap-quwatlawǵa hám ónimdarlıqqa iye bolıwı kerek.
  • Paydalanılmaǵan qásiyetler jaratılǵan orınlanıwshı fayllarǵa unamsız tásir etpewi kerek (mısalı, tómen ónimdarlıqta).
  • C++ tilinen tómen til bolmawı kerek (assembler tilinen basqa).
  • C++ basqa bar bolǵan programmalastırıw tilleri menen birge islewi kerek, óziniń ayrıqsha hám úylesimsiz programmalastırıw ortalıǵın rawajlandırıwdıń ornına.
  • Eger baǵdarlamashınıń maqseti belgisiz bolsa, baǵdarlamashıǵa qol menen basqarıwdı usınıw arqalı onı kórsetiwge ruqsat beriliwi kerek.

Standartlastırıw

C++ standartları
Jıl ISO/IEC standartı Rásmiy emes ataması
1998 14882:1998[21] C++98
2003 14882:2003[22] C++03
2011 14882:2011[23] C++11, C++0x
2014 14882:2014[24] C++14, C++1y
2017 14882:2017[25] C++17, C++1z
2020 14882:2020[26] C++20, C++2a
2024 14882:2024[27] C++23, C++2b
TBA C++26, C++2c

C++ tili JTC1/SC22/WG21 dep atalatuǵın ISO jumıs toparı tárepinen standartlastırılǵan. Jumıs toparı hár jılı úsh háptelik ushırasıwlar ótkeredi[28]. Házirgi waqıtqa shekem ol C++ standartınıń jeti redakciyasın shıǵardı hám házirgi waqıtta kelesi redakciya, yaǵnıy C++26 ústinde islemekte.

1996-jılı Stokgolmde ótkerilgen C++ standartları komitetiniń jıynalısınan kórinis

1998-jılı ISO jumıs toparı C++ tilin birinshi ret ISO/IEC 14882:1998 retinde standartlastırdı, ol rásmiy emes túrde C++98 dep ataladı. 2003-jılı ol C++ standartınıń ISO/IEC 14882:2003 dep atalatuǵın jańa versiyasın shıǵardı, ol C++98 de anıqlanǵan mashqalalardı dúzetti.

Standarttıń kelesi úlken redakciyası rásmiy emes túrde «C++0x» dep ataldı, biraq ol 2011-jılǵa shekem shıǵarılmadı[29]. C++11 (14882:2011) tiykarǵı tilge de, standart kitapxanaǵa da kóp qosımshalardı kirgizdi.

2014-jılı C++14 (C++1y dep te ataladı) tiykarınan qátelerdi dúzetiw hám kishi jetilistiriwlerdi óz ishine alǵan C++11 ge kishi keńeytpe retinde shıǵarıldı[30]. Xalıqaralıq standart joybarı boyınsha dawıs beriw proceduraları 2014-jıldıń avgust ayınıń ortalarında juwmaqlandı[31].

C++14 ten keyin, rásmiy emes túrde C++1z dep atalatuǵın úlken redakciya - C++17, ISO C++ komiteti tárepinen 2017-jıldıń iyul ayınıń ortalarında tamamlandı hám 2017-jılı dekabrde maqullandı hám basıp shıǵarıldı[32].

Standartlastırıw procesiniń bir bólimi retinde, ISO sonday-aq texnikalıq esabatlardı hám specifikaciyalardı da járiyalaydı:

  • ISO/IEC TR 18015:2006[33] C++ tilin ornatılǵan sistemalarda qollanıw hám C++ tili menen kitapxana ózgesheliklerin ónimdarlıqqa tásiri haqqında,
  • ISO/IEC TR 19768:2007[34] (C++ Texnikalıq Esabatı 1 dep te belgili) tiykarınan C++11 ge integraciyalanǵan kitapxana keńeytpeleri haqqında,
  • ISO/IEC TR 29124:2010[35] C++17 ge integraciyalanǵan arnawlı matematikalıq funkciyalar haqqında,
  • ISO/IEC TR 24733:2011[36] onlıq útirli arifmetika haqqında,
  • ISO/IEC TS 18822:2015[37] C++17 ge integraciyalanǵan standart fayl sisteması kitapxanası haqqında,
  • ISO/IEC TS 19570:2015[38] C++17 ge integraciyalanǵan standart kitapxana algoritmleriniń parallel versiyaları haqqında,
  • ISO/IEC TS 19841:2015[39] programmalıq támiynat tranzakciyalıq yadı haqqında,
  • ISO/IEC TS 19568:2015[40] ayırımları C++17 ge integraciyalanǵan kitapxana keńeytpeleriniń jańa toplamı haqqında,
  • ISO/IEC TS 19217:2015[41] C++20 ǵa integraciyalanǵan C++ koncepciyaları haqqında,
  • ISO/IEC TS 19571:2016[42] ayırımları C++20 ǵa integraciyalanǵan parallellik ushın kitapxana keńeytpeleri haqqında,
  • ISO/IEC TS 19568:2017[43] ulıwma maqsetli kitapxana keńeytpeleriniń jańa toplamı haqqında,
  • ISO/IEC TS 21425:2017[44] C++20 ǵa integraciyalanǵan diapazonlar ushın kitapxana keńeytpeleri haqqında,
  • ISO/IEC TS 22277:2017[45] C++20 ǵa integraciyalanǵan korutinler (qosımsha baǵdarlamalar) haqqında,
  • ISO/IEC TS 19216:2018[46] tarmaq kitapxanası haqqında,
  • ISO/IEC TS 21544:2018[47] C++20 ǵa integraciyalanǵan moduller haqqında,
  • ISO/IEC TS 19570:2018[48] parallelizm ushın kitapxana keńeytpeleriniń jańa toplamı haqqında,
  • ISO/IEC TS 23619:2021[49] refleksiv programmalastırıw (sáwleleniw) ushın jańa keńeytpeler haqqında,
  • ISO/IEC TS 9922:2024[50] parallellik keńeytpeleriniń jańa toplamı haqqında, hám
  • ISO/IEC TS 19568:2024[51] kitapxana keńeytpeleriniń taǵı bir jańa toplamı haqqında.

Kóbirek texnikalıq specifikaciyalar islep shıǵılmaqta hám maqullawdı kútpekte.

Til

C++ tiliniń eki tiykarǵı komponentti bar: tiykarınan C ishki toplamı tárepinen usınılatuǵın apparatlıq támiynat ózgeshelikleriniń tikkeley sáykesligi hám sol sáykesliklerge tiykarlanǵan nol-qosımsha shıǵınlı abstrakciyalar. Straustrup C++ tilin «nátiyjeli hám kórkem abstrakciyalardı qurıw hám qollanıw ushın [arnalǵan] jeńil salmaqlı abstrakciyalıq programmalastırıw tili» dep súwretleydi; hám «apparatlıq támiynatqa kiriwdi de, abstrakciyanı da usınıw C++ tiliniń tiykarı bolıp tabıladı. Bunı nátiyjeli orınlaw onı basqa tillerden ajıratıp turadı»[52].

C++ tili C sintaksisiniń kópshilik bólegin miyras etip alǵan. C standartına sáykes keletuǵın "Hello world" programması, sonday-aq jaramlı C++ "Hello world" programması bolıp tabıladı. Tómende standart shıǵarıwǵa xabar jazıw ushın C++ standart kitapxanasınıń aǵım imkaniyatın qollanatuǵın Byarn Straustruptıń "Hello world" programmasınıń versiyası keltirilgen:[53][54]

#include <iostream>

int main()
{
    std::cout << "Hello, world!\n";
}

Standart kitapxana

C++98 retinde maqullanǵan «Jumısshı hújjet» standartınıń joybarı; onıń kóleminiń yarımı C++ standart kitapxanasına arnalǵan.

C++ standartı eki bólimnen ibarat: tiykarǵı til hám standart kitapxana. C++ baǵdarlamashıları sońǵısın C++ tiliniń hárbir úlken implementaciyasında kútedi; ol agregat tiplerdi (vektorlar, dizimler, kartalar, toplamlar, gezekler, stekler, massivler, kortejler), algoritmlerdi (tabıw, hár biri ushın, binar izlew, tosınnan aralastırıw hám t.b.), kirgiziw/shıǵarıw quralların (iostream, konsoldan hám fayllardan oqıw hám jazıw ushın), fayl sisteması kitapxanasın, lokalizaciyanı qollap-quwatlawdı, yadtı avtomat túrde basqarıw ushın aqıllı kórsetkishlerdi, turaqlı ańlatpalardı qollap-quwatlawdı, kóp aǵımlı kitapxananı, atomlıq operaciyalardı qollap-quwatlawdı (hesh qanday sırtqı sinxronizaciyasız bir waqıttıń ózinde eń kóbi bir aǵım tárepinen ózgeriwshini oqıwǵa yamasa jazıwǵa imkaniyat beredi), waqıt utilitlerin (ólshew, aǵımdaǵı waqıttı alıw hám t.b.), C++ ózgesheliklerin qolanbaytuǵın qáteler haqqında xabar beriwdi C++ ózgesheliklerine aylandırıw sistemasın, tosınnan sanlar generatorın hám C standartı kitapxanasınıń sál ózgerilgen versiyasın (onı C++ tipler sistemasına sáykes keltiriw ushın) óz ishine aladı.

C++ standart kitapxanasınıń dizaynı, C standart kitapxanası sıyaqlı, minimalistik bolıp, tek programmalastırıw ushın tiykarǵı ózgesheliklerdi óz ishine aladı, Java standart kitapxanası yamasa C# standart kitapxanası tárepinen usınılatuǵın kópshilik qánigelestirilgen ózgesheliklerge iye emes. Kóbirek ózgeshelikler ushın, standart kitapxananı tolıqtırıw maqsetinde qosımsha imkaniyatlardı usınatuǵın Boost kitapxanaları hám POCO C++ kitapxanaları sıyaqlı ayırım úshinshi tárep kitapxanaları qollanılıwı múmkin.

C++ kitapxanasınıń úlken bólegi Standart shablon kitapxanasına (STL) tiykarlanǵan. STL tárepinen usınılǵan paydalı qurallarǵa obektler toplamları retinde konteynerler (mısalı, vektorlar hám dizimler), konteynerlerge massiv sıyaqlı kiriwdi támiyinleytuǵın iteratorlar hám izlew hám sortlaw sıyaqlı operaciyalardı orınlaytuǵın algoritmler kiredi.

Sonıń menen bir qatarda, (multi)kartalar (associativ massivler) hám (multi)toplamlar usınılǵan, olardıń barlıǵı úylesimli interfeyslerdi eksportlaydı. Sonlıqtan, shablonlardı qollanıp, hár qanday konteyner menen yamasa iteratorlar menen belgilengen hár qanday izbe-izlikte isleytuǵın ulıwma algoritmlerdi jazıw múmkin.

C tilindegidey, kitapxananıń ózgesheliklerine standart temanı (baslama faylın) qosıw ushın #include direktivasın qollanıw arqalı kiriwge boladı. C++ standart kitapxanası 105 standart temanı (baslama faylın) usınadı, olardıń 27 si gónergen. C++20 da modullerdiń kirgiziliwi menen bul temalarǵa `import` arqalı kiriwge boladı, al C++23 te pútkil standart kitapxananı endi tikkeley modul retinde `import std;` arqalı importlaw múmkin. Házirgi waqıtta, C++ standart kitapxanası eki moduldi usınadı: `std` hám `std.compat` (C standart kitapxanasınıń imkaniyatların global atlar keńisligine eksportlaytuǵın `std` ushın úylesimlilik moduli).

Standart óziniń ishine Aleksandr Stepanov tárepinen dáslepki ret islep shıǵılǵan STL-di óz ishine aladı, ol kóp jıllar dawamında ulıwma algoritmler hám konteynerler menen tájiriybe ótkergen. Ol C++ penen isley baslaǵanda, aqırı `inlining` (kodtı ornatıw) hám funkciya kórsetkishleriniń ornına kompilyaciya waqtında baylanıstırıw sıyaqlı C++ ózgeshelikleriniń arqasında, mısalı, C standart kitapxanasınıń `qsort` funkciyasınan da jaqsıraq isleytuǵın ulıwma algoritmlerdi (mısalı, STL sortlaw) jaratıw múmkin bolǵan tildi taptı. Standartta ol «STL» dep atalmaydı, sebebi ol tek standart kitapxananıń bir bólegi bolıp tabıladı, biraq bul termin onı standart kitapxananıń qalǵan bóleginen (kirgiziw/shıǵarıw aǵımları, xalıqaralıqlastırıw, diagnostika, C kitapxanasınıń ishki toplamı, hám t.b.) ajıratıw ushın ele de keńnen qollanıladı[55].

Kóplegen C++ kompilyatorları, hám barlıq tiykarǵıları, C++ standart kitapxanasınıń standartlarǵa sáykes implementaciyasın usınadı.

C++ tiykarǵı kórsetpeleri

C++ Core Guidelines[56] – bul C++ tiń avtorı Byarn Straustrup hám C++ ISO Jumıs toparınıń jetekshisi hám baslıǵı Gerb Satter basshılıǵındaǵı baslama bolıp, baǵdarlamashılarǵa C++11 hám onnan jańa til standartları ushın eń jaqsı ámeliyatlardı qollanıp, 'Zamanagóy C++' jazıwǵa járdem beriwge hám kompilyatorlar hám statikalıq tekseriw quralların islep shıǵıwshılarǵa jaman programmalastırıw ámeliyatların anıqlaw ushın qaǵıydalar jaratıwǵa járdemlesiwge baǵdarlanǵan.

Tiykarǵı maqset – tip hám resurslar qáwipsizligin támiyinleytuǵın C++ kodın nátiyjeli hám izbe-iz jazıw.

Core Guidelines CPPCon 2015 konferenciyasınıń ashılıw bayanatında járiyalandı[57].

Kórsetpeler Guideline Support Library (GSL)[58] menen birge usınıladı, bul Core Guidelines-tı ámelge asırıw ushın tek tema fayllarınan ibarat tipler hám funkciyalar kitapxanası hám Kórsetpe qaǵıydaların orınlawdı qadaǵalaytuǵın statikalıq tekseriw quralları[59].

Úylesimlilik

Kompilyator islep shıǵarıwshılarına kóbirek erkinlik beriw ushın, C++ standartları komiteti atamalardı ózgertiw, ózgesheliklerdi qayta islew hám basqa da implementaciyaǵa tán qásiyetlerdiń orınlanıwın belgilemewge sheshim qabıl etti. Bul sheshimniń unamsız tárepi – hár qıylı kompilyatorlar tárepinen islep shıǵarılǵan obekt kodınıń úylesimsiz bolıwı kútiledi. Degen menen, belgili bir mashinalar yamasa operaciyalıq sistemalar ushın kompilyatorlardı standartlastırıwǵa háreketler bar. Mısalı, Itanium C++ ABI (atına qaramastan) processorǵa ǵárezsiz hám GCC hám Clang tárepinen ámelge asırılǵan[60].

C tili menen

C++ kóbinese C tiliniń ústingi toplamı dep esaplanadı, biraq bul qatań túrde durıs emes[61]. Kóplegen C kodın C++ te durıs kompilyaciyalanatuǵın etip ańsat keltiriw múmkin, biraq ayırım jaramlı C kodın C++ te jaramsız etetuǵın yamasa basqasha islewine sebep bolatuǵın birneshe ayırmashılıqlar bar. Mısalı, C tili `void` tan basqa kórsetkish tiplerine jasırın túrlendiriwge ruqsat beredi, biraq C++ (tip qáwipsizligi sebepleri boyınsha) ruqsat bermeydi. Sonday-aq, C++ `new` hám `class` sıyaqlı kóp jańa gilt sózlerdi anıqlaydı, olar C programmasında identifikatorlar (mısalı, ózgeriwshi atamaları) retinde qollanılıwı múmkin.

Ayırım úylesimsizlikler C standartınıń 1999-jılǵı redakciyası (C99) menen saplastırıldı, ol endi bir qatarlı kommentariyalar (`//`) hám kod penen aralas deklaraciyalar sıyaqlı C++ qásiyetlerin qollap-quwatlaydı. Ekinshi jaǵınan, C99 C++ qollap-quwatlamaytuǵın bir qatar jańa qásiyetlerdi kirgizdi, olar C++ ushın úylesimsiz yamasa artıqsha edi, mısalı: ózgeriwshi uzınlıqtaǵı massivler, jergilikli kompleks san tipleri (degen menen, C++ standart kitapxanasındaǵı `std::complex` klassı uqsas funkcionallıqtı usınadı, biraq kod penen úylesimli emes), belgilengen inicializatorlar, qurama literallar hám `restrict` gilt sózi.[75] C99 tárepinen kirgizilgen ayırım ózgeshelikler C++ standartınıń kelesi versiyası, C++11 ge kirgizildi (artıqsha bolmaǵanlarınan)[62][63][64]. Degen menen, C++11 standartı jańa úylesimsizliklerdi kirgizedi, mısalı, simvollıq kórsetkishke qatar literalın menshiklewge tıyım salıw, bul C de durıs bolıp qala beredi.

C hám C++ kodların aralastırıw ushın, C hám C++ tillerinde shaqırılatuǵın/qollanılatuǵın hár qanday funkciya járiyalanıwı yamasa anıqlaması C baylanısına iye ekenligin kórsetiw ushın `extern "C" {/.../}` blogı ishinde járiyalanıwı kerek. Bunday funkciya atamalardı ózgertiwge baylanıslı qásiyetlerge (yaǵnıy, funkciyanı qayta júklewge) súyene almaydı.

Ishki assembler

C yamasa C++ tilinde islep shıǵılǵan programmalar kóbinese ónimlilikti optimallastırıw zárúr bolǵanda, joqarı dárejeli programmalastırıw tillerine[65][66] salıstırǵanda tómengi dárejedegi funkcionallıqlar, joqarıraq tezlik hám keńeytilgen basqarıw imkaniyatlarınan paydalanıw ushın ishki assemblerdi qollanadı. C++ `asm` járiyalawların[67] qollanıp, assembler kodın ornatıwdı qollap-quwatlaydı, biraq ishki assemblerdiń úylesimliligi kompilyatorlar hám arxitekturalar arasında aytarlıqtay dárejede ózgeshelenedi. Python yamasa Java sıyaqlı joqarı dárejeli tillerdiń qásiyetlerinen ayırmashılıǵı, assembler kodı tiykarǵı processorǵa hám kompilyator implementaciyasına júdá ǵárezli boladı.

Kompilyatorlar arasındaǵı ayırmashılıqlar

Hár qıylı C++ kompilyatorları ishki assemblerdi hár qıylı usıllar menen ámelge asıradı.

  • GCC (GNU Compiler Collection) hám Clang:[68] GCC keńeytilgen ishki assembler sintaksisin qollanadı. `-ansi` hám `-std` opciyaları menen kompilyaciyalanıwı múmkin bolǵan kod jazǵanda `asm` ornına `__asm__` gilt sózin qollanıp, kirgiziw/shıǵarıw operandları hám buzılǵan registrlerdi kórsetiwge imkaniyat beredi. Bul usıl Intel[69] hám IBM[70] kompilyatorları tárepinen de keńnen qabıl etilgen.
  • MSVC (Microsoft Visual C++): Ishki assembler kompilyatorǵa ornatılǵan. Burın `__asm` gilt sózi arqalı ishki assemblerdi qollap-quwatlaǵan, biraq bul imkaniyat 64-bitli rejimde alıp taslanǵan hám onıń ornına bólek `.asm` modullerin talap etedi[71].
  • TI ARM Clang hám Ornatılǵan Kompilyatorlar:[72] Texas Instruments'tiń TI Arm Clang sıyaqlı ayırım ornatılǵan sistemalar ushın kompilyatorlar ishki assemblerge ruqsat beredi, biraq registr konvenciyaları hám shaqırıw konvenciyaları menen kelispewshiliklerdiń aldın alıw ushın qatańıraq qaǵıydalar qoyadı.

C++ hám Assembler arasındaǵı óz-ara islesiw

C++ ASM kodın integraciyalawdıń eki tiykarǵı usılın usınadı.

1. Óz aldına assembler faylları – Assembler kodı bólek jazıladı hám C++ kodı menen baylanıstırıladı[73].

2. Ishki assembler – Assembler kodı kompilyatorǵa tán keńeytpeler arqalı C++ kodı ishine kiritiledi.

ASM beyimlesiwi ushın kodqa mısal
  • C++ tilinen assembler funkciyasın shaqırǵanda, C++ atamaların burmalanıwdıń aldın alıw ushın `extern "C" qollanıń.
// main.cpp
import std;

extern "C" int add_asm(int, int);  // Assembler funkciyasın járiyalaw

int main()
{
    int result = add_asm(5, 7);
    std::println("ASM-nen alınǵan nátiyje: {}", result);
    return 0;
}
# RISC-V arxitekturasın qollanıp jazılǵan asm kod
.section .text
.global add_asm

add_asm:
    add a0, a0, a1  # Birinshi argumentti (a0) hám ekinshi argumentti (a1) qosıp, nátiyjeni a0 ge saqlaw
    ret             # Qaytarıw (a0 qaytarılatuǵın mánisti saqlaydı)
  • Assemblerdegi global ózgeriwshiler C++ tilinde `extern` dep járiyalanıwı hám assemblerde `.global` dep belgileniwi kerek.
// main.cpp
import std;

extern "C" int global_var;  // Assemblerden global ózgeriwshini járiyalaw

int main()
{
    std::println("ASM-nen alınǵan global ózgeriwshi: {}", global_var);
    return 0;
}
# RISC-V arxitekturasın qollanıp jazılǵan asm
.section .data
.global global_var
.align 4

global_var:
    .word 42  # Pútin san mánisin belgilew
  • Ishki assembler `asm` gilt sózin qollanıp, ASM kodın tikkeley C++ ishine ornatıwǵa múmkinshilik beredi.
// main.cpp (GCC/CLANG kompilyatorın qollanıp)
import std;

int main()
{
    int x = 10, y = 20, sum;
    asm volatile (
        "add %0, %1, %2"
        : "=r" (sum)   // Shıǵarıw operandı (registrde saqlanadı)
        : "r" (x), "r" (y) // Kirgiziw operandları (registrlerde saqlanadı)
    );
    std::println("Ishki ASM arqalı alınǵan summa: {}", sum);
    return 0;
}

Derekler

  1. Stroustrup, Bjarne „1“,. The C++ Programming Language, Third, Addison-Wesley, 1997. ISBN 0-201-88954-4. OCLC 59193992. 
  2. Stroustrup, B. «Lecture:The essence of C++. University of Edinburgh.». YouTube (6-may 2014-jıl). 28-aprel 2015-jılda túp nusqadan arxivlendi. Qaraldı: 12-iyun 2015-jıl.
  3. Stroustrup, Bjarne «C++ Applications». stroustrup.com (17-fevral 2014-jıl). 4-aprel 2021-jılda túp nusqadan arxivlendi. Qaraldı: 5-may 2014-jıl.
  4. «Bjarne Stroustrup's Homepage». www.stroustrup.com. 14-may 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-may 2013-jıl.
  5. «C++ IS schedule». 10-avgust 2020-jılda túp nusqadan arxivlendi. Qaraldı: 9-avgust 2020-jıl.
  6. «C++; Where it's heading». 3-dekabr 2018-jılda túp nusqadan arxivlendi. Qaraldı: 3-dekabr 2018-jıl.
  7. Stroustrup, Bjarne «Bjarne Stroustrup's FAQ: When was C++ invented?». stroustrup.com (7-mart 2010-jıl). 6-fevral 2016-jılda túp nusqadan arxivlendi. Qaraldı: 16-sentyabr 2010-jıl.
  8. Stroustrup, Bjarne «Evolving a language in and for the real world: C++ 1991-2006». 20-noyabr 2007-jılda túp nusqadan arxivlendi. Qaraldı: 14-avgust 2013-jıl.
  9. Stroustrup, Bjarne «A History of C ++ : 1979− 1991». 2-fevral 2019-jılda túp nusqadan arxivlendi. Qaraldı: 18-iyul 2013-jıl.
  10. Stroustrup, Bjarne «The C++ Programming Language». 9-avgust 2012-jılda túp nusqadan arxivlendi. Qaraldı: 16-sentyabr 2010-jıl.
  11. Stroustrup, Bjarne «The C++ Programming Language». 9-avgust 2012-jılda túp nusqadan arxivlendi. Qaraldı: 16-sentyabr 2010-jıl.
  12. Sutter, Herb «Trip report: Summer ISO C++ standards meeting (Oulu)». herbsutter.com (30-iyun 2016-jıl). — „the next standard after C++17 will be C++20“. 8-oktyabr 2016-jılda túp nusqadan arxivlendi.
  13. Dusíková, Hana «N4817: 2020 Prague Meeting Invitation and Information» (6-noyabr 2019-jıl). 29-dekabr 2019-jılda túp nusqadan arxivlendi. Qaraldı: 13-fevral 2020-jıl.
  14. «Current Status». isocpp.org. 8-sentyabr 2020-jılda túp nusqadan arxivlendi. Qaraldı: 7-sentyabr 2020-jıl.
  15. «C++20 Approved -- Herb Sutter». isocpp.org. 11-sentyabr 2020-jılda túp nusqadan arxivlendi. Qaraldı: 8-sentyabr 2020-jıl.
  16. National Academy of Engineering (3-yanvar 2018-jıl). „Computer Science Pioneer Bjarne Stroustrup to Receive the 2018 Charles Stark Draper Prize for Engineering“. Press-reliz.
  17. TIOBE. «TIOBE Index for November 2024». TIOBE.com. TIOBE Company (noyabr 2024). 18-noyabr 2024-jılda túp nusqadan arxivlendi. Qaraldı: 18-noyabr 2024-jıl.
  18. Claburn, Thomas (2 March 2025). "C++ creator calls for help to defend programming language from 'serious attacks'". The Register. https://www.theregister.com/2025/03/02/c_creator_calls_for_action/. 
  19. «Bjarne Stroustrup's FAQ – Where did the name "C++" come from?». 6-fevral 2016-jılda túp nusqadan arxivlendi. Qaraldı: 16-yanvar 2008-jıl.
  20. «C For C++ Programmers». Northeastern University. 17-noyabr 2010-jılda túp nusqadan arxivlendi. Qaraldı: 7-sentyabr 2015-jıl.
  21. «ISO/IEC 14882:1998». International Organization for Standardization. 15-yanvar 2017-jılda túp nusqadan arxivlendi. Qaraldı: 23-noyabr 2018-jıl.
  22. «ISO/IEC 14882:2003». International Organization for Standardization. 13-avgust 2021-jılda túp nusqadan arxivlendi. Qaraldı: 23-noyabr 2018-jıl.
  23. «ISO/IEC 14882:2011». International Organization for Standardization. 27-may 2016-jılda túp nusqadan arxivlendi. Qaraldı: 23-noyabr 2018-jıl.
  24. «ISO/IEC 14882:2014». International Organization for Standardization. 29-aprel 2016-jılda túp nusqadan arxivlendi. Qaraldı: 23-noyabr 2018-jıl.
  25. «ISO/IEC 14882:2017». International Organization for Standardization. 29-yanvar 2013-jılda túp nusqadan arxivlendi. Qaraldı: 2-dekabr 2017-jıl.
  26. «ISO/IEC 14882:2020». International Organization for Standardization. 16-dekabr 2020-jılda túp nusqadan arxivlendi. Qaraldı: 16-dekabr 2020-jıl.
  27. «ISO/IEC 14882:2024». International Organization for Standardization. Qaraldı: 21-oktyabr 2020-jıl.
  28. «Meetings and Participation». News, Status & Discussion About Standard C++. The Standard C++ Foundation. Qaraldı: 6-sentyabr 2025-jıl.
  29. «We have an international standard: C++0x is unanimously approved». Sutter's Mill (12-avgust 2011-jıl). 28-iyun 2018-jılda túp nusqadan arxivlendi. Qaraldı: 23-noyabr 2018-jıl.
  30. «The Future of C++». 23-oktyabr 2018-jılda túp nusqadan arxivlendi. Qaraldı: 23-noyabr 2018-jıl.
  31. «We have C++14! : Standard C++». isocpp.org. 19-avgust 2014-jılda túp nusqadan arxivlendi. Qaraldı: 19-avgust 2014-jıl.
  32. Sutter, Herb «Trip report: Summer ISO C++ standards meeting (Toronto)» (15-iyul 2017-jıl). 6-avgust 2017-jılda túp nusqadan arxivlendi. Qaraldı: 4-avgust 2017-jıl.
  33. «ISO/IEC TR 18015:2006». International Organization for Standardization. 15-yanvar 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2019-jıl.
  34. «ISO/IEC TR 19768:2007». International Organization for Standardization. 4-mart 2016-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2019-jıl.
  35. «ISO/IEC TR 29124:2010». International Organization for Standardization. 12-yanvar 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2019-jıl.
  36. «ISO/IEC TR 24733:2011». International Organization for Standardization. 15-yanvar 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2019-jıl.
  37. «ISO/IEC TS 18822:2015». International Organization for Standardization. 15-yanvar 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2019-jıl.
  38. «ISO/IEC TS 19570:2015». International Organization for Standardization. 15-yanvar 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2019-jıl.
  39. «ISO/IEC TS 19841:2015». International Organization for Standardization. 15-yanvar 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2019-jıl.
  40. «ISO/IEC TS 19568:2015». International Organization for Standardization. 15-yanvar 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2019-jıl.
  41. «ISO/IEC TS 19217:2015». International Organization for Standardization. 15-yanvar 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2019-jıl.
  42. «ISO/IEC TS 19571:2016». International Organization for Standardization. 15-yanvar 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2019-jıl.
  43. «ISO/IEC TS 19568:2017». International Organization for Standardization. 15-yanvar 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2019-jıl.
  44. «ISO/IEC TS 21425:2017». International Organization for Standardization. 15-yanvar 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2019-jıl.
  45. «ISO/IEC TS 22277:2017». International Organization for Standardization. 15-yanvar 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2019-jıl.
  46. «ISO/IEC TS 19216:2018». International Organization for Standardization. 15-yanvar 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2019-jıl.
  47. «ISO/IEC TS 21544:2018». International Organization for Standardization. 15-yanvar 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2019-jıl.
  48. «ISO/IEC TS 19570:2018». International Organization for Standardization. 15-yanvar 2019-jılda túp nusqadan arxivlendi. Qaraldı: 15-fevral 2019-jıl.
  49. «ISO/IEC TS 23619:2021». International Organization for Standardization. 15-dekabr 2018-jılda túp nusqadan arxivlendi. Qaraldı: 11-oktyabr 2021-jıl.
  50. «ISO/IEC TS 9922:2024». International Organization for Standardization. 1-aprel 2025-jılda túp nusqadan arxivlendi. Qaraldı: 1-aprel 2025-jıl.
  51. «ISO/IEC TS 19568:2024». International Organization for Standardization. 25-fevral 2025-jılda túp nusqadan arxivlendi. Qaraldı: 1-aprel 2025-jıl.
  52. B. Stroustrup (interviewed by Sergio De Simone). «Stroustrup: Thoughts on C++17 - An Interview» (30-aprel 2015-jıl). 8-iyul 2015-jılda túp nusqadan arxivlendi. Qaraldı: 8-iyul 2015-jıl.
  53. Stroustrup, Bjarne. The C++ Programming Language, Special, Addison-Wesley, 2000 — 46 bet. ISBN 0-201-70073-5. 
  54. Stroustrup, Bjarne «Open issues for The C++ Programming Language (3rd Edition)». 5-may 2014-jılda túp nusqadan arxivlendi. Qaraldı: 5-may 2014-jıl.
  55. Graziano Lo Russo. «An Interview with A. Stepanov». stlport.org (2008). 4-mart 2009-jılda túp nusqadan arxivlendi. Qaraldı: 8-oktyabr 2015-jıl.
  56. «C++ Core Guidelines». isocpp.github.io. 16-fevral 2020-jılda túp nusqadan arxivlendi. Qaraldı: 9-fevral 2020-jıl.
  57. «Bjarne Stroustrup announces C++ Core Guidelines : Standard C++». isocpp.org. 11-may 2020-jılda túp nusqadan arxivlendi. Qaraldı: 31-mart 2020-jıl.
  58. «microsoft/GSL» (18-iyul 2021-jıl). 18-iyul 2021-jılda túp nusqadan arxivlendi. Qaraldı: 18-iyul 2021-jıl.
  59. «Using the C++ Core Guidelines checkers». Microsoft Learn. 13-avgust 2021-jılda túp nusqadan arxivlendi. Qaraldı: 31-mart 2020-jıl.
  60. «C++ ABI Summary» (20-mart 2001-jıl). 10-iyul 2018-jılda túp nusqadan arxivlendi. Qaraldı: 30-may 2006-jıl.
  61. «Bjarne Stroustrup's FAQ – Is C a subset of C++?». 6-fevral 2016-jılda túp nusqadan arxivlendi. Qaraldı: 5-may 2014-jıl.
  62. «C++0x Support in GCC». 21-iyul 2010-jılda túp nusqadan arxivlendi. Qaraldı: 12-oktyabr 2010-jıl.
  63. «C++0x Core Language Features In VC10: The Table». 21-avgust 2010-jılda túp nusqadan arxivlendi. Qaraldı: 12-oktyabr 2010-jıl.
  64. «Clang - C++98, C++11, and C++14 Status». Clang.llvm.org (12-may 2013-jıl). 4-iyul 2013-jılda túp nusqadan arxivlendi. Qaraldı: 10-iyun 2013-jıl.
  65. Bokil, Milind A. (2021). "Writing Assembly Routines within C/C++ and Java Programs". ResearchGate. Retrieved 1 April 2025.
  66. De Vilhena, Paulo Emílio; Lahav, Ori; Vafeiadis, Viktor; Raad, Azalea (2024). "Extending the C/C++ Memory Model with Inline Assembly". Proceedings of the ACM on Programming Languages 8: 1081–1107. doi:10.1145/3689749. https://doi.org/10.1145/3689749. 
  67. cppreference.com contributors. "asm declaration". cppreference.com. Retrieved 1 April 2025.
  68. «Extended Asm (Using the GNU Compiler Collection)». GCC Online Documentation. GNU Project. Qaraldı: 1-aprel 2025-jıl.
  69. Intel Corporation. "Inline Assembly". Intel® C++ Compiler Classic Developer Guide and Reference, Version 2021.9. Retrieved 1 April 2025.
  70. IBM. "Inline assembly statements (IBM extension)". IBM Documentation. Retrieved 1 April 2025.
  71. «Inline Assembler Overview». Microsoft Learn. Microsoft. Qaraldı: 1-aprel 2025-jıl.
  72. «Interfacing C and C++ With Assembly Language». Texas Instruments. Texas Instruments Incorporated (23-fevral 2025-jıl). Qaraldı: 1-aprel 2025-jıl.
  73. «C++ to ASM linkage in GCC». OSDev Wiki. Qaraldı: 1-aprel 2025-jıl.
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya