internet pencereler Android

Adventik, eksiksiz hizmet veren bir dijital ajanstır. C dilinin tarihi Ci dili

C ++, hem yüksek seviyeli hem de düşük seviyeli programlama dillerinin özelliklerini birleştiren derlenmiş genel amaçlı bir programlama dilidir. Selefi C programlama dili ile karşılaştırıldığında, nesne yönelimli ve genel programlamayı desteklemeye en çok dikkat edilir. C++ programlama dili adı, tekli ++ operatörünün bir değişkenin artışını gösterdiği C programlama dilinden gelir.

C++ programlama dili, yazılım geliştirme için yaygın olarak kullanılmaktadır. Yani, çeşitli uygulama programlarının oluşturulması, işletim sistemlerinin geliştirilmesi, aygıt sürücülerinin yanı sıra video oyunları ve çok daha fazlası. 1980'lerin başında Björn Stroustrup tarafından oluşturuldu. Kendi kullanımı için C programlama dilinde bir dizi geliştirme yaptı. onlar. başlangıçta C++ programlama dilini oluşturmak planlanmamıştı.

Prosedürel programlama, nesne yönelimli programlama, genel programlama gibi programlama paradigmalarını destekler, modülerlik, ayrı derleme, istisna işleme, veri soyutlama, nesne türlerinin (sınıflarının) bildirimi, sanal işlevler sağlar.

Ortaya çıkan dil adı, C++ tekli sonek artırma operatöründen gelir (bir değişkenin değerini birer birer artırır). C + adı, C'de bir sözdizimi hatası olduğu için kullanılmadı ve ayrıca ad başka bir dil tarafından devralındı. Dil ayrıca "C'nin bir uzantısı olduğu ve sorunları C öğelerini kaldırarak düzeltmeye çalışmadığı" için D olarak adlandırılmadı.

Dilin Avantajları:

1. Ölçeklenebilirlik. C++ dilinde, çok çeşitli platformlar ve sistemler için programlar geliştirilmiştir.

2. Bellek, adresler, portlar ile düşük seviyede çalışabilme.

3. Şablonları kullanarak farklı veri türleri, uzmanlıkları ve derleme hesaplamaları için genelleştirilmiş algoritmalar oluşturma yeteneği.

4. Çapraz platform. Derleyiciler çok sayıda platform için mevcuttur, C++ dilinde çok çeşitli platformlar ve sistemler için programlar geliştirirler.

5. Verimlilik. Dil, programcıya, program yürütme düzeni ve yapısının tüm yönleri üzerinde maksimum kontrol sağlamak için tasarlanmıştır.

Dilin dezavantajları:

1. Tip güvenliği ilkelerini ihlal eden birçok özelliğin varlığı, ince bir hatanın C ++ programlarına kolayca sızabilmesine neden olur.

2. Modülerlik için zayıf destek. Bir başlık dosyasının (#include) ön işlemci tarafından eklenmesi yoluyla harici bir modül arayüzünün bağlanması, çok sayıda modül bağlanırken derlemeyi ciddi şekilde yavaşlatır.

3. C++ dilini öğrenmek ve derlemek zordur.

4. Bazı tür dönüşümleri sezgisel değildir. Özellikle işaretsiz ve işaretli sayılar üzerindeki işlemler işaretsiz sonuçlar üretir.

5. Bazıları, yerleşik bir çöp toplama sisteminin eksikliğini C++ dilinin bir dezavantajı olarak görmektedir. Öte yandan, C++, tehlikeli işaretçilerin kullanımını neredeyse ortadan kaldıracak kadar yeterli araca sahiptir; çöp toplamanın uygulanmasında ve kullanılmasında (dil düzeyinde değil, kitaplıklar düzeyinde) hiçbir temel sorun yoktur. Yerleşik çöp toplama eksikliği, kullanıcının kendi kaynak yönetimi stratejisini seçmesine izin verir.

C++ programlama dili

Son güncelleme: 28/08/2017

C++ programlama dili, çok çeşitli uygulamalar oluşturmaya uygun, üst düzey, statik olarak yazılmış, genel amaçlı derlenmiş bir programlama dilidir. Bugün C ++ en popüler ve yaygın dillerden biridir.

Kökleri, 1969-1973 yıllarında programcı Dennis Ritchie tarafından Bell Laboratuarlarında geliştirilen C dilindedir. 1980'lerin başında, o sırada Bell Laboratuarlarında bulunan Danimarkalı programcı Bjarne Stroustrup, C dilinin bir uzantısı olarak C++'ı geliştirdi. Aslında, başlangıçta, C ++, C dilini bazı nesne yönelimli programlama yetenekleriyle destekledi. Ve böylece Stroustrup'un kendisi başlangıçta buna "sınıfları olan C" olarak atıfta bulundu.

Daha sonra, yeni dil popülerlik kazanmaya başladı. Ona sadece C'ye bir ek değil, tamamen yeni bir programlama dili yapan yeni özellikler eklendi. Sonuç olarak, "Sınıflarla C", C ++ olarak yeniden adlandırıldı. Ve o andan itibaren her iki dil de birbirinden bağımsız olarak gelişmeye başladı.

C ++, C'den zengin bellek özelliklerini devralan güçlü bir dildir. Bu nedenle, C ++ uygulamasını genellikle sistem programlamasında, özellikle işletim sistemleri, sürücüler, çeşitli yardımcı programlar, antivirüsler vb. oluştururken bulur. Bu arada, Windows çoğunlukla C ++ ile yazılmıştır. Ancak bu dilin kullanımı sadece sistem programlama ile sınırlı değildir. Hız ve performansın önemli olduğu her seviyedeki programlarda C++ kullanılabilir. Genellikle grafik uygulamalar, çeşitli uygulama programları oluşturmak için kullanılır. Ayrıca, özellikle zengin zengin görselleştirmeye sahip oyunlar oluşturmak için sıklıkla kullanılır. Ek olarak, son zamanlarda mobil yön, C ++ 'ın da uygulamasını bulduğu ivme kazanıyor. Ve web geliştirmede bile, web uygulamaları veya web uygulamalarına hizmet eden bir tür yardımcı hizmetler oluşturmak için C ++ kullanmak da mümkündür. Genel olarak, C ++, hemen hemen her türlü programı oluşturabileceğiniz, yaygın olarak kullanılan bir dildir.

C ++ derlenmiş bir dildir; bu, derleyicinin C ++ kaynak kodunu bir dizi makine talimatı içeren yürütülebilir bir dosyaya çevirdiği anlamına gelir. Ancak farklı platformların kendi özellikleri vardır, bu nedenle derlenmiş programlar bir platformdan diğerine kolayca aktarılamaz ve orada çalıştırılamaz. Ancak, kaynak kodu düzeyinde, mevcut işletim sistemine özgü bazı işlevler kullanılmadıkça, C ++ programları çoğunlukla taşınabilirdir. Hemen hemen tüm yaygın platformlar için derleyicilerin, kitaplıkların ve geliştirme araçlarının varlığı, aynı C++ kaynak kodunu bu platformlar için uygulamalarda derlemenize olanak tanır.

C'den farklı olarak, C ++, bir programı etkileşimli sınıflar ve nesneler topluluğu olarak temsil eden nesne yönelimli bir tarzda uygulamalar yazmanıza olanak tanır. Bu, büyük uygulamalar oluşturmayı kolaylaştırır.

Gelişimin ana aşamaları

1979-80'de Bjarne Stroustrup, C diline bir uzantı geliştirdi - "Sınıflarla C". 1983 yılında dilin adı C++ olarak değiştirildi.

1985 yılında, C++ dilinin ilk ticari versiyonu ve resmi bir standart olmadan bu dilin ilk tanımını sağlayan "The C++ Programming Language" kitabının ilk baskısı yayınlandı.

1989'da, bir dizi yeni özellik içeren C ++ 2.0 dilinin yeni bir sürümü yayınlandı. Bundan sonra, dil 2011 yılına kadar nispeten yavaş gelişti. Ancak aynı zamanda, 1998'de dili standartlaştırmak için ilk girişim ISO (Uluslararası Standartlaştırma Örgütü) tarafından yapıldı. İlk standart ISO/IEC 14882:98 veya kısaca C++ 98 olarak adlandırılmıştır. Daha sonra 2003 yılında C++ 03 standardının yeni bir sürümü yayınlandı.

2011 yılında, birçok ekleme içeren ve C++ dilini çok sayıda yeni işlevle zenginleştiren yeni C++ 11 standardı yayınlandı. Bundan sonra, 2014 yılında, C ++ 14 olarak da bilinen standarda küçük bir ekleme yayınlandı. Ve dilin bir başka önemli sürümü 2017 için planlanıyor.

Derleyiciler ve geliştirme ortamları

C++ programları geliştirmek için bir derleyiciye ihtiyacınız vardır - C++ kaynak kodunu daha sonra çalıştırabileceğiniz yürütülebilir bir dosyaya çevirir. Ancak şu anda birçok farklı derleyici var. Özellikle standartların uygulanmasında çeşitli yönlerden farklılık gösterebilirler. C++ için temel bir derleyici listesi Wikipedia'da bulunabilir. Geliştirmenin, en son standartları geliştiren ve uygulayan derleyicileri seçmesi önerilir. Bu nedenle, eğitim boyunca öncelikle GNU projesi tarafından geliştirilen ücretsiz g ++ derleyicisi kullanılacaktır.

Program oluşturmak için Visual Studio, Netbeans, Eclipse, Qt vb. IDE'leri de kullanabilirsiniz.

C dilinin bu statüsünün sebebi nedir? Tarihsel olarak, bu dil, şimdi yeniden doğuşunu yaşayan Unix işletim sisteminden ayrılamaz. 60'lar, işletim sistemlerinin ve üst düzey programlama dillerinin oluşum dönemiydi. Bu süre zarfında, işletim sistemi ve derleyiciler, her bilgisayar türü ve hatta çoğu zaman kendi programlama dilleri için bağımsız olarak geliştirildi (örneğin, PL / I'yi unutmayın). Aynı zamanda, bundan kaynaklanan sorunların ortak yönü zaten ortaya çıktı. Evrensel bir mobil işletim sistemi yaratma girişimi, bu ortaklığın gerçekleşmesine cevap oldu ve bu, eşit derecede evrensel ve mobil bir programlama dili gerektiriyordu. C böyle bir dil haline geldi ve Unix, neredeyse tamamen üst düzey bir dilde yazılan ilk işletim sistemi oldu.

Unix ile olan yakın ilişki, C'ye o sırada başka hiçbir dilin sahip olmadığı bir test alanı verdi. Sistem programlama görevleri, o zamanlar sektördeki en zorlu görevler olarak kabul ediliyordu. Çoğunlukla, makineye o kadar bağımlıydılar ki, çoğu kişi çözümlerini montajcıdan farklı düşünmüyordu. Üst düzey diller, uygulama programlaması için tasarlanmıştır ve sistem çalışması için gerekli işlevleri yalnızca çok sınırlı bir şekilde ve genellikle yalnızca belirli bir makine türü için uygular.

C dili en baştan yaratıldı, böylece içinde sistem görevleri yazmak mümkün oldu. C'nin yaratıcıları, dil yürütücüsünün soyut bir modelini geliştirmediler, ancak sistem programlama pratiğinde en çok ihtiyaç duyulan yetenekleri basitçe uyguladılar. Bunlar, her şeyden önce, bellek, yapısal kontrol yapıları ve programın modüler organizasyonu ile doğrudan çalışma araçlarıydı. Ve aslında dile başka hiçbir şey dahil edilmedi. Diğer her şey çalışma zamanı kitaplığına düşürüldü. Bu nedenle, kötü niyetli kişiler bazen C dilinden yapılandırılmış bir derleyici olarak bahseder. Ama her ne konuştularsa, yaklaşımın çok başarılı olduğu ortaya çıktı. Onun sayesinde sadelik ve dil yetenekleri oranı açısından yeni bir seviyeye ulaşıldı.

Bununla birlikte, dilin başarısını belirleyen başka bir faktör daha vardır. Yaratıcılar, makineye bağımlı ve bağımsız özellikleri çok ustaca ayırdılar. Bu sayede çoğu program evrensel olarak yazılabilir - performansları işlemcinin ve belleğin mimarisine bağlı değildir. Kodun aynı donanıma bağlı bölümlerinden birkaçı ayrı modüllerde yerelleştirilebilir. Ve önişlemciyi kullanarak, farklı platformlarda derlendiğinde ilgili makineye bağlı kodu oluşturacak modüller oluşturabilirsiniz.

C dilinin söz dizimi bir çok tartışmaya neden olmuştur.İçinde kullanılan kısaltmalar aşırı kullanıldığında programı tamamen okunamaz hale getirebilir. Ancak, Dijkstra'nın dediği gibi, - okuma yazma bilmeden kullanılmasından dolayı araçlar suçlanamaz. Aslında, C'de önerilen sözdizimi kısaltmaları, pratikte en yaygın stereotipik durumlara karşılık gelir. Kısaltmalar, bu tür durumların anlamlı ve kompakt temsili için deyimler olarak kabul edilirse, faydaları koşulsuz ve açık hale gelir.

Böylece C, evrensel bir sistem programlama dili olarak ortaya çıktı. Ama bu çerçevede kalmadı. 80'lerin sonunda, Fortran'ı liderliğe iten C dili, tüm dünyadaki programcılar arasında büyük bir popülerlik kazandı ve çok çeşitli uygulamalı görevlerde kullanılmaya başlandı. Unix'in (dolayısıyla C) yeni nesil programcıların yetiştirildiği üniversite ortamında yaygınlaşması burada önemli bir rol oynamıştır.

Tüm diller gibi, C de kademeli olarak geliştirildi, ancak iyileştirmelerin çoğu radikal değildi. Belki de bunlardan en önemlisi, C'deki modüller arası etkileşimin güvenilirliğini önemli ölçüde artıran, fonksiyon türlerinin katı bir spesifikasyonunun tanıtılması olarak düşünülmelidir. Tüm bu iyileştirmeler, 1989'da, halen C dili.

Ama her şey bu kadar bulutsuzsa, neden varlıklarını destekleyen diğer tüm diller hala kullanılıyor? C dilinin Aşil'in topuğu, 90'ların gündemine alınan görevler için çok düşük seviyeli çıkmasıydı. Ayrıca bu sorunun iki yönü vardır. Bir yandan, dile çok düşük seviyeli araçlar yerleştirildi - her şeyden önce, bellek ve adres aritmetiği ile çalışıyor. İşlemcilerin bit derinliğindeki değişikliğin birçok C programı için çok acı verici olması boşuna değil. Öte yandan, C üst düzey araçlardan yoksundur - soyut veri türleri ve nesneleri, polimorfizm, istisna işleme. Sonuç olarak, C programlarında, görev uygulama tekniği genellikle içerik tarafına hakimdir.

Bu eksiklikleri düzeltmeye yönelik ilk girişimler 1980'lerin başında başladı. O zaman bile, AT&T Bell Laboratuarlarında Bjarne Stroustrup, kod adı altında C dilinin bir uzantısını geliştirmeye başladı. Geliştirme stili, C dilinin yaratıldığı ruhla oldukça tutarlıydı - belirli kişilerin ve grupların çalışmasını daha kolay hale getirmek için belirli özellikler eklendi. C++ adlı yeni bir dilin ilk ticari çevirmeni 1983'te ortaya çıktı. Programı C koduna çeviren bir önişlemciydi, ancak 1985 yılında Stroustrup'un kitabının yayınlanması dilin gerçek doğuşu olarak kabul edilebilir. Bu andan itibaren C ++ dünya çapında popülerlik kazanmaya başladı.

C++'daki ana yenilik, yeni veri tiplerini tanımlamayı ve kullanmayı mümkün kılan sınıf mekanizmasıdır. Programcı, bir sınıf nesnesinin dahili temsilini ve bu gösterime erişmek için bir dizi fonksiyon yöntemini tanımlar. C++'ın yaratılmasındaki değerli hedeflerden biri, önceden yazılmış kodun yeniden kullanım yüzdesini artırma arzusuydu. Sınıf kavramı bunun için bir kalıtım mekanizması önerdi. Kalıtım, orijinal (temel) sınıfların derlenmiş kodunu etkilemeden genişletilmiş temsil ve değiştirilmiş yöntemlerle yeni (türetilmiş) sınıflar oluşturmanıza olanak tanır. Aynı zamanda, kalıtım, polimorfizmi uygulamak için mekanizmalardan birini sağlar - aynı kodun farklı veri türlerinin aynı türde işlenmesini gerçekleştirmek için kullanılabileceğine göre, nesne yönelimli programlamanın temel kavramı. Aslında polimorfizm de kodun yeniden kullanımını sağlama yöntemlerinden biridir.

Sınıfların tanıtılması, C++ dilinin tüm yeniliklerini tüketmez. Eksikliği C'de güvenilir programlar yazmayı çok daha zorlaştıran tam teşekküllü bir yapılandırılmış istisna işleme mekanizması uygular, şablonlama mekanizması dilde derinden gömülü, kodun yeniden kullanılması için başka bir yol açan karmaşık bir makro oluşturma mekanizmasıdır, ve daha fazlası.

Bu nedenle, dilin genel gelişim çizgisi, ANSI C. işlemleriyle mümkün olduğu kadar tam uyumluluğu korurken yeni üst düzey yapılar getirerek yeteneklerini genişletmeyi amaçladı, böylece programcı fiilen doğrudan bellek ve sistemle çalışmayı durdurdu. bağımlı varlıklar Bununla birlikte, dil, geliştiriciyi programı düzgün bir şekilde yapılandırmaya zorlayan mekanizmalar içermez ve yazarlar, oldukça karmaşık yapılarının kullanımı hakkında herhangi bir sistematik öneri yayınlamamışlardır. En yaygın veri yapılarını uygulayan standart bir sınıf kitaplığının zamanında oluşturulmasıyla ilgilenmediler.

Bütün bunlar, birçok geliştiricinin dil anlambiliminin labirentlerini keşfetmeye ve bağımsız olarak başarılı bir şekilde çalışan deyimler aramaya zorlanmasına neden oldu. Örneğin, dilin gelişiminin ilk aşamasında, sınıf kitaplıklarının birçok yaratıcısı, ortak bir temel sınıf Nesnesi ile tek bir sınıf hiyerarşisi oluşturmaya çalıştı. Bu fikir, en ünlü nesne yönelimli dillerden biri olan Smalltalk'tan ödünç alınmıştır. Bununla birlikte, C++'da tamamen uygun olmadığı ortaya çıktı - dikkatlice düşünülmüş sınıf kitaplığı hiyerarşileri esnek değildi ve sınıfların çalışması açık değildi. Sınıf kitaplıklarının kullanılabilir olması için kaynaktan sağlanması gerekiyordu.

Şablon sınıflarının görünümü, bu gelişme yönünü tamamen reddetti. Kalıtım, yalnızca mevcut bir sınıfın özel bir versiyonunu oluşturmanın gerekli olduğu durumlarda kullanılmaya başlandı. Kütüphaneler ayrı sınıflardan ve küçük, ilgisiz hiyerarşilerden oluşmaya başladı. Bununla birlikte, C++ bağımsız hiyerarşilerden sınıfları polimorfik olarak kullanamadığından, kodun yeniden kullanımı yol boyunca azalmaya başladı. Şablonların yaygın kullanımı, derlenen kod miktarında kabul edilemez bir artışa yol açar - şablonların makro oluşturma yöntemleri kullanılarak uygulandığını unutmayalım.

C sözdiziminden miras kalan C++'ın en büyük dezavantajlarından biri, derleyicinin kullanılan tüm sınıfların iç yapısının bir açıklamasına erişimi olmasıdır. Sonuç olarak, bir kütüphane sınıfının temsilinin iç yapısının değiştirilmesi, bu kütüphanenin kullanıldığı tüm programların yeniden derlenmesi ihtiyacına yol açar. Bu, kütüphane geliştiricilerini modernizasyonları açısından büyük ölçüde sınırlar, çünkü yeni bir sürüm yayınlarken bir öncekiyle ikili uyumluluğu korumaları gerekir. Pek çok uzmanın C++'ın büyük ve süper büyük projeler yürütmek için uygun olmadığına inanmasına neden olan bu sorundur.

Ve yine de, listelenen eksikliklere ve hatta dil standardının bulunmamasına rağmen (on beş yıldan fazla kullanımdan sonra!), C ++ en popüler programlama dillerinden biri olmaya devam ediyor. Gücü, her şeyden önce, C dili ile neredeyse tam uyumluluktadır. Bu sayede, C++ programcıları, C'de yapılan tüm gelişmelere erişebilir. Aynı zamanda, C++, sınıfları kullanmadan bile , C'ye bir dizi önemli ek özellik ve kolaylık sunar ki, çoğu kişi onu yalnızca gelişmiş bir C olarak kullanır. ...

C++ nesne modeli söz konusu olduğunda, programınız çok büyük olmadığı sürece (yüzbinlerce satır), onu kullanmak oldukça mümkündür. Bileşen yazılımına yönelik son eğilim, yalnızca C ++ konumunu güçlendirir. Bireysel bileşenler geliştirirken, C++'ın dezavantajları henüz ortaya çıkmaz ve bileşenlerin çalışan bir sisteme bağlanması artık dil düzeyinde değil, işletim sistemi düzeyindedir.

Tüm söylenenlerin ışığında, C++'ın görünümü pek de iç açıcı görünmüyor. Her ne kadar programlama dilleri pazarındaki tekel onun için parlamasa da. Belki de sadece güvenle söyleyebiliriz ki bu dil başka bir modernleşme-yayılımdan kurtulamaz. Java ortaya çıktığında, buna çok dikkat edilmesine şaşmamalı. Sözdizimi olarak C++'a yakın olan ve birçok programcıya tanıdık geldiği anlamına gelen dil, C++'ın 70'lerden miras kalan en korkunç eksikliklerinden kurtulmuştur. Ancak Java, bazıları tarafından kendisine atanan role uygun görünmüyor.

C / C++ dillerinin modern programlamadaki özel rolü, İnternet'te üzerlerinde materyal bulabileceğiniz belirli adresler sağlamayı neredeyse anlamsız hale getirir. Bunun gibi çok fazla yer var. Ancak, C++'ın evrimi hakkında daha fazla bilgi edinmek istiyorsanız, kısa bir makale ile başlayın. http://citforum.syzran.ru/programming/prg96/76.shtml.

Alexander Sergeyev, [e-posta korumalı]
BYTE dergisinden makale / Rusya, Mart 2000

Açıklanan dillerin pratikte kullanımını açıkça göstermek için, standart girdiden veya bir dosyadan bir dizi tamsayı girmenin ve ardından yalnızca tek sayıların çıktısını almanın gerekli olduğu bir problem seçtik ve tersi Emir. Bu, özünde onu çözmek için diziler, döngüler, dallanma ve G / Ç ile çalışmayı gerektiren en basit görevlerden biridir ve ayrıca alt program çağrılarını göstermenize izin verir. Aynı zamanda, görünür ve kolayca algılanır.

Liste 1.C

1 #dahil / * Giriş-çıkış işlevlerini bağlayın * / 2 3 void main (void) 4 (5 int М; / * 10 tamsayı dizisi, 0'dan sayma * / 6 int N; (N = 0; N için 7)<10; ++N) /* Вводим не более 10 чисел */ 8 if (EOF == scanf ("%d, M+N)) 9 break; /* Если конец файла, прерываем цикл */ 10 11 for (-N; N>= 0; --N) / * Diziyi tersten inceleyin * / 12 if (M [N]% 2) / * tek olanları sıralayın ve yazdırın * / 13 printf ("% d \ n", M [N]); on dört )

  • 3. satır C / C++'da program yürütme her zaman ana işlevle başlar.
  • 7. ve 11. satırlar. Döngü başlığında, başlangıç ​​ayarı, devam koşulu ve döngü parametresini yeniden hesaplama kuralı noktalı virgülle ayrılmış olarak belirtilir. Operasyonlar ++ ve -/- - C dilinin kısaltmalarının en ünlüsü, yani bir değişkenin artması ve azalması, yani değerini bir artırıp azaltması.
  • 8. satırİşlev tarama ilk parametrenin belirttiği formata göre adresleri kalan parametrelerle belirtilen değişkenlerin değerlerini girer. Burada değerin girildiği adres, dizinin bulunduğu yerin adresine adres aritmetiği kullanılarak hesaplanır. m ofset eklendi n elementler. Aynı etki yazarak da elde edilebilir & M [N].
  • 12. satır. Operasyon % bölmenin kalanını hesaplar. Operatör koşulu Eğer ifadenin sayısal değeri sıfır değilse yerine getirilmiş kabul edilir.
  • 13. satır.İşlev baskı- formata göre yazdırma aynı şekilde çalışır tarama, ancak adresler yerine görüntülenecek değerlere geçilir.
1 #dahil 2 3 şablon class Array 4 (5 public: Array (T Size = 1)): M (yeni T), N (Size), n (0) () 6 Array (void) (delete M;) 7 T Count (void) const ( dönüş n;) 8 T operatörü (int i) const (dönüş M [i];) 9 void Ekle (T Veri); 10 özel: 11 T * M; // Ayrılan belleğin adresi 12 int N, n; // N - tahsis edilmiş; n - kullanılmış 13); 14 15 şablon geçersiz Dizi :: Ekle (T Verisi) 16 (if (N-n) // 17'nin tamamı tahsis edilmişse (int * P = yeni T; // boşluk kullanılıyorsa, (int i = 0; i) için 18'den fazla ayırın A; // 28 değişken boyutlu tamsayı dizisi while (1) // Sonsuz döngü 29 (int N; 30 cin >> N; // cin - standart girdi akışı 31 if (cin.eof ()) break; // Çıkış 32 dosyasının sonuna kadar döngü A.Add (N); // Girilen sayıyı 33 dizisine ekle) 34 for (int N = A.Count () - 1; N> = 0; --N) // Döngü dizi 35 if ( A [N]% 2) 36 cout<ve hafızayı boşaltır
  • 3-13 satırlar.Şablon sınıfı bildirildi Dizi parametreli T... Gibi değişken boyutlu bir nesne dizisidir. T... Elbette bizim görevimizde şablon sınıfı kullanmaya gerek yok. Bununla birlikte, C++'da her tür elemanla çalışabilen polimorfik bir veri yapısının nasıl oluşturulduğunu göstermek istedik.
  • 5. satır. Sınıf oluşturucu. Nesnenin temsilini başlatır. Örneğin, sahada m işlem tarafından sipariş edilen bellek bloğunun adresi girilir yeni T.
  • 8. satır Bir işlemin aşırı yüklenmesine bir örnek. İşlev Şebeke sınıf nesnesinin sağında köşeli parantezler göründüğünde çağrılır Dizi.
  • 9. satır Bu işlev, uygulamada ana işlevdir. Gerektiğinde genişleterek diziye öğeler ekler. Diğerlerine göre daha karmaşık olduğu için tanımı sınıf tanımından alınmıştır. Sınıfın gövdesinde açıklanan işlevler, C++'da çağrılarak değil, satır içi ikame ile uygulanır. Bu, boyutunu artırsa da programı hızlandırır.
  • 15-24. satırlar. fonksiyon tanımı Dizi :: Ekle (T)(bu arada, bu onun tam adı).
  • 27. satır. Bir tür nesne oluşturuyoruz Dizi... Tapınak Aggau türe göre parametrelendirilmiş int.

C ++ (C-plus-plus okur), herhangi bir karmaşıklıkta programlar oluşturmak için kullanılabilen, derlenmiş, statik olarak yazılmış genel amaçlı bir programlama dilidir.
20 yılı aşkın bir süredir bu dil, en popüler ve talep edilen ilk üç programlama dili arasında yer almaktadır. (TIOBE web sitesini ziyaret ederek bunu doğrulayabilirsiniz).
Dil, 1980'lerin başında, Bell Labs çalışanı Björn Stroustrup'un kendi ihtiyaçlarına uyacak şekilde C dilinde bir dizi geliştirme yapmasıyla ortaya çıktı.

Bjarne Stroustrup - C++ dilinin yaratıcısı

Stroustrup, C dilini Simula dilinin yetenekleriyle tamamlamaya karar verdi. Bell bilgisayarların üzerinde çalıştığı UNIX sisteminin temel dili olan C, hızlı, zengin özelliklere sahip ve taşınabilir. Stroustrup, sınıflar ve nesnelerle çalışma yeteneğini ekledi. Sonuç olarak, pratik modelleme problemlerinin hem geliştirme süresi (Simula benzeri sınıfların kullanımı sayesinde) hem de hesaplama süresi (C hızı sayesinde) açısından çözülebilir olduğu ortaya çıktı.
Dil geliştiricinin kendisi bu konuda şöyle diyor:



1998 yılında, bir standardizasyon komitesi tarafından C++ 98 olarak bilinen ilk dil standardı yayınlandı. C++ modern gereksinimleri karşılamak için gelişmeye devam ediyor. C++ dilini geliştiren ve geliştirmek için C++ Standardizasyon Komitesine öneriler gönderen gruplardan biri de şudur: Artırmak, diğer şeylerin yanı sıra, metaprogramlama özellikleri ekleyerek dilin yeteneklerini geliştirmekle uğraşır. Son standart 2017'de piyasaya sürüldü ve C++ 17... Bir sonraki standardın gelmesi uzun sürmeyecek ve 2020'de beklendiği gibi görünecek.
Hiç kimse C++ dilinin haklarına sahip değildir, ücretsizdir. Mart 2016'da Rusya'da bir WG21 C ++ çalışma grubu oluşturuldu. Grup, C++ standardı için öneriler toplamak, bunları komiteye göndermek ve Uluslararası Standardizasyon Örgütü'nün genel toplantılarında savunmak üzere organize edildi.
C ++, çok çeşitli farklı stiller ve programlama teknolojileri içeren çok paradigmalı bir dildir (paradigma kelimesinden - bilgisayar programları yazma stili). Genellikle nesne yönelimli bir dil olarak anılır, ancak kesinlikle böyle değildir. Çalışma sürecinde geliştirici, araç seçiminde mutlak özgürlük kazanır, böylece bir veya başka bir yaklaşım kullanılarak çözülen problem mümkün olduğunca verimli bir şekilde çözülür. Başka bir deyişle, C ++ programcıyı yalnızca bir program geliştirme stiline (örneğin nesne yönelimli) bağlı kalmaya zorlamaz.
C++, ortak kapsayıcılar ve algoritmalar, G/Ç, düzenli ifadeler, çoklu iş parçacığı desteği ve daha fazlasını içeren zengin bir standart kitaplığa sahiptir. C ++, Java, C #, D dahil olmak üzere birçok programlama dilini etkiledi. C ++, C dilinin sözdizimine dayanan dil ailesine ait olduğundan, bu ailenin diğer programlama dillerinde kolayca ustalaşabilirsiniz. : JavaScript, PHP, Perl, Objective-C ve diğerleri. ... ana dilin kendisi de dahil olmak üzere diğerleri - C. ()
Varlığı sırasında, C++ dili kolayca çürütülebilecek sabit mitlere yer verdi (bkz. Bölüm 1 ve Bölüm 2)

Dilin tarihi ve standartların yayınlanması

1983

Dil Oluşturucu - Bjorn Stroustrup, Bell Labs çalışanı, C++'ın erken bir sürümünü tanıttı (“C with Classes”)

1985

C++'ın ilk ticari sürümü olan dil, modern adını alır

1986

Bjorn Stroustrup tarafından yazılmış bir C++ kitabı olan C++ Programlama Dili'nin ilk baskısı

1998

C++ dilinin uluslararası standardı onaylanmıştır: ISO / IEC 14882: 1998 "C++ Programlama Dili Standardı"

2003
2005

Kütüphane Teknik Raporu 1 (TR1) yayınlandı. Resmi olarak standardın bir parçası olmasa da, rapor standart kitaplığın C++ dilinin sonraki sürümüne dahil edilmesi gereken uzantılarını açıklıyordu.

2011

Yeni bir standardın yayınlanması - C ++ 11 veya ISO / IEC 14882: 2011; yeni standart, dilin özüne yapılan eklemeleri ve TR1'in çoğunu içeren standart kitaplığın bir uzantısını içeriyordu.

2014

C ++ 14 standardının yayınlanması ("Uluslararası Standart ISO / IEC 14882: 2014 (E) Programlama Dili C ++"); C++ 14, çoğunlukla hata düzeltmeleri ve küçük iyileştirmeler içeren, C++ 11'in üzerinde küçük bir uzantı olarak düşünülebilir.

2017

Yeni standart yayınlandı - C ++ 1z (C ++ 17). Bu standart birçok değişiklik ve eklemeler getirmiştir. Örneğin, STD, deneysel TS I kitaplığının çoğu olan boost :: dosya sistemine dayalı bir dosya sistemi olan C11 standardının kitaplıklarını içerir.

2020

C++ 20, C++ 17'den sonra beklenen C++ programlama dili için ISO/IEC standardının resmi olmayan adıdır. N4800 standardının taslağı.

C++ felsefesi

The Design and Evolution of C++'da (2007), Björne Stroustrup, C++'ı tasarlarken izlediği ilkeleri açıklar (kısaltılmış):

  • C dilinin statik veri türleri, verimliliği ve taşınabilirliği ile genel bir dil edinin.
  • Birçok programlama stilini doğrudan ve kapsamlı bir şekilde destekleyin.
  • Programcıya yanlış olanı seçme fırsatı verse bile seçim özgürlüğü verin.
  • Mümkün olduğunca C ile uyumluluğu koruyun, böylece programlamadan C'ye kolay geçişi mümkün kılın.
  • C ve C++ arasında karışıklıktan kaçının: Her iki dilde izin verilen herhangi bir yapı, her birinde aynı anlama gelmeli ve aynı program davranışına yol açmalıdır.
  • Platforma bağlı veya genel olmayan özelliklerden kaçının.
  • Kullanılmayanlar için ödeme yapmayın - hiçbir dil aracı, onu kullanmayan programların performansını düşürmemelidir.
  • Aşırı karmaşık bir programlama ortamı gerektirmez.

C ve C++

C ++ sözdizimi C dilinden miras alınır.Resmi olarak, C ++ ilkelerinden biri C dili ile uyumluluğun korunması olarak kalsa da, aslında, bu dillerin standardizasyonu için gruplar yoktur. etkileşimde bulunurlar ve yaptıkları değişiklikler yalnızca birbiriyle ilişkili olmakla kalmaz, aynı zamanda ideolojik olarak birbirleriyle temelden çelişir. Örneğin, yeni C standartlarının çekirdeğe eklediği öğeler, C++ standardındaki standart kitaplığın öğeleridir ve çekirdekte tamamen yoktur, örneğin, dinamik diziler, sabit sınırları olan diziler, paralel işleme tesisleri. Stroustrup, iki dilin gelişimini birleştirmenin çok faydalı olacağını, ancak siyasi nedenlerle bunun mümkün olmadığını söyledi. Böylece C ve C++ arasındaki pratik uyumluluk yavaş yavaş kaybolacaktır.
Bu örnekte, kullanılan derleyiciye bağlı olarak “C ++” veya “C” çıktısı alınacaktır:

Program 9.1

#Dahil etmek int main () (printf ("% s \ n", (sizeof ("a") == sizeof (char))? "C ++": "C"); 0 döndür;)

Bunun nedeni, C'deki karakter sabitlerinin int türünde ve C++'da char türünde olmalarıdır, ancak bu türlerin boyutları farklıdır.

Uygulama yaşam döngüsü modelleri

Yaşam döngüsü yazılım, bir yazılım ürünü yaratma ihtiyacı hakkında karar verildiği andan itibaren başlayan ve tamamen kullanımdan kaldırıldığı anda sona eren bir süredir. Bu döngü, yazılım (yazılım) oluşturma ve geliştirme sürecidir. Birkaç yaşam döngüsü modeli vardır.
kademeli model yaşam döngüsü modeli 1970 yılında Winston Royce tarafından önerildi. Projenin tüm aşamalarının kesin olarak sabit bir sırayla sırayla yürütülmesini sağlar. Bir sonraki aşamaya geçiş, bir önceki aşamadaki işin tamamen tamamlanması anlamına gelir. Gereksinim oluşturma aşamasında belirlenen gereksinimler, teknik bir görev şeklinde kesin olarak belgelenir ve tüm proje geliştirme süresi boyunca kaydedilir. Her aşama, geliştirmenin başka bir geliştirme ekibi tarafından sürdürülmesi için yeterli olan eksiksiz bir belge setinin yayınlanmasıyla sona erer.
Şelale modeline göre proje aşamaları:

  1. Gereksinimlerin oluşumu;
  2. Tasarım;
  3. Uygulama;
  4. Test yapmak;
  5. Uygulama;
  6. Operasyon ve bakım.

Şelale modelinde, projenin bir aşamasından diğerine geçiş, bir önceki aşamanın sonucunun tam doğruluğunu varsayar. Büyük projelerde bunu başarmak neredeyse imkansızdır. Bu nedenle, bu model yalnızca küçük bir proje geliştirmek için uygundur. (W. Royce'un kendisi bu modele bağlı kalmamış ve yinelemeli bir model kullanmıştır).
yinelemeli model
Şelale modeline bir alternatif, 70'lerde T. Gilb'den elde edilen yinelemeli ve artımlı geliştirme (IID) modelidir. evrimsel modelin adı. IID modeli, proje yaşam döngüsünün, bir bütün olarak projeye kıyasla daha küçük işlevsellik parçalarının oluşturulmasına uygulanan tüm geliştirme süreçlerini içeren, her biri bir "mini projeye" benzeyen bir dizi yinelemeye bölünmesini varsayar. . Her yinelemenin amacı, önceki ve mevcut tüm yinelemelerin entegre içeriği tarafından tanımlanan işlevselliği içeren yazılım sisteminin çalışan bir sürümünü elde etmektir. Son yinelemenin sonucu, ürünün gerekli tüm işlevlerini içerir. Böylece, her yinelemenin tamamlanmasıyla ürün, yeteneklerinde bir artış - bir artış - alır ve bu nedenle evrimsel olarak gelişir.


Yinelemeli yaklaşımın çeşitli versiyonları çoğu modern geliştirme metodolojisinde uygulanmaktadır:

Geliştirme süreci - Rasyonel Birleşik Süreç (RUP)

Rasyonel Birleşik Süreç (RUP)(Rational Unified Process), Rational Software (IBM) tarafından desteklenen bir yazılım geliştirme metodolojisidir. Metodoloji, iş modellemeden bitmiş programın test edilmesine ve devreye alınmasına kadar tüm geliştirme aşamaları için öneriler sunar. Modelleme dili olarak Birleşik Modelleme Dili (UML) kullanılır.
Tam ürün geliştirme yaşam döngüsü, her biri bir veya daha fazla yineleme içeren dört aşamadan oluşur.

  • İlk aşama (Başlangıç)
  • Projenin kapsamını ve gerekli kaynak miktarını belirleyin. Ürünün temel gereksinimleri, sınırlamaları ve temel işlevleri belirlenir. Riskler değerlendirilir. Eylem planlaması. İlk aşamanın sonunda, projenin devamı konusunda paydaşların bir anlaşmasını varsayan Yaşam Döngüsü Hedefi Kilometre Taşına ulaşılıp ulaşılmadığı değerlendirilir.

  • detaylandırma
  • Belgeleme gereksinimleri. Yürütülebilir bir mimarinin tasarımı, uygulanması ve test edilmesi. Şartların ve maliyetin netleştirilmesi. Büyük riskleri azaltmak. Geliştirme aşamasının başarıyla tamamlanması, Yaşam Döngüsü Mimarisi Dönüm Noktasına ulaşmak anlamına gelir.

  • Yapı
  • Oluşturma aşamasında, ürünün işlevselliğinin çoğu uygulanır: uygulamanın tasarımı tamamlanır, kaynak kodu yazılır. Oluşturma aşaması, sistemin ilk harici sürümü ve İlk Operasyonel Yetenek dönüm noktası ile sona erer.

  • Geçiş
  • "Uygulama" aşamasında, ürünün son hali oluşturulur ve geliştiriciden müşteriye aktarılır. Buna bir beta test programı, kullanıcı eğitimi ve ürün kalitesi belirleme dahildir. Kalite, kullanıcıların beklentilerini veya Başlangıç ​​aşamasında belirlenen kriterleri karşılamıyorsa, Uygulama aşaması tekrarlanır. Tüm hedeflere ulaşmak, Ürün Sürümü dönüm noktasına ulaşmak ve tam geliştirme döngüsünü tamamlamak anlamına gelir.



"Bilgi Teknolojisi. Sistem ve yazılım mühendisliği. Yazılım Yaşam Döngüsü Süreçleri”. Bu standart, Rusya Federasyonu Federal Teknik Düzenleme ve Metroloji Ajansı tarafından kabul edilmiştir ve uluslararası ISO / IEC 12207: 2008 standardına benzer. Bu standart, yazılım endüstrisinde rehberlik edilebilecek yazılım yaşam döngüsü süreçleri için genel bir çerçeve oluşturur. Standart belirli bir yaşam döngüsü modeli sunmamaktadır. Hükümleri, yazılım oluşturmaya yönelik tüm yaşam döngüsü modelleri, yöntemleri ve teknolojileri için ortaktır. Bu süreçlerde yer alan faaliyetlerin ve görevlerin nasıl uygulanacağını veya gerçekleştirileceğini belirtmeden yaşam döngüsü süreçlerinin yapısını tanımlar.

ders sunumu
Mesaj konuları
  • Özgür Yazılım Vakfı (FSF)
  • Ücretsiz yazılım lisansları
  • Ücretsiz Yazılım ve Açık Kaynak
  • Programlama dillerinin gelişim tarihi
  • C. C ve C ++ tarihi
  • Tarih
  • C++ eleştirisi
  • UNIX geçmişi
  • Spiral yazılım yaşam döngüsü modeli
  • UML (İngilizce Birleşik Modelleme Dili - birleşik modelleme dili)
  • Microsoft Çözümleri Çerçevesi
  • Windows'ta C / C ++ programlama için IDE
  • C/C++ derleyicileri
  • Windows'ta konsol uygulaması oluşturma
sorular
  1. Yazılım geliştirmenin şelale modeli neden büyük projelere uygulanmıyor?
  2. Şelale ve yinelemeli geliştirme modelleri arasındaki fark nedir?
  3. Rational Unified Process (RUP) metodolojisinde yazılım geliştirmenin aşamalarını listeleyin

Neden C++

C ++ şu anda ticari yazılım ürünleri geliştirmek için kullanılan baskın dil olarak kabul edilmektedir. Son yıllarda, Java gibi bir programlama dilinden gelen benzer iddialar nedeniyle bu baskınlık biraz dalgalandı, ancak kamuoyunun sarkacı diğer yöne kaydı ve Java için C++'ı terk eden birçok programcı son zamanlarda hızlı geri döndü. eski aşkına. Her durumda, bu iki dil o kadar benzer ki, birini öğrenerek diğerinin %90'ına otomatik olarak hakim olursunuz.

C#, ağ platformu için Microsoft tarafından geliştirilen yeni bir dildir. Esasen, C# bir tür C++'dır ve bir dizi temel farklılığa rağmen, C# ve C++ dilleri yaklaşık %90 oranında çakışmaktadır. C#'ın C++ için ciddi bir rakip haline gelmesi muhtemelen uzun zaman alacaktır; ancak bu gerçekleşse bile, C++ dilini bilmek önemli bir avantaj sağlayacaktır.

C++ genel amaçlı bir programlama dilidir. Doğal uygulama alanı, kelimenin geniş anlamıyla anlaşılan sistem programlamadır. Ayrıca C++ belirtilen kapsamın çok ötesine geçen birçok uygulama alanında başarıyla kullanılmıştır. C++ uygulamaları artık en mütevazı mikro bilgisayardan en büyük süper bilgisayara ve neredeyse tüm işletim sistemlerine kadar tüm makinelerde bulunuyor.

C++ dilinin ortaya çıkışı ve evrimi

Bjarne Stroustrup, C++ dilinin geliştiricisi ve ilk çevirmenin yaratıcısıdır. Murray Hill, New Jersey, ABD'deki AT&T Bell Laboratories Araştırma Bilgi İşlem Merkezi'nde öğretim üyesidir. Yüksek Lisans derecesini Matematik ve Bilgisayar Bilimleri alanında Aarus Üniversitesi'nden (Danimarka) ve Bilgisayar Bilimleri alanında Doktora derecesini Cambridge Üniversitesi'nden (İngiltere) aldı. Dağıtılmış sistemler, işletim sistemleri, modelleme ve programlama konularında uzmanlaşmıştır. M. A. Ellis ile birlikte, C ++ diline ilişkin eksiksiz rehber The C ++ Handbook with Notes'un yazarıdır.

Elbette C++, onun bir alt kümesi olarak korunan C diline çok şey borçludur. Sistem programlamanın en acil sorunlarını çözmek için tasarlanmış, C'de bulunan tüm düşük seviyeli araçlar da korunur. C de selefi BCPL diline çok şey borçludur. BCPL yorumu C++'a geri yüklendi. Başka bir ilham kaynağı da SIMULA-67 diliydi; bundan sınıf kavramı ödünç alındı ​​(türetilmiş sınıflar ve sanal işlevlerle birlikte). C++ 'ın operatörleri aşırı yükleme yeteneği ve bir operatörün göründüğü her yere açıklama yerleştirme özgürlüğü Algol-68 dilini anımsatır.

Dilin "C with Classes" olarak adlandırılan önceki sürümleri 1980'den beri kullanılmaktadır. Bu dil, yazarın kesintiye dayalı simülasyon programları yazması gerektiğinden ortaya çıkmıştır. Verimlilik düşünülmezse, SIMULA-67 dili bunun için idealdir. Büyük modelleme görevleri için C with Classes dili kullanıldı. Ardından, zaman ve bellek kaynaklarının kritik olduğu programların üzerine yazılması olasılığı, titiz bir teste tabi tutuldu. Bu dilde işlemler, referanslar, sanal işlevler ve diğer birçok özellik aşırı yüklenmedi. İlk kez, C++, yazarın Temmuz 1983'te çalıştığı araştırma grubunun ötesine geçti, ancak daha sonra birçok C++ özelliği henüz geliştirilmedi.

C++ (si plus plus), 1983 yazında Rick Mascitti tarafından icat edildi. Bu ad, C dilindeki değişikliklerin evrimsel doğasını yansıtır. ++ işareti, C büyütme işlemini ifade eder. C + bir sözdizimi hatasıdır. Ayrıca, zaten tamamen farklı bir dilin adı olarak kullanılmıştır. C semantiği uzmanları, C++'ın ++ C'den daha kötü olduğunu bulurlar. Dil, C'nin bir uzantısı olduğu için D olarak adlandırılmadı ve C'nin yeteneklerini terk etme pahasına herhangi bir sorunu çözmeye çalışmaz. C++ adının bir başka ilginç yorumu, ekte bulunabilir. .

Başlangıçta, C ++, yazar ve arkadaşlarının Assembly, C veya diğer modern yüksek seviyeli dillerde programlama yapmasına gerek kalmayacak şekilde tasarlandı. Temel amacı, programlama sürecini basitleştirmek ve bireysel programcı için daha keyifli hale getirmektir. Yakın zamana kadar, kağıt bir C++ geliştirme planı yoktu. Tasarım, uygulama ve dokümantasyon paralel gitti. Hiçbir zaman bir "C++ Projesi" veya "C++ Geliştirme Komitesi" olmadı. Bu nedenle dil, kullanıcıların karşılaştığı tüm sorunların üstesinden gelmek için gelişti ve gelişmeye devam ediyor. Yazarın tüm sorunları arkadaşları ve meslektaşları ile tartışması da gelişim için itici güç olarak hizmet eder.

Bu kitabın ilk baskısının yayınlanmasından bu yana, C++ dili önemli değişiklikler ve iyileştirmelerden geçti. Esas olarak aşırı yükleme, bağlama ve bellek yönetimi ile ilgili belirsizlik giderme ile ilgilenir. Ancak, C dili ile uyumluluğu artırmak için küçük değişiklikler yapıldı.Çoklu kalıtım, statik ve const belirtimlerine sahip üye işlevleri, korumalı üyeler, tür şablonları ve özel durumların ele alınması gibi çeşitli genellemeler ve önemli uzantılar da tanıtıldı. Tüm bu uzantılar ve iyileştirmeler, C++ 'ı kütüphanelerin oluşturulabileceği ve kullanılabileceği bir dil haline getirmeyi amaçlıyordu. Tüm değişiklikler bölümünde açıklanmıştır.

1985 ve 1991 arasında tanıtılan diğer uzantılar (çoklu kalıtım, statik üye işlevleri ve saf sanal işlevler gibi), diğer dillerden ziyade C++ programlama deneyiminin genellemelerinden evrimleşmiştir.

Bu altı yıl boyunca yapılan dil genişletmeleri, öncelikle bir veri soyutlama dili ve genel olarak nesne yönelimli programlama olarak C++'ın ifadesini artırmayı ve kullanıcı tanımlı veri türleriyle yüksek kaliteli kitaplıklar oluşturmanın bir aracı olarak hedeflendi. özellikle.

1987 civarında, C++'ı standartlaştırma çalışmalarının yakın olduğu ve bunun temelinin hemen başlaması gerektiği ortaya çıktı.

AT&T Bell Laboratuvarları bu çalışmaya önemli bir katkı sağlamıştır. Yaklaşık 20 kuruluştan yaklaşık yüz temsilci, ANSI standardizasyon referans kılavuzunun ve kaynak materyalin güncel versiyonunun ne olduğunu gözden geçirdi ve yorumladı. C++. Son olarak, Hewlett-Packard'ın girişimiyle, Aralık 1989'da ANSI bünyesinde X3J16 komitesi kuruldu. ANSI'de (Amerikan Standardı) C++ standardizasyonu üzerine yapılan çalışmanın, ISO (Uluslararası Standardizasyon Örgütü) tarafından standardizasyon üzerine yapılan çalışmanın bir parçası olması beklenmektedir.

C++, bazı temel sınıfların gelişimiyle eş zamanlı olarak gelişti.