Dil gelişimi c. §1 Dil hakkında genel bilgiler

Dil gelişimi c.  §1 Dil hakkında genel bilgiler
Dil gelişimi c. §1 Dil hakkında genel bilgiler

C++, hem üst düzey hem de alt düzey programlama dillerinin özelliklerini birleştiren genel amaçlı derlenmiş bir programlama dilidir. Selefi olan C programlama dili ile karşılaştırıldığında, nesne yönelimli ve genel programlamayı desteklemeye en büyük vurgu yapılmıştır. "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, geliştirme için yaygın olarak kullanılmaktadır. yazılım. Yani, çeşitli yaratma Uygulama programları, gelişim işletim sistemleri, aygıt sürücülerinin yanı sıra video oyunları ve daha fazlası. 1980'lerin başında Bjorn Stroustrup tarafından yaratıldı. Kendi kullanımı için C programlama dilinde bir dizi iyileştirme yaptı. onlar. Başlangıçta, C++ programlama dilinin oluşturulması 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) bildirimi, sanal işlevler sağlar.

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

Dilin avantajları:

1. Ölçeklenebilirlik. C++, çeşitli platformlar ve sistemler için programlar geliştirmek için kullanılır.

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

3. Aşağıdakiler için genelleştirilmiş algoritmalar oluşturma becerisi farklı şekillerşablonları kullanarak veriler, uzmanlıkları ve derleme zamanı hesaplamaları.

4. Çapraz platform. Kullanılabilir derleyiciler Büyük bir sayı C++ geliştiricileri, çok çeşitli platformlar ve sistemler için programlar geliştirir.

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

Dil Dezavantajları:

1. Tip güvenliği ilkelerini ihlal eden birçok özelliğin varlığı, C ++ programlarında ince bir hatanın kolayca içeri girebileceği gerçeğine yol açar.

