…meie igapäevast IT’d anna meile igapäev…

2007-03-21

Programmeerimiskeeled: C/C++

Filed under: Infotehnoloogia,Programmeerimine — Sander @ 09:20:37

C

Programmeerimiskeele C lõi Dennis Ritchie 1973. aastal, töötades Bell Labs’is. Kuivõrd ta oli hiljuti saanud valmis programmeerimiskeele B, siis tundus loomulikuna, et järgmisele keelele saab nimeks C.

C eesmärgiks oli luua low-level keel (tänapäevases mõistes – omal ajal peeti C’d peaaegu kõrgkeeleks), millel oleks lihtne kompilaator ja võimaldaks madala taseme ligipääsu nii mälule kui ka muule riistvarale.

C populaarsus tõusis vaikselt ja pidevalt, kuni see seitsmekümnendate lõpul ületas populaarsuselt Basicut. Kaheksakümnendate alguses valis IBM C programmeerimiskeeleks oma uuele platformile koondnimega „PC“, see põhjustas C-keele populaarsuse järsu kasvu.

1983. aastal ilmus ANSI-C standard, mis oli aluseks kõikidele järgnevatele dialektidele.

 

C++

1979. aastal alustas Bjarne Stroustrup C’l põhineva uue keele loomist – C ei suutnud vastata mitmetele uutele paradigmadele, objekt-orienteeritud programmeerimine oli neist kõige tähtsam. Algselt oli uue keele nimeks „C with Classes”, kuid 1983. aastal sai keele nimeks C++.

Võrreldes C’ga lihtsustas C++ oluliselt eelkõige aplikatsioonide kirjutamist. Kui C oli suuresti loodud Unixi kirjutamiseks, siis C++ oli suunatud lõppkasutajale sobivate rakenduste tegemiseks.

C++ sai välkkiirelt populaarseks ning oli kaheksakümnendate ja üheksakümnendate levinuim programmeerimiskeel. Ilmusid nii vabavaralised kui ka paljud kommertsiaalsed dialektid; enamik tolleaegsetest programmidest on kirjutatud C++’is.

***

C ja C++ mõju tänapäevastele programmeerimiskeeltele on tohutu. Nagu on öeldud, uued keeled, mis ei kasuta C’le vähemalt osaliselt sarnast süntaksi, on hävingule määratud. Nii harjunud on kõik programmeerijad C-laadse süntaksiga – samas näiteks Pascali või Basicu süntaksiga uusi keeli annab tikutulega otsida.

Kõik uued/uuemad programmeerimiskeeled meenutavad oma süntaksi poolest vähemalt osaliselt C’d – PHP, Java, Javascript, C#, Perl, Python, Ruby, …, …

Levik tänapäeval

Pärast laia levikut eelmise aastatuhande lõpus on C ja C++ populaarsus pidevas languses. Hästi illustreerib seda järgmine graafik (andmed on pärit TIOBE Programming Community Index for March 2007‘st).

Punasega on graafikul C populaarsus ja sinisega C++ populaarsus. Kuivõrd TIOBE indeks ei erista C’d ja C++’i korralikult, siis on mõttekas käsitleda neid pigem ühtse trendina. C populaarsuse järsk tõus 2005. aasta alguses on ilmselt põhjustatud GCC v4 ilmumisest.

Miks on C ja C++ populaarsus langemas? On nad ju nii kiired, et neid kasutatakse testides ju etalonina? Ja nagu mainitud siin blogis ennegi, C is a new assembly.

C/C++ on küll kiire jooksutada, aga väga aeglane arendada. Kui tavaliselt business-kliendi käest küsida, kas ta soovib saada kiirema rakenduse kümme korda suurema raha eest, mis on kirjutatud C++’s või odava ja tühiselt aeglasema rakenduse, mis on kirjutatud C#’s, siis valib loomulikult klient teise võimaluse.

