Povijest razvoja jezika C. §1 Opće informacije o jeziku. Faze izrade programa. Modeli životnog ciklusa aplikacije. C jezik i UNIX

C++ (izgovara se c-plus-plus) je kompilirani, statički tipizirani programski jezik opće namjene koji se može koristiti za stvaranje programa bilo koje razine složenosti.
Više od 20 godina ovaj jezik je u prva tri najpopularnija i najtraženija programska jezika. (To se može provjeriti posjetom web stranici TIOBE).
Jezik je nastao ranih 1980-ih, kada je zaposlenik Bell Labsa Björn Stroustrup smislio brojna poboljšanja jezika C za svoje potrebe.

Bjarne Stroustrup - tvorac jezika C++

Stroustrup je odlučio proširiti jezik C sa značajkama dostupnim u jeziku Simula. Jezik C, koji je osnovni jezik UNIX sustava na kojem su radila Bell računala, brz je, bogat značajkama i prenosiv. Stroustrup je tome dodao mogućnost rada s klasama i objektima. Kao rezultat toga, praktični problemi modeliranja pokazali su se dostupnima i u smislu vremena razvoja (zbog korištenja klasa sličnih Simulama) i u smislu vremena računanja (zbog brzine C).
Evo kako to kaže sam programer jezika:



Godine 1998., prvi jezični standard, poznat kao C++98, objavio je odbor za standarde. C++ se nastavlja razvijati kako bi zadovoljio suvremene zahtjeve. Jedna od grupa koja razvija jezik C++ i šalje prijedloge odboru za standardizaciju C++ kako bi ga poboljšala je Pojačati, koji se, između ostalog, bavi poboljšanjem sposobnosti jezika dodavanjem značajki metaprogramiranja. Najnoviji standard objavljen je 2017. godine i zove se C++17. Sljedeći standard neće dugo čekati i očekuje se da će se pojaviti 2020. godine.
Nitko nema prava na jezik C++, besplatan je. U ožujku 2016. u Rusiji je stvorena radna skupina WG21 C++. Grupa je organizirana da prikuplja prijedloge za standard C++, podnosi ih odboru i brani ih na općim sastancima Međunarodne organizacije za standardizaciju.
C++ je višeparadigmatski jezik (od riječi paradigma - stil pisanja računalnih programa), koji uključuje širok raspon različitih stilova i tehnologija programiranja. Često se naziva objektno orijentiranim jezikom, ali, strogo govoreći, to nije slučaj. U procesu rada programer dobiva apsolutnu slobodu u odabiru alata kako bi se problem riješen jednim ili drugim pristupom riješio što učinkovitije. Drugim riječima, C++ ne prisiljava programera da se pridržava samo jednog stila razvoja programa (na primjer, objektno orijentiranog).
C++ ima bogatu standardnu ​​biblioteku koja uključuje uobičajene spremnike i algoritme, I/O, regularne izraze, podršku za više niti i još mnogo toga. C++ je utjecao na mnoge programske jezike, uključujući: Java, C#, D. Budući da C++ pripada obitelji jezika koja se temelji na sintaksi jezika C, drugi programski jezici iz ove obitelji mogu se lako savladati: JavaScript , PHP, Perl, Objective-C i još mnogo toga. . itd., uključujući i sam matični jezik - C. ()
Tijekom svog postojanja, u jeziku C ++ ukorijenili su se stabilni mitovi koji se lako pobijaju (vidi ovdje: 1. i 2. dio)

Povijest jezika i izdavanje standarda

1983

Tvorac jezika - Bjorn Stroustrup, u Bell Labsu, predstavio je ranu verziju C++-a (“C s klasama”)

1985

Prvo komercijalno izdanje C++-a, jezik dobiva moderno ime

1986

Izdanje prvog izdanja Programskog jezika C++, knjige C++ koju je napisao Bjorn Stroustrup

1998

Ratificiran je međunarodni standard jezika C++: ISO/IEC 14882:1998 "Standard za programski jezik C++"

2003
2005

Objavljeno tehničko izvješće knjižnice 1 (TR1). Iako nije službeno dio standarda, izvješće opisuje proširenja standardne biblioteke koja bi trebala biti uključena u sljedeću verziju jezika C++.

2011

Izlazak nove norme - C++11 ili ISO/IEC 14882:2011; novi standard uključivao je dodatke u jezgru jezika i proširenje standardne biblioteke, uključujući veći dio TR1

