Nyelvfejlesztés c. §1 Általános információk a nyelvről

Nyelvfejlesztés c.  §1 Általános információk a nyelvről
Nyelvfejlesztés c. §1 Általános információk a nyelvről

A C++ egy általános célú lefordított programozási nyelv, amely egyesíti a magas és az alacsony szintű programozási nyelvek jellemzőit. Elődjéhez, a C programozási nyelvhez képest a legnagyobb hangsúlyt az objektumorientált és az általános programozás támogatására helyezték. A "C++ programozási nyelv" elnevezés a C programozási nyelvből származik, amelyben az unáris operátor ++ egy változó növekedését jelöli.

A C++ programozási nyelvet széles körben használják fejlesztésre szoftver. Mégpedig a különféle létrehozása alkalmazási programok, fejlesztés operációs rendszer, eszköz-illesztőprogramok, valamint videojátékok és egyebek. Az 1980-as évek elején hozta létre Bjorn Stroustrup. Számos fejlesztést dolgozott ki a C programozási nyelven saját használatra. azok. Kezdetben nem volt tervben a C++ programozási nyelv létrehozása.

Támogatja az olyan programozási paradigmákat, mint a procedurális programozás, objektum-orientált programozás, általános programozás, modularitást biztosít, külön fordítást, kivételkezelést, adatabsztrakciót, objektumtípusok (osztályok) deklarálását, virtuális függvényeket.

Az eredményül kapott nyelvnév a C++ unary postfix increment operátorából származik (egy változó értékét eggyel növelve). A C+ nevet nem használtuk, mert ez egy szintaktikai hiba a C nyelvben, ráadásul a nevet egy másik nyelv vette fel. A nyelvet azért sem nevezték D-nek, mert "a C kiterjesztése, és nem próbálja meg megoldani a problémákat a C elemek eltávolításával".

A nyelv előnyei:

1. Skálázhatóság. A C++-t különféle platformok és rendszerek programjainak fejlesztésére használják.

2. Képes alacsony szinten dolgozni memóriával, címekkel, portokkal.

3. Képes általánosított algoritmusok létrehozására különböző típusok adatok, azok specializációja, valamint a sablonok segítségével végzett fordítási idő számítások.

4. Cross-platform. Fordítóprogramok állnak rendelkezésre egy nagy szám platformokon, a C++ fejlesztők sokféle platformhoz és rendszerhez fejlesztenek programokat.

5. Hatékonyság. A nyelvet úgy tervezték, hogy a programozónak maximális irányítást biztosítson a programszerkezet és a végrehajtás minden aspektusa felett.

Nyelvi hátrányok:

1. A típusbiztonsági elveket sértő számos jellemző megléte oda vezet, hogy a C ++ programokban könnyen becsúszhat egy finom hiba.

