Gjuhët C/C++: Orientimi nga Objektet
Programimi i orientuar nga objektet lindi ne fundin e viteve 70 dhe fillimin e viteve 80, fillimisht si një iniciativë për zgjerimin e gjuhës C nga informatikani danez Bjarnë Straustrup (Bjarne Stroustrup). Ky i fundit kishe vënë re disa cilësi interesante te gjuha Simulatë cilat nuk gjendeshin te gjuha C. Vetë Simulanuk mund të përdorej në modulet e sistemit Unix sepse ishte shumë e ngadaltë. Si pjesë e punës së tij te laboratorët Bell, Straustrupi u përball me problemin e përshtatjes së kernelit Unix për sistemet e shpërndara, problem për të cilin gjuha C e asaj kohe nuk mjaftonte. Për këtë arsye, ai mendoi ta zgjeronte gjuhën C me veçori të gjuhës Simula. Përveçse nga Simula, zgjerimet u ndikuan pjesërisht edhe nga gjuhë të tjera si ALGOL 68, Ada, etj.
Varianti i parë i zgjeruar i C-së u emërtua “C me Klasa” (“C with Classes”). Disa elementë kryesorë të shtuar ishin klasat, klasat derivate, dhe argumentat e paracaktuar. “C me Klasa” u riemërtua C++ në vitin 1983 (një emërtim tjetër informal i kësaj periudhe ka qenë edhe “C-ja e re”) kur u shtuan gjithashtu funksionet virtual, mbikalimi i funksioneve dhe operatorëve, referencat, kontrolli i përmirësuar i tipit, dhe komentet e një rreshti të vetëm (//). Zgjerimet e fundit të rëndësishme të gjuhës C++ ndodhën në fillimin e viteve 90 dhe përfshinin trashëgiminë e shumëfishtë, klasat abstrakte, funksionet statike, përjashtimet, etj.
Botimi i parë i librit “Gjuha e Programimit C++” (origjinali: “The C++ Programming Language”) u publikua në vitin 1985. Në analogji të plotë me librin “Gjuha e Programimit C”, edhe ky libër pati sukses shumë të madh dhe u kthye në referencën kryesore të gjuhës C++. Vetë Straustrupi e ka përshkruar gjuhën C++ si një “gjuhë programimi me abstraksion të lehtë (light-weight) të projektuar për ndërtimin dhe përdorimin e abstraksioneve elegantë dhe efikasë”. Cilësia kryesore e gjuhës C++ është pikërisht ofrimi i qasjes te hardueri nëpërmjet cilësive të C-së si një nënbashkësi e saj, kombinuar me abstraksionet e fuqishme të cilat nuk shkaktojnë ngadalësim në ekzekutim.
Orientimi nga objektet që përbën cilësinë bazë të gjuhës C++ e lehtëson së tepërmi zhvillimin dhe mirëmbajtjen (dokumentimin, përditësimin, zgjerimin, etj.) e kodit të programeve kur këta të fundit arrijnë përmasa të mëdha. Njësoj si gjuha C, edhe C++ bazohet te kompilatori, pra programet nuk mund të ekzekutohen pa u kompiluar paraprakisht. Zhvillimi i gjuhës C++ është udhëhequr nga një tërësi parimesh si:
- Veçoritë që shtohen duhet të jenë të gatshme për përdorim në programe konkrete.
- Secila veçori duhet të jetë e zbatueshme, pra duhet të ketë një mënyrë të qartë zbatimi.
- Programuesit duhet të jenë të lirë të zgjedhin stilin e dëshiruar të programimit, stil që duhet të mbështetet plotësisht nga gjuha C++.
- Lejimi i veçorive të dobishme është më i rëndësishëm se sa parandalimi i çdo përdorimi të gabuar
- Duhet të mundësohen mënyra dhe mjete për organizimin e programeve në pjesë të ndara dhe të qarta, si dhe mënyra për kombinimin e pjesëve të zhvilluara veçmas.
- Nuk duhet të lejohen përjashtime implicite nga sitemi i tipeve, por mund të lejohen përjashtime eksplicite, p.sh. të kërkuara nga programuesi.
- Tipet e krijuara nga përdoruesi duhet të kenë të njëjtën mbështetje dhe shpejtësi ekzekutimi me tipet e gatshme.
- Nuk duhet të ketë gjuhë të ndërmjetme poshtë gjuhës C++, pra kodi C++ përkthehet direkt në kod makine.
- Gjuha C++ duhet të përdoret paralelisht me gjuhët e tjera të programimit dhe jo të nxiti një mjedis zhvillimi të sajin, të veçuar.
- Nëse qëllimi i programuesit është i pakuptueshëm, ai/ajo duhet lejuar ta specifikojë.
Parimet e mësipërme e kanë shndërruar gjuhën C++ në një nga gjuhët më të përdoruara të kohëve të sotme. Disa nga zbatimet më të rëndësishme të gjuhës C janë:
- Zhvillimi i module të caktuara të sistemeve operative, sidomos i ndërfaqeve grafike të cilat kërkojnë abstraksione të larta.
- Zhvillimi i shfletuesve të Uebit të cilët janë programet më të njohur dhe më të përdorur nga përdoruesit.
- Zhvillimi i librarive që kërkojnë shpejtësi të lartë. Shumë librari shkencore që përdoren nga gjuhë të tjera si Piton janë të shkruara në gjuhën C++ për të ofruar shpejtësi të lartë të llogaritjeve shkencore.
- Zhvillimi i programeve grafike që kërkojnë përpunim të shpejtë të imazheve. Në këtë kategori hyjnë dhe lojrat grafike të cilat kanë marë një përhapje të madhe në ditët e sotme.
- Zhvillimi i sistemeve të shpërndara që përdorin sisteme skedarësh të shkallëzueshëm dhe me ekzekutim paralel.
- Zhvillimi i sistemeve të menaxhimit të bazave të të dhënave si Postgres dhe MySQL.
Më poshtë paraqitet kodi në C++ i programit të famshëm “Hello, World!” i shkruar nga Bjarnë Straustrup:
#include <iostream> int main() { std::cout << "Hello, world!\n"; }