2. Zayıf modülerlik desteği. Arayüz bağlantısı harici modülönişlemci girişi aracılığıyla başlık dosyası(#include), çok sayıda modül dahil edildiğinde derlemeyi ciddi şekilde yavaşlatır.

3. C++ dilinin öğrenilmesi ve derlenmesi zordur.

4. Bazı tür dönüşümleri sezgisel değildir. Özellikle imzasız ve imzalı sayılar üzerindeki işlem, imzasız bir sonuç verir.

5. Bazıları yerleşik bir çöp toplama sisteminin olmamasını C++ dilinin bir dezavantajı olarak görüyor. Öte yandan, C++, tehlikeli işaretçilerin kullanımını neredeyse ortadan kaldırmak için yeterli araca sahiptir ve çöp toplamanın uygulanmasında ve kullanımında (dil düzeyinde değil, kitaplık düzeyinde) hiçbir temel sorun yoktur. Yerleşik çöp toplamanın olmaması, kullanıcının bir kaynak yönetimi stratejisi seçmesine olanak tanır.

C dili ve UNIX

Programlama dili İLE("C" olarak telaffuz edilir) 70'lerin başında Bell Labs'tan Ken Thompson ve Dennis Ritchie UNDC işletim sistemini geliştirirken oluşturuldu. Önce derleyici bölümünü oluşturdular İLE, ardından derleyicinin geri kalanını derlemek için kullandı İLE ve son olarak ortaya çıkan derleyiciyi UNIX'i derlemek için kullandı. UNIX işletim sistemi orijinal olarak kaynak kodlarında dağıtılmıştır. İLEüniversiteler ve laboratuvarlar arasında ve alıcı derleyebilir kaynak dilde İLE uygun bir derleyici kullanarak yerel koda İLE.

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 taşınabilir. Bugün POSIX standardı içinde bulunan standart UNIX sistem çağrıları kümesini tanımlar. İLE POSIX uyumlu UNIX sürümlerinde uygulanması gerekir. C, Thomson ve Ritchie'nin bu süreçte geliştirdikleri üçüncü dildi. UNIX oluşturma; İlk ikisi, elbette, A Ve İÇİNDE.

C mobil derleme dili

Önceki dille karşılaştırıldığında - BCPL, dil İLE belirli uzunluk veri türleri eklenerek geliştirilmiştir. Örneğin, int veri türü, belirli sayıda bit içeren (tipik olarak 16) bir değişken oluşturmak için kullanılabilirken, uzun veri türü, daha fazla bit içeren (tipik olarak 32) bir tamsayı değişkeni oluşturmak için kullanılabilir. Diğer yüksek seviyeli dillerin aksine, İLE işaretçiler ve referanslar kullanarak doğrudan bellek adresleriyle çalışabilir. Çünkü İLE doğrudan erişim yeteneğini korudu donanım, genellikle orta düzey bir dil olarak adlandırılır veya şaka yollu "mobil montaj dili" olarak adlandırılır.

C - yapılandırılmış programlama dili

Dilbilgisi ve sözdizimi söz konusu olduğunda, İLE yapılandırılmış bir programlama dilidir. 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 struct anahtar sözcüğünü kullanarak kendi soyut veri türlerinizi tanımlayabilirsiniz. Benzer şekilde, kendi tamsayı türlerinizi (sıralamalarınızı) tanımlayabilir ve başka adlar verebilirsiniz. mevcut tipler typedef anahtar kelimesini kullanarak veri. Bu manada İLE nesne yönelimli programlamanın tohumlarını taşıyan yapısal bir dildir.

C dilinin standardizasyonu

yaygın dil C Açık çeşitli tipler bilgisayarlar (bazen donanım platformları olarak adlandırılır) maalesef dilin birçok varyasyonuna yol açmıştır. Birbirlerine benziyorlardı ama uyumsuzlardı. Bu, yazmaya ihtiyaç duyan yazılım geliştiriciler için büyük bir sorundu. uyumlu programlar birden çok platformda çalıştırılabilir. Gerekli olduğu ortaya çıktı standart versiyon C. 1983'te ANSI (Amerikan Ulusal Standartlar Komitesi), bir dil standardı oluşturmak için X3J11 teknik komitesini kurdu. C("kesin ve makineden bağımsız bir dil tanımı sağlamak" için). 1989'da standart onaylandı. ANSI standartlaştırmak için ISO (Uluslararası Standartlar Organizasyonu) ile ortaklık kurmuştur. C uluslararası; 1990 yılında ANSI/ISO 9899:1990 adlı ortak bir standart yayınlandı. Bu standart hala geliştirilmektedir ve çoğu derleyici geliştiricisi tarafından desteklenmektedir.

C++'ın Doğuşu

Bjorn Stroustrup Nesne Yönelimli Potansiyeli Ortaya Çıkarıyor İLE sınıf özelliklerini aktararak Simülasyon 67 v İLE. Başlangıçta, yeni dil "sınıflı C" olarak adlandırıldı ve ancak o zaman çağrılmaya başlandı. C++. Dil C++ Bell Laboratuarlarında geliştirilerek popülerlik kazanmış, daha sonra diğer sektörlere ve şirketlere devredilmiştir. Bugün dünyanın en popüler (ve yetkili) programlama dillerinden biridir. C++ hem iyi hem de kötü tarafları miras alır İLE.

Bjorn Stroustrup'un İtirafları

Bjorn Stroustrup: "Ben buldum C++, orijinal tanımını yazdı ve ilk uygulamasını yaptı. Tasarım kriterlerini seçtim ve formüle ettim C++, ana özelliklerini geliştirdi ve standardizasyon komitesinde dil uzatma önerilerinin kaderinden sorumluydu. C++", - en popüler programlama dilinin yazarı yazar. - "Dil C++ Dile çok şey borçlu C ve dil C bir alt küme olarak kalır C++ dili(ancak C++, C tipi sistemdeki birkaç ciddi kusuru düzeltir). fon da tuttum C, en kritik sistem görevlerini yerine getirmek için yeterince düşük düzeydedir. Dil C, sırayla, selefi BCPL'ye çok şey borçludur; bu arada, yorum stili // şu adresten alınmıştır: C++ BCPL'den. Diğer ana ilham kaynağı dildi. simülasyon67. Sınıf kavramı (türetilmiş sınıflar ve sanal işlevler ile) ondan ödünç alınmıştır. Operatörün aşırı yüklenmesi ve bir talimatın yazılabileceği herhangi bir yere bildirim yerleştirme yeteneği, algol68. "

Neden C++

İsim C++ Rick Massitti tarafından icat edildi. İsim, ona geçişin evrimsel doğasını gösterir. C. "++" bir artırma işlemidir. C. Biraz daha kısa isim C++ bir söz dizimi hatasıdır; üstelik daha şimdiden bambaşka bir dilin adı olarak kullanılmıştır. Semantik uzmanları C Bunu bul C++ daha kötü ++C. Başlıklar D dil, C'nin bir uzantısı olduğu için anlamadı ve özellikleri atarak sorunları çözmeye çalışmıyor.

C++ neden gerekliydi?

İlk olarak C++ programlama dili Yazar ve arkadaşlarının Assembly, C veya diğer modern üst düzey dillerde programlama yapması gerekmeyecek şekilde tasarlanmıştır. Asıl amacı yazmaktı. iyi programlar bireysel programcı için daha kolay ve daha eğlenceli. Kalkınma Planı C++ hiç kağıt üzerinde olmadı; proje, dokümantasyon ve uygulama aynı anda taşındı. Tabii ki, harici arayüz C++ yazıldı C++. Hiçbir zaman "C++ Projesi" veya "C++ Geliştirme Komitesi" olmamıştır. Bu yüzden C++ yazarın arkadaşları ve meslektaşları ile yaptığı tartışmalarda olduğu gibi, kullanıcıların karşılaştığı zorluklarla başa çıkmak için her yönden geliştirildi ve gelişmeye devam ediyor.

Gerçek Nesne Yönelimli C++

İÇİNDE C++ dili nesne yönelimli programlamanın ilkeleri, üzerinde durduğu üç sütun da dahil olmak üzere tam olarak desteklenir: kapsülleme, kalıtım ve çok biçimlilik. kapsülleme C++ sınıflar adı verilen standart dışı (özel) veri türleri oluşturarak desteklenir. Dil C++ mirası destekler. Bu, mevcut bir veri türünün uzantısı olan yeni bir veri türü (sınıf) bildirebileceğiniz anlamına gelir.

Rağmen C++ programlama dili haklı olarak devamı olarak adlandırılır İLE ve dilde herhangi bir uygulanabilir program İLE derleyici tarafından desteklenecek C++, taşınırken İLEİle C++önemli bir sıçrama yapılmıştır. Dil C++ dil ile olan akrabalığından yararlanmıştır. İLE Yıllar geçtikçe, birçok programcının bulduğu gibi, tam olarak yararlanmak için C++ dili, önceki bilgilerinin bir kısmından vazgeçmeleri ve yenilerini edinmeleri gerekir, yani: çalışmak yeni yol kavramsallaştırma ve programlama problemlerini çözme. Öğrenmeye başlamadan önce C++, Stroustrup ve kullanan diğer birçok programcı C++ dil öğrenmeyi düşün İLE isteğe bağlı.

Programlama dili C++Şu anda ticari ürün geliştirmede kullanılan baskın dil olarak kabul edilen oyunların %90'ı C++ DirectX kullanarak.

Edebiyat

kaynaklar:

  • H.M.Deitel, P.J.Deitel "C++'da Programlama"
  • Bjorn 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"

Etiketler: C, ANSI C, ISO C, C99, C11, ISO/IEC C, C standardizasyonunun tarihçesi.

kökenler

C'dir ve Bell Laboratories'de Ken Thompson, Denis Ritchie ve ortakları tarafından geliştirilen UNIX işletim sisteminin oluşturulmasından elde edilen bir "ortak üründür". Thompson, yalnızca 8K kelimelik ana belleğe sahip ilk mini bilgisayarlardan biri olan DEC PDP-7 üzerinde çalışan UNIX'in orijinal sürümünü tek başına yazdı (sonuçta 1969'du).

