Proqramlaşdırma dilinin müəllifi c. §1 Dil haqqında ümumi məlumat

C++ proqramlaşdırma dili

Son yeniləmə: 28/08/2017

C++ proqramlaşdırma dili yüksək səviyyəli tərtib edilmiş proqramlaşdırma dilidir ümumi məqsəd statik tipli, geniş çeşidli tətbiqlər yaratmaq üçün uyğundur. Bu gün C++ ən populyar və geniş yayılmış dillərdən biridir.

Onun kökləri 1969-1973-cü illərdə Bell Labs-da proqramçı Dennis Ritchie tərəfindən hazırlanmış C dilindədir. 1980-ci illərin əvvəllərində o zaman Bell Labs-da işləyən danimarkalı proqramçı Bjarne Stroustrup C dilinin uzantısı olaraq C++ dilini inkişaf etdirdi. Əslində, başlanğıcda C++ sadəcə C dilini bəzi obyekt yönümlü proqramlaşdırma imkanları ilə tamamlayırdı. Buna görə də Stroustrup özü əvvəlcə onu "C sinifləri ilə" adlandırdı.

Sonradan yeni dil populyarlıq qazanmağa başladı. Ona sadəcə C-yə əlavə deyil, tamamilə yeni proqramlaşdırma dili olan yeni funksiyalar əlavə edildi. Nəticədə "C sinifləri ilə" C++ adlandırıldı. Və bundan sonra hər iki dil bir-birindən asılı olmayaraq inkişaf etməyə başladı.

C++ güclü bir dildir, C-dən zəngin yaddaş imkanlarını miras alır. Buna görə də, C++ tez-tez sistem proqramlaşdırmasında, xüsusən də əməliyyat sistemləri, drayverlər, müxtəlif kommunal proqramlar, antiviruslar və s. Yeri gəlmişkən, Windows ƏS əsasən C++ dilində yazılır. Ancaq yalnız sistem proqramlaşdırma tətbiqi bu dildən məhdud deyil. C++ sürət və performansın vacib olduğu istənilən səviyyəli proqramlarda istifadə edilə bilər. Tez-tez müxtəlif qrafik proqramlar yaratmaq üçün istifadə olunur tətbiq proqramları. O, həmçinin zəngin, zəngin vizuallaşdırma ilə oyunlar yaratmaq üçün xüsusilə tez-tez istifadə olunur. Bundan başqa, in Son vaxtlar Mobil istiqamət getdikcə güclənir, burada C++ da öz tətbiqini tapıb. Və hətta veb inkişafında siz veb proqramlar və ya veb proqramlara xidmət edən bəzi köməkçi xidmətlər yaratmaq üçün C++ istifadə edə bilərsiniz. Ümumiyyətlə, C++, demək olar ki, hər cür proqram yarada biləcəyiniz geniş istifadə olunan bir dildir.

C++ tərtib edilmiş dildir, yəni kompilyator tərcümə edir mənbə C++ dilində maşın təlimatları toplusunu ehtiva edən icra edilə bilən fayla çevirin. Ancaq müxtəlif platformaların öz xüsusiyyətləri var, buna görə tərtib edilmiş proqramları sadəcə bir platformadan digərinə köçürmək və orada işlətmək olmaz. Bununla belə, mənbə kodu səviyyəsində bəzi ƏS-ə xas funksiyalar istifadə edilmədikdə, C++ proqramları əsasən portativdir. Və demək olar ki, bütün ümumi platformalar üçün kompilyatorların, kitabxanaların və inkişaf alətlərinin mövcudluğu eyni C++ mənbə kodunu bu platformalar üçün tətbiqlərə tərtib etməyə imkan verir.

C-dən fərqli olaraq, C++ dili proqramları bir-biri ilə qarşılıqlı əlaqədə olan siniflər və obyektlər toplusu kimi təqdim edən obyekt yönümlü üslubda proqramlar yazmağa imkan verir. Hansı ki, böyük proqramların yaradılmasını asanlaşdırır.

İnkişafın əsas mərhələləri

1979-80-ci illərdə Bjarne Stroustrup C dilinin genişləndirilməsini - "C with Classes"i inkişaf etdirdi. 1983-cü ildə dil C++ adlandırıldı.

1985-ci ildə C++ dilinin ilk kommersiya versiyası, həmçinin rəsmi standart olmadığı halda bu dilin ilk təsvirini əks etdirən “C++ Proqramlaşdırma Dili” kitabının ilk nəşri buraxıldı.

1989-cu ildə buraxılmışdır yeni versiya Bir sıra yeni funksiyaları özündə birləşdirən C++ 2.0 dili. Bundan sonra dil 2011-ci ilə qədər nisbətən yavaş inkişaf etdi. Ancaq eyni zamanda, 1998-ci ildə dili standartlaşdırmaq üçün ilk cəhd ISO təşkilatı (Beynəlxalq Standartlaşdırma Təşkilatı) tərəfindən edildi. İlk standart ISO/IEC 14882:1998 və ya qısaca C++98 adlanırdı. Daha sonra, 2003-cü ildə C++03 standartının yeni versiyası nəşr olundu.