Lisaks on protsessorite võimsus tõusnud kümnetes kordades. Tavalist kontoriarvutit ajab edasi 2…3 gigahertsine protsessor, giga või kaks mälu on muutunud tavaliseks. C++ kasutamisel saadav võit kiiruses ei ole enam üldjuhul oluline.

C ja C++’i pärusmaaks jäävad asjad, kus kiirus on tõesti oluline, nagu draiverid, operatsioonisüsteemid, koodekid, andmebaasimootorid, multimeedia töötlemiseks mõeldud programmid – ja loomulikult arvutimängud. Tänapäevaste kõrgkeelte pärusmaaks jääb veebilehtede, fat client‘ite ja äritarvara loomine. Ehk teisisõnu, C ja C++ keeltes kirjutatud rakendused moodustavad selgroo, millele kõrgkeeltes „liha” peale kirjutatakse. Oletada võib, et C/C++ populaarsus väheneb pidevalt, kuid päris ära ei kao nad ilmselt aastakümneid.

C, C++ ja mina

Minu esmakokkupuude C’ga oli Borland Turbo C v2.0’iga, milalgi 90’nendate keskpaigas. Tore oli näha, kuidas omakirjutatud asjad olid välkkiired, seda eriti võrreldes Basicuga. Samas, C kirjutamine oli paras piin – Turbo C 2.0 keskkond ei toetanud isegi mitte hiirt, kogu liikumine oli klahvidega. Debuggeri kasutamine oli äärmiselt ebamugav, help‘i oleks võinud kasutana näitena kursusel „Kuidas mitte abifaile teha”.

Varsti sain kasutada TurboC++ v3.0. See oli ikka teine tera, hiire tugi oli olemas kasutajaliideses ja puha. Tõsi küll, selleks et enda loodud programmis hiirt kasutada, pidin (tõsi küll, õpetuse järgi) ise hiire toe algusest peale kirjutama. Huvitav kogemus.

Programme sai kirjutatud C++’is päris palju, mõned neist said isegi avalikuks. Veel isegi nii aasta eest nägin mingil abandonware-saidil omaloodud Duke Nukem 3D launcherit. Tegin MS-Paint’i klooni nimega DosDraw (mitte segi ajada DosDraw Artist’iga, mis on „päris” programm), millel oli isegi oma failiformaat (pixel-by-pixel faili salvestatud 16 värvi…). Mängisin andmete pakkimisega (märksõnad Huffmann coding ja solid compression) ja tegin paljutki muud – aga kõik see oli vaid algaja amatööri tühikargamine.

Programmid ise polnud midagi väärt, küll aga oli väärt see kogemus, mis ma erinevate tehnoloogiate ja paradigmadega kokku puutudes sain. Ilmselt pärineb sealt ajast mu harjumus ja soov optimeerida kiirust ja minimiseerida mälukasutust – ning üldine vastumeelsus igasuguse põhjalikuma mäluhalduse vastu.

Millalgi umbes 1997. aastal sai mul C’st kõrini. Windowsi aeg oli päästmatult käes ja Windowsi all C++ kirjutamine oli tollaste tööriistadega tunduvalt vastikum kui MS-DOS programmikeste plõksimine. Lisaks leidsin, et amatööri jaoks on C/C++ liiga keerukas – ja nii see ka on. Tegin nii aasta või paarise pausi programmeerimises – ja hiljem hakkasin kirjutama juba Delphis. Aga see on lugu üheks järgmiseks blogipostiks.

Lisa kommentaar »

Kommentaare veel pole.

RSS feed for comments on this post. TrackBack URI

Lisa kommentaar

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Muuda )

Twitter picture

You are commenting using your Twitter account. Log Out / Muuda )

Facebook photo

You are commenting using your Facebook account. Log Out / Muuda )

Google+ photo

You are commenting using your Google+ account. Log Out / Muuda )

Connecting to %s

Create a free website or blog at WordPress.com.