Günün diğer işletim sistemleri gibi UNIX de Assembly dilinde yazılmıştır. Derleme dili programlarında hata ayıklamak gerçek bir acıdır ve iyileştirilmesi zordur ve UNIX de bir istisna değildi. Thompson, işletim sisteminin daha da geliştirilmesi için yüksek seviyeli bir dile ihtiyaç olduğuna karar verdi ve küçük bir dil olan B'yi buldu. Thompson, BCPL dilini aldı. sistem programlama 60'ların ortalarında geliştirildi. BCPL ise en eski (ve en etkili) dillerden biri olan Algol 60'tan gelmektedir.

Ritchie kısa süre sonra UNIX projesine katıldı ve B'de yazmaya başladı. 1970 yılında Bell Labs, proje için bir PDP-11 satın aldı. B, PDP-11'de çalışmaya hazır olduğundan, Thompson UNIX'in bir bölümünü B olarak yeniden yazdı. 1971'de, B'nin PDP-11 için pek uygun olmadığı anlaşıldı, bu nedenle Ritchie, B'nin genişletilmiş bir sürümünü yaratmaya başladı. önce NB (Yeni B ) olarak adlandırdı, ancak dil B'den çok farklı hale gelince, ad C olarak değiştirildi. 1973'te dil, UNIX'in içinde yeniden yazılabileceği kadar kararlıydı. C'ye geçiş önemli bir fayda sağladı: taşınabilirlik. Geliştirme ekibi, Bell Laboratuarlarındaki makinelerin her biri için bir C derleyicisi yazarak UNIX'i bu makinelere taşıyabilir.