2011-ci ildə nəşr olundu yeni standartÇoxlu əlavələri ehtiva edən və C++ dilini çoxlu sayda yeni funksionallıqla zənginləşdirən C++ 11. Bundan sonra, 2014-cü ildə C++14 kimi tanınan standarta kiçik bir əlavə buraxıldı. Və dilin başqa bir əsas buraxılışı 2017-ci ilə planlaşdırılır.

Kompilyatorlar və inkişaf mühitləri

C++-da proqramlar hazırlamaq üçün sizə kompilyator lazımdır – o, C++ dilində mənbə kodunu icra edilə bilən fayla çevirir, sonra onu işlədə bilərsiniz. Ancaq bu anda bir çox fərqli kompilyator var. Onlar müxtəlif aspektlərdə, xüsusən də standartların həyata keçirilməsində fərqlənə bilər. C++ üçün tərtibçilərin əsas siyahısını Vikipediyada tapmaq olar. İnkişaf üçün bütün ən son standartları inkişaf etdirən və tətbiq edən kompilyatorları seçmək tövsiyə olunur. Beləliklə, bu dərslik boyu biz ilk növbədə GNU layihəsi tərəfindən hazırlanmış sərbəst mövcud olan g++ kompilyatorundan istifadə edəcəyik.

Proqramlar yaratmaq üçün Visual Studio, Netbeans, Eclipse, Qt və s. kimi IDE-lərdən də istifadə edə bilərsiniz.

Yaradılış tarixi

Dil 1980-ci illərin əvvəllərində, Bell Labs əməkdaşı Björn Stroustrup öz ehtiyacları üçün C dilinə bir sıra təkmilləşdirmələr təklif etdikdə yaranıb. Stroustrup 1970-ci illərin sonlarında Bell Labs-da növbə nəzəriyyəsindəki problemlər üzərində işləməyə başlayanda (telefon zənglərinin modelləşdirilməsinə tətbiq edildiyi kimi) o, o zaman mövcud modelləşdirmə dillərindən istifadə cəhdlərinin səmərəsiz olduğunu və yüksək effektiv maşın dillərinin istifadəsini tapdı. məhdud ifadəliliyinə görə həyata keçirmək çox çətin idi. Beləliklə, Simula dili böyük inkişaf üçün çox faydalı olacaq xüsusiyyətlərə malikdir proqram təminatı, lakin çox yavaşdır və BCPL kifayət qədər sürətlidir, lakin aşağı səviyyəli dillərə çox yaxındır və böyük proqram təminatının inkişafı üçün uyğun deyil.

Dissertasiya təcrübəsini xatırladan Stroustrup C dilini (BCPL-nin varisi) Simula dilində mövcud olan imkanlarla tamamlamağa qərar verdi. C dili əsas dildir UNIX sistemləri Bell kompüterlərinin işlədiyi , sürətli, zəngin xüsusiyyətlərə malikdir və portativdir. Stroustrup siniflər və obyektlərlə işləmək bacarığını əlavə etdi. Nəticə etibarı ilə praktiki modelləşdirmə məsələləri həm işlənmə vaxtı (Simulaya bənzər siniflərin istifadəsi sayəsində), həm də hesablama vaxtı (C-nin sürəti sayəsində) baxımından asan həll olundu. İlk növbədə, C-yə siniflər (inkapsulyasiya ilə), sinif irsiyyəti, güclü tip yoxlanışı, daxili funksiyalar və standart arqumentlər əlavə edildi. Əvvəlcə "C ilə siniflər" adlanan dilin ilk versiyaları 1980-ci ildə istifadəyə verildi.

Stroustrup C-ni siniflərlə inkişaf etdirərkən, C-ni sinifləri olan mənbə kodunu sadə C mənbə koduna çevirən tərcüməçi olan cfront adlı proqram yazdı C inkişafı üçün. Yeni dil, müəllif üçün gözlənilmədən həmkarları arasında böyük populyarlıq qazandı və tezliklə Stroustrup minlərlə suala cavab verərək artıq şəxsən ona dəstək ola bilmədi.

C++ yaratarkən Björn Stroustrup istədi
  • Statik məlumat növləri, C dilinin səmərəliliyi və daşınması ilə ümumi təyinatlı bir dil əldə edin.
  • Prosedur proqramlaşdırma, verilənlərin abstraksiya, obyekt yönümlü proqramlaşdırma və ümumi proqramlaşdırma da daxil olmaqla müxtəlif proqramlaşdırma üslublarını birbaşa və hərtərəfli dəstəkləyin.
  • Proqramçıya seçim azadlığı verin, hətta bu ona yanlış seçim imkanı versə belə.
  • Mümkün qədər C ilə uyğunluğu qoruyun və bununla da C proqramlaşdırmasından asan keçidi mümkün edin.
  • C və C++ arasında uyğunsuzluqlardan qaçın: hər iki dildə etibarlı olan hər hansı bir konstruksiya onların hər birində eyni şeyi ifadə etməli və eyni proqram davranışına səbəb olmalıdır.
  • Platformadan asılı olan və ya universal olmayan xüsusiyyətlərdən çəkinin.
  • “İstifadə etmədiyiniz şeyin əvəzini ödəməyin”—heç bir dil funksiyası ondan istifadə etməyən proqramların performansının aşağı düşməsinə səbəb olmamalıdır.
  • Həddindən artıq mürəkkəb proqramlaşdırma mühiti tələb etməyin.