2. Rossz modularitású támogatás. Interfész csatlakozás külső modul előfeldolgozó betéten keresztül fejléc fájl(#include) komolyan lelassítja a fordítást, ha nagyszámú modult tartalmaz.

3. A C++ nyelvet nehéz megtanulni és lefordítani.

4. Egyes típuskonverziók nem intuitívak. Különösen az előjel nélküli és előjeles számokkal végzett művelet ad előjel nélküli eredményt.

5. Vannak, akik a C++ nyelv hátrányának tartják a beépített szemétgyűjtő rendszer hiányát. Másrészt a C++-ban van elég eszköz ahhoz, hogy a veszélyes pointerek használatát szinte kiküszöbölje, és a szemétgyűjtés megvalósításában és használatában sincsenek alapvető problémák (könyvtárak, nem nyelv szintjén). A beépített szemétgyűjtés hiánya lehetővé teszi a felhasználó számára, hogy válasszon erőforrás-gazdálkodási stratégiát.

C nyelv és UNIX

Programozási nyelv VAL VEL(ejtsd: "C") a 70-es évek elején jött létre, amikor Ken Thompson és Dennis Ritchie a Bell Labs-tól az UNDC operációs rendszert fejlesztették. Először létrehozták a fordító részt VAL VEL, majd ezzel fordította le a fordító többi részét VAL VELés végül az eredményül kapott fordítót használta a UNIX fordítására. A UNIX operációs rendszert eredetileg forráskódokban terjesztették VAL VEL egyetemek és laboratóriumok között, és a címzett összeállíthatta forrás a nyelvben VAL VEL natív kódhoz megfelelő fordító segítségével VAL VEL.

A forráskód elosztása egyedivé tette a UNIX operációs rendszert; a programozó megváltoztathatja az operációs rendszert, és a forráskódot át lehetett vinni egyik hardverplatformról a másikra. Ma POSIX szabvány meghatározza a rendelkezésre álló UNIX rendszerhívások szabványos készletét VAL VEL, amelyet a UNIX POSIX-kompatibilis verzióin kell megvalósítani. A C volt a harmadik nyelv, amelyet Thomson és Ritchie fejlesztett ki a folyamat során UNIX létrehozása; Az első kettő természetesen AÉs BAN BEN.

C mobil assembly nyelv

A korábbi nyelvhez képest - BCPL, a nyelv VAL VEL speciális hosszúságú adattípusok hozzáadásával javult. Például az int adattípus használható egy bizonyos számú (általában 16) bites változó létrehozására, míg a hosszú adattípussal több bites egész változót (általában 32) lehet létrehozni. Más magas szintű nyelvektől eltérően, VAL VEL közvetlenül működhet a memóriacímekkel mutatók és hivatkozások segítségével. Mert a VAL VEL megtartotta a közvetlen hozzáférés lehetőségét hardver, gyakran középszintű nyelvnek vagy viccesen "mobil assembly nyelvnek" nevezik.

C - strukturált programozási nyelv

Ami a nyelvtant és a szintaxist illeti, VAL VEL egy strukturált programozási nyelv. Míg sok modern programozó osztályokban és objektumokban gondolkodik, addig a programozók VAL VEL eljárásokban és funkciókban gondolkodjunk. BAN BEN VAL VEL a struct kulcsszó használatával meghatározhatja saját absztrakt adattípusait. Hasonlóképpen leírhatja saját egész számtípusait (felsorolásait), és más neveket is adhat létező típusok adatokat a typedef kulcsszó használatával. Ebben az értelemben VAL VEL egy strukturális nyelv az objektum-orientált programozás csíráival.

A C nyelv szabványosítása

Elterjedt nyelv C tovább különféle típusok számítógépek (néha hardverplatformoknak is nevezik) sajnos a nyelv számos változatához vezetett. Hasonlóak voltak, de nem kompatibilisek egymással. Ez komoly problémát jelentett azoknak a szoftverfejlesztőknek, akiknek írniuk kellett kompatibilis programok amely több platformon is futtatható. Világossá vált, hogy szükség van rá szabványos változat C. 1983-ban Az ANSI (Amerikai Nemzeti Szabványügyi Bizottság) létrehozta az X3J11 technikai bizottságot egy nyelvi szabvány létrehozására C(hogy "egyértelmű és gépfüggetlen nyelvdefiníciót adjon"). A szabványt 1989-ben hagyták jóvá. Az ANSI az ISO-val (Nemzetközi Szabványügyi Szervezet) társult a szabványosítás érdekében C nemzetközileg; közös szabványt adtak ki 1990-ben, ANSI/ISO 9899:1990 néven. Ez a szabvány még mindig fejlesztés alatt áll, és a legtöbb fordítófejlesztő támogatja.

A C++ születése

Bjorn Stroustrup felszabadítja az objektum-orientált potenciált VAL VEL osztályjellemzők átvitelével 67-es szimuláció V VAL VEL. Kezdetben az új nyelvet "C osztályokkal"-nak hívták, és csak ezután kezdték el hívni C++. Nyelv C++ A Bell Labs fejlesztésével vált népszerűvé, majd később más iparágakhoz és vállalatokhoz is átkerült. Ma ez az egyik legnépszerűbb (és legmeghatározóbb) programozási nyelv a világon. C++örökli a jó és a rossz oldalát is VAL VEL.

Bjorn Stroustrup vallomásai

Bjorn Stroustrup: „Én találtam ki C++, felírta az eredeti definíciót, és elvégezte az első megvalósítást. Kiválasztottam és megfogalmaztam a tervezési kritériumokat C++, kidolgozta főbb jellemzőit, és felelős volt a nyelvi bővítési javaslatok sorsáért a szabványosítási bizottságban C++", - írja a legnépszerűbb programozási nyelv szerzője. - "Nyelv C++ sokat köszönhet a nyelvnek C, és a nyelv C részhalmaz marad C++ nyelv(de a C++ több komoly hibáját javítja a C típusú rendszerben). Pénzt is tartottam C, amelyek elég alacsony szintűek a legkritikusabb rendszerfeladatok kezeléséhez. Nyelv C, viszont sokat köszönhet elődjének, a BCPL-nek; egyébként a // megjegyzésstílust innen vettük C++ a BCPL-től. A másik fő inspirációs forrás a nyelv volt Szimula67. Az osztályok fogalmát (a származtatott osztályokkal és virtuális függvényekkel) tőle kölcsönözték. Emlékeztet a kezelő túlterhelésének eszköze és a deklarációk elhelyezése bárhol, ahol egy utasítás írható Algol68. "

Miért C++?

Név C++ Rick Massitti találta fel. A név a hozzá való átmenet evolúciós jellegét jelzi C. A "++" egy növekményes művelet C. Kicsit rövidebb név C+ szintaktikai hiba; ráadásul már egészen más nyelv neveként is használták. Szemantikai szakértők C találd meg azt C++ rosszabb ++C. Címek D a nyelv nem érte meg, mert ez a C kiterjesztése, és nem a funkciók kidobásával próbálja megoldani a problémákat.

Miért volt szükség a C++-ra?

Alapvetően C++ programozási nyelvúgy lett kialakítva, hogy a szerzőnek és barátainak ne kelljen assembly, C vagy más modern magas szintű nyelveken programozni. Fő célja az írás volt jó programok egyszerűbb és élvezetesebb az egyéni programozó számára. Fejlesztési Terv C++ soha nem volt papíron; a projekt, a dokumentáció és a megvalósítás egyszerre költözött. Természetesen a külső felület C++ be volt írva C++. Soha nem volt „C++ projekt” vagy „C++ Fejlesztési Bizottság”. Ezért C++ minden irányban fejlődött és fejlődik, hogy megbirkózzon a felhasználók nehézségeivel, valamint a szerző barátaival és kollégáival folytatott beszélgetéseiben.

Valódi objektum-orientált C++

BAN BEN C++ nyelv Az objektum-orientált programozás alapelvei teljes mértékben támogatottak, beleértve a három pillért, amelyeken ez áll: a beágyazást, az öröklődést és a polimorfizmust. Kapszulázás be C++ nem szabványos (egyéni) adattípusok, úgynevezett osztályok létrehozásával támogatott. Nyelv C++ támogatja az öröklést. Ez azt jelenti, hogy deklarálhat egy új adattípust (osztályt), amely egy meglévő kiterjesztése.

Habár C++ programozási nyelv joggal nevezik folytatásnak VAL VELés bármely működő program a nyelven VAL VEL a fordító támogatja C++, amikor elköltözik VAL VEL Nak nek C++ jelentős ugrás történt. Nyelv C++ profitált a nyelvvel való rokonságából VAL VEL az évek során sok programozó azt tapasztalta, hogy annak teljes kihasználása érdekében C++ nyelv, fel kell adniuk korábbi tudásuk egy részét, és újakat kell megszerezniük, nevezetesen: tanulni új út konceptualitás és programozási problémák megoldása. Mielőtt elkezdené a tanulást C++, Stroustrup és a legtöbb más programozó, aki használja C++ fontolja meg a nyelvtanulást VAL VEL választható.

Programozási nyelv C++ Jelenleg a kereskedelmi termékfejlesztés domináns nyelveként tartják számon a játékok 90%-át C++ DirectX használatával.

Irodalom

Források:

  • H.M.Deitel, P.J.Deitel "Hogyan kell programozni C++ nyelven"
  • Bjorn Stroustrup "A C++ programozási nyelv. 3. kiadás."
  • Simon Robinson, Ollie Cornes, Jay Glynn és mások "C# szakembereknek"
  • Jess Liberty "Tanulj meg C++-t 21 nap alatt"
  • Stanislav Gornakov "DirectX, C++ programozási órák"

Címkék: A C, ANSI C, ISO C, C99, C11, ISO/IEC C, C szabványosítás története.

eredet

C és a UNIX operációs rendszer létrehozásának „társterméke”, amelyet a Bell Laboratories-ban fejlesztettek ki Ken Thompson, Denis Ritchie és társai. Thompson egymaga megírta a UNIX eredeti verzióját, amely a DEC PDP-7-en futott, az egyik első miniszámítógépen, amely mindössze 8K szónyi főmemóriával rendelkezik (végül is 1969 volt).

A korabeli többi operációs rendszerhez hasonlóan a UNIX is assembly nyelven készült. Az assembly nyelvű programok hibakeresése igazi fájdalom, és nehéz javítani, ez alól a UNIX sem volt kivétel. Thompson úgy döntött, hogy egy magas szintű nyelvre van szükség az operációs rendszer további fejlesztéséhez, és egy kis nyelvet talált ki B. Thompson a BCPL nyelvet vette át, amely egy nyelv rendszer programozás a 60-as évek közepén alakult ki. A BCPL pedig az Algol 60-ból, az egyik legkorábbi (és legbefolyásosabb) nyelvből származik.

Ritchie hamarosan csatlakozott a UNIX projekthez, és B nyelven kezdett írni. 1970-ben a Bell Labs vásárolt egy PDP-11-et a projekthez. Mivel B készen állt a PDP-11-en való futtatásra, Thompson átírta a UNIX egy részét B-re. 1971-ben világossá vált, hogy B nem egészen alkalmas a PDP-11-hez, így Ritchie elkezdte létrehozni a B kiterjesztett változatát. először NB-nek (New B ) nevezték, de amikor a nyelv nagyon eltér a B-től, a név C-re változott. 1973-ra a nyelv elég stabil volt ahhoz, hogy a UNIX-ot át lehessen írni benne. A C-re való átállás fontos előnyt jelentett: a hordozhatóságot. Ha a Bell Labs minden egyes gépéhez ír egy C-fordítót, a fejlesztőcsapat a UNIX-ot portolhatja rájuk.

Szabványosítás

A C a 70-es években tovább fejlődött, különösen 1977 és 1979 között, amikor megjelent az első C könyv.A Brian Kernighan és Denis Ritchie által írt és 1978-ban kiadott C programozási nyelv a C programozók bibliája lett. Hivatalos szabvány híján ez a könyv – más néven K&R, vagy a C-rajongók szeretik nevezni „Fehér Könyv” – de facto szabvány lett. A 70-es években kevés C programozó volt, és legtöbbjük UNIX felhasználó volt. A 80-as években azonban a C túllépett a UNIX világ szűk határain. A C fordítók különféle operációs rendszereket futtató gépeken váltak elérhetővé. Különösen a C kezdett elterjedni a gyorsan fejlődő IBM PC platformon.

A népszerűség növekedésével párhuzamosan problémák is jelentkeztek. Azok a programozók, akik új fordítókat írtak, a K&R-ben leírt nyelvet vették alapul. Sajnos a K&R-ben a nyelv egyes jellemzőit homályosan írták le, így a fordítók gyakran saját belátásuk szerint értelmezték azokat. Ezenkívül a könyv nem tett egyértelmű különbséget a nyelv és a UNIX operációs rendszer sajátosságai között. A helyzetet rontotta, hogy a K&R megjelenése után a C tovább fejlődött: új funkciókat adtak hozzá, a régieket pedig kivágták belőle. Hamarosan nyilvánvalóan szükség volt a nyelv átfogó, pontos és naprakész leírására. Ilyen szabvány nélkül kezdtek megjelenni a nyelv dialektusai, amelyek megzavarták a hordozhatóságot, a nyelv legerősebb oldalát.

Az amerikai C szabvány fejlesztése 1983-ban kezdődött az Amerikai Nemzeti Szabványügyi Intézet (ANSI) égisze alatt. Számos felülvizsgálat után a szabvány 1988-ban készült el, és hivatalosan 1989 decemberében fogadták el ANSI X3.159-1989 néven. 1990-ben a Nemzetközi Szabványügyi Szervezet (ISO) jóváhagyta az ISO/IEC 9899:1990 nemzetközi szabványként. A nyelvnek ezt a verzióját általában C89-nek vagy C90-nek nevezik, hogy elkerüljük az összetéveszthetőséget a C eredeti verziójával, amelyet általában K&R C-nek neveznek.

A nyelvezet 1995-ben kisebb változásokon ment keresztül (a változtatásokat egy dokumentum írja le, amelyet általában 1. módosításként emlegetnek). Jelentősebb változások történtek 1999-ben, amikor megjelent az ISO/IEC 9899:1999 szabvány. Az ebben a szabványban leírt nyelvet általában C99-nek nevezik. A C99 leírására használt „ANSI C”, „ANSI/ISO C” és „ISO C” kifejezések kétértelműek, mivel két szabvány létezik.

2011-ben a C++ nyelvi változattal együtt megjelent a C11 szabvány is. A 11-es szabvány jelenléte ellenére sok fordító még mindig nem támogatja teljes mértékben még a C99-es verziókat sem, így a C11-es szabvány használata kifejezetten kimondva lesz.

A C++ (ejtsd: c-plus-plus) egy lefordított, statikusan tipizált, általános célú programozási nyelv, amellyel bármilyen bonyolultságú program készíthető.
Ez a nyelv több mint 20 éve az első három legnépszerűbb és legkeresettebb programozási nyelv között van. (Ez a TIOBE weboldalán ellenőrizhető).
A nyelv az 1980-as évek elején keletkezett, amikor a Bell Labs alkalmazottja, Björn Stroustrup számos fejlesztéssel állt elő a C nyelven saját igényei szerint.

Bjarne Stroustrup - a C++ nyelv megalkotója

Stroustrup úgy döntött, hogy kiterjeszti a C nyelvet a Simula nyelven elérhető funkciókkal. A C nyelv, lény alapnyelv A UNIX rendszer, amelyen a Bell számítógépek futottak, gyors, funkciókban gazdag és hordozható. Stroustrup hozzáadta az osztályokkal és objektumokkal való munka képességét. Ennek eredményeként a gyakorlati modellezési feladatok elérhetőnek bizonyultak mind a fejlesztési idő (a Simula-szerű osztályok használata miatt), mind a számítási idő (a C sebessége miatt) tekintetében.
Maga a nyelv fejlesztője így mondja:



1998-ban egy szabványügyi bizottság kiadta az első nyelvi szabványt, a C++98 néven. A C++ folyamatosan fejlődik, hogy megfeleljen a modern követelményeknek. Az egyik csoport, amely a C++ nyelvet fejleszti, és javaslatokat küld a C++ szabványosítási bizottságnak a fejlesztésére. Boost, amely többek között a nyelv képességeinek fejlesztésével foglalkozik metaprogramozási funkciók hozzáadásával. A legújabb szabvány 2017-ben jelent meg, és az ún C++17. A következő szabvány nem sokáig fog várni, és várhatóan 2020-ban jelenik meg.
A C++ nyelvhez senki nem rendelkezik jogokkal, az ingyenes. 2016 márciusában Oroszország megalakult munkacsoport WG21 C++. A csoport a C++ szabványra vonatkozó javaslatok összegyűjtése, a bizottság elé terjesztése és a Nemzetközi Szabványügyi Szervezet közgyűlésein történő megvédése céljából jött létre.
A C++ egy többparadigmás nyelv (a paradigma szóból - írási stílus számítógépes programok), amely különféle programozási stílusok és technológiák széles skáláját tartalmazza. Gyakran objektum-orientált nyelvnek nevezik, de szigorúan véve nem ez a helyzet. A munkafolyamat során a fejlesztő abszolút szabadságot kap az eszközök kiválasztásában, hogy az egyik vagy másik megközelítéssel megoldott probléma a lehető leghatékonyabban megoldódjon. Más szóval, a C++ nem kényszeríti a programozót arra, hogy csak egy programfejlesztési stílushoz ragaszkodjon (például objektumorientált).
A C++ gazdag szabványkönyvtárral rendelkezik, amely általános konténereket és algoritmusokat, I/O-t, reguláris kifejezéseket, többszálú támogatást és egyebeket tartalmaz. A C++ számos programozási nyelvre hatással volt, többek között: Java, C#, D. Mivel a C++ a C nyelv szintaxisán alapuló nyelvek családjába tartozik, a család többi programozási nyelve könnyen elsajátítható: JavaScript , PHP, Perl, Objective-C és még sok más. stb., beleértve magát a szülőnyelvet - C. ()
Fennállása során stabil mítoszok berögzültek a C ++ nyelvben, amelyek könnyen cáfolhatók (lásd itt: 1. rész és 2. rész)

A nyelv története és a szabványok kiadása

1983

Nyelvi alkotó - Bjorn Stroustrup, a Bell Labsnál bemutatta a C++ korai verzióját („C with Classes”)

1985

A C++ első kereskedelmi kiadása, a nyelv modern nevet kap

1986

Megjelent a Bjorn Stroustrup által írt C++ könyv, a The C++ Programming Language első kiadása

1998

A nemzetközi C++ nyelvi szabványt ratifikálták: ISO/IEC 14882:1998 "Standard for the C++ Programming Language"

2003
2005

Megjelent az 1. könyvtári technikai jelentés (TR1). Bár hivatalosan nem része a szabványnak, a jelentés ismertette a szabványos könyvtár kiterjesztéseit, amelyeket a C++ nyelv következő verziójában kell tartalmaznia.

2011

Új szabvány kiadása - C++11 vagy ISO/IEC 14882:2011; új szabvány kiegészítéseket tartalmazott a nyelv magjához és a szabványos könyvtár kiterjesztését, beleértve a TR1 nagy részét

2014

A C++14 szabvány („ISO/IEC 14882:2014(E) C++ programozási nyelv nemzetközi szabvány”) kiadása; A C++14 a C++11 kis kiterjesztésének tekinthető, amely többnyire hibajavításokat és kisebb fejlesztéseket tartalmaz.

2017

Az új szabvány kiadása a C++1z (C++17). Ez a szabvány számos változtatást és kiegészítést hozott. Például az STD C11 szabványkönyvtárakat tartalmazott, fájlrendszer, a boost::filesystem alapján, a kísérleti TS I könyvtár nagy része.

2020

A C++20 a C++ programozási nyelv ISO/IEC szabványának informális neve, amely a C++17 után várható. Az N4800 szabvány tervezete.

Filozófia C++

A The Design and Evolution of C++ (2007) című művében Bjorn Stroustrup leírja azokat az elveket, amelyeket a C++ tervezésekor követett (rövidítve):

  • Szerezzen egy univerzális nyelvet statikus adattípusokkal, a C hatékonyságával és hordozhatóságával.
  • Közvetlenül és átfogóan támogatja a különféle programozási stílusokat.
  • Adja meg a programozónak a választás szabadságát, még akkor is, ha ez lehetőséget ad a helytelen választásra.
  • A lehető legnagyobb mértékben tartsa fenn a C-vel való kompatibilitást, ezáltal lehetővé téve a programozásról a C-re való egyszerű váltást.
  • Kerülje a következetlenségeket a C és a C++ között: minden olyan konstrukciónak, amely mindkét nyelven érvényes, ugyanazt kell jelentenie mindegyikben, és ugyanazt a programviselkedést kell eredményeznie.
  • Kerülje a platformfüggő vagy nem univerzális funkciókat.
  • „Ne fizessen azért, amit nem használ” – Egyetlen nyelvi funkció sem okozhat teljesítménycsökkenést azoknál a programoknál, amelyek nem használják.
  • Nem igényel túl bonyolult programozási környezetet.

C és C++

A C++ szintaxis a C nyelvtől öröklődik. Bár formálisan a C++ egyik alapelve továbbra is a C nyelvvel való kompatibilitás fenntartása, valójában ezeknek a nyelveknek a szabványosítási csoportjai nem hatnak egymásra, és a változtatások hogy nemcsak hogy nem korrelálnak, hanem gyakran ideológiailag alapvetően ellentmondanak egymásnak. Tehát azok az elemek, amelyeket az új C szabványok adnak a kernelhez, a C ++ szabvány szabványos könyvtárának elemei, és általában hiányoznak a kernelből, például dinamikus tömbök, rögzített határokkal rendelkező tömbök, párhuzamos feldolgozási lehetőségek. Stroustrup úgy véli, hogy e két nyelv fejlesztésének kombinálása nagy hasznot hozna, de politikai okokból aligha lehetséges. Így a C és a C++ gyakorlati kompatibilitása fokozatosan elveszik.
BAN BEN ezt a példát, a használt fordítótól függően a "C++" vagy a "C" lesz a kimenet:

Program 9.1

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

Ez annak köszönhető, hogy a karakterkonstansok C-ben int típusúak, C++-ban pedig char típusúak, de ezeknek a típusoknak a mérete eltérő.

Alkalmazás életciklus modellek

Életciklus szoftver egy olyan időszak, amely attól a pillanattól kezdődik, amikor döntés születik a szoftvertermék létrehozásának szükségességéről, és a teljes működésből való kivonáskor ér véget. Ez a ciklus a szoftver (SW) felépítésének és fejlesztésének folyamata. Számos életciklus modell létezik.
Kaszkád modelléletciklust (angol vízesés modell) javasolta 1970-ben Winston Royce. Előírja a projekt minden szakaszának egymás utáni végrehajtását szigorúan rögzített sorrendben. A következő szakaszra való áttérés az előző szakaszban végzett munka teljes befejezését jelenti. A követelmények kialakításának szakaszában meghatározott követelmények szigorúan dokumentálva vannak feladatmeghatározás formájában, és a projektfejlesztés teljes időtartamára rögzítve vannak. Minden szakasz a teljes dokumentáció kiadásával ér véget, amely elegendő ahhoz, hogy a fejlesztést egy másik fejlesztőcsapat folytathassa.
A projekt szakaszai a vízesés modell szerint:

  1. Követelmények kialakítása;
  2. Tervezés;
  3. Végrehajtás;
  4. Tesztelés;
  5. végrehajtás;
  6. Üzemeltetés és karbantartás.

A vízesés modellben az egyik projektfázisból a másikba való átmenet feltételezi az előző fázis eredményének teljes helyességét. Nagy projekteknél ezt szinte lehetetlen elérni. Ezért egy ilyen modell csak egy kis projekt fejlesztésére alkalmas. (W. Royce maga nem ragaszkodott ehhez a modellhez, és iteratív modellt használt).
Iteratív modell
A vízesés modell alternatívája az iteratív és inkrementális fejlesztés (IID) modellje, amelyet T. Gilbtől kapott a 70-es években. az evolúciós modell neve. Az IID-modell a projekt életciklusát iterációk sorozatára bontja, amelyek mindegyike egy "mini-projekthez" hasonlít, beleértve az összes fejlesztési folyamatot, amelyet a projekt egészéhez képest kisebb funkciók létrehozására alkalmaznak. Minden iteráció célja egy működő verzió beszerzése szoftver rendszer, amely tartalmazza az összes korábbi és jelenlegi iteráció integrált tartalma által meghatározott funkcionalitást. A végső iteráció eredménye tartalmazza a termék összes szükséges funkcióját. Így minden iteráció befejeztével a termék növekményt - egy növekményt - kap a képességeihez, amelyek ezért evolúciósan fejlődnek.


A legtöbb modern fejlesztési módszerben az iteratív megközelítés különféle változatait alkalmazzák:

Fejlesztési folyamat – Rational Unified Process (RUP)

Rational Unified Process (RUP)(Rational Unified Process) a Rational Software (IBM) által karbantartott szoftverfejlesztési módszertan. A módszertan a fejlesztés minden szakaszához ad ajánlásokat: az üzleti modellezéstől a kész program teszteléséig és üzembe helyezéséig. Az egységes modellezési nyelvet (UML) használják modellezési nyelvként.
A teljes termékfejlesztési életciklus négy szakaszból áll, amelyek mindegyike egy vagy több iterációt tartalmaz.

  • Kezdeti szakasz (Kezdés)
  • A projekt terjedelmének és a szükséges források mértékének meghatározása. Meghatározzák a termék főbb követelményeit, korlátozásait és kulcsfontosságú funkcióit. Felmérik a kockázatokat. Akciótervezés. A kezdeti szakasz végén értékelik az életciklus célkitűzés mérföldkövének elérését, ami azt jelenti, hogy az érintettek megállapodást kötnek a projekt folytatásáról.

  • Kidolgozás
  • Követelmények dokumentációja. A végrehajtható architektúra tervezése, megvalósítása és tesztelése. A feltételek és a költségek meghatározása. A fő kockázatok csökkentése. A fejlesztési szakasz sikeres befejezése az életciklus-architektúra mérföldkövének elérését jelenti.

  • Építkezés
  • A "Build" fázisban a termék funkcionalitásának nagy része megvalósul: elkészül az alkalmazás tervezése, megírják a forráskódot. Az építési szakasz a rendszer első külső kiadásával és az Initial Operational Capability mérföldkővel zárul.

  • Megvalósítás (átmenet)
  • Az „Implementation” fázisban elkészül a termék végleges verziója, amely a fejlesztőtől a vásárlóhoz kerül. Ez magában foglalja a béta tesztelési programot, a felhasználói oktatást és a termékminőség-biztosítást. Abban az esetben, ha a minőség nem felel meg a felhasználók elvárásainak vagy a Start fázisban meghatározott kritériumoknak, a Megvalósítási szakasz ismétlődik. Az összes cél elérése a késztermék (Product Release) mérföldkövének elérését és a teljes fejlesztési ciklus befejezését jelenti.



« Információs technológia. Rendszer- és szoftverfejlesztés. Életciklus folyamatok szoftver eszközök» . Ezt a szabványt a Szövetségi Ügynökség fogadta el műszaki előírásés az Orosz Föderáció metrológiája, és hasonló az ISO/IEC 12207:2008 nemzetközi szabványhoz. Ez a szabvány, általános keretet hoz létre a szoftver életciklus-folyamataihoz, amely iránymutatásként használható a szoftveriparban. A szabvány nem kínál konkrét modelléletciklus. Előírásai közösek minden életciklus-modellre, szoftverkészítési módszerre és technológiára. Leírja az életciklus-folyamatok szerkezetét anélkül, hogy meghatározná, hogyan kell végrehajtani vagy végrehajtani az ezekben a folyamatokban foglalt tevékenységeket és feladatokat.

Előadás a leckéhez
Üzenettéma
  • Free Software Foundation (FSF)
  • Ingyenes szoftverlicencek
  • Ingyenes szoftver és nyílt forráskód
  • A programozási nyelvek fejlődésének története
  • A C. C és a C++ története
  • Sztori
  • A C++ kritikája
  • A UNIX története
  • Spirális szoftver életciklus modell
  • UML (English Unified Modeling Language – egységes modellezési nyelv)
  • Microsoft Solutions Framework
  • IDE a C/C++ programozáshoz Windows rendszeren
  • C/C++ fordítók
  • Konzolalkalmazás létrehozása Windows rendszeren
Kérdések
  1. Miért nem használják a waterfall szoftverfejlesztési modellt nagy projektekben?
  2. Mi a különbség a vízesés és az iteratív fejlesztési modellek között?
  3. Sorolja fel a szoftverfejlesztés szakaszait a Rational Unified Process (RUP) módszertanban

Miért C++?

A C++ jelenleg a kereskedelmi fejlesztések domináns nyelve szoftver termékek. Az elmúlt években ezt a dominanciát kissé megrendítették egy olyan programozási nyelv, mint a Java, hasonló állításai, de a közvélemény inga a másik irányba fordult, és sok programozó, aki elhagyta a C++-t Java számára, a közelmúltban visszarohant korábbi vonzalmához. Mindenesetre ez a két nyelv annyira hasonló, hogy az egyik nyelv megtanulásával automatikusan elsajátítod a másik 90%-át.

A C# egy új nyelv, amelyet a Microsoft fejlesztett ki a hálózati platformhoz. Lényegében a C# egyfajta C++, és számos alapvető különbség ellenére a C# és C++ nyelvek körülbelül 90%-ban egybeesnek. Valószínűleg hosszú időnek kell eltelnie, amíg a C# komoly versenytársa lesz a C++-nak; de még ha igen is, a C++ nyelv ismerete jelentős előnyt jelent.

A C++ egy általános célú programozási nyelv. Természetes hatóköre a rendszerprogramozás, a szó legtágabb értelmében értendő. Ezenkívül a C++-t számos alkalmazási területen sikeresen használják, amelyek messze túlmutatnak a megadott hatókörön. A C++ implementáció már minden gépen megtalálható, a legszerényebb mikroszámítógéptől a legnagyobb szuperszámítógépig, és gyakorlatilag minden operációs rendszerhez.

A C++ nyelv megjelenése és fejlődése

Bjorn Stroustrup a C++ nyelv fejlesztője és az első fordító megalkotója. Ő egy kutató számítástechnikai központ AT&T Bell Laboratories Murray Hillben (New Jersey, USA). Az Aarusi Egyetemen (Dánia) a matematika és számítástechnika mestere címet, majd a dániai egyetemen doktorált. Számítástechnika a Cambridge-i Egyetemen (Anglia). Szakterülete az elosztott rendszerek, operációs rendszerek, modellezés és programozás. M. A. Ellis-szel együtt ő a szerzője egy teljes útmutatónak a C++ nyelvhez - "A Guide to C++ with Notes".

Természetesen a C++ sokat köszönhet a C nyelvnek, amelyet annak egy részhalmazaként őriznek meg. A C-ben rejlő összes alacsony szintű eszköz, amelyet a rendszerprogramozás legégetőbb problémáinak megoldására terveztek, szintén megmarad. A C pedig sokat köszönhet elődjének, a BCPL-nek. A BCPL nyelvű megjegyzés visszaállt C++ nyelvre. Az inspiráció másik forrása a SIMULA-67 nyelv volt; tőle kölcsönözték az osztályok fogalmát (a származtatott osztályokkal és virtuális függvényekkel együtt). Az Algol-68 nyelvre emlékeztet a C++ azon képessége, hogy túlterhelje az operátorokat, és a nyilatkozatok szabadon elhelyezhető bárhol, ahol egy operátor megjelenhet.

Több korai változatai a "C osztályokkal" nevű nyelveket 1980 óta használják. Ez a nyelv azért jött létre, mert a szerzőnek megszakítás-vezérelt szimulációs programokat kellett írnia. A SIMULA-67 nyelv erre a hatékonyságon kívül ideális. A "C osztályokkal" nyelvet a nagy modellezési feladatokhoz használták. Akkoriban szigorú tesztelésnek vetették alá a rá programírási lehetőségeket, amelyekhez az idő- és memóriaerőforrások kritikusak. Ebből a nyelvből hiányzott az operátorok túlterhelése, a hivatkozások, a virtuális funkciók és sok egyéb szolgáltatás. A C++ először 1983 júliusában hagyta el azt a kutatócsoportot, ahol a szerző dolgozott, de akkor még sok C++ funkciót nem fejlesztettek ki.

A C++ (C plusz) nevet Rick Maschitti találta ki 1983 nyarán.Ez a név a C nyelv változásainak evolúciós jellegét tükrözi.A ++ jelölés a C növekményes műveletre utal. A valamivel rövidebb C+ név szintaktikai hiba. Ráadásul már egy teljesen más nyelv neveként is használták. A C szemantikusok úgy találják, hogy a C++ rosszabb, mint a ++C. A nyelvet nem D-nek hívják, mert ez a C kiterjesztése, és nem próbál problémákat megoldani a C jellemzők eldobásával A C++ név másik érdekes értelmezése a mellékletben található.

A C++ kezdetben úgy született meg, hogy a szerzőnek és barátainak ne kelljen assembly, C vagy más modern magas szintű nyelveken programozni. Fő célja a programozási folyamat egyszerűsítése és élvezetesebbé tétele az egyes programozók számára. Egészen a közelmúltig nem volt papíron C++ fejlesztési terv. A tervezés, a megvalósítás és a dokumentáció kéz a kézben haladt. Soha nem volt „C++ Project” vagy „C++ Design Committee”. Ezért a nyelv úgy fejlődött és fejlődik, hogy a felhasználók által tapasztalt összes problémát leküzdje. Az összes probléma szerzőjének barátaival, kollégáival folytatott megbeszélései is lendületet adnak a fejlődésnek.

A könyv első kiadásának megjelenése óta a C++ nyelv jelentős változásokon és finomításokon ment keresztül. Ez elsősorban a túlterhelés egyértelművé tételére, a linkelésre és a memóriakezelésre vonatkozik. A C nyelvvel való kompatibilitás növelése érdekében azonban kisebb változtatásokat hajtottak végre, néhány általánosítást és jelentős bővítést is bevezettek, például többszörös öröklődést, tagfüggvényeket statikus és const specifikációkkal, védett tagokat (védett), típussablonokat és speciális kezelést. helyzetekben. Mindezek a bővítmények és fejlesztések azt a célt szolgálták, hogy a C++ olyan nyelv legyen, amelyen könyvtárakat lehet létrehozni és használni. Minden változás leírása a.

Más, 1985 és 1991 között bevezetett kiterjesztések (mint például a többszörös öröklődés, a statikus tagfüggvények és a tisztán virtuális függvények) a C++ programozási tapasztalat általánosításaiból, nem pedig más nyelvekből származtak.

A hat év alatt készült nyelvi kiterjesztések elsősorban a C ++ mint adatabsztrakciós nyelv és általában az objektum-orientált programozás kifejezőképességének növelését célozták, különösen pedig a felhasználó által definiált adattípusokkal rendelkező, kiváló minőségű könyvtárak létrehozásának eszközeként.

1987 körül nyilvánvalóvá vált, hogy a C++ szabványosítási munka küszöbön áll, és azonnal meg kell kezdeni az alapozást.

Az AT&T Bell Laboratories volt a fő közreműködő ebben a munkában. Körülbelül 20 szervezet mintegy száz képviselője tanulmányozta és kommentálta, mi lett a modern változat útmutatóés forrásanyagok az ANSI szabványosításhoz. C++. Végül a Hewlett-Packard kezdeményezésére 1989 decemberében megalakult az X3J16 bizottság az ANSI-n belül. A C++ szabványosítási munka az ANSI-ban (amerikai szabvány) várhatóan az ISO (Nemzetközi Szabványügyi Szervezet) szabványosítási munkájának szerves részévé válik.

A C++ néhány alapvető osztály fejlődésével együtt fejlődött.