C dili ne zaman geliştirildi? §1 Dil hakkında genel bilgiler

C++ (okuma c-plus-plus), herhangi bir karmaşıklık düzeyinde programlar oluşturabileceğiniz, derlenmiş, statik olarak yazılan genel amaçlı bir programlama dilidir.
20 yıldan fazla bir süredir bu dil en popüler ve en çok talep gören üç programlama dili arasında yer almaktadır. (Bunu TIOBE web sitesini ziyaret ederek doğrulayabilirsiniz).
Dil, 1980'lerin başında Bell Labs çalışanı Björn Stroustrup'un kendi ihtiyaçları için C dilinde bir dizi iyileştirme ortaya koymasıyla ortaya çıktı.

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

Stroustrup, C dilini Simula dilinde bulunan yeteneklerle genişletmeye karar verdi. C dili olmak temel dil Bell bilgisayarlarının üzerinde çalıştığı UNIX sistemi hızlı, zengin özelliklere sahip ve taşınabilirdir. Stroustrup, sınıflar ve nesnelerle çalışma yeteneğini ekledi. Sonuç olarak pratik problemler simülasyonların 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ülmesinin mümkün olduğu ortaya çıktı.
Dil geliştiricisinin kendisi bu konuda şöyle konuşuyor:



1998 yılında bir standartlar komitesi tarafından C++98 olarak bilinen ilk dil standardı yayımlandı. C++ yanıt vermek için gelişmeye devam ediyor modern gereksinimler. C++ dilini geliştiren ve iyileştirilmesi için C++ Standartlar Komitesine teklif sunan gruplardan biri: Artırmak, diğer şeylerin yanı sıra, metaprogramlama özellikleri ekleyerek dilin yeteneklerini geliştirmekle meşgul. En son standart 2017 yılında yayımlandı ve şu şekilde adlandırıldı: C++17. Bir sonraki standardın gelmesi uzun sürmeyecek ve 2020'de ortaya çıkması bekleniyor.
Kimse C++ dilinin haklarına sahip değildir; ücretsizdir. Mart 2016'da Rusya kuruldu çalışma Grubu RG21 C++. Grup, C++ standardı için teklifler toplamak, bunları bir komiteye sunmak ve bunları Uluslararası Standardizasyon Örgütü'nün genel toplantılarında savunmak üzere organize edildi.
C++ çok paradigmalı bir dildir (paradigma - yazma stili kelimesinden gelir) bilgisayar programları), geniş bir yelpazeyi kapsayan çeşitli stiller ve programlama teknolojileri. Genellikle nesne yönelimli bir dil olarak sınıflandırılır, ancak kesin olarak konuşursak durum böyle değildir. Çalışma süreci sırasında geliştirici, belirli bir yaklaşım kullanılarak çözülen problemin mümkün olduğu kadar verimli bir şekilde çözülmesi için araç seçiminde mutlak özgürlüğe sahip olur. Başka bir deyişle, C++ programcıyı yalnızca tek bir program geliştirme stiline (örneğin, nesne yönelimli) uymaya zorlamaz.
C++, ortak kapsayıcılar ve algoritmalar, G/Ç, düzenli ifadeler, çoklu iş parçacığı desteği ve diğer özellikleri içeren zengin bir standart kitaplığa sahiptir. C++, Java, C#, D dahil olmak üzere birçok programlama dilini etkilemiştir. C++, C dilinin sözdizimini temel alan bir dil ailesine ait olduğundan, bu ailenin diğer programlama dillerinde kolayca uzmanlaşabilirsiniz: JavaScript, PHP , Perl, Objective-C ve diğerleri. vb., ana dilin kendisi dahil - C. ()
Varlığı boyunca, C++ dili kolayca çürütülebilecek kalıcı mitler edinmiştir (buraya bakın: Bölüm 1 ve Bölüm 2)

Dilin tarihi ve standartlar sürümü

  • 1983
  • dilin yaratıcısı - Björn Stroustrup Bir Bell Laboratuvarı çalışanı olan C++ dilinin ilk versiyonunu tanıttı (“Sınıflı C”)

  • 1985
  • C++'ın ilk ticari sürümü, dil kazanımları modern isim

  • 1986
  • Björn Stroustrup tarafından yazılan, C++'a adanmış bir kitap olan C++ Programlama Dili'nin ilk baskısının yayımlanması

  • 1998
  • C++ dilinin uluslararası standardı onaylandı: ISO/IEC 14882:1998 “Standart için C++ Programlama Dili"

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

  • 2011
  • yeni bir standardın yayınlanması – C++11 veya ISO/IEC 14882:2011; yeni standart TR1'in çoğu dahil olmak üzere dil çekirdeğine eklemeler ve standart kütüphanenin genişletilmesi dahil

  • 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 küçük bir uzantısı olarak görülebilir.

  • 2017
  • yeni bir standardın piyasaya sürülmesi – C++1z (C++17). Bu standart birçok değişiklik ve eklemeler getirmiştir. Örneğin STD, C11 standardının kütüphanelerini içeriyordu, dosya sistemi boost::filesystem'a dayalıdır, çoğu Deneysel kütüphane TS I.

C++ Felsefesi

Björn Stroustrup, The Design and Evolution of C++ (2007) adlı kitabında C++'ı (kısaltılmış haliyle) tasarlarken takip ettiği ilkeleri şöyle anlatıyor:

  • Elde etmek evrensel dil Statik veri türleri ile C dilinin verimliliği ve taşınabilirliği.
  • Çeşitli programlama stillerini doğrudan ve kapsamlı bir şekilde destekler.
  • Yanlış seçim yapma fırsatı verse bile programcıya seçim özgürlüğü verin.
  • C ile uyumluluğu mümkün olduğu kadar koruyun, böylece mümkün kılın kolay geçiş C programlamadan.
  • C ve C++ arasındaki tutarsızlıklardan kaçının: Her iki dilde de geçerli olan herhangi bir yapı, her birinde aynı anlama gelmeli ve aynı program davranışına yol açmalıdır.
  • Platforma bağlı veya evrensel olmayan özelliklerden kaçının.
  • "Kullanmadığınız şeye para ödemeyin" - hayır dil cihazı kullanmayan programların performansını düşürmemelidir.
  • Aşırı karmaşık bir programlama ortamı gerektirmez.

C ve C++