Yeni proqramlaşdırma dilinin yaradılması üçün əsas kimi C dilinin seçilməsi onunla izah olunur ki, C dili:

1. çoxməqsədli, yığcam və nisbətən aşağı səviyyəli dildir;
2. əksər sistem problemlərinin həlli üçün uyğundur;
3. hər yerdə və hər şeydə ifa olunur;
4. UNIX proqramlaşdırma mühiti ilə interfeyslər.

— B. Stroustrup. C++ proqramlaşdırma dili. Bölmə 1.6

C dilinin bir sıra məlum çatışmazlıqlarına baxmayaraq, Stroustrup onu əsas kimi istifadə etmək qərarına gəldi, çünki "C-nin problemləri var, lakin sıfırdan hazırlanmış bir dildə bunlar olacaq və biz C-nin problemlərini bilirik." Bundan əlavə, bu, yalnız əlavə edilmiş sintaktik elementləri orijinal C dilinə tərcümə edən prototip tərtibçisini (cfront) tez bir zamanda əldə etməyə imkan verdi.

C++ inkişaf etdikcə C konstruksiyalarının imkanlarını əhatə edən digər funksiyalar da daxil edildi və buna görə də köhnəlmiş konstruksiyaları silməklə dil uyğunluğundan imtina etmək məsələsi dəfələrlə qaldırıldı. Bununla belə, uyğunluq aşağıdakı səbəblərə görə saxlanılıb:

  • əvvəlcə C-də yazılmış və birbaşa C++-a köçürülmüş cari kodun qorunması;
  • əvvəllər C dilini öyrənmiş proqramçıların yenidən hazırlanması ehtiyacının aradan qaldırılması (onlara yalnız yeni C++ alətlərini öyrənmək lazımdır);
  • zaman dillər arasında qarışıqlığı aradan qaldırır paylaşma(əgər iki dil birlikdə istifadə olunursa, onların fərqləri ya minimal, ya da o qədər böyük olmalıdır ki, dilləri qarışdırmaq mümkün deyil").

1983-cü ilə qədər dilə virtual funksiyalar, funksiya və operatorun həddən artıq yüklənməsi, istinadlar, sabitlər, boş yaddaş idarəçiliyinə istifadəçi nəzarəti, təkmilləşdirilmiş tip yoxlanışı və yeni şərh üslubu (//) kimi yeni funksiyalar əlavə edilmişdir. Yaranan dil artıq klassik C-nin genişləndirilmiş versiyası deyildi və sinifləri ilə C-dən “C++” olaraq adlandırıldı. Onun ilk kommersiya buraxılışı 1985-ci ilin oktyabrında baş tutdu.

Nəticə dil adı C++ unar postfiks artım operatorundan gəlir (dəyişənin dəyərini bir artırır).

Rəsmi standartlaşdırma başlamazdan əvvəl, dil əsasən Stroustrup tərəfindən proqramlaşdırma cəmiyyətinin sorğularına cavab olaraq hazırlanmışdır. Dilin standart təsviri funksiyası Stroustrup tərəfindən yazılmış C++ dilində nəşr edilmiş əsərlər (dilin təsviri, istinad bələdçisi və s).

Standartların tarixi

1985-ci ildə rəsmi standartın olmaması səbəbindən son dərəcə vacib olan dilin ilk təsvirini verən C++ Proqramlaşdırma Dilinin ilk nəşri nəşr olundu.


1989-cu ildə C++ 2.0 versiyası buraxıldı. Onun yeni xüsusiyyətlərinə çoxsaylı irsiyyət, abstrakt siniflər, statik üzv funksiyaları, daimi funksiyalar və qorunan üzvlər daxildir. 1990-cı ildə "C++ üçün şərhli Referans Bələdçisi" nəşr olundu, sonradan bu standartın əsası oldu. Ən son yeniləmələrşablonlar, istisnalar, ad boşluqları, yeni tökmə növləri və Boolean növü daxildir.

C++ Standart Kitabxanası da onunla birlikdə inkişaf etdi. C++ standart kitabxanasına ilk əlavə ənənəvi C printf və scanf funksiyalarını əvəz etmək üçün vasitə təmin edən I/O axınları idi. Daha sonra standart kitabxananın ən əhəmiyyətli inkişafı Standart Şablon Kitabxanasının daxil edilməsi oldu.

1998-ci ildə C++ Standartları Komitəsi (ISO/IEC JTC1/SC22/WG21 işçi qrupu) tərəfindən hazırlanmış ISO/IEC 14882:1998 (C++98 kimi tanınır) dil standartı nəşr olundu. C++ standartı obyektlərin necə adlandırıldığını, bəzi istisnaların işlənməsi təfərrüatlarını və digər icra təfərrüatlı xüsusiyyətlərini təsvir etmir ki, bu da müxtəlif kompilyatorlar tərəfindən yaradılan obyekt kodunu uyğunsuz edir. Bununla belə, üçüncü tərəflər tərəfindən xüsusi arxitektura və əməliyyat sistemləri üçün bir çox standartlar yaradılmışdır.

2005-ci ildə Kitabxananın Texniki Hesabatı 1 (qısaldılmış TR1) buraxıldı. Rəsmi olaraq standartın bir hissəsi olmasa da, hesabat müəlliflərin C++ dilinin növbəti versiyasına daxil edilməsini gözlədikləri standart kitabxanaya əlavələri təsvir edir. TR1 dəstəyi, demək olar ki, bütün dəstəklənən C++ kompilyatorlarında yaxşılaşır.

2009-cu ildən əvvəlki standartın yenilənməsi üzrə işlər aparılır, yeni standartın ilkin versiyası əvvəlcə C++09, bir ildən sonra isə C++0x, bu gün C++11 idi ki, bu da özəyinə əlavələr daxildir. dil və standart kitabxananın genişləndirilməsi, o cümlədən TR1-in əksəriyyəti.

C++ günümüzün tələblərinə cavab vermək üçün inkişaf etməyə davam edir. C++ dilini inkişaf etdirən və onun təkmilləşdirilməsi ilə bağlı təklifləri C++ standartlaşdırma komitəsinə təqdim edən qruplardan biri Boost proqramıdır ki, o, digər məsələlərlə yanaşı, dilə metaproqramlaşdırma funksiyaları əlavə etməklə onun imkanlarını təkmilləşdirməklə məşğuldur.

Heç kimin C++ dilinin hüquqları yoxdur; Bununla belə, dil standartı sənədinin özü (qaralamalar istisna olmaqla) pulsuz olaraq mövcud deyil.

Teqlər: C, ANSI C, ISO C, C99, C11, ISO/IEC C, C standartlaşdırmasının tarixi.

Mənşəyi

C və yaradılış zamanı əldə edilən "yan məhsul"dur əməliyyat sistemi UNIX, Bell Laboratories-də Ken Thompson, Denis Ritchie və başqaları tərəfindən hazırlanmışdır. Tompson təkbaşına UNIX-in orijinal versiyasını yazdı, hansı ki, DEC PDP-7, əsas yaddaşı cəmi 8K söz olan ilk mini-kompüterlərdən biri idi (hər şeydən sonra, 1969-cu il idi).

Dövrün digər əməliyyat sistemləri kimi UNIX də assembler dilində yazılmışdır. Assembly dili proqramlarının sazlanması əsl ağrıdır və təkmilləşdirilməsi çətindir və UNIX də istisna deyildi. Tompson qərara gəldi ki, OS-ni daha da inkişaf etdirmək üçün bir dil lazımdır yüksək səviyyə və B. Tompson BCPL dilinə əsaslanan kiçik bir dil yaratdı sistem proqramlaşdırması, 60-cı illərin ortalarında inkişaf etmişdir. BCPL, öz növbəsində, ilk (və ən təsirli) biri olan ALGOL 60-dan qaynaqlanır. ən böyük təsir) dillər.

Ritçi tezliklə UNIX layihəsinə qoşuldu və B dilində yazmağa başladı. 1970-ci ildə Bell Labs layihə üçün PDP-11 aldı. B PDP-11-də işləməyə hazır olduğundan, Tompson UNIX-in bir hissəsini B-yə yenidən yazdı. 1971-ci ildə B-nin PDP-11 üçün o qədər də uyğun olmadığı aydın oldu, ona görə də Riçi B-nin genişləndirilmiş versiyasını yaratmağa başladı. onu NB (Yeni B) adlandırdı, lakin dil B-dən çox fərqli olduqda, ad C olaraq dəyişdirildi. 1973-cü ilə qədər dil UNIX-in yenidən yazılması üçün kifayət qədər sabit oldu. C-yə keçid mühüm bir üstünlük təmin etdi: daşınma. Bell Labs-da maşınların hər biri üçün C kompilyatoru yazmaqla inkişaf qrupu UNIX-i onlara bağlaya bilər.

Standartlaşdırma

C, 70-ci illərdə, xüsusən 1977-1979-cu illərdə, Brian Kernighan və Denis Ritchie tərəfindən yazılmış və 1978-ci ildə nəşr olunan C proqramlaşdırma dilinin ilk kitabı C proqramçılarının İncilinə çevrildiyi zaman inkişaf etməyə davam etdi. Rəsmi standartın olmadığı halda, bu kitab – K&R kimi də tanınır və ya C həvəskarlarının dediyi kimi “Ağ Kitab” – faktiki standarta çevrildi. 70-ci illərdə C proqramçıları az idi və onların əksəriyyəti UNIX istifadəçiləri idi. Bununla belə, 1980-ci illərdə C UNIX dünyasının dar hüdudlarından kənara çıxdı. C kompilyatorları müxtəlif əməliyyat sistemləri ilə işləyən müxtəlif maşınlarda mövcud olmuşdur. Xüsusilə, C sürətlə inkişaf edən IBM PC platformasında yayılmağa başladı.

Populyarlığın artması ilə yanaşı problemlər də meydana çıxdı. Yeni kompilyatorlar yazan proqramçılar K&R-də təsvir olunan dili əsas götürdülər. Təəssüf ki, K&R-də dilin bəzi xüsusiyyətləri qeyri-müəyyən şəkildə təsvir edilmişdir, ona görə də tərtibçilər çox vaxt onları öz mülahizələri ilə şərh edirdilər. Bundan əlavə, kitabda dilin xüsusiyyəti ilə UNIX əməliyyat sisteminin xüsusiyyəti arasında aydın fərq qoyulmamışdır. Vəziyyəti daha da pisləşdirən, K&R nəşrindən sonra C-nin inkişafını davam etdirməsi idi: ona yeni xüsusiyyətlər əlavə edildi və köhnələri kəsildi. Tezliklə dilin hərtərəfli, dəqiq və müasir təsvirinə aşkar ehtiyac yarandı. Belə bir standart olmadan dilin dialektləri meydana çıxmağa başladı, bu da daşıma qabiliyyətinə mane olurdu - dilin ən böyük gücü.

Amerika C standartının inkişafı 1983-cü ildə Amerika Milli Standartlar İnstitutunun (ANSI) himayəsi altında başladı. Bir çox düzəlişlərdən sonra standart 1988-ci ildə yekunlaşdırıldı və 1989-cu ilin dekabrında ANSI X3.159-1989 kimi rəsmi olaraq qəbul edildi. 1990-cı ildə Beynəlxalq Standartlaşdırma Təşkilatı (ISO) tərəfindən ISO/IEC 9899:1990 beynəlxalq standartı kimi təsdiq edilmişdir. Adətən K&R C adlanan C-nin orijinal versiyası ilə çaşqınlığın qarşısını almaq üçün dilin bu versiyası adətən C89 və ya C90 adlanır.

Dil 1995-ci ildə kiçik dəyişikliklərə məruz qalmışdır (dəyişikliklər ümumi olaraq 1 saylı Düzəliş adlanan sənəddə təsvir edilmişdir). Daha əhəmiyyətli dəyişikliklər 1999-cu ildə, ISO/IEC 9899:1999 standartı dərc edildikdə baş verdi. Bu standartda təsvir olunan dil adətən C99 adlanır. Bir vaxtlar C99-u təsvir etmək üçün istifadə edilən "ANSI C", "ANSI/ISO C" və "ISO C" terminləri iki standartın mövcudluğuna görə iki məna daşıyır.

2011-ci ildə C++ dilinin yenidən nəzərdən keçirilməsi ilə yanaşı, C11 standartı da buraxıldı. '11 standartının mövcudluğuna baxmayaraq, bir çox kompilyator hələ də C99 versiyalarını tam dəstəkləmir, buna görə də C11 standartının istifadəsi açıq şəkildə ifadə ediləcəkdir.

C++ (c-plus-plus oxu) tərtib edilmiş, statik tipli ümumi təyinatlı proqramlaşdırma dilidir və burada istənilən mürəkkəblik səviyyəsində proqramlar yarada bilərsiniz.
20 ildən artıqdır ki, bu dil ən populyar və tələb olunan üç proqramlaşdırma dili arasındadır. (Bunu TIOBE veb saytına daxil olaraq yoxlaya bilərsiniz).
Dil 1980-ci illərin əvvəllərində, Bell Labs əməkdaşı Björn Stroustrup öz ehtiyacları üçün C dilinə bir sıra təkmilləşdirmələr təklif etdikdə yaranıb.

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

Stroustrup Simula dilində tapılan imkanlarla C dilini genişləndirməyə qərar verdi. Bell kompüterlərinin işlədiyi UNIX sisteminin əsas dili olan C sürətli, zəngin xüsusiyyətlərə malikdir və portativdir. Stroustrup siniflər və obyektlərlə işləmək bacarığını əlavə etdi. Nəticə etibarı ilə praktiki modelləşdirmə məsələləri həm işlənmə vaxtı (Simulaya bənzər siniflərin istifadəsi sayəsində), həm də hesablama vaxtı (C-nin sürəti sayəsində) baxımından asan həll olundu.
Dil tərtibatçısının özü bu barədə necə danışır:



1998-ci ildə C++98 kimi tanınan ilk dil standartı standartlar komitəsi tərəfindən nəşr olundu. C++ günümüzün tələblərinə cavab vermək üçün inkişaf etməyə davam edir. C++ dilini inkişaf etdirən və onun təkmilləşdirilməsi üçün təklifləri C++ Standartlar Komitəsinə təqdim edən qruplardan biri də Gücləndirin, digər işlərlə yanaşı, dilə metaproqramlaşdırma xüsusiyyətləri əlavə etməklə onun imkanlarını təkmilləşdirməklə məşğuldur. Ən son standart 2017-ci ildə buraxıldı və adlanır C++ 17. Növbəti standartın gəlməsi çox çəkməyəcək və 2020-ci ildə ortaya çıxacağı gözlənilir.
Heç kimin C++ dilinin hüquqları yoxdur; 2016-cı ilin martında Rusiya yaradıldı işçi qrupu RG21 C++. Qrup C++ standartı üzrə təklifləri toplamaq, onları komitəyə göndərmək və Beynəlxalq Standartlaşdırma Təşkilatının ümumi yığıncaqlarında müdafiə etmək üçün təşkil edilib.
C++ çoxparadiqmalı dildir (paradiqma sözündən - yazı üslubu kompüter proqramları), müxtəlif proqramlaşdırma üslubları və texnologiyalarının geniş spektri daxil olmaqla. O, tez-tez obyekt yönümlü dil kimi təsnif edilir, lakin ciddi şəkildə desək, bu belə deyil. İş prosesində tərtibatçı müəyyən bir yanaşma ilə həll olunan problemin mümkün qədər səmərəli şəkildə həll edilməsi üçün alətlər seçməkdə mütləq azadlıq əldə edir. Başqa sözlə desək, C++ proqramçını proqram işlənməsinin yalnız bir üslubuna (məsələn, obyekt yönümlü) riayət etməyə məcbur etmir.
C++ ümumi konteynerləri və alqoritmləri, I/O, müntəzəm ifadələr, multithreading dəstəyi və digər funksiyalar. C++ bir çox proqramlaşdırma dillərinə təsir etdi, o cümlədən: Java, C#, D. C++ C dilinin sintaksisinə əsaslanan dillər ailəsinə aid olduğu üçün siz bu ailənin digər proqramlaşdırma dillərini asanlıqla mənimsəyə bilərsiniz: JavaScript, PHP , Perl, Objective-C və bir çox başqaları. və s., o cümlədən ana dilin özü - C. ()
Mövcud olduğu müddətdə C++ dili asanlıqla təkzib oluna bilən davamlı miflər əldə etmişdir (burada bax: 1-ci hissə və 2-ci hissə)

Dilin tarixi və buraxılış standartları

1983

Dilin yaradıcısı Björn Stroustrupdur, Bell Labs əməkdaşı, C++ dilinin ilkin versiyasını təqdim etdi (“C sinifləri ilə”)

1985

C++ dilinin ilk kommersiya buraxılışı olan dil müasir adını alır

1986

The C++ proqramının ilk nəşrinin buraxılışı Proqramlaşdırma dili- Björn Stroustrup tərəfindən yazılmış C++ üzrə kitab

1998

C++ dili üçün beynəlxalq standart ratifikasiya edilmişdir: ISO/IEC 14882:1998 “C++ Proqramlaşdırma Dili üçün Standart”

2003
2005

Kitabxananın Texniki Hesabatı 1 (TR1) buraxıldı. Rəsmi olaraq standartın bir hissəsi olmasa da, hesabatda C++ dilinin növbəti versiyasına daxil edilməli olan standart kitabxanaya əlavələr təsvir edilmişdir.

2011

Yeni standartın buraxılışı – C++ 11 və ya ISO/IEC 14882:2011; yeni standart dil nüvəsinə əlavələr və TR1-in əksəriyyəti daxil olmaqla standart kitabxananın genişləndirilməsini əhatə edirdi

2014

C++ 14 standartının buraxılışı (“Beynəlxalq Standart ISO/IEC 14882:2014(E) Proqramlaşdırma Dili C++”); C++ 14, əsasən səhv düzəlişləri və kiçik təkmilləşdirmələri ehtiva edən C++ 11 üzərində kiçik bir uzantı kimi görünə bilər.

2017

Yeni standartın buraxılışı – C++1z (C++17). Bu standart bir çox dəyişiklik və əlavələr etdi. Məsələn, STD-yə C11 standartının kitabxanaları daxildir, fayl sistemi, eksperimental TS I kitabxanasının böyük bir hissəsi olan boost::filesystem əsasında.

2020

C++ 20, C++ 17-dən sonra gözlənilən C++ proqramlaşdırma dili üçün ISO/IEC standartının qeyri-rəsmi adıdır. N4800 standart layihəsi.

C++ fəlsəfəsi

Björn Stroustrup “The Design and Evolution of C++” (2007) kitabında C++ dilini (qısaldılmış) tərtib edərkən əməl etdiyi prinsipləri təsvir edir:

  • Statik məlumat növləri, C dilinin səmərəliliyi və daşınması ilə ümumi təyinatlı bir dil əldə edin.
  • Müxtəlif proqramlaşdırma üslublarını birbaşa və hərtərəfli dəstəkləyir.
  • Proqramçıya seçim azadlığı verin, hətta bu ona yanlış seçim imkanı versə belə.
  • Mümkün qədər C ilə uyğunluğu qoruyun və bununla da C proqramlaşdırmasından asan keçidi mümkün edin.
  • C və C++ arasında uyğunsuzluqlardan çəkinin: hər iki dildə etibarlı olan hər hansı konstruksiya onların hər birində eyni şeyi ifadə etməli və eyni proqram davranışına səbəb olmalıdır.
  • Platformadan asılı olan və ya universal olmayan xüsusiyyətlərdən çəkinin.
  • "İstifadə etmədiyiniz üçün pul verməyin" - heç bir dil funksiyası onu istifadə etməyən proqramların performansının azalmasına səbəb olmamalıdır.
  • Həddindən artıq mürəkkəb proqramlaşdırma mühitini tələb etməyin.

C və C++

C++ dilinin sintaksisi C dilindən miras alınsa da, formal olaraq C++ prinsiplərindən biri C dili ilə uyğunluğu qoruyub saxlasa da, əslində bu dillər üçün standartlaşdırma qrupları qarşılıqlı təsir göstərmir və onların etdiyi dəyişikliklər də yoxdur. yalnız korrelyasiya etmir, lakin çox vaxt ideoloji cəhətdən bir-biri ilə əsaslı şəkildə ziddiyyət təşkil edir. Beləliklə, yeni C standartlarının nüvəyə əlavə etdiyi elementlər standart kitabxananın C++ standart elementlərindədir və ümumiyyətlə nüvədə yoxdur, məsələn, dinamik massivlər, sabit sərhədləri olan massivlər, obyektlər. paralel emal. Stroustrupun fikrincə, bu iki dilin inkişafının birləşdirilməsi böyük fayda gətirəcək, lakin siyasi səbəblərdən mümkün olmayacaq. Beləliklə, C və C++ arasında praktik uyğunluq tədricən itiriləcək.
IN bu misalda, istifadə olunan kompilyatordan asılı olaraq ya “C++” və ya “C” çıxışı olacaq:

Proqram 9.1

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

Bu onunla bağlıdır ki, C dilində simvol sabitləri int tipində, C++ dilində isə char tipindədir, lakin bu tiplərin ölçüləri fərqlidir.

Tətbiq Həyat Dövrü Modelləri

Həyat dövrü proqram təminatı yaratmaq ehtiyacı haqqında qərar qəbul edildiyi andan başlayan bir müddətdir proqram məhsulu və xidmətdən tamamilə çıxdığı anda başa çatır. Bu dövr proqram təminatının yaradılması və inkişafı prosesidir. Bir neçə həyat dövrü modeli var.
Kaskad modeli həyat dövrü (İngilis şəlaləsi modeli) 1970-ci ildə Uinston Roys tərəfindən təklif edilmişdir. O, ciddi şəkildə müəyyən edilmiş qaydada layihənin bütün mərhələlərinin ardıcıl həyata keçirilməsini təmin edir. Növbəti mərhələyə keçid əvvəlki mərhələdəki işlərin tam başa çatdırılması deməkdir. Tələblərin formalaşması mərhələsində müəyyən edilmiş tələblər texniki şərtlər şəklində ciddi şəkildə sənədləşdirilir və layihənin bütün inkişafı üçün qeyd olunur. Hər bir mərhələ, inkişafın başqa bir inkişaf komandası tərəfindən davam etdirilməsinə icazə vermək üçün kifayət qədər sənədlərin tam dəstinin buraxılması ilə başa çatır.
Şəlalə modelinə görə layihə mərhələləri:

  1. Tələblərin formalaşdırılması;
  2. Dizayn;
  3. İcra;
  4. Test;
  5. İcra;
  6. İstismar və texniki xidmət.

Kaskad modelində layihənin bir mərhələsindən digərinə keçid əvvəlki mərhələnin nəticəsinin tamamilə düzgün olduğunu nəzərdə tutur. Böyük layihələrdə buna nail olmaq demək olar ki, mümkün deyil. Buna görə də, bu model yalnız kiçik bir layihənin inkişafı üçün uygundur. (V.Roys özü də bu modelə əməl etməyib və iterativ modeldən istifadə edib).
İterativ model
Kaskad modelinə alternativ 70-ci illərdə T. Gilbdən alınan iterativ və artan inkişaf (IID) modelidir. təkamül modelinin adı. IID modeli layihənin həyat dövrünün bütövlükdə layihə ilə müqayisədə daha kiçik funksionallıq hissələrinin yaradılmasına tətbiq edilən bütün inkişaf prosesləri daxil olmaqla, hər biri “mini-layihəyə” bənzəyən iterasiya ardıcıllığına bölünməsini nəzərdə tutur. Hər bir iterasiyanın məqsədi işləyən versiyanı əldə etməkdir proqram təminatı sistemi, o cümlədən bütün əvvəlki və cari iterasiyaların inteqrasiya olunmuş məzmunu ilə müəyyən edilmiş funksionallıq. Son təkrarlamanın nəticəsi məhsulun bütün tələb olunan funksionallığını ehtiva edir. Beləliklə, hər bir iterasiya başa çatdıqda, məhsul öz imkanlarına bir artım - bir artım alır, buna görə də təkamül yolu ilə inkişaf edir.


Müasir inkişaf metodologiyalarının əksəriyyətində iterativ yanaşmanın müxtəlif variantları tətbiq olunur:

İnkişaf Prosesi - Rasional Vahid Proses (RUP)

Rasional Vahid Proses (RUP)(rasional vahid proses) Rational Software (IBM) tərəfindən dəstəklənən proqram təminatının hazırlanması metodologiyasıdır. Metodologiya inkişafın bütün mərhələləri üçün tövsiyələr verir: biznesin modelləşdirilməsindən tutmuş hazır proqramın sınaqdan keçirilməsinə və istismara verilməsinə qədər. Birləşdirilmiş Modelləşdirmə Dili (UML) modelləşdirmə dili kimi istifadə olunur.
Tam məhsulun inkişaf dövrü dörd mərhələdən ibarətdir ki, onların hər biri bir və ya daha çox iterasiya daxildir.

  • İlkin mərhələ (Başlanğıc)
  • Layihənin əhatə dairəsinin və tələb olunan resursların miqdarının müəyyən edilməsi. Məhsulun əsas tələbləri, məhdudiyyətləri və əsas funksionallığı müəyyən edilir. Risklər qiymətləndirilir. Fəaliyyət planlaması. İlkin mərhələnin sonunda, layihəni davam etdirmək üçün maraqlı tərəflər arasında razılaşmanı nəzərdə tutan Həyat Dövrünün Məqsəd Mərhələsinə nail olunması qiymətləndirilir.

  • Aydınlaşdırılması
  • Sənədləşdirmə tələbləri. İcra edilə bilən arxitekturanın dizaynı, tətbiqi və sınaqdan keçirilməsi. Şərtlərin və xərclərin aydınlaşdırılması. Əsas risklərin azaldılması. İnkişaf mərhələsinin uğurla başa çatdırılması Həyat Döngüsü Arxitekturasının Mərhələsinə çatmaq deməkdir.

  • Tikinti
  • “Yaratmaq” mərhələsində məhsulun əksər funksiyaları həyata keçirilir: tətbiqin dizaynı tamamlanır, mənbə kodu yazılır. Quraşdırma mərhələsi sistemin ilk xarici buraxılışı və İlkin Əməliyyat İmkanı mərhələsi ilə başa çatır.

  • Giriş
  • “İcra” mərhələsində, a Son versiya məhsul və tərtibatçıdan müştəriyə ötürülür. Bura beta test proqramı, istifadəçi təlimi və məhsulun keyfiyyətinin müəyyən edilməsi daxildir. Keyfiyyət istifadəçi gözləntilərinə və ya Başlanğıc mərhələsində müəyyən edilmiş meyarlara cavab vermədikdə, İcra mərhələsi yenidən təkrarlanır. Bütün məqsədləri tamamlamaq Məhsulun Buraxılış mərhələsinə nail olmaq və tam inkişaf dövrünü tamamlamaq deməkdir.



« İnformasiya texnologiyaları. Sistem və proqram mühəndisliyi. Həyat Dövrü Prosesləri proqram təminatı". Bu standart Rusiya Federasiyasının Texniki Tənzimləmə və Metrologiya üzrə Federal Agentliyi tərəfindən qəbul edilmişdir və ISO/IEC 12207:2008 beynəlxalq standartına bənzəyir. Bu standart, proqram təminatı sənayesinə rəhbərlik etmək üçün istifadə edilə bilən proqram təminatının həyat dövrü prosesləri üçün ümumi çərçivə yaradır. Standart təklif etmir xüsusi model həyat dövrü. Onun müddəaları proqram təminatının yaradılması üçün istənilən həyat dövrü modelləri, metodları və texnologiyaları üçün ümumidir. O, bu proseslərə daxil olan fəaliyyətlərin və tapşırıqların necə həyata keçiriləcəyini və ya tamamlanacağını dəqiqləşdirmədən həyat dövrü proseslərinin strukturunu təsvir edir.

Dərs üçün təqdimat
Mesaj mövzuları
  • Pulsuz Proqram təminatı Fondu (FSF)
  • Pulsuz proqram lisenziyaları
  • Pulsuz proqram təminatı və açıq mənbə
  • Proqramlaşdırma dillərinin inkişaf tarixi
  • C və C++ dilinin tarixi
  • Hekayə
  • C++ dilinin tənqidi
  • UNIX-in tarixi
  • Spiral proqram təminatının həyat dövrü modeli
  • UML (Vahid Modelləşdirmə Dili)
  • Microsoft Solutions Framework
  • Windows-da C/C++ proqramlaşdırması üçün IDE
  • C/C++ kompilyatorları
  • Windows-da Konsol Tətbiqinin yaradılması
Suallar
  1. Proqram təminatının inkişafının şəlalə modeli niyə böyük layihələrdə istifadə edilmir?
  2. Şəlalə və iterativ inkişaf modelləri arasında fərq nədir?
  3. Rasional Vahid Proses (RUP) metodologiyasında proqram təminatının hazırlanması mərhələlərini sadalayın

Kateqoriyalar