Betekintés: C++ könyv, oldal #5

Figyelem! Ez itt a doksi tartalma kivonata.
Kérlek kattints ide, ha a dokumentum olvasóban szeretnéd megnézni!

nt használtuk a nyelv, a könyvtárak, a fordítók, a szerkesztõk, a futtatási környezetek stb. rokonsága alapján. Ez a minimális modell segítette a C++ sikeres elterjedését lényegében minden számítógépes platformon. Jó okai vannak azonban a C++ használatának olyan környezetekben, melyek jelentõsen nagyobb támogatásról gondoskodnak. Az olyan szolgáltatások, mint a dinamikus betöltés, a fokozatos fordítás vagy a típusmeghatározások adatbázisa, anélkül is jól használhatók, hogy befolyásolnák a nyelvet. A C++ típusellenõrzési és adatrejtési tulajdonságai a programok fordítási idõ alatti elemzésére támaszkodnak, hogy elkerüljék a véletlen adatsérüléseket. Nem gondoskodnak titkosításról vagy az olyan személyek elleni védelemrõl, akik szándékosan megszegik a szabályokat. Viszont szabadon használhatók és nem járnak a futási idõ vagy a szükséges tárhely növekedésével. Az alapelv az, hogy ahhoz, hogy egy nyelvi tulajdonság hasznos legyen, nemcsak elegánsnak, hanem valódi programon belül is elhelyezhetõnek kell lennie. A C++ jellemzõinek rendszerezett és részletes leírását lásd [Stroustrup, 1994].

1.3.1. Hatékonyság és szerkezet
A C++-t a C programozási nyelvbõl fejlesztettük ki és – néhány kivételtõl eltekintve – a C-t, mint részhalmazt, megtartotta. Az alapnyelvet, a C++ C részhalmazát, úgy terveztük, hogy nagyon szoros megfelelés van típusai, mûveletei, utasításai, és a számítógépek által közvetlenül kezelhetõ objektumok (számok, karakterek és címek) között. A new, delete, typeid, dynamic_cast és throw operátorok és – a try blokk – kivételével, az egyes C++ kifejezések és utasítások nem kívánnak futási idejû támogatást. A C++ ugyanolyan függvényhívási és visszatérési módokat használhat, mint a C – vagy még hatékonyabbakat. Amikor még az ilyen, viszonylag hatékony eljárások is túl költségesek, a C++ függvényt a fordítóval kifejtethetjük helyben (inline kód), így élvezhetjük a függvények használatának kényelmét, a futási idõ növelése nélkül.



1. Megjegyzések az olvasóhoz

11

A C egyik eredeti célja az assembly kód helyettesítése volt a legigényesebb rendszerprogramozási feladatokban. Amikor a C++-t terveztük, vigyáztunk, ne legyen megalkuvás e téren. A C és a C++ közti különbség elsõsorban a típusokra és adatszerkezetekre fektetett súly mértékében van. A C kifejezõ és elnézõ. A C++ még kifejezõbb. Ezért a jobb kifejezõképességért cserébe azonban nagyobb figyelmet kell fordítanunk az objektumok típusára. A fordító az objektumok típusának ismeretében helyesen tudja kezelni a kifejezéseket akkor is, ha egyébként kínos precizitással kellett volna megadni a mûveleteket. Az objektumok típusának ismerete arra is képessé teszi a fordítót, hogy olyan hibákat fedjen fel, melyek máskülönben egészen a tesztelésig vagy még tovább megmaradnának. Vegyük észre, hogy a típusrendszer használata függvényparaméterek ellenõrzésére – az adatok véletlen sérüléstõl való megvédésére, új típusok vagy operátorok elõállítására és így tovább – a C++-ban nem növeli a futási idõt vagy a szükséges helyet. A C++-ban a szerkezetre fektetett hangsúly tükrözi a C megtervezése óta megírt programok „súlygyarapodását”. Egy kis – mondjuk 1000 soros – programot megírhatunk „nyers erõvel”, még akkor is, ha felrúgjuk a jó stílus minden szabályát. Nagyobb programoknál ez egyszerûen nincs így. Ha egy 100 000 soros programnak rossz a felépítése, azt fogjuk találni, hogy ugyanolyan gyorsan keletkeznek az újabb hibák, mint ahogy a régieket eltávolítjuk. A C++-t úgy terveztük, hogy lehetõvé tegye nagyobb programok ésszerû módon való felépítését, így egyetlen személy is sokkal nagyobb kódmennyiséggel képes megbirkózni. Ezenkívül célkitûzés volt, hogy egy átlagos sornyi C++ kód sokkal többet fejezzen ki, mint egy átlagos Pascal vagy C kódsor. A C++ mostanra megmutatta, hogy túl is teljesíti ezeket a célkitûzéseket. Nem minden kódrészlet lehet jól szerkesztett, hardverfüggetlen vagy könnyen olvasható. A C++-nak vannak tulajdonságai, melyeket arra szántak, hogy közvetlen és hatékony módon kezelhessük a hardver szolgáltatásait, anélkül, hogy a biztonságra vagy az érthetõségre káros hatással lennénk. Vannak olyan lehetõségei is, melyekkel az ilyen kód elegáns és biztonságos felületek mögé rejthetõ. A C++ nagyobb programokhoz való használata természetszerûen elvezet a C++ nyelv programozócsoportok általi használatához. A C++ által a modularitásra, az erõsen típusos felületekre és a rugalmasságra fektetetett hangsúly itt fizetõdik ki. A C++-nak éppen olyan jól kiegyensúlyozott szolgáltatásai vannak nagy prog

«« Előző oldal Következő oldal »»