C++'ın sözdizimi C dilinden miras alınmıştır. Her ne kadar resmi olarak C++'ın ilkelerinden biri C diliyle uyumluluğu sürdürmeye devam etse de, aslında bu diller için standardizasyon grupları etkileşimde bulunmaz ve yaptıkları değişiklikler değişmez. sadece birbiriyle ilişkili değildir, ancak çoğu zaman ideolojik olarak birbirleriyle temelde çelişir. Dolayısıyla yeni C standartlarının çekirdeğe eklediği öğeler, standart kütüphanenin C++ standart öğelerinde yer alır ve çekirdekte hiç yer almaz; örneğin dinamik diziler, sabit sınırları olan diziler, paralel işlem olanakları. Stroustrup'a göre bu iki dilin gelişimini birleştirmek büyük fayda sağlayacak ancak siyasi nedenlerden dolayı bunun mümkün olması pek mümkün değil. Dolayısıyla C ve C++ arasındaki pratik uyumluluk yavaş yavaş kaybolacak.
İÇİNDE bu örnekte kullanılan derleyiciye bağlı olarak “C++” veya “C” çıktısı alınacaktır:

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

Bunun nedeni, C'deki karakter sabitlerinin int türünde olması ve C++'da - olmasıdır. karakter yazın ancak bu türlerin boyutları farklılık göstermektedir.

Uygulama Yaşam Döngüsü Modelleri

Yaşam döngüsü yazılım oluşturma ihtiyacına karar verildiği andan itibaren başlayan bir süredir yazılım ürünü ve tamamen hizmetten çekildiği anda sona erer. Bu döngü yazılım oluşturma ve geliştirme sürecidir. Birkaç model var yaşam döngüsü.
Kademeli model yaşam döngüsü (İngiliz şelale modeli) 1970 yılında Winston Royce tarafından önerildi. Projenin tüm aşamalarının sıkı bir şekilde sıralı olarak uygulanmasını sağlar. sabit sıra. Bir sonraki aşamaya geçiş, bir önceki aşamadaki işin tamamen tamamlanması anlamına gelir. Gereksinimlerin oluşturulması aşamasında tanımlanan gereksinimler kesinlikle formda belgelenir. başvuru şartları ve projenin tüm gelişimi boyunca kaydedilir. Her aşama, geliştirmenin başka bir geliştirme ekibi tarafından sürdürülmesine olanak sağlayacak kadar eksiksiz bir belge setinin yayınlanmasıyla sonuçlanır.
Ş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.

Kademeli modelde bir proje aşamasından diğerine geçiş, önceki aşamanın sonucunun tamamen doğru olduğunu varsayar. İÇİNDE büyük projeler 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ı kalmadı ve yinelenen bir model kullandı).
Yinelemeli model
Kademeli modele bir alternatif, 70'lerde T. Gilb'den alınan yinelemeli ve artımlı geliştirme (IID) modelidir. evrimsel modelin adı. IID modeli, proje yaşam döngüsünü, bir bütün olarak projeyle karşılaştırıldığında 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 yineleme dizisine bölmeyi içerir. Her yinelemenin amacı, tüm önceki ve mevcut yinelemelerin entegre içeriği tarafından tanımlanan işlevsellik de dahil olmak üzere, 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 birlikte ürün, yeteneklerinde bir artış - bir artış - alır ve bu nedenle, evrimsel olarak gelişir.

Rusya'da uygulama yaşam döngüsünün standardizasyonu

Durum standardı, uygulama yaşam döngüsünü ayrıntılı olarak açıklamaktadır. GOST R ISO/IEC 12207-2010 " Bilgi Teknolojisi. Sistem ve yazılım mühendisliği. Yazılım yaşam döngüsü süreçleri". Bu standart kabul edildi Federal ajans Rusya Federasyonu'nun teknik düzenlemesi ve metrolojisine ilişkindir ve uluslararası ISO/IEC 12207:2008 standardına benzer. Bu standart, Genel yapı yazılım endüstrisinde yönlendirilebilecek yazılım yaşam döngüsünün süreçleri. Standart belirli bir yaşam döngüsü modeli önermemektedir. 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. Yaşam döngüsü süreçlerinin yapısını, bu süreçlerde yer alan faaliyetlerin ve görevlerin nasıl uygulanacağını veya tamamlanacağını belirtmeden açıklar.

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

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

Rasyonel Birleşik Süreç (RUP)(rasyonel birleşik süreç), Rational Software (IBM) tarafından sağlanan bir yazılım geliştirme metodolojisidir. Metodoloji, iş modellemeden test ve devreye almaya kadar geliştirmenin tüm aşamalarına yönelik öneriler sağlar. bitmiş program. Birleşik Modelleme Dili (UML) modelleme dili olarak kullanılır.
Ürün geliştirme yaşam döngüsünün tamamı, her biri bir veya daha fazla yineleme içeren dört aşamadan oluşur.

  • Başlangıç ​​aşaması (Başlangıç)
  • Proje kapsamının ve gerekli kaynak miktarının belirlenmesi. Ürünün temel gereksinimleri, sınırlamaları ve temel işlevleri belirlenir. Riskler değerlendirilir. Eylem planlaması. Tamamlandığında başlangıç ​​aşaması Paydaşlar arasında projeye devam etmek için bir anlaşma yapılmasını gerektiren Yaşam Döngüsü Hedefi Kilometre Taşına ulaşılıp ulaşılmadığı değerlendirilir.

  • Açıklama
  • Gereksinimlerin belgelenmesi. Yürütülebilir mimarinin tasarımı, uygulanması ve test edilmesi. Şartların ve maliyetlerin açıklanması. Temel risklerin azaltılması. 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şlevlerinin çoğu uygulanır: uygulama tasarımı tamamlanır, kaynak kodu yazılır. Oluşturma aşaması, sistemin ilk harici sürümü ve İlk Operasyonel Yetenek kilometre taşıyla sona erer.

  • giriiş
  • “Uygulama” aşamasında ürünün son hali oluşturularak geliştiriciden müşteriye aktarılır. Buna bir beta test programı, kullanıcı eğitimi ve ürünün kalitesinin belirlenmesi dahildir. Kalite, kullanıcı beklentilerini veya Başlangıç ​​aşamasında belirlenen kriterleri karşılamıyorsa Uygulama aşaması tekrar tekrarlanır. Tüm hedefleri tamamlamak, Ürün Sürümü kilometre taşına ulaşmak ve geliştirme döngüsünün tamamını tamamlamak anlamına gelir.