2014

Izdavanje standarda C++14 (“Međunarodni standard ISO/IEC 14882:2014(E) Programski jezik C++”); C++14 se može promatrati kao mala ekstenzija C++11, koja uglavnom sadrži ispravke pogrešaka i manja poboljšanja.

2017

Izdanje novog standarda je C++1z (C++17). Ovaj standard unio je mnoge izmjene i dopune. Na primjer, STD je uključivao biblioteke standarda C11, datotečni sustav baziran na boost::filesystemu i većinu eksperimentalne TS I biblioteke.

2020

C++20 je neformalni naziv za ISO/IEC standard za programski jezik C++, koji se očekuje nakon C++17. Nacrt standarda N4800.

Filozofija C++

U The Design and Evolution of C++ (2007.), Bjorn Stroustrup opisuje principe koje je slijedio kada je dizajnirao C++ (dati u skraćenom obliku):

  • Nabavite univerzalni jezik sa statičkim tipovima podataka, učinkovitosti i prenosivosti C.
  • Izravno i sveobuhvatno podržavaju različite stilove programiranja.
  • Dajte programeru slobodu izbora, čak i ako mu to daje priliku da odabere pogrešan.
  • Održavajte kompatibilnost s C-om što je više moguće, čime je moguće lako prebaciti s programiranja na C.
  • Izbjegnite zabunu između C i C++: svaka konstrukcija dopuštena u oba jezika mora značiti istu stvar u svakom od njih i dovesti do istog ponašanja programa.
  • Izbjegavajte značajke koje ovise o platformi ili nisu univerzalne.
  • "Ne plaćajte za ono što ne koristite" - Nijedna jezična značajka ne bi trebala uzrokovati degradaciju performansi programa koji je ne koriste.
  • Ne zahtijevajte previše komplicirano programsko okruženje.

C i C++

Sintaksa C++ naslijeđena je iz jezika C. Iako, formalno, jedno od načela C++ ostaje održavanje kompatibilnosti s jezikom C, u stvari, standardizacijske grupe ovih jezika ​​​ne djeluju, a promjene koje čine ne samo da nisu u korelaciji, nego su često u osnovi ideološki proturječni. Dakle, elementi koje novi C standardi dodaju jezgri su elementi standardne biblioteke u C++ standardu i općenito su odsutni u kernelu, na primjer, dinamički nizovi, nizovi s fiksnim granicama, paralelna postrojenja za obradu. Kombinacija razvoja dvaju jezika bila bi od velike koristi, kaže Stroustrup, ali to je malo vjerojatno iz političkih razloga. Tako će se praktična kompatibilnost između C i C++ postupno gubiti.
U ovom primjeru, ovisno o korištenom prevodiocu, bit će izlaz "C++" ili "C":

Program 9.1

#uključiti int main() ( printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++" : "C"); vrati 0; )

To je zbog činjenice da su karakterne konstante u C-u tipa int, au C++-u su tipa char, ali se veličine tih tipova razlikuju.

Modeli životnog ciklusa aplikacije

Životni ciklus softver je vremenski period koji počinje od trenutka donošenja odluke o potrebi izrade softverskog proizvoda i završava u trenutku njegovog potpunog povlačenja iz rada. Ovaj ciklus je proces izgradnje i razvoja softvera (SW). Postoji nekoliko modela životnog ciklusa.
Kaskadni modelživotni ciklus (engleski model vodopada) predložio je 1970. Winston Royce. Omogućuje uzastopnu provedbu svih faza projekta u strogo utvrđenom redoslijedu. Prijelaz u sljedeću fazu znači potpuni završetak posla u prethodnoj fazi. Zahtjevi definirani u fazi formiranja zahtjeva strogo su dokumentirani u obliku projektnog zadatka i fiksirani za cijelo vrijeme trajanja razvoja projekta. Svaka faza kulminira izdavanjem kompletnog skupa dokumentacije dovoljne da razvoj nastavi drugi razvojni tim.
Faze projekta prema modelu vodopada:

  1. Formiranje zahtjeva;
  2. Oblikovati;
  3. Provedba;
  4. Testiranje;
  5. provedba;
  6. Rad i održavanje.