Standardizasyon

C 70'li yıllarda, özellikle ilk C kitabının yayınlandığı 1977-1979 yılları arasında gelişmeye devam etti.Brian Kernighan ve Denis Ritchie tarafından yazılan ve 1978'de yayınlanan C Programlama Dili, C programcılarının kutsal kitabı oldu. Resmi bir standardın yokluğunda, K&R olarak da bilinen bu kitap veya C hayranlarının sevdiği adıyla "Beyaz Kitap" fiili standart haline geldi. 70'lerde çok az C programcısı vardı ve bunların çoğu UNIX kullanıcısıydı. Ancak 80'lerde C, UNIX dünyasının dar sınırlarının ötesine geçti. C derleyicileri, çeşitli işletim sistemlerini çalıştıran çeşitli makinelerde kullanılabilir hale geldi. Özellikle hızla gelişen IBM PC platformunda C yaygınlaşmaya başladı.

Popülerliğin artmasıyla birlikte sorunlar da geldi. Yeni derleyiciler yazan programcılar, K&R'de açıklanan dili temel aldı. Ne yazık ki, K&R'de dilin bazı özellikleri belirsiz bir şekilde tanımlandı, bu nedenle derleyiciler genellikle bunları kendi takdirine bağlı olarak yorumladı. Ayrıca kitap, dilin özelliği ile UNIX işletim sisteminin özelliği arasında net bir ayrım yapmamıştır. Daha da kötüsü, K&R'nin yayınlanmasından sonra C gelişmeye devam etti: ona yeni özellikler eklendi ve eskileri çıkarıldı. Kısa süre sonra, dilin kapsamlı, doğru ve güncel bir tanımına ihtiyaç duyuldu. Böyle bir standart olmadan, dilin en güçlü yanı olan taşınabilirliği engelleyen dilin lehçeleri ortaya çıkmaya başladı.

Amerikan C standardının gelişimi, 1983 yılında Amerikan Ulusal Standartlar Enstitüsü'nün (ANSI) himayesinde başladı. Birçok revizyondan sonra, standart 1988'de tamamlandı ve Aralık 1989'da ANSI X3.159-1989 olarak resmen kabul edildi. 1990 yılında Uluslararası Standardizasyon Örgütü (ISO) tarafından uluslararası standart ISO/IEC 9899:1990 olarak onaylanmıştır. Dilin bu sürümü, genellikle K&R C olarak adlandırılan orijinal C sürümüyle karıştırılmaması için genellikle C89 veya C90 olarak adlandırılır.

Dil, 1995'te küçük değişikliklere uğradı (değişiklikler, genellikle Değişiklik 1 olarak adlandırılan bir belgede açıklanmaktadır). ISO/IEC 9899:1999 standardının yayınlandığı 1999 yılında daha önemli değişiklikler meydana geldi. Bu standartta açıklanan dil genellikle C99 olarak adlandırılır. Bir zamanlar C99'u tanımlamak için kullanılan "ANSI C", "ANSI/ISO C" ve "ISO C" terimleri, iki standardın varlığından dolayı belirsizdir.

2011 yılında C++ dil revizyonu ile birlikte C11 standardı yayınlandı. 11 standardının varlığına rağmen, birçok derleyici hala C99 sürümlerini bile tam olarak desteklememektedir, bu nedenle C11 standardının kullanımı açıkça belirtilecektir.

C++ (c-plus-plus olarak telaffuz edilir), herhangi bir karmaşıklık düzeyinde 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 gören ilk üç programlama dili arasında yer almaktadır. (Bu, TIOBE web sitesi ziyaret edilerek doğrulanabilir).
Dil, 1980'lerin başında, Bell Labs çalışanı Björn Stroustrup'un kendi ihtiyaçları için C dilinde bir dizi iyileştirme bulduğu zaman ortaya çıktı.

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