Bjarne Stroustrup'la söyleşi


Embarcadero C++Builder kullanan geliştiriciler için çevrimiçi konferans. C++ dilinin efsanevi yaratıcısı Bjarne Stroustrup ile söyleşiyi Embarcadero'nun geliştirici ilişkilerinden sorumlu başkan yardımcısı David Intersimone gerçekleştirdi. (Dublajlı çeviri).

C dili("C" okuyun) 70'lerin başında Bell Laboratuvarlarından Ken Thompson ve Dennis Ritchie'nin geliştirdiği zaman yaratıldı. işletim sistemi UNDC. Önce C derleyicisinin bir kısmını oluşturdular, sonra bunu derleyicinin geri kalanını derlemek için kullandılar İLE ve son olarak ortaya çıkan derleyiciyi UNIX'i derlemek için kullandık. UNIX işletim sistemi orijinal olarak kaynak koduyla dağıtıldı. İLEÜniversiteler ve laboratuvarlar arasında ve alıcı, uygun bir yazılım kullanarak C kaynak kodunu makine koduna derleyebilir. C derleyicisi.

Kaynak kodunun dağıtımı UNIX işletim sistemini benzersiz kıldı; programcı işletim sistemini değiştirebilir ve kaynak kodu bir donanım platformundan diğerine aktarılabilir. Bugün POSIX standardı şunları tanımlamaktadır: standart set UNIX sistem çağrıları şurada mevcuttur: İLE POSIX uyumlu UNIX sürümlerinde uygulanması gereken. İLE UNIX'in yaratılışı sırasında Thomson ve Ritchie tarafından geliştirilen üçüncü dildi; ilk ikisi elbette A Ve İÇİNDE.

Daha fazlası ile karşılaştırıldığında erken dil- BCPL, İLE Belirli uzunluklarda veri türleri eklenerek geliştirildi. Örneğin veri türü int ile bir değişken oluşturmak için kullanılabilir belli bir sayı bit (genellikle 16), veri türü ise uzun ile bir değişkenin tamamını oluşturmak için kullanılabilir Büyük bir sayı bitler (genellikle 32). Diğer dillerden farklı olarak yüksek seviye, İLE işaretçileri ve referansları kullanarak doğrudan bellek adresleriyle çalışabilir. Çünkü İLE doğrudan erişim olanağını korudu donanım genellikle orta düzey bir dil olarak sınıflandırılır veya şaka amaçlı olarak "mobil montaj dili" olarak adlandırılır.

Dilbilgisi ve sözdizimine gelince, o zaman İLE dır-dir yapısal dil programlama. Birçok modern programcı sınıflar ve nesneler açısından düşünürken, programcılar İLE prosedürler ve işlevler açısından düşünün. İÇİNDE İLE anahtar sözcüğünü kullanarak kendi soyut veri türlerinizi tanımlayabilirsiniz. yapı. Benzer şekilde, kendi tam sayı türlerinizi (numaralandırmalar) tanımlayabilir ve başka adlar verebilirsiniz. mevcut türler veri kullanarak anahtar kelime typedef. Bu manada İLE nesne yönelimli programlamanın tohumlarını taşıyan yapılandırılmış bir dildir.

Geniş kullanım C dili Açık çeşitli türler bilgisayarlar (bazen donanım platformları olarak da adlandırılır) ne yazık ki dilin birçok varyasyonuna yol açmıştır. Benzerlerdi ama birbirleriyle uyumsuzlardı. Bu, birden fazla platformda çalışabilen uyumlu programlar yazmaya ihtiyaç duyan yazılım geliştiricileri için büyük bir sorundu. Bunun gerekli olduğu ortaya çıktı standart versiyon C. 1983 yılında ANSI (Amerikan Ulusal Standartlar Komitesi), bir dil standardı oluşturmak için X3J11 teknik komitesini kurdu C("dilin net ve makineden bağımsız bir tanımını sağlamak"). 1989 yılında standart onaylandı. ANSI, ISO ile işbirliği yaptı ( Uluslararası organizasyon Standartlar) standardize etmek C uluslararası; 1990 yılında ANSI/ISO 9899:1990 adını taşıyan ortak bir standart yayınlandı. Bu standart halen geliştirilmektedir ve çoğu derleyici geliştirme şirketi tarafından desteklenmektedir.

Bjarne Stroustrup serbest bırakılan nesne yönelimli potansiyel İLE sınıf yeteneklerini aktararak Simülasyon 67 V İLE. İlk olarak yeni dil"Sınıflarla" adını taşıyordu ve ancak o zaman çağrılmaya başlandı C++. Dil C++ Bell Laboratuarlarında geliştirildikten sonra popülerlik kazandı, daha sonra diğer sektörlere ve şirketlere aktarıldı. Bugün en çok bunlardan biri popüler diller Dünyada programlama. C++ hem iyiyi miras alır hem de kötü yanları İLE.

Bjarne Stroustrup: "C++'ı buldum, ilk tanımını yazdım ve ilk uygulamasını tamamladım. Tasarım kriterlerini seçip formüle ettim C++, ana özelliklerini geliştirdi ve standardizasyon komitesindeki dilin genişletilmesine yönelik tekliflerin kaderinden sorumluydu C++", en popüler programlama dilinin yazarı yazıyor. - " C++ dili dile çok şey borçludur C ve dil C bir alt küme olarak kalır C++ dili(ancak C++, C tipi sistemdeki birçok ciddi kusuru düzeltmiştir). Ayrıca para biriktirdim C, en kritik sistem görevlerini yerine getirmeye yetecek kadar düşük düzeydedirler. C dili, selefi BCPL'ye çok şey borçludur; Bu arada, // yorum stili BCPL'den C++'a alınmıştır. Diğer ana ilham kaynağı ise Simula67 diliydi. Sınıf kavramı (türetilmiş sınıflar ve sanal işlevlerle birlikte) ondan ödünç alınmıştır. Operatörün aşırı yüklenmesine yönelik kolaylık ve bildirimlerin bir talimatın yazılabildiği her yere yerleştirilebilmesi Algol68'i anımsatıyor. "

