 |
 |
A C++ programnyelv
A C programnyelvet az AT&T-nél fejlesztették ki abból a célból, hogy a PDP-11 számítógép széria számára egy operációs rendszert hozzanak létre, (mely végül a UNIX rendszer kifejlesztéséhez vezetett). A fejlesztők célja az volt, hogy a lehető leghatékonyabb programnyelvet hozzák létre. Bjarne Stroustrup - szintén az AT&T munkatársa - fejlesztette ki a C++ programnyelvet, hogy a C nyelvet az objektum orientáltság felé vigye. Mivel ebben az időben az objektum orientáltság koncepciója még új volt és minden objektum orientált programnyelv implementációja nagyon lassú volt, a legfőbb cél az volt, hogy a C++ megőrizze a C nyelv hatékonyságát.
A C++ olyan, mint egy hagyományos procedurális programnyelv néhány további funkcióval bővítve. A C nyelv került bővítésre néhány alapelemmel az objektum orientáltság érdekében, és néhány további alapelemmel, melyek az általános szintaxis javítására szolgáltak. Minden jól megírt C++ program mind az objektum orientált programozás, mind a klasszikus procedurális programozás elemeit magában hordozza. A C++ egy bővíthető programnyelv, mivel új típusokat tudunk definiálni, amelyek magának a programnyelvnek a részei. Így a C++ nagyobb programozási feladatok kivitelezésére is alkalmas.
A C++ -t gyakorlatilag a programozás minden területén alkalmazzák. Az egyik legfőbb alkalmazási terület a rendszerprogramozás. Tipikus alkalmazási területek még az operációs rendszerek, a beágyazott rendszerek, a virtuális gépek, a driverek és a jelfeldolgozók. A C++ ezeken a területeken sokszor átveszi azt a szerepet, amit korábban kizárólag az asszembly nyelvek és a C nyelv töltött be. A C++ az alkalmazási programokban is elterjedt, azonban a Java és a C# programnyelvek elterjedésével erről a területről némileg kiszorult. Az alkalmazási programokban a C++ manapság főleg ott fordul elő, ahol a maximális hatékonyságra kell törekedni, a technikai keretek által meghatározott teljesítményhatárok minél jobb kihasználása érdekében. Ennek egyik legjobb példája a számítógépes játékok programozása. Ezen a területen a C++ az uralkodó programnyelv.
Tulajdonságok, nyelvi design
A C++ legfőbb erénye, hogy ahelyett, hogy a tipikus problémákra egyéni megoldásokat nyújtana, általános mechanizmusokat részesít előnyben. Az egyik súlypont abban van, hogy támogatja a nyelvi eszközöket könyvtárak létrehozásában. A C++ egyik erőssége a hatékony gépközeli programozás kombinálása magas szintű nyelvi eszközökkel, amelyek összefoglalják az egyszerűtől a komplexig terjedő implementációs részleteket és az absztrakt parancssorozatok mögé rejtik őket. Itt mindenekelőtt a template-metaprogramozás kap szerepet, egy technika, amely a hatékonyság és az absztrakció csaknem kompromisszumoktól mentes összekapcsolását teszi lehetővé.
Annak érdekében, hogy a C programnyelv széleskörű elterjedtségének előnyeit kihasználhassák, a C++ a C programnyelv továbbfejlesztéseként, az akkori, 1990-es (ISO/IEC 9899:1990) normák szerint lett megalkotva. A C compilerek gyakorlatilag manapság is minden processzor számára rendelkezésre állnak, így a C-ben írt programok rendszerint nagyobb átalakítás nélkül áttehetők C++-ba. A kompatibilitás a C nyelvvel azonban a C++-t néhány, a C-ben meglévő hátrány továbbvitelére is kényszeríti. Ide sorolható a részben nehezen érthető C-szintaxis, a ma már meghaladottnak számító pre-processzor, továbbá a mindenkori platformtól függő programnyelvi részletek. A platform-függőség megnehezíti a C++-ban írt programok hordozását a különböző számítógéptípusok és a különböző operációs rendszerek, valamint compilerek között. A C nyelven az utolsó változtatásokat 1999-ben végezték (ISO/IEC 9899:1999, amit röviden C99-nek is hívnak), tehát a C++ norma kialakítása után, így az ekkor létrehozott módosítások a C++-ban már nem jelenhettek meg. A C-compilerek, amelyek az 1999-es ISO normát fordítják, egyelőre nem igazán elterjedtek. Az esetleges, a változtatás által kiváltott inkompatibilitási problémák a gyakorlatban egyelőre nem játszanak nagy szerepet. A nyelvek közti keveredéseket megakadályozandó a jelenleg fejlesztés alatt álló C++ verzióban figyelembe veszik a C-ben végbevitt változtatásokat. Időközben maga a C++ is rendkívül elterjedt, és leginkább az olyan nagy projekteknél részesítik előnyben, ahol az assembler vagy a C használata nem látszik tanácsosnak.
A C++ jellegzetességei
A C++ alapja a C programnyelv, ahogy ezt az ISO/IEC 9899:1990 norma is leírja. A C-ben meglévő lehetőségek mellett a C++ további lehetőségeket kínál: adattípusokat, öröklődő osztályokat, virtuális funkciókat, kivétel kezelést, template-eket, namespace-eket, inline-funkciókat, stb., ezenkívül a C++ standard könyvtárral egy kibővített könyvtárat.
A C++ egy úgynevezett multiparadigma-nyelv, mely támogatja az alábbi programozási technikákat:
- procedurális programozás
- moduláris programozás
- struktúrált programozás
- programozás egyedileg definiált adattípusokkal (absztakt adattípusok)
- objektum orientált programozás
- generikus programozás template-ekkel
Egy C++ compiler implementálása nagyon munkaigényes folyamat. A programnyelvi norma 1998-as elkészítése után több évig tartott, míg C++ programnyelvet a C++ compilerek is megfelelően támogatták. Csupán az export funkció létrehozása, amely a template-ek támogatására szolgál, megközelítőleg 2-3 emberév munkába került, mely idő alatt más programnyelvekben komplett compilereket állítanak elő. Mind a mai napi csak két compiler létezik, amely export funkcióval rendelkezik. A legfontosabb C++ compilerek:
- Comeau C++: Ez ma az egyetlen compiler, amely a template-ek exportját is integrálta, ezzel az egyetlen, mely minden C++ programnyelvi eszközt tartalmaz. Magasfokú a megfelelősége a C++ normával, gyakran mérceként állítják más programok és C++ compilerek számára a megfelelőséget illetően. A compiler fron-end részét az Edison Design Group (EDG) készítette, amely erre specializálódott, és amelynek C++ fornt-end megoldása sok más C++ compilerbe is integrálásra került. A Comeau compilert az interneten kereszül is ki lehet próbálni.
- g++: Ez a GNU compiler összeállítás (GNU Compiler Collection) C++-ra készült változata. A g++ nyílt forráskódú, szabadon hozzáférhető és a 3.4 verzió óta magasfokú programnyelvi megfelelőségével tűnik ki. A g++ különösen sokféle platform számára létezik: Unix, Linux, Mac O X, Windows és AmigaOS. Jelenleg a compiler egy különleges változata a ConceptGCC arra szolgál, hogy a különböző tervezett C++ nyelvi fejlesztéseket teszteljék.
- Microsoft Visual C++: Ez a legelterjedtebb compiler a Windows operációs rendszeren belül, így egyike a legelterjedtebb, és legnagyobb befolyással bíró compilereknek. A 7.1 verzió óta különösen nagy a nyelvi konformitása.
- Intel C++ compiler: ez a világszerte vezető processzor gyártó terméke, mely szintén az EDG említett C++ front-end megoldását használja, így nagyfokú konformitást mutat a C++ nyelvi normával. Az Intel C++ compiler gép kódot állít elő az intel procsszorok számára Windows, Linux és MacOS X operációs rendszerek alatt. Mivel az Intel C++ compiler által előállított programok az Intel processzorok parancskészletét különösen jól kihasználják, igen hatékony programokat állítanak elő.
A C++-t már a fejlesztési fázisában is aktívan használták. Ez volt az oka annak, hogy sok fejlesztő nem, vagy nem elégé ismerte a nyelv legújabb jellemzőit, vagy ezeket a tökéletlen compilerek miatt nem tudták alkalmazni. Emiatt sok C++-ban fejlesztett projekt nem felel meg ezen programnyelv mai állapotának, sőt inkompatibilis a jelenlegi C++ normával. A nyelv széles teljesítmény spektrumja és a sokféle kialakítási lehetősége miatt relatív hosszú ideig tart az alapos elsajátítása. A programozási irányvonalak alkalmazása a garanciák és az egyszerűbb hibaazonosítás okán sokkal erőteljesebb, mint más nyelvekben. Ezzel ellentétben sok tankönyv és tanfolyam meghaladottnak számít, és gyakran olyan tananyagot oktat, ami a valóban létező compilerek mai állapotának egyáltalán nem felel meg.
vissza

|