Stroustrup, C dilini Simula dilinde bulunan özelliklerle genişletmeye karar verdi. C dili, temel dil Bell bilgisayarlarının üzerinde çalıştığı UNIX sistemi 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ı nedeniyle) hem de hesaplama süresi (C'nin hızı nedeniyle) açısından erişilebilir olduğu ortaya çıktı.
Dilin geliştiricisinin kendisi bunu şöyle söylüyor:



1998 yılında, C++98 olarak bilinen ilk dil standardı bir standartlar komitesi tarafından 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 Artırmak, diğer şeylerin yanı sıra, ona metaprogramlama özellikleri ekleyerek dilin yeteneklerini geliştirmekle ilgilenir. En son standart 2017'de yayınlandı ve adı C++17. Bir sonraki standardın gelmesi uzun sürmeyecek ve 2020'de çıkması bekleniyor.
Hiç kimse C++ dilinin haklarına sahip değildir, ücretsizdir. Mart 2016'da Rusya kuruldu çalışma Grubu WG21C++. Grup, C++ standardı için teklifler toplamak, bunları komiteye sunmak ve Uluslararası Standardizasyon Örgütü'nün genel toplantılarında savunmak için organize edildi.
C++ çok paradigmalı bir dildir (paradigma kelimesinden - yazma stili bilgisayar programları), çok çeşitli farklı programlama stilleri ve teknolojileri içerir. Genellikle nesne yönelimli bir dil olarak anılır, ancak tam anlamıyla durum böyle değildir. Çalışma sürecinde, geliştirici, bir veya başka bir yaklaşım kullanılarak çözülen sorunun mümkün olduğunca verimli bir şekilde çözülmesi için araç seçiminde mutlak özgürlük elde eder. Başka bir deyişle, C++, programcıyı yalnızca tek bir program geliştirme stiline (örneğin, nesne yönelimli) bağlı kalmaya zorlamaz.
C++, ortak kapsayıcıları ve algoritmaları, G/Ç'yi, düzenli ifadeleri, çoklu kullanım desteğini ve daha fazlasını 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özdizimine dayalı bir dil ailesine ait olduğundan, bu ailenin diğer programlama dillerine kolayca hakim olunabilir: JavaScript , PHP, Perl, Objective-C ve çok daha fazlası. . vb., ana dilin kendisi dahil - C. ()
Varlığı sırasında, C ++ dilinde kolayca çürütülen kararlı mitler yerleşmiştir (buraya bakın: Bölüm 1 ve Bölüm 2)

Dilin tarihi ve standartların yayınlanması

1983

Dil yaratıcısı - Bjorn Stroustrup, Bell Labs'ta, C++'ın ("C with Classes") erken bir sürümünü kullanıma sundu.

1985

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

1986

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

1998

Uluslararası C++ dil standardı onaylandı: 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 bir sonraki sürümüne dahil edilmesi gereken uzantıları tanımlıyordu.

2011

Yeni bir standardın yayınlanması - C++11 veya ISO/IEC 14882:2011; yeni standart TR1'in çoğu dahil olmak üzere dilin özüne eklemeler ve standart kitaplığa bir uzantı 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 standardın sürümü C++1z'dir (C++17). Bu standart birçok değişiklik ve eklemeler yapmıştır. Örneğin STD, C11 standart kitaplıklarını içeriyordu, dosya sistemi, deneysel TS I kitaplığının büyük bir bölümü olan boost::filesystem'e dayalıdır.

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ğı.

Felsefe C++

The Design and Evolution of C++ (2007) adlı kitabında Bjorn Stroustrup, C++'ı tasarlarken izlediği ilkeleri (kısaltılmış biçimde verilmiştir) açıklar:

  • Statik veri türleri, C'nin verimliliği ve taşınabilirliği ile evrensel bir dil elde edin.
  • Çeşitli programlama stillerini doğrudan ve kapsamlı bir şekilde destekler.
  • Programcıya yanlış seçim yapma fırsatı verse bile seçim özgürlüğü verin.
  • C ile uyumluluğu mümkün olduğunca koruyun, böylece programlamadan C'ye kolayca geçiş yapın.
  • C ve C++ arasındaki tutarsızlıklardan kaçının: Her iki dilde 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 şey için ödeme yapmayın" - Hiçbir dil özelliği, onu kullanmayan programlar için performans düşüşüne neden olmamalıdır.
  • Çok karmaşık programlama ortamı gerektirmez.

C ve C++

C++ sözdizimi, C dilinden miras alınmıştır. Resmi olarak, C++ ilkelerinden biri C dili ile uyumluluğu sürdürmek olsa da, aslında, bu dillerin standardizasyon grupları etkileşime girmez ve değişiklikler make sadece birbiriyle ilişkili değil, aynı zamanda ideolojik olarak temelde birbiriyle çelişiyor. Dolayısıyla, yeni C standartlarının çekirdeğe eklediği öğeler, C++ standardındaki standart kitaplığın öğeleridir ve genellikle çekirdekte yoktur, örneğin dinamik diziler, sabit sınırları olan diziler, paralel işleme olanakları. Stroustrup, bu iki dilin gelişimini birleştirmenin büyük fayda sağlayacağına inanıyor, ancak siyasi nedenlerle pek mümkün değil. Bu nedenle, C ve C++ arasındaki pratik uyumluluk yavaş yavaş kaybolacak.
İÇİNDE bu örnek, kullanılan derleyiciye bağlı olarak "C++" veya "C" çıktısı alınır:

Program 9.1

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

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ünün yaratılması gerektiğine 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 (SW) oluşturma ve geliştirme sürecidir. Birkaç yaşam döngüsü modeli vardır.
Basamaklı 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 kesin olarak sabit bir sırayla sıralı olarak uygulanmasını 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 tanımlanan gereksinimler, görev tanımı şeklinde kesin bir şekilde belgelenir ve tüm proje geliştirme süresi boyunca sabitlenir. 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 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.

Şelale modelinde, bir proje aşamasından diğerine geçiş, önceki aşamanın sonucunun tamamen doğruluğunu varsayar. Büyük projelerde bunu başarmak neredeyse imkansızdır. Bu nedenle, böyle bir model yalnızca küçük bir projenin geliştirilmesi için uygundur. (W. Royce'un kendisi bu modele bağlı kalmadı ve yinelemeli bir model kullandı).
Yinelemeli model
Şelale modeline bir alternatif, 70'lerde T. Gilb'den alınan yinelemeli ve artımlı geliştirme (IID) modelidir. evrim modelinin adı. IID modeli, bir projenin yaşam döngüsü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çleri dahil olmak üzere, her biri bir "mini projeye" benzeyen bir dizi yinelemeye ayırır. Her yinelemenin amacı, çalışan bir sürüm elde etmektir. yazılım sistemi, tüm önceki ve geçerli yinelemelerin tümleşik içeriği tarafından tanımlanan işlevselliği içerir. Son yinelemenin sonucu, ürünün tüm gerekli işlevselliğini içerir. Böylece, her yinelemenin tamamlanmasıyla, ürün, dolayısıyla evrimsel olarak gelişen yeteneklerinde bir artış - bir artış - alır.


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

Geliştirme süreci - Rational Unified Process (RUP)

Rasyonel Birleşik Süreç (RUP)(Rational Unified Process), Rational Software (IBM) tarafından sürdürülen bir yazılım geliştirme metodolojisidir. Metodoloji, geliştirmenin tüm aşamaları için tavsiyeler sunar: iş modellemesinden bitmiş programın test edilmesine ve devreye alınmasına kadar. Modelleme dili olarak Unified Modeling Language (UML) kullanılmaktadır.
Tüm ü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ıç)
  • Proje kapsamının ve gerekli kaynakların miktarının belirlenmesi. Ürünün ana gereksinimleri, kısıtlamaları ve temel işlevleri belirlenir. Riskler değerlendirilir. Eylem planlaması. Başlangıç ​​aşamasının sonunda, projeye devam etmek için paydaşlar arasında bir anlaşma anlamına gelen Yaşam Döngüsü Hedefi Kilometre Taşına ulaşılması değerlendirilir.

  • detaylandırma
  • Gereksinim belgeleri. Yürütülebilir mimarinin tasarımı, uygulanması ve test edilmesi. Şartların ve maliyetin belirtilmesi. Ana 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ı
  • "Yapma" aşamasında, ürünün işlevlerinin ç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 kilometre taşı ile sona erer.

  • Uygulama (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 kalite güvencesi dahildir. Kalitenin, kullanıcıların beklentilerini veya Başlangıç ​​aşamasında belirlenen kriterleri karşılamaması durumunda, Uygulama aşaması tekrarlanır. Tüm hedeflere ulaşmak, bitmiş ürünün kilometre taşına (Ürün Sürümü) ulaşmak ve tüm geliştirme döngüsünü tamamlamak anlamına gelir.



« Bilgi Teknolojisi. Sistem ve yazılım mühendisliği. Yaşam döngüsü süreçleri yazılım araçları» . Bu standart Federal Ajans tarafından kabul edilmiştir. teknik düzenleme ve Rusya Federasyonu metrolojisi ve ISO/IEC 12207:2008 uluslararası standardına benzer. Bu standart, yazılım endüstrisinde kılavuz olarak kullanılabilecek yazılım yaşam döngüsü süreçleri için genel bir çerçeve oluşturur. standart sunmuyor belirli model yaşam döngüsü. Hükümleri, yazılım oluşturmaya yönelik tüm yaşam döngüsü modellerinde, yöntemlerinde ve teknolojilerinde 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ı açıklar.

ders için sunum
Mesaj konuları
  • Özgür Yazılım Vakfı (FSF)
  • Ücretsiz yazılım lisansları
  • Özgür Yazılım ve Açık Kaynak
  • Programlama dillerinin gelişim tarihi
  • CC ve C++ Tarihçesi
  • Hikaye
  • C++ Eleştirisi
  • UNIX'in Tarihi
  • Spiral Yazılım Yaşam Döngüsü Modeli
  • UML (İngilizce Birleşik Modelleme Dili - birleşik modelleme dili)
  • Microsoft Çözüm Çerçevesi
  • Windows'ta C/C++ programlama için IDE
  • C/C++ derleyicileri
  • Windows'ta Konsol Uygulaması Oluşturma
Sorular
  1. Neden şelale yazılım geliştirme modeli büyük projelerde kullanılmıyor?
  2. Şelale ve yinelemeli geliştirme modelleri arasındaki fark nedir?
  3. Rational Unified Process (RUP) metodolojisindeki yazılım geliştirme aşamalarını listeleyin

Neden C++

C++ şu anda ticari yazılım geliştirmek için kullanılan baskın dil olarak kabul edilmektedir. yazılım ürünleri. Son yıllarda, bu hakimiyet Java gibi bir programlama dilinden gelen benzer iddialarla biraz sarsıldı, ancak kamuoyunun sarkacı diğer yöne döndü ve Java için C++'ı terk eden birçok programcı son zamanlarda eski sevgisine geri döndü. Her halükarda, bu iki dil o kadar benzer ki, birini öğrendiğinizde diğerinde otomatik olarak %90 oranında ustalaşıyorsunuz.

C#, Microsoft tarafından ağ platformu için geliştirilmiş yeni bir dildir. Özünde, C# bir tür C++'dır ve bir takım temel farklılıklara rağmen C# ve C++ dilleri yaklaşık %90 oranında örtüşmektedir. C#'ın C++ için ciddi bir rakip haline gelmesi muhtemelen uzun zaman alacaktır; ancak öyle olsa bile C++ dilini bilmek önemli bir avantaj olacaktır.

C++ genel amaçlı bir programlama dilidir. Doğal kapsamı, kelimenin en 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ılmaktadır. C++ uygulamaları artık en mütevazı mikro bilgisayardan en büyük süper bilgisayara kadar her makinede ve neredeyse tüm işletim sistemlerinde.

C++ dilinin ortaya çıkışı ve gelişimi

Bjorn Stroustrup, C++ dilinin geliştiricisi ve ilk çevirmenin yaratıcısıdır. o bir araştırmacı bilgisayar Merkezi AT&T Bell Laboratuvarları, Murray Hill'de (New Jersey, ABD). Aarus Üniversitesi'nden (Danimarka) Matematik ve Bilgisayar Mühendisliği Yüksek Lisans ünvanını ve alanında doktorasını aldı. bilgisayar Bilimi Cambridge Üniversitesi'nde (İngiltere). 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ılavuzun yazarıdır - "A Guide to C++ with Notes".

Elbette C++, bir alt kümesi olarak korunan C diline çok şey borçludur. Sistem programlamanın en acil sorunlarını çözmek için tasarlanmış, C'nin doğasında bulunan tüm düşük seviyeli araçlar da korunur. C ise selefi BCPL'ye ç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ı ondan ödünç alındı ​​(türetilmiş sınıflar ve sanal işlevlerle birlikte). C++'ın işleçleri aşırı yükleme yeteneği ve bir işlecin göründüğü her yerde bildirim yerleştirme özgürlüğü Algol-68 dilini andırır.

Daha erken sürümler"C with class" olarak adlandırılan diller 1980'den beri kullanılmaktadır. Bu dil, yazarın kesintiye dayalı simülasyon programları yazması gerektiğinden ortaya çıkmıştır. SIMULA-67 dili, verimlilik dışında bunun için idealdir. Büyük modelleme görevleri için "C with class" dili kullanıldı. O zamanlar, zaman ve hafıza kaynaklarının kritik olduğu program yazma olanakları, titiz testlere tabi tutuldu. Bu dilde operatör aşırı yüklemesi, referanslar, sanal işlevler ve diğer birçok özellik yoktu. C++ ilk kez Temmuz 1983'te yazarın çalıştığı araştırma grubundan ayrıldı, ancak o zamanlar birçok C++ özelliği henüz geliştirilmemişti.

C++ (C plus plus) adı, 1983 yazında Rick Maschitti tarafından türetilmiştir. Bu ad, C dilindeki değişikliklerin evrimsel doğasını yansıtır. ++ gösterimi, C artırma işlemini ifade eder. Biraz daha kısa olan C+ adı, bir sözdizimi hatası. Ayrıca zaten tamamen farklı bir dilin adı olarak kullanılmıştır. C anlambilimcileri, C++'nın ++C'den daha kötü olduğunu bulurlar. Dil, C'nin bir uzantısı olduğu için D olarak adlandırılmaz ve C özelliklerini bırakarak herhangi bir sorunu çözmeye çalışmaz.C++ adının başka bir ilginç yorumu, ekinde bulunabilir.

Başlangıçta C++, yazar ve arkadaşlarının Assembly, C veya diğer modern üst düzey dillerde programlama yapmak zorunda kalmaması için tasarlandı. Ana amacı, bireysel programcı için programlama sürecini basitleştirmek ve daha keyifli hale getirmektir. Yakın zamana kadar kağıt üzerinde C++ geliştirme planı yoktu. Tasarım, uygulama ve dokümantasyon el ele gitti. Hiçbir zaman "C++ Projesi" veya "C++ Tasarım Komitesi" olmamıştır. Bu nedenle dil, kullanıcıların karşılaştığı tüm sorunları aşacak şekilde gelişti ve gelişmeye devam ediyor. Yazarın tüm sorunları arkadaşları ve meslektaşları ile tartışması da gelişme için itici güç görevi görür.

Bu kitabın ilk baskısının yayınlanmasından bu yana, C++ dili önemli değişikliklere ve iyileştirmelere uğramıştır. Bu, esas olarak aşırı yük belirsizliği giderme, bağlama ve bellek yönetimi ile ilgilidir. Bununla birlikte, C dili ile uyumluluğu artırmak için küçük değişiklikler yapılmıştır.Çoklu kalıtım, statik ve const özellikli üye işlevler, korumalı üyeler (korumalı), tip şablonları ve özel işleme gibi bazı genellemeler ve önemli uzantılar da getirilmiştir. durumlar. Tüm bu uzantılar ve iyileştirmeler, C++'ı kitaplıkların oluşturulabileceği ve kullanılabilecek bir dil haline getirmeyi amaçlıyordu. Tüm değişiklikler içinde açıklanmıştır.

1985 ile 1991 arasında sunulan diğer uzantılar (çoklu kalıtım, statik üye işlevler ve saf sanal işlevler gibi), diğer dillerden ziyade C++ programlama deneyiminin genelleştirmelerinden ortaya çıkmıştır.

Bu altı yıl boyunca yapılan dil uzantıları, öncelikle, genel olarak bir veri soyutlama dili ve nesne yönelimli programlama olarak ve özel olarak kullanıcı tanımlı veri türlerine sahip yüksek kaliteli kitaplıklar oluşturma aracı olarak C ++ 'nın ifade gücünü artırmayı amaçlıyordu.

1987 civarında, C++ standardizasyon çalışmasının çok yakın olduğu ve temelinin hemen atılması gerektiği anlaşıldı.

AT&T Bell Laboratories, bu çalışmanın ana katkıcısıydı. Yaklaşık 20 kuruluştan yaklaşık yüz temsilci, modern versiyonun ne hale geldiğini inceledi ve yorum yaptı. başvuru Kılavuzu ve ANSI standardizasyonu için kaynak malzemeler. C++. Son olarak, Aralık 1989'da Hewlett-Packard'ın girişimiyle ANSI bünyesinde X3J16 Komitesi kuruldu. ANSI'de (Amerikan standardı) C++ standardizasyon çalışmasının ISO (Uluslararası Standartlar Organizasyonu) standardizasyon çalışmasının ayrılmaz bir parçası haline gelmesi beklenmektedir.

C++, bazı temel sınıfların geliştirilmesiyle birlikte gelişmiştir.