İsim C++ Rick Massitti tarafından icat edildi. Bu ad, C'den ona geçişin evrimsel doğasını belirtir. "++", C'deki artırma operatörüdür. C+'nın biraz daha kısa adı: sözdizimi hatası; üstelik zaten bambaşka bir dilin adı olarak da kullanılıyor. C anlambilim bilim adamları bunu buluyor C++++C'den daha kötü. Dil, C'nin bir uzantısı olduğu ve çeşitli özellikleri bir kenara atarak sorunları çözmeye çalışmadığı için D olarak adlandırılmadı...

İlk olarak C++ programlama dili yazar ve arkadaşlarının montaj dili, C veya başka bir dilde programlama yapmasına gerek kalmayacak şekilde tasarlandı modern Diller yüksek seviye. Asıl amacı yazmaktı iyi programlar bireysel programcı için daha basit ve daha eğlenceli. Kalkınma Planı C++ kağıt üzerinde hiçbir zaman var olmadı; tasarım, dokümantasyon ve uygulama aynı anda taşındı. Tabii ki, harici arayüz C++ yazıldı C++. Hiçbir zaman bir "C++ Projesi" veya "C++ Geliştirme Komitesi" olmadı. Bu yüzden C++ Kullanıcıların karşılaştığı zorluklarla ve yazarın arkadaşları ve meslektaşlarıyla yaptığı tartışmalarla başa çıkmak için her yönde gelişti ve gelişmeye devam ediyor.

İÇİNDE C++ dili Nesne yönelimli programlamanın ilkeleri, üzerinde durduğu üç sütun da dahil olmak üzere tamamen desteklenir: kapsülleme, kalıtım ve polimorfizm. C++'da kapsülleme sınıf adı verilen standart dışı (özel) veri türlerinin oluşturulması yoluyla desteklenir. C++ dili mirası destekler. Bu, beyan edebileceğiniz anlamına gelir yeni tip mevcut olanın bir uzantısı olan veri (sınıf).

Rağmen C++ programlama dili haklı olarak C'nin devamı olarak adlandırılır ve uygulanabilir herhangi bir C programı desteklenecektir C++ derleyicisi C'den C++'a geçişte çok önemli bir sıçrama yapıldı. C++ dili Birçok programcının tam olarak yararlanmak için C dili ile olan yakınlığından uzun yıllardır faydalanmaktadır. C++ dili, önceki bilgilerinin bir kısmını bırakıp yenilerini edinmeleri gerekir, yani: çalışma yeni yol kavramsallaştırma ve programlama problem çözme. Öğrenmeye başlamadan önce C++, Stroustrup ve diğer birçok programcı kullanıyor C++ C öğrenmenin isteğe bağlı olduğunu düşünüyorlar.

C++ programlama dilişu anda ticari ürünler geliştirmek için kullanılan baskın dil olarak kabul ediliyor ve oyunların %90'ı bu dilde yazılıyor C++ DirectX'i kullanarak.

Edebiyat:
H.M.Deitel, P.J.Deitel "C++'da Nasıl Programlanır?"
Bjarne Stroustrup "C++ Programlama Dili. 3. Baskı."
Simon Robinson, Ollie Cornes, Jay Glynn ve diğerleri "Profesyoneller için C#".
Jess Liberty "21 günde kendinize C++ öğretin"
Stanislav Gornakov "DirectX, C++ programlama dersleri"

C dilinin bu durumunun nedeni nedir? Tarihsel olarak bu dil, şu anda yeniden doğuşunu yaşayan Unix işletim sisteminden ayrılamaz. 60'lı yıllar işletim sistemlerinin ve üst düzey programlama dillerinin oluşma dönemiydi. O zamanlar, işletim sistemleri ve derleyiciler her bilgisayar türü için 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 bu davada ortaya çıkan sorunların ortak yanı da zaten belli oldu. Bu ortaklığın farkındalığına verilen yanıt, evrensel bir mobil işletim sistemi yaratma girişimi oldu ve bunun için de aynı derecede evrensel ve mobil dil programlama. C böyle bir dil haline geldi ve Unix neredeyse tamamı yüksek düzeyli bir dilde yazılan ilk işletim sistemi oldu.

Unix ile yakın bağlantı, C diline o zamanlar başka hiçbir dilin sahip olmadığı bir test alanı sağladı. Görevler sistem programlama O zamanlar haklı olarak sektördeki en karmaşık ürün olarak kabul ediliyordu. Çoğunlukla makineye o kadar bağımlıydılar ki çoğu kişi bunları montajcıdan farklı bir şekilde çözmeyi düşünmedi bile. Yüksek seviyeli diller uygulama programlamaya yönelikti ve yalnızca uygulama programlama için gerekli olan çok sınırlı işlevleri uyguladı. sistem çalışması ve genellikle yalnızca belirli bir makine türü için.

En başından beri C dili yazabilmeniz için yaratıldı sistem görevleri. 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 öncelikle hafıza, 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. Geriye kalan her şey çalışma zamanı kitaplığına konuldu. Bu nedenle, eleştirmenler bazen C dilini yapısal birleştirici olarak adlandırır. Ama ne söylerlerse söylesin yaklaşımın çok başarılı olduğu ortaya çıktı. Onun sayesinde bu başarıya ulaştı yeni seviye Dilin basitliği ve yetenekleri açısından.

Ancak dilin başarısını belirleyen bir faktör daha var. Yaratıcılar bunu makineye bağımlı olarak çok ustaca ayırdılar ve bağımsız özellikler. Bu sayede çoğu program evrensel olarak yazılabilir; performansları işlemciye ve bellek mimarisine bağlı değildir. Kodun donanıma bağlı birkaç kısmı ayrı modüllerde yerelleştirilebilir. Ve bir ön işlemci kullanarak, farklı platformlarda derlendiğinde karşılık gelen makineye bağlı kodu üretecek modüller oluşturabilirsiniz.

C dilinin sözdizimi pek çok tartışmaya neden olmuştur. İçinde kullanılan kısaltma teknikleri aşırı kullanıldığında programı tamamen okunmaz hale getirebilir. Ancak Dijkstra'nın dediği gibi, okuma yazma bilmeden kullanılmaları nedeniyle araçlar suçlanamaz. Aslında C'de önerilen sözdizimi kısaltmaları pratikte en yaygın kalıplaşmış durumlara karşılık gelmektedir. Kısaltmaları bu tür durumların anlamlı ve özlü sunumu için deyimler olarak düşünürsek, faydaları koşulsuz ve açık hale gelir.

Böylece C evrensel bir sistem programlama dili olarak ortaya çıktı. Ancak bu sınırlar içinde kalmadı. 80'li yılların sonuna gelindiğinde, Fortran'ı lider konumundan çıkaran C dili, dünya çapındaki programcılar arasında büyük bir popülerlik kazandı ve çok çeşitli dillerde kullanılmaya başlandı. uygulamalı problemler. Burada, yeni nesil programcıların yetiştirildiği üniversite ortamında Unix'in (ve dolayısıyla C'nin) yayılması önemli bir rol oynadı.

Tüm diller gibi C de yavaş yavaş geliştirildi, ancak iyileştirmelerin çoğu radikal olmadı. Belki de bunlardan en önemlisi, C'de modüller arası iletişimin güvenilirliğini önemli ölçüde artıran, işlev türlerinin katı bir spesifikasyonunun getirilmesi olarak düşünülmelidir. Bu tür iyileştirmelerin tümü, 1989'da hala ANSI standardında yer aldı. C dili.

Ama eğer her şey bu kadar pembeyse, o zaman neden varlıklarını destekleyen diğer tüm diller kullanılmaya devam ediyor? C dilinin zayıf noktası ise 90'lı yıllarda gündeme gelen görevler için çok düşük seviyeli çıkmasıydı. Üstelik bu sorunun iki boyutu var. Bir yandan, dile çok düşük seviyeli araçlar yerleştirildi - öncelikle bellek yönetimi ve adres aritmetiği. İşlemcilerin bit kapasitesinin değiştirilmesinin birçok C programı üzerinde çok acı verici bir etkiye sahip olması sebepsiz değildir. Öte yandan C, soyut veri türleri ve nesneler, çok biçimlilik, istisna yönetimi gibi üst düzey özelliklerden yoksundur. Sonuç olarak, C programlarında bir görevi uygulama tekniği çoğu zaman içeriğine hakim olur.

Bu eksiklikleri gidermeye yönelik ilk girişimler 80'li yılların başında yapılmaya başlandı. O zaman bile AT&T Bell Laboratuvarlarından Bjarne Stroustrup C dilinin bir uzantısını geliştirmeye başladı. kod adı. Geliştirme tarzı, C dilinin yaratıldığı ruhla oldukça tutarlıydı - işi daha rahat hale getirmek için ona bazı özellikler eklendi belirli insanlar ve gruplar. C++ adı verilen yeni dilin ilk ticari tercümanı 1983 yılında ortaya çıktı. Programı C koduna çeviren bir ön işlemciydi. Ancak dilin asıl doğuşu Stroustrup’un kitabının 1985 yılında yayımlanması sayılabilir. İşte bu andan itibaren C++ dünya çapında popülerlik kazanmaya başladı.

C++'ın ana yeniliği, yeni veri türlerinin tanımlanmasını ve kullanılmasını mümkün kılan sınıf mekanizmasıdır. Programcı, bir sınıf nesnesinin dahili temsilini ve bu temsile erişim için bir dizi işlev yöntemini açıklar. C++'ı oluştururken en çok değer verilen hedeflerden biri, önceden yazılmış kodun yeniden kullanım yüzdesini artırma arzusuydu. Sınıf kavramı bunun için bir miras mekanizması sunuyordu. Kalıtım, genişletilmiş gösterime sahip yeni (türetilmiş) sınıflar oluşturmanıza olanak tanır ve değiştirilmiş yöntemler kaynak (temel) sınıfların derlenmiş kodunu etkilemeden. Aynı zamanda kalıtım, polimorfizmin uygulanmasına yönelik mekanizmalardan birini sağlar - nesne yönelimli programlamanın temel kavramı, buna göre aynı tür işlemenin gerçekleştirilmesi farklı şekiller verilerde aynı kod kullanılabilir. Aslında polimorfizm de kodun yeniden kullanımını sağlamanın yöntemlerinden biridir.

Sınıfların tanıtılması C++ dilinin tüm yeniliklerini tüketmez. Tam teşekküllü yapılandırılmış bir istisna işleme mekanizması uygular; bunun C'de yokluğu güvenilir programlar yazmayı çok daha zorlaştırır, bir şablon mekanizması - dilin derinliklerine yerleştirilmiş karmaşık bir makro oluşturma mekanizması, kodun yeniden kullanımına başka bir yol açar, ve daha fazlası.

Böylece, genel çizgi Dilin geliştirilmesi, ANSI C ile mümkün olduğu kadar tam uyumluluğu korurken yeni üst düzey yapılar ekleyerek yeteneklerini genişletmeyi amaçlıyordu. Tabii ki, dilin düzeyini artırma mücadelesi de ikinci cephede devam etti - aynı. sınıflar, doğru yaklaşımla düşük seviyeli işlemleri gizlemeye izin verir, böylece programcı aslında doğrudan bellekle ve sisteme bağımlı varlıklarla çalışmayı bırakır. Ancak dil, geliştiriciyi programı doğru şekilde yapılandırmaya zorlayacak mekanizmalar içermemektedir ve yazarlar, oldukça karmaşık yapıların kullanılmasına yönelik herhangi bir sistematik öneri yayınlamamıştır. Ayrıca en sık karşılaşılan veri yapılarını uygulayan standart bir sınıf kütüphanesi oluşturmaya da zamanında özen göstermediler.

Bütün bunlar, birçok geliştiricinin dilbilimsel anlambilimin labirentlerini kendilerinin keşfetmeye ve başarılı bir şekilde çalışan deyimleri bağımsız olarak bulmaya zorlanmasına yol açtı. Örneğin, dil gelişiminin ilk aşamasında, sınıf kitaplıklarının yaratıcılarının çoğu, ortak bir temel sınıf olan Object 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. Ancak bunun C++'ta tamamen uygulanamaz olduğu ortaya çıktı; sınıf kitaplıklarının dikkatlice tasarlanmış hiyerarşilerinin esnek olmadığı ve sınıfların çalışmasının açık olmadığı ortaya çıktı. Sınıf kitaplıklarının kullanılabilir olması için kaynak kodunda sağlanması gerekiyordu.

Şablon sınıflarının ortaya çıkışı bu gelişme yönünü tamamen çürüttü. 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 birbiriyle ilgisiz küçük hiyerarşilerden oluşmaya başladı. Ancak bu yolda düşüşe geçti yeniden kullanma C++'ta bağımsız hiyerarşilerden gelen sınıfların polimorfik kullanımı mümkün olmadığından kod. Şablonların yaygın kullanımı, derlenen kod hacminde kabul edilemez bir artışa yol açmaktadır - unutmayalım, şablonlar makro oluşturma yöntemleri kullanılarak uygulanmaktadır.

C sözdiziminden miras kalan C++'ın en ciddi eksikliklerinden biri, açıklamaların derleyici tarafından kullanılabilir olmasıdır. iç yapı kullanılan tüm sınıflar. 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ını doğurur. Bu, kütüphane geliştiricilerini modernizasyon açısından büyük ölçüde sınırlamaktadır, çünkü piyasaya sürüldüğünde Yeni sürüm, öncekiyle ikili uyumlu kalmaları gerekir. Pek çok uzmanın C++'ın büyük ve çok büyük projeleri yürütmek için uygun olmadığına inanmasına neden olan da bu sorundur.

Ve yine de, listelenen eksikliklere ve hatta dil standardının bulunmamasına rağmen (bu, on beşten sonra) ekstra yıllar kullanın!), C++ en popüler programlama dillerinden biri olmaya devam ediyor. Gücü esas olarak C diliyle neredeyse tam uyumluluğunda yatmaktadır. Bu sayede C++ programcıları C'de yapılan tüm gelişmelere erişebilir. Aynı zamanda C++, sınıfları kullanmadan bile çok sayıda önemli gelişmeyi beraberinde getirir. C'ye yapılacak şeyler Ek özellikler ve birçok kişinin onu geliştirilmiş bir S olarak kullandığı kolaylıklar.

C++ nesne modeline gelince, programınız çok büyük olmadığı sürece (yüzbinlerce satır) oldukça kullanışlıdır. Ortaya çıkan Son zamanlarda Bileşen tabanlı yazılımlara yönelik eğilim yalnızca C++'ın konumunu güçlendiriyor. Tek tek bileşenler geliştirilirken, C++'ın eksiklikleri henüz ortaya çıkmıyor ve bileşenlerin çalışan bir sisteme bağlanması artık dil düzeyinde değil, işletim sistemi düzeyinde yapılıyor.

Bütün söylenenlerin ışığında C++'ın geleceği pek de iç açıcı görünmüyor. Her ne kadar programlama dili pazarında tekel olmayacak olsa da. Belki de kesin olarak söyleyebileceğimiz tek şey, bu dilin başka bir modernleşme-yayılma sürecinden sağ çıkamayacağıdır. Java ortaya çıktığında ona bu kadar önem verilmesi boşuna değil. yakın ilgi. Sözdizimi olarak C++'a yakın olan ve bu nedenle birçok programcıya tanıdık gelen dil, 70'lerden miras kalan C++'ın en göze çarpan eksikliklerinden korunmuştur. Ancak Java, bazı kişilerin ona atadığı rolü karşılayamıyor gibi görünüyor.

C/C++ dillerinin modern programlamadaki özel rolü, internette materyal bulabileceğiniz belirli adresler sağlamayı pratik olarak anlamsız hale getirir. Bunun gibi çok fazla yer var. Ancak C++'ın gelişimi hakkında daha fazla bilgi edinmek istiyorsanız bu kısa makaleyle başlayın. http://citforum.syzran.ru/programming/prg96/76.shtml.

Alexander Sergeyev, [e-posta korumalı]
BYTE/Rusya dergisinden makale, 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 görev seçtik ve Ters sipariş takip etme. Bu, esas olarak diziler, döngüler, dallanma ve G/Ç ile çalışmayı gerektiren ve aynı zamanda alt program çağrılarını göstermenize olanak tanıyan en basit sorunlardan biridir. Aynı zamanda görünür ve kolay algılanır.

Listeleme 1.C

1 #dahil /* G/Ç fonksiyonlarını bağlayın */ 2 3 void main(void) 4 ( 5 int M; /* 0'dan başlayan 10 tam sayıdan oluşan dizi */ 6 int N; 7 for (N=0; N)<10; ++N) /* Вводим не более 10 чисел */ 8 if (EOF == scanf ("%d, M+N)) 9 break; /* Если конец файла, прерываем цикл */ 10 11 for (-N; N>=0; --N) /* Diziyi tersten inceliyoruz */ 12 if (M[N]%2) /* tek olanları sıralayıp yazdırıyoruz */ 13 printf("%d\n", M[N]); 14)

  • 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ü parametresinin yeniden hesaplanmasına ilişkin kural noktalı virgüllerle ayrılmış olarak gösterilir. Operasyonlar ++ Ve -/- - C dilinin en ünlü kısaltmaları, bir değişkenin artması ve azalması, yani değerinin birer birer artması ve azalması anlamına gelir.
  • 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, dizi konumunun adresine adres aritmetiği kullanılarak hesaplanır. M ofset şu şekilde eklenir: N elementler. Aynı etki yazarak da elde edilebilir. &M[N].
  • 12. satır. Operasyon % Bir bölümün kalanını hesaplar. Operatör durumu eğerİfadenin sayısal değeri sıfırdan farklıysa yürütülmüş sayılır.
  • 13. satır.İşlev baskı- formata göre yazdırma aynı şekilde çalışır tarama, ancak adresler yerine çıktısı alınacak değerler iletilir.
1 #dahil 2 3 şablon class Dizi 4 ( 5 public: Array (T Size=1) : M (new T), N(Size), n(0) () 6 Array (void) ( delete M;) 7 T Count (void) const ( return n; ) 8 T operatörü (int i) const ( return M[i]; ) 9 void Add (T Veri); 11 T* M // Dağıtılmış bellek adresi 12 int N, n - kullanılmış; 13); 14 15 şablonu geçersiz Dizi ::Add(T Data) 16 ( if (N-n) // Tahsis edilen 17'nin tümü kullanılırsa ( int* P = new T; // boşluk, 18'i daha dağıt for (int i=0; i) A; // Değişken boyutlu tamsayılar dizisi 28 while (1) // Sonsuz döngü 29 ( int N; 30 cin >> N; // cin - standart giriş akışı 31 if (cin.eof()) break; // Döngüden çık dosyanın sonuna kadar 32 A.Add(N); // Girilen sayıyı 33 ) 34 dizisine ekle for (int N=A.Count()-1; N>=0; --N) // Devam et dizi 35 if ( A[N]%2) 36 cout<ve hafızayı boşaltın
  • Satır 3-13.Şablon sınıfı bildirildi Sıralamak parametreli T. Türdeki nesnelerin değişken boyutlu bir dizisidir T. Elbette görevimizde şablon sınıfı kullanmaya gerek yok. Ancak biz C++'ın her türlü öğeyle çalışabilecek polimorfik bir veri yapısını nasıl oluşturabileceğini göstermek istedik.
  • 5. satır. Sınıf yapıcısı. Nesnenin temsilini başlatır. Örneğin, sahada M işlemin sıraladığı hafıza bloğunun adresi girilir yeni T.
  • 8. satır.İşlemin aşırı yüklenmesine örnek. İşlev Şebeke bir sınıf nesnesinin sağında köşeli parantezler göründüğünde çağrılacaktır Sıralamak.
  • 9. satır. Bu işlev uygulamada ana işlevdir. Diziye öğeler ekleyerek diziyi gerektiği gibi genişletir. Diğerlerine göre daha karmaşık olduğundan 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 yoluyla uygulanır. Bu, boyutunu artırmasına rağmen programı hızlandırır.
  • Satır 15-24. Bir fonksiyonun tanımı Dizi::Ekle(T)(bu arada tam adı bu).
  • 27. satır. Bir tür nesnesi oluşturma Sıralamak. Şablon Aggau türe göre parametrelendirilmiş int.

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 dilinin benzer iddiaları nedeniyle bu hakimiyet biraz sarsıldı, ancak kamuoyunun sarkacı diğer tarafa döndü ve Java için C++'ı terk eden birçok programcı yakın zamanda eski sevgisine geri döndü. Her durumda, iki dil o kadar benzer ki birini öğrendiğinizde diğerinin %90'ına otomatik olarak hakim olursunuz.

C#, Microsoft tarafından ağ platformu için geliştirilen yeni bir dildir. Esas itibarıyla C#, C++'ın bir çeşididir ve bir takım temel farklılıklara rağmen C# ve C++ dilleri yaklaşık %90 aynıdır. C#'ın C++ ile ciddi bir şekilde rekabet etmesi muhtemelen uzun zaman alacaktır; ancak bu gerçekleşse bile C++ dilini bilmek önemli bir avantaj olacaktır.

C++ genel amaçlı bir programlama dilidir. Doğal uygulama alanı, kelimenin geniş anlamıyla sistem programlamadır. Ayrıca C++ bu kapsamın çok ötesine geçen birçok uygulama alanında da başarıyla kullanılmıştır. C++ uygulamaları artık en basit mikro bilgisayarlardan en büyük süper bilgisayarlara kadar tüm makinelerde ve neredeyse tüm işletim sistemlerinde mevcuttur.

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

Bjarne Stroustrup, C++ dilinin geliştiricisi ve ilk çevirmenin yaratıcısıdır. Murray Hill'deki (New Jersey, ABD) AT&T Bell Laboratuvarları Araştırma Bilgi İşlem Merkezi'nin bir çalışanıdır. Aarus Üniversitesi'nden (Danimarka) Matematik ve Bilgisayar Bilimleri alanında yüksek lisans derecesi ve Cambridge Üniversitesi'nden (İngiltere) Bilgisayar Bilimleri alanında Doktora derecesi aldı. Dağıtık sistemler, işletim sistemleri, modelleme ve programlama konularında uzmanlaşmıştır. M. A. Ellis ile birlikte C++ dili için eksiksiz bir kılavuz olan The Annotated C++ Manual'ın yazarıdır.

Elbette C++, kendisinin bir alt kümesi olarak kalan C diline çok şey borçludur. Sistem programlamanın en acil sorunlarını çözmek için tasarlanmış tüm düşük seviyeli C araçları da korunmuştur. C de selefi BCPL diline çok şey borçludur. BCPL dil yorumu C++'a geri yüklendi. Bir başka ilham kaynağı da SIMULA-67 diliydi; sınıf kavramı (türetilmiş sınıflar ve sanal işlevlerle birlikte) ondan ödünç alındı. C++'ın işleçleri aşırı yükleme yeteneği ve bildirimleri bir işlecin bulunduğu her yere yerleştirme özgürlüğü, ALGOL-68 dilini hatırlatır.

Dilin "Sınıflı C" adı verilen önceki sürümleri 1980'den itibaren kullanılmaya başlandı. Bu dil, yazarın kesintiye dayalı simülasyon programları yazmaya ihtiyaç duyması nedeniyle ortaya çıktı. Verimlilik bir yana, SIMULA-67 dili bunun için idealdir. Büyük modelleme problemleri için sınıfları olan C dili kullanıldı. O zamanlar, zaman ve hafıza kaynaklarının kritik olduğu programların üzerine program yazma olanakları sıkı testlere tabi tutuluyordu. Bu dilde operatör aşırı yüklemesi, referanslar, sanal işlevler ve diğer birçok özellik yoktu. C++ ilk olarak Temmuz 1983'te yazarın araştırma grubu dışında piyasaya sürüldü, ancak C++'ın birçok özelliği henüz geliştirilmemişti.

C++ (C artı artı) adı, 1983 yazında Rick Mascitti tarafından icat edildi. Bu ad, C dilindeki değişikliklerin evrimsel doğasını yansıtır. ++ notasyonu, C'yi büyütme işlemini ifade eder. Biraz daha kısa olan C+ adı. bir sözdizimi hatasıdır. Üstelik zaten bambaşka bir dilin adı olarak da kullanılıyor. C anlambilimi uzmanları C++'ı ++C'den daha kötü buluyor. Dil, C'nin bir uzantısı olduğundan ve C'nin özelliklerini ortadan kaldırarak herhangi bir sorunu çözmeye çalışmadığından D olarak adlandırılmamıştır. C++ adının bir başka ilginç yorumu ekte bulunabilir.