U modelu vodopada, prijelaz iz jedne faze projekta u drugu pretpostavlja potpunu ispravnost rezultata prethodne faze. U velikim projektima to je gotovo nemoguće postići. Stoga je takav model prikladan samo za razvoj malog projekta. (Sam W. Royce nije se pridržavao ovog modela i koristio je iterativni model).
Iterativni model
Alternativa modelu vodopada je model iterativnog i inkrementalnog razvoja (IID), koji je dobio od T. Gilba 70-ih godina. naziv evolucijskog modela. IID model razlaže životni ciklus projekta u niz iteracija, od kojih svaka nalikuje "mini-projektu", uključujući sve razvojne procese primijenjene na stvaranje manjih dijelova funkcionalnosti, u usporedbi s projektom u cjelini. Cilj svake iteracije je dobiti radnu verziju softverskog sustava, uključujući funkcionalnost definiranu integriranim sadržajem svih prethodnih i trenutnih iteracija. Rezultat završne iteracije sadrži svu potrebnu funkcionalnost proizvoda. Dakle, sa završetkom svake iteracije, proizvod dobiva inkrement – ​​prirast – svojim sposobnostima, koje se, dakle, evolucijski razvijaju.


U većini modernih razvojnih metodologija implementirane su različite varijante iterativnog pristupa:

Razvojni proces - Rational Unified Process (RUP)

Racionalni ujedinjeni proces (RUP)(Rational Unified Process) je metodologija razvoja softvera koju održava Rational Software (IBM). Metodologija daje preporuke za sve faze razvoja: od poslovnog modeliranja do testiranja i puštanja u rad gotovog programa. Unified Modeling Language (UML) koristi se kao jezik za modeliranje.
Cijeli životni ciklus razvoja proizvoda sastoji se od četiri faze, od kojih svaka uključuje jednu ili više iteracija.

  • Početni stadij (početak)
  • Određivanje opsega projekta i količine potrebnih sredstava. Određeni su glavni zahtjevi, ograničenja i ključna funkcionalnost proizvoda. Rizici se procjenjuju. Planiranje akcije. Na kraju početne faze, ocjenjuje se postizanje cilja životnog ciklusa Objective Milestone, što podrazumijeva dogovor između dionika za nastavak projekta.

  • Razrada
  • Dokumentacija o zahtjevima. Dizajn, implementacija i testiranje izvršne arhitekture. Specifikacija uvjeta i troškova. Smanjenje glavnih rizika. Uspješan završetak razvojne faze znači postizanje prekretnice arhitekture životnog ciklusa.

  • Izgradnja
  • U fazi "Build" implementira se većina funkcionalnosti proizvoda: dovršen je dizajn aplikacije, napisan je izvorni kod. Faza izgradnje završava prvim vanjskim izdanjem sustava i prekretnicom početne operativne sposobnosti.

  • Implementacija (prijelaz)
  • U fazi "Implementacije" kreira se konačna verzija proizvoda i prenosi od programera do kupca. To uključuje program beta testiranja, edukaciju korisnika i osiguranje kvalitete proizvoda. U slučaju da kvaliteta ne zadovoljava očekivanja korisnika ili kriterije postavljene u fazi početka, faza implementacije se ponovno ponavlja. Ispunjavanje svih ciljeva znači dostizanje prekretnice gotovog proizvoda (Izdanje proizvoda) i završetak cijelog razvojnog ciklusa.



"Informacijska tehnologija. Inženjering sustava i softvera. Procesi životnog ciklusa softvera". Ovu normu usvojila je Federalna agencija za tehničku regulaciju i mjeriteljstvo Ruske Federacije i slična je međunarodnoj normi ISO/IEC 12207:2008. Ovaj standard uspostavlja opći okvir za procese životnog ciklusa softvera koji se može koristiti kao smjernica u softverskoj industriji. Standard ne predlaže poseban model životnog ciklusa. Njegove odredbe zajedničke su svim modelima životnog ciklusa, metodama i tehnologijama za stvaranje softvera. Opisuje strukturu procesa životnog ciklusa bez specificiranja kako implementirati ili izvesti aktivnosti i zadatke uključene u te procese.

Prezentacija za lekciju
Teme poruka
  • Zaklada slobodnog softvera (FSF)
  • Licence slobodnog softvera
  • Besplatni softver i otvoreni izvor
  • Povijest razvoja programskih jezika
  • Povijest C. C i C++
  • Povijest
  • Kritika C++
  • Povijest UNIX-a
  • Spiralni model životnog ciklusa softvera
  • UML (engleski Unified Modeling Language - unificirani jezik modeliranja)
  • Microsoft Solutions Framework
  • IDE za C/C++ programiranje na Windowsima
  • C/C++ prevoditelji
  • Izrada konzolne aplikacije u sustavu Windows
