C++

Hikipedia
Loikkaa: valikkoon, hakuun

C++ on C-kielen kehittyneempi versio. C++:n kehittäminen perustuu feature creep -periaatteeseen, jonka mukaan kieleen pyritään sisäänrakentamaan kaikki toiminnallisuus, jota kukaan voisi koskaan kuvitella käyttävänsä ja mielellään vielä vähän enenmmän. Kuten kaukaakin voi jo arvata, on tämä johtanut tilanteeseen, jossa itse kieli kehittyy nopeammin kuin sen kehitysympäristöt, ja se mikä toimii kiltisti yhdessä ympäristössä kaataa toisen.

Oliopohjaisuus[muokkaa]

C++:san merkittävin ominaisuus on oliopohjaisuus, mikä käytännössä tarkoittaa jokaisen ohjelman osan kapseloimista mahdollisimman moneen sisäkkäiseen luokkaan, jolloin koodin määrä kasvaa neliössä verrattuna tarvittavaan koodin määrään ei-oliopohaisesti. Olio-ohjelmooinnin perusidea on, että yksi luokka tekee yhden asian riippumatta muista luokista, mutta tämä ohjelmoinnin graalin malja on funktionaalisen ohjelmoinnin tavoin ollut toistaiseksi saavuttamattomissa.

Toisin kuin Java C++ ei kuitenkaan pakota käyttämään luokkia, jolloin suurin osa koodista jää lojumaan hujan hajan, minne ikinä se satuttiin alunperin kirjoittamaan. C++ itseasiassa aktiivisesti tarjoaa puitteet olio-ohjelmoinnin periaatteiden rikkomiseen mm. mahdollisuudella merkitä luokkia ystäviksi (jolloin luokat pääsevät näkemään toistensa sisälle ja kapselointi lakkaa merkitsemästä mitään) sekä C:stä tutuilla structeilla, jotka hävyttötmästi kieltäytyvät edes yrittämästä piilotella sisältöään.

Yleisimpiä kirjastoja[muokkaa]

Osoittautuu, ettei C++:san standardikirjasto olekaan kaikkivoipa.

Boost[muokkaa]

Boost on C++:lle sitä, mitä jQuery on JavaScriptille: Se sisältää sen yhden kätevän ominaisuuden, jonka koodaaminen onnistuisi itse noin parissa tunnissa, mutta laiskuus vie voiton ja ohjelmaan paketoidaan mukaan ylimääräiset 200 megatavua täysin käyttämätöntä koodia. Boostin tapauksessa suurin osa ominaisuuksista löytyy kaiken lisäksi 1:1 C++:san standardikirjastosta, sillä Boost toimii eräänlaisena ydinkoealueena C++:s standardikirjaistolle, eikä ominaisuuksia poisteta Boostista niiden päästyä standardikirjastoon.

OpenGL[muokkaa]

Kätevä kirjasto 3D-grafiikkaa varten. Kirjastoa on tosin vuosien varrella päivitetty aina silloin tällöin, mutta sen kaikki neljä versiota eri aikakausilta ovat edelleen kaikki käytössä ja niiden funktiot (komennot) ovat kaikki sekaisin samassa (globaalissa)nimiavaruudessa. Mihin versioon mikäkin funktio kuuluu, on käytännössä osattava ulkoa, eikä eri versioiden ominaisuuksia suositella sekoitettavaksi keskenään. OpenGL:n käyttö menee etenkin uudemmilla versioilla hyvin kankeaksi globaalin tilan ja turhauttavan manuaalisen datan käsittelyn vuoksi. Microsoftin DirectX olisi helpompi ja kaikenlisäksi oliopohjainen vaihtoehto OpenGL:lle, mutta kyseisen firman tuotteisiin ei sovi koskea pitkällä tikullakaan.

Katso myös[muokkaa]