C++ başlangıçta yazar ve arkadaşlarının montaj dili, C veya diğer modern üst düzey dillerde programlamak zorunda kalmaması için tasarlandı. Temel amacı basitleştirmek ve bireysel programcı için programlama sürecini daha keyifli hale getirmektir. Yakın zamana kadar kağıt üzerinde C++ geliştirme planı yoktu. Tasarım, uygulama ve dokümantasyon paralel olarak ilerledi. Hiçbir zaman bir "C++ Projesi" veya "C++ Geliştirme Komitesi" olmadı. Dolayısıyla dil, kullanıcıların karşılaştığı tüm sorunların üstesinden gelebilecek şekilde gelişmiştir ve gelişmeye de devam etmektedir. Yazarın tüm sorunları arkadaşları ve meslektaşlarıyla tartışması da gelişmeye ivme kazandırıyor.

Bu kitabın ilk baskısının yayınlanmasından bu yana C++ dili önemli değişikliklere ve iyileştirmelere uğradı. Bu esas olarak aşırı yükleme, bağlama ve bellek yönetimindeki belirsizliğin çözümüyle ilgilidir. Bununla birlikte, C diliyle uyumluluğu artırmak için, çoklu kalıtım, statik ve const belirtimli üye işlevleri, korumalı üyeler, tür şablonları ve özel durumların ele alınması gibi bazı genellemeler ve önemli uzantılar da eklenmiştir. Tüm bu uzantılar ve iyileştirmeler, C++'ı kütüphanelerin oluşturulup kullanılabileceği bir dil haline getirmeyi amaçlıyordu. Tüm değişiklikler bölümünde açıklanmıştır.

1985 ile 1991 arasında tanıtılan diğer uzantılar (çoklu miras, statik üye işlevler ve salt sanal işlevler gibi) diğer dillerden ziyade C++ programlama deneyiminin genelleştirilmesinden doğmuştur.

Bu altı yıl boyunca yapılan dil genişletmeleri öncelikle, genel olarak veri soyutlama ve nesne yönelimli programlama dili olarak ve özel olarak kullanıcı tanımlı veri türleriyle yüksek kaliteli kitaplıklar oluşturma aracı olarak C++'ın ifade edilebilirliğini artırmayı amaçlıyordu.

1987 civarında, C++ standardizasyon çalışmasının yakın olduğu ve bu konudaki çalışmaların hemen başlaması gerektiği ortaya çıktı.

AT&T Bell Laboratuvarları bu çalışmaya büyük katkıda bulunmuştur. Yaklaşık 20 kuruluştan yaklaşık yüz temsilci, referans kılavuzunun modern versiyonu haline gelenleri ve ANSI standardizasyonu için kaynak materyali gözden geçirdi ve yorum yaptı. C++. Son olarak, Hewlett-Packard'ın girişimiyle Aralık 1989'da ANSI bünyesinde X3J16 komitesi oluşturuldu. C++ için ANSI (Amerikan Standardı) standardizasyon çalışmasının, ISO (Uluslararası Standardizasyon Örgütü) standardizasyon çalışmasının bir parçası haline gelmesi beklenmektedir.

C++ bazı temel sınıfların geliştirilmesiyle eş zamanlı olarak geliştirildi.

İlginizi çeken C derslerini seçin:

C, 1972 yılında Dennis M. Ritchie tarafından oluşturulan bir programlama dilidir. O zamanki dilin standardı, Ritchie'nin Brian Kernighan ile birlikte yazdığı kitapta (C Programlama Dili) ortaya konmuştu. Bu standarda K&R standardı denir (Kernighan ve Ritchie'den sonra). K&R-C kuralları kullanılarak yazılan herhangi bir program, herhangi bir C derleyicisi tarafından başarıyla derlenecektir.

C için derleyiciler geliştiren programcılar dili modernleştirmeye ve geliştirmeye başladı. Karışıklığı önlemek için Amerikan Ulusal Standartlar Enstitüsü 1983 yılında ANSI dil standardını geliştirdi. ANSI-C bugüne kadar C dilinin değişim ve gelişimine ilişkin kuralları belirlemektedir.

C derlenmiş bir programlama dilidir. Bir program, bilgisayar donanımı tarafından yürütülebilmesi için ikili kodlara çevrilmesi gereken talimatlar ve işlevlerden oluşur.
C şu anda oldukça popüler; bunun nedeni hız, taşınabilirlik ve yapılandırma gibi talep edilen niteliklerdir.

  • Hız

Tüm üst düzey diller arasında C, montaj diline daha yakın bir programlama dilidir. Böylece birçok dil talimatı doğrudan bilgisayar donanımına yönlendirilir, bu nedenle program çok hızlı çalışır. Bu nedenle işletim sistemleri ve derleyiciler yazmak için C kullanılabilir.

En gelişmiş C derleyicileri yüksek düzeyde optimize edilmiş kodlar üretir; diğer bir deyişle, boyutu küçüktür (derleyicinin ürettiği kod ne kadar küçükse, o kadar optimize edilir).

  • Taşınabilirlik

Prensip olarak hızlı çalışan programları montaj dilinde yazmak mantıklı olacaktır. Ancak anımsatıcı montaj kodları mikroişlemci ailelerine uyarlandığından bunları her platform için yazmamız gerekir.

C standart anahtar kelime kümelerini kullanır. Onlar. program herhangi bir platform, herhangi bir işletim sistemine sahip herhangi bir bilgisayar için bir kez yazılır. Ancak dil için iki tür derleyici vardır: biri IBM için, diğeri Apple için. Ancak program metninin kendisi bir kez ve tamamen oluşturulur.

  • Yapılanma

C dilinde yazılan programların kendine has yapısı ve kuralları vardır, bu da programcıyı mantıksal düşünmeye teşvik eder.
Programı yapılandırma ihtiyacı yalnızca bir "artı"dır, çünkü bu sayede bir C programının tasarlanması, bakımı ve hata ayıklaması çok kolaydır.

  • İşlev kitaplıkları

C, başlangıçta sözdiziminde az sayıda işlem içeren bir programlama dilidir. Örneğin, dilde bilgi girişi ve çıkışı için yerleşik operatörlerin yanı sıra dizelerle çalışmak için operatörler yoktur.

Tüm C yetenekleri, bazıları derleyiciyle birlikte sağlanan işlev kitaplıkları aracılığıyla sağlanır. Kitaplık, derleyiciye eklenen ve belirli sorunların çözümüne yönelik işlevleri içeren ayrı bir dosyadır.



Makaleyi beğendin mi? Arkadaşlarınla ​​paylaş!