Pitanja
  1. Zašto se model razvoja softvera slapa ne koristi u velikim projektima?
  2. Koja je razlika između modela vodopada i iterativnog razvoja?
  3. Navedite faze razvoja softvera u metodologiji Rational Unified Process (RUP).

C++ programski jezik

Posljednje ažuriranje: 28.08.2017

Programski jezik C++ je opće namjene, statički tipiziran, kompilirani programski jezik visoke razine koji je prikladan za izgradnju širokog spektra aplikacija. C++ je jedan od najpopularnijih i najraširenijih jezika danas.

Svoje korijene ima u jeziku C, koji je 1969.-1973. u Bell Labsu razvio programer Dennis Ritchie. Početkom 1980-ih, danski programer Bjarne Stroustrup, tada u Bell Labsu, razvio je C++ kao proširenje C jezika. Zapravo, u početku je C++ jednostavno dopunio C jezik nekim značajkama objektno orijentiranog programiranja. I tako ga je sam Stroustrup isprva nazvao "C s klasama" ("C s klasama").

Nakon toga, novi jezik je počeo stjecati popularnost. Dodane su mu nove značajke koje ga čine ne samo dodatkom C-u, već potpuno novim programskim jezikom. Kao rezultat toga, "C s klasama" je preimenovan u C++. I od tada su se oba jezika počela razvijati neovisno jedan o drugom.

C++ je moćan jezik, koji nasljeđuje bogate memorijske mogućnosti od C-a. Stoga C++ često nalazi svoju primjenu u programiranju sustava, posebice pri izradi operacijskih sustava, upravljačkih programa, raznih uslužnih programa, antivirusa itd. Inače, Windows je uglavnom napisan na C++. Ali upotreba ovog jezika nije ograničena na programiranje sustava. C++ se može koristiti u programima bilo koje razine gdje su brzina i performanse važni. Često se koristi za izradu grafičkih aplikacija, raznih aplikacijskih programa. Također se posebno često koristi za stvaranje igara s bogatim, bogatim vizualima. Osim toga, mobilni smjer u posljednje vrijeme dobiva na zamahu, gdje je C ++ također pronašao svoju primjenu. Čak iu web razvoju možete koristiti C++ za izradu web aplikacija ili neke vrste pomoćnih servisa koji služe web aplikacijama. Općenito, C++ je široko korišten jezik u kojem možete napisati gotovo sve vrste programa.

C++ je kompilirani jezik, što znači da prevodilac prevodi C++ izvorni kod u izvršnu datoteku koja sadrži skup strojnih uputa. Ali različite platforme imaju svoje karakteristike, tako da se kompilirani programi ne mogu jednostavno prenijeti s jedne platforme na drugu i tamo izvoditi. Međutim, na razini izvornog koda, C++ programi su uglavnom prenosivi osim ako se ne koriste neke značajke specifične za OS. A dostupnost prevoditelja, knjižnica i razvojnih alata za gotovo sve uobičajene platforme omogućuje prevođenje istog C++ izvornog koda u aplikacije za te platforme.

Za razliku od C, jezik C++ omogućuje pisanje aplikacija u objektno orijentiranom stilu, predstavljajući program kao kolekciju klasa i objekata koji međusobno djeluju. To pojednostavljuje izradu velikih aplikacija.

Prekretnice razvoja

U 1979-80, Bjarne Stroustrup razvio je proširenje za jezik C - "C s klasama". 1983. jezik je preimenovan u C++.

Godine 1985. objavljena je prva komercijalna verzija jezika C++, kao i prvo izdanje knjige "Programski jezik C++", koja je predstavljala prvi opis ovog jezika u nedostatku službenog standarda.

Godine 1989. objavljena je nova verzija jezika C++ 2.0, koja je uključivala niz novih značajki. Nakon toga se jezik razvijao relativno sporo do 2011. godine. No, u isto vrijeme, 1998. godine, prvi je pokušaj standardizacije jezika učinjen od strane ISO (Međunarodne organizacije za standardizaciju). Prvi standard se zvao ISO/IEC 14882:1998 ili skraćeno C++98. Kasnije 2003. godine objavljena je nova verzija standarda C++03.

Godine 2011. objavljen je novi standard C++11 koji je sadržavao mnoge dodatke i obogatio jezik C++ velikim brojem novih značajki. Nakon toga 2014. godine uslijedio je manji dodatak standardu, također poznat kao C++14. I još jedno ključno izdanje jezika zakazano je za 2017.

Kompilatori i razvojna okruženja

Da biste razvili programe u C++, potreban vam je kompajler - on prevodi izvorni kod C++ u izvršnu datoteku, koja se zatim može pokrenuti. Ali u ovom trenutku postoji mnogo različitih kompilatora. Mogu se razlikovati u različitim aspektima, posebice u provedbi standarda. Osnovni popis kompilatora za C++ može se pronaći na wikipediji. Preporuča se za razvoj odabrati one kompilatore koji razvijaju i implementiraju sve najnovije standarde. Na primjer, u cijelom ovom tutorialu, pretežno će se koristiti besplatno dostupni prevodilac g++, koji je razvio GNU projekt.

Također možete koristiti IDE-ove kao što su Visual Studio, Netbeans, Eclipse, Qt, itd. za izradu programa.

C jezik i UNIX

Programski jezik IZ(izgovara se "C") nastao je ranih 70-ih kada su Ken Thompson i Dennis Ritchie iz Bell Labsa razvijali UNDC operativni sustav. Prvo su kreirali kompilacijski dio IZ, a zatim ga upotrijebio za prevođenje ostatka kompajlera IZ i konačno koristio rezultirajući prevodilac za prevođenje UNIX-a. UNIX operativni sustav izvorno je distribuiran u izvornim kodovima na IZ među sveučilištima i laboratorijima, a primatelj je mogao sastaviti izvorni kod na jeziku IZ na izvorni kod pomoću prikladnog prevoditelja IZ.

Distribucija izvornog koda učinila je UNIX operativni sustav jedinstvenim; programer bi mogao promijeniti operativni sustav, a izvorni kod se mogao prenijeti s jedne hardverske platforme na drugu. Danas, POSIX standard definira standardni skup UNIX sistemskih poziva dostupnih u IZ, koji se mora implementirati na verzijama UNIX-a koje su usklađene s POSIX-om. C je bio treći jezik koji su razvili Thomson i Ritchie tijekom stvaranja UNIX-a; Prva dva su, naravno, ALI I U.

C mobilni asemblerski jezik

U usporedbi s ranijim jezikom - BCPL, jezikom IZ poboljšan je dodavanjem specifičnih tipova podataka o duljini. Na primjer, tip podataka int mogao bi se koristiti za stvaranje varijable s određenim brojem bitova (obično 16), dok bi se tip podataka long mogao koristiti za stvaranje cjelobrojne varijable s više bitova (obično 32). Za razliku od drugih jezika visoke razine, IZ mogao raditi s memorijskim adresama izravno koristeći pokazivače i reference. Ukoliko IZ zadržao mogućnost izravnog pristupa hardveru, često se naziva jezikom srednje razine ili se u šali naziva "mobilnim asemblerskim jezikom".

C - strukturirani programski jezik

Što se gramatike i sintakse tiče, IZ je strukturirani programski jezik. Dok mnogi moderni programeri razmišljaju u terminima klasa i objekata, programeri IZ razmišljati u smislu postupaka i funkcija. U IZ možete definirati vlastite apstraktne tipove podataka pomoću ključne riječi struct. Slično, možete opisati svoje vlastite cjelobrojne vrste (enumeracije) i dati druga imena postojećim vrstama podataka koristeći ključnu riječ typedef. U tom smislu IZ je strukturni jezik s klicama objektno orijentiranog programiranja.

Standardizacija jezika C

Raširen jezik C na različitim tipovima računala (koja se ponekad nazivaju i hardverske platforme) je nažalost dovela do mnogih varijacija jezika. Bili su slični, ali nespojivi jedno s drugim. To je bio veliki problem za programere softvera koji su trebali pisati kompatibilne programe koji bi mogli raditi na više platformi. Postalo je jasno da je potrebna standardna verzija C. Godine 1983 ANSI (American National Standards Committee) formirao je tehnički odbor X3J11 za stvaranje jezičnog standarda C(da "pruži nedvosmislenu i strojno neovisnu jezičnu definiciju"). 1989. standard je odobren. ANSI se udružio s ISO (International Standards Organization) radi standardizacije C međunarodno; zajednički standard objavljen je 1990. godine i nazvan ANSI/ISO 9899:1990. Ovaj standard se još uvijek poboljšava i podržava ga većina programera kompajlera.

Rođenje C++-a

Bjorn Stroustrup oslobađa objektno orijentirani potencijal IZ prijenosom klasnih obilježja Simula 67 u IZ. U početku se novi jezik zvao "C s klasama", a tek tada se počeo zvati C++. Jezik C++ popularnost je postigao razvijanjem u Bell Labsu, a kasnije je prebačen u druge industrije i korporacije. Danas je to jedan od najpopularnijih (i autoritativnih) programskih jezika na svijetu. C++ nasljeđuje i dobre i loše strane IZ.

Ispovijesti Bjorna Stroustrupa

Bjorn Stroustrup: "Smislio sam C++, zapisao svoju izvornu definiciju i napravio prvu implementaciju. Odabrao sam i formulirao kriterije dizajna C++, razvio je svoje glavne značajke i bio odgovoran za sudbinu prijedloga proširenja jezika u odboru za standardizaciju C++", - piše autor najpopularnijeg programskog jezika. - "Jezik C++ duguje mnogo jeziku C, i jezik C ostaje podskup C++ jezik(ali C++ popravlja nekoliko ozbiljnih nedostataka u sustavu tipa C). Zadržao sam i sredstva C, koji su dovoljno niske razine za rješavanje najkritičnijih zadataka sustava. Jezik C, pak, mnogo duguje svom prethodniku, BCPL-u; usput, stil komentara // je preuzet iz C++ iz BCPL-a. Drugi glavni izvor inspiracije bio je jezik Simula67. Od njega je posuđen koncept klasa (s izvedenim klasama i virtualnim funkcijama). Podsjećaju sredstva preopterećenja operatora i mogućnost postavljanja deklaracija gdje god se instrukcija može napisati Algol68. "

Zašto C++

Ime C++ izumio Rick Massitti. Ime ukazuje na evolucijsku prirodu prijelaza na njega iz C. "++" je operacija povećanja u C. Nešto kraće ime C+ je sintaktička pogreška; štoviše, već se koristilo kao naziv sasvim drugog jezika. Stručnjaci za semantiku C naći to C++ Gori od ++C. Naslovi D jezik to nije shvatio jer je proširenje C i ne pokušava riješiti probleme izbacivanjem značajki.

Zašto je C++ bio potreban

U početku Programski jezik C++ dizajniran je tako da autor i njegovi prijatelji ne moraju programirati na asembleru, C ili drugim modernim jezicima visoke razine. Njegova je glavna svrha bila učiniti pisanje dobrih programa lakšim i ugodnijim za pojedinog programera. Plan razvoja C++ nikada nije bio na papiru; projekt, dokumentacija i provedba pomaknuli su se u isto vrijeme. Naravno, vanjsko sučelje C++ je upisano u C++. Nikada nije postojao "C++ projekt" ili "C++ Development Committee". Zato C++ razvijao i nastavlja se razvijati u svim smjerovima kako bi se nosio s poteškoćama s kojima se susreću korisnici, kao iu raspravama autora sa svojim prijateljima i kolegama.

Pravi objektno orijentirani C++

U C++ jezik principi objektno orijentiranog programiranja u potpunosti su podržani, uključujući tri stupa na kojima se ono temelji: enkapsulaciju, nasljeđivanje i polimorfizam. Inkapsulacija u C++ podržan stvaranjem nestandardnih (prilagođenih) tipova podataka koji se nazivaju klase. Jezik C++ podržava nasljeđivanje. To znači da možete deklarirati novu vrstu podataka (klasu) koja je proširenje postojećeg.

Iako Programski jezik C++ s pravom nazivaju nastavkom IZ i bilo koji izvodljivi program na jeziku IZ bit će podržan od strane prevoditelja C++, kada se krećete iz IZ do C++ napravljen je značajan skok. Jezik C++ imala koristi od svoje srodnosti s jezikom IZ tijekom godina, mnogi programeri su to otkrili kako bi u potpunosti iskoristili prednosti C++ jezik, trebaju se odreći dijela svojih dosadašnjih znanja i steći nova, odnosno naučiti novi način konceptualizacije i rješavanja programskih problema. Prije nego počnete učiti C++, Stroustrup i većina drugih programera koji koriste C++ razmotriti učenje jezika IZ neobavezno.

Programski jezik C++ koji se trenutno smatra dominantnim jezikom koji se koristi za razvoj komercijalnih proizvoda, na njemu je napisano 90% igara C++ koristeći DirectX.

Književnost

Izvori:

  • H.M.Deitel, P.J.Deitel "Kako programirati na C++"
  • Bjorn Stroustrup "Programski jezik C++. 3. izdanje."
  • Simon Robinson, Ollie Cornes, Jay Glynn i drugi "C# za profesionalce"
  • Jess Liberty "Nauči se C++ za 21 dan"
  • Stanislav Gornakov "Lekcije programiranja DirectX, C++"

Oznake: Povijest standardizacije C, ANSI C, ISO C, C99, C11, ISO/IEC C, C.

podrijetla

C i predstavlja "koproizvod" stvaranja UNIX operativnog sustava, koji su u Bell Laboratories razvili Ken Thompson, Denis Ritchie i suradnici. Thompson je sam napisao originalnu verziju UNIX-a koja je radila na DEC PDP-7, jednom od prvih miniračunala sa samo 8K riječi glavne memorije (ipak je to bila 1969.).

Kao i drugi operativni sustavi tog vremena, UNIX je bio napisan u asembleru. Otklanjanje pogrešaka u programima asemblerskog jezika pravi je problem i teško ga je poboljšati, a UNIX nije bio iznimka. Thompson je odlučio da je jezik visoke razine potreban za daljnji razvoj OS-a i osmislio je mali jezik B. Thompson je kao osnovu uzeo jezik BCPL, sistemski programski jezik razvijen sredinom 60-ih. BCPL, pak, potječe iz Algola 60, jednog od najranijih (i najutjecajnijih) jezika.

Ritchie se ubrzo pridružio UNIX projektu i počeo pisati u B. Godine 1970. Bell Labs je kupio PDP-11 za projekt. Budući da je B bio spreman za rad na PDP-11, Thompson je prepisao dio UNIX-a na B. Godine 1971. postalo je jasno da B nije sasvim prikladan za PDP-11, pa je Ritchie počeo stvarati proširenu verziju B. prvo ga je nazvao NB (Novi B), ali kada je jezik postao vrlo različit od B, ime je promijenjeno u C. Do 1973. jezik je bio dovoljno stabilan da se UNIX mogao prepisati u njemu. Prelazak na C pružio je važnu prednost: prenosivost. Pisanjem C kompajlera za svaki od strojeva u Bell Labsu, razvojni tim bi im mogao prenijeti UNIX.

Standardizacija

C se nastavio razvijati 70-ih godina, posebno između 1977. i 1979., kada je objavljena prva knjiga C. Programski jezik C, koji su napisali Brian Kernighan i Denis Ritchie i objavljen 1978., postao je biblija C programera. U nedostatku službenog standarda, ova knjiga - također poznata kao K&R, ili "Bijela knjiga" kako je obožavatelji C vole zvati - postala je de facto standard. U 70-ima je bilo malo programera na C-u i većina njih su bili korisnici UNIX-a. Međutim, 80-ih godina C se preselio izvan uskih granica UNIX svijeta. C prevoditelji su postali dostupni na raznim strojevima koji rade na različitim operativnim sustavima. Konkretno, C se počeo širiti na IBM PC platformi koja se brzo razvijala.

Zajedno s porastom popularnosti došli su i problemi. Programeri koji su pisali nove kompilatore uzeli su kao osnovu jezik opisan u K&R-u. Nažalost, u K&R-u su neke značajke jezika bile nejasno opisane, pa su ih prevoditelji često tumačili prema vlastitom nahođenju. Također, knjiga nije napravila jasnu razliku između onoga što je značajka jezika i onoga što je značajka UNIX operativnog sustava. Da stvar bude gora, nakon objavljivanja K&R-a, C se nastavio razvijati: dodane su mu nove značajke, a stare su izrezane iz njega. Ubrzo se pojavila očita potreba za sveobuhvatnim, točnim i suvremenim opisom jezika. Bez takvog standarda, počeli su se pojavljivati ​​dijalekti jezika koji su ometali prenosivost, najjaču stranu jezika.

Razvoj američkog standarda C započeo je 1983. godine pod pokroviteljstvom Američkog nacionalnog instituta za standarde (ANSI). Nakon mnogih revizija, standard je dovršen 1988. i službeno usvojen u prosincu 1989. kao ANSI X3.159-1989. Godine 1990. odobrila ga je Međunarodna organizacija za standardizaciju (ISO) kao međunarodnu normu ISO/IEC 9899:1990. Ova verzija jezika obično se naziva C89 ili C90 kako bi se izbjegla zabuna s izvornom verzijom C, koja se obično naziva K&R C.

Jezik je doživio manje promjene 1995. (promjene su opisane u dokumentu koji se obično naziva Amandman 1). Značajnije promjene dogodile su se 1999. godine, kada je objavljen standard ISO/IEC 9899:1999. Jezik opisan u ovom standardu obično se naziva C99. Izrazi "ANSI C", "ANSI/ISO C" i "ISO C", koji su se nekada koristili za opisivanje C99, dvosmisleni su zbog postojanja dvaju standarda.

Godine 2011., zajedno s revizijom jezika C++, objavljen je i standard C11. Unatoč prisutnosti standarda 11, mnogi prevodioci još uvijek ne podržavaju u potpunosti čak ni verzije C99, pa će korištenje standarda C11 biti eksplicitno navedeno.

C++ je kompilirani programski jezik opće namjene koji kombinira značajke programskih jezika visoke i niske razine. U usporedbi sa svojim prethodnikom, programskim jezikom C, najveći je naglasak stavljen na podršku objektno orijentiranom i generičkom programiranju. Naziv "programski jezik C++" dolazi iz programskog jezika C, u kojem unarni operator ++ označava povećanje varijable.

Programski jezik C++ naširoko se koristi za razvoj softvera. Naime, izrada raznih aplikacijskih programa, razvoj operativnih sustava, drajvera uređaja, kao i video igrica, i još mnogo toga. Stvorio ju je ranih 1980-ih Bjorn Stroustrup. Došao je do brojnih poboljšanja programskog jezika C za vlastitu upotrebu. oni. U početku nije bilo planirano stvaranje programskog jezika C++.

Podržava takve programske paradigme kao što su proceduralno programiranje, objektno orijentirano programiranje, generičko programiranje, osigurava modularnost, odvojenu kompilaciju, rukovanje iznimkama, apstrakciju podataka, deklaraciju tipova objekata (klasa), virtualne funkcije.

Rezultirajući naziv jezika dolazi od C++ unarnog postfiksnog operatora inkrementa (povećanje vrijednosti varijable za jedan). Naziv C+ nije korišten jer je riječ o sintaksičkoj grešci u C-u i, štoviše, naziv je preuzeo drugi jezik. Jezik također nije nazvan D jer "je proširenje C i ne pokušava riješiti probleme uklanjanjem C elemenata".

Prednosti jezika:

1. Skalabilnost. C++ se koristi za razvoj programa za razne platforme i sustave.

2. Sposobnost rada na niskoj razini s memorijom, adresama, portovima.

3. Sposobnost izrade generaliziranih algoritama za različite vrste podataka, njihovu specijalizaciju i izračune u fazi kompilacije pomoću predložaka.

4. Višeplatformski. Kompilatori su dostupni za veliki broj platformi, programi su razvijeni u C ++ za širok raspon platformi i sustava.

5. Učinkovitost. Jezik je dizajniran tako da programeru pruži maksimalnu kontrolu nad svim aspektima strukture programa i izvršavanja.

Nedostaci jezika:

1. Prisutnost mnogih značajki koje krše načela sigurnosti tipa dovodi do činjenice da se u C ++ programima može lako uvući suptilna pogreška.

2. Loša podrška modularnosti. Uključivanje sučelja vanjskog modula putem predprocesorskog umetanja datoteke zaglavlja (#include) ozbiljno usporava kompilaciju kada je uključen veliki broj modula.

3. Jezik C++ teško je naučiti i prevesti.

4. Neke pretvorbe tipova nisu intuitivne. Konkretno, operacija nad brojevima bez predznaka i s predznakom daje rezultat bez predznaka.

5. Neki smatraju nedostatak ugrađenog sustava za prikupljanje smeća nedostatkom jezika C++. S druge strane, C++ ima dovoljno alata da gotovo eliminira korištenje opasnih pokazivača, a nema temeljnih problema u implementaciji i korištenju prikupljanja smeća (na razini knjižnica, a ne jezika). Odsutnost ugrađenog prikupljanja smeća omogućuje korisniku da odabere strategiju upravljanja resursima.