Matrjoshka C. Një sistem i ndarë i gjuhës së programimit

Le tĂ« tentojmĂ« tĂ« paraqesim kimi pa tabelĂ«n Periudike tĂ« Mendeleev (1869). Sa shumĂ« elemente duhej tĂ« mbanim mend, madje nĂ« njĂ« rend tĂ« çrregullt
 (Atyre — 60.)

Për këtë mjafton të mendojmë për një ose disa gjuhë programuese. Të njëjtat ndjenja, po ai kaos krijues.

Tani mund të përjetojmë ndjenjat e kimistëve të shekullit të 19-të, kur iu paraqitën të gjitha njohuritë e tyre, dhe pak më shumë, në një tabelë periodike.

Matrjoshka C. Një sistem i ndarë i gjuhës së programimit


Libri "Matrjoshka C. Sistemi i Shtresuar i Gjuhës së Programit" paraqet të gjitha njëshitë e gjuhës C si në pëllëmbë. Kjo lejon që t'i sistematizojmë ato, të korrigjojmë informacionet e vjetra dhe madje të saktësojmë konceptin vetë të programit.

Sot informacioni për programimin ka nevojë për sistematizim edhe më shumë se elementet kimike 150 vjet më parë.

Nevoja e parĂ« — mĂ«simdhĂ«nia. Mendeleev filloi krijimin e sistemit tĂ« tij kur u pĂ«rball me pyetjen — nga cili element tĂ« fillonte tĂ« jepte leksione: O, H, N, He, Au
 NĂ« kĂ«to kushte, i ishte mĂ« e lehtĂ« — ai mĂ«sonte kiminĂ« mĂ« tĂ« mirĂ«ve — studentĂ«ve tĂ« universitetit tĂ« SPb. NdĂ«rsa programimi tashmĂ« mĂ«sohet nĂ« shkollĂ« dhe sĂ« shpejti do tĂ« fillojĂ« nĂ« kopshte.

Nevoja e dytĂ« — qasja shkencore. Me ndihmĂ«n e sistemit periodik u zbuluan elemente tĂ« reja dhe u korrigjua informacioni pĂ«r ato tĂ« vjetra. Ai ndihmoi nĂ« krijimin e modelit tĂ« atomit (1911). Dhe kĂ«shtu me radhĂ«.

Nevoja e tretĂ« — saktĂ«simi i konceptit tĂ« programit.

Programimi modern me një këmbë është bllokuar në vitet '50 të shekullit XX. Atëherë programet ishin të thjeshta, ndërsa makinat dhe gjuhët makina ishin të komplikuara, kështu që gjithçka rrotullohej përreth mjeteve dhe gjuhëve.

Tani është krejt e kundërta: programet janë të komplikuara dhe primare, gjuhët janë të thjeshta dhe dytësore. Kjo quhet qasje aplikative, e cila duket se është e njohur për të gjithë. Por studentët dhe zhvilluesit vazhdojnë të bindin se gjithçka është njësoj si më parë.

Kjo na rikthen nĂ« leksionin e parĂ« tĂ« privat-docentit Mendeleev. ÇfarĂ« tĂ« themi studentĂ«ve tĂ« parĂ«? Ku Ă«shtĂ« e vĂ«rteta? Ja nĂ« çfarĂ« qĂ«ndron pyetja.

PĂ«rgjigjen pĂ«r kĂ«tĂ« e ofron libri "Matrjoshka C. Sistemi i Shtresuar i GjuhĂ«s sĂ« Programit". Ajo Ă«shtĂ« drejtuar jo vetĂ«m studentĂ«ve, por edhe programuesve tĂ« pĂ«rgatitur, pasi ata duhet tĂ« kĂ«rkojnĂ« tĂ« vĂ«rtetĂ«n dhe tĂ« rishikojnĂ« botĂ«kuptimin — nĂ« fakt, ne.

Më poshtë ndodhet një përmbledhje e shkurtër e librit.

1. Hyrje

Në vitin 1969 u krijua gjuha C, e cila u bë një gjuhë themelore programimi dhe mbetet e tillë tashmë për 50 vjet. Pse është kështu? Para së gjithash, sepse C është një gjuha aplikative , e cila i jep programit pamje njerëzore në vend të atij mekanik.. Ky arritje u forcuan nga gjuhët e familjes C: C++, JavaScript, PHP, Java, C# dhe të tjera. Së dyti, kjo është një gjuhë e shkurtër dhe e bukur.

Megjithatë, vetë gjuha C zakonisht ngatërrohet me assemblerin makinerik, duke e komplikuar dhe deformuar kështu perceptimin e saj. Një ekstrem tjetër është imponimi i ndonjë «filozofie» mbi gjuhën: procedurale, objektive, funksionale, të kompiluara, të interpretuara, të tipizuara dhe kështu me radhë. Kjo shton emocione, por nuk ndihmon për ta përshkruar më mirë gjuhën.

E vĂ«rteta ndodhet nĂ« mes, dhe pĂ«r gjuhĂ«n C — saktĂ«sisht nĂ« mes mes perceptimit filozofik dhe atij mekanik.

Gjuha C — nuk Ă«shtĂ« autonome, ajo i nĂ«nshtrohet gjuhĂ«s sĂ« zakonshme tĂ« shkruar, dhe nĂ« tĂ« njĂ«jtĂ«n kohĂ« — vetĂ« kontrollon gjuhĂ«n assembler. Kjo pozicion pĂ«rshkruan Modelin e tĂ« folurit tĂ« programit, sipas tĂ« cilit programi ndahet nĂ« tri lloje nĂ«nshtruese: tĂ« folurit, kodin, komandĂ«n. Gjuha C Ă«shtĂ« pĂ«rgjegjĂ«se pĂ«r llojin e dytĂ«, atĂ« tĂ« kodit.

Duke pĂ«rcaktuar vendin e gjuhĂ«s nĂ« program, mund tĂ« renditen informacionet pĂ«r tĂ«, çka bĂ«n Sistemi nĂ« nivele i gjuhĂ«s sĂ« programit, qĂ« paraqet gjuhĂ«n C nĂ« frymĂ«n e sistemit tĂ« Mendeljev — nĂ« njĂ« faqe.

Sistemi Ă«shtĂ« ndĂ«rtuar duke marrĂ« parasysh shkallĂ«n e gjuhĂ«ve aplikative, qĂ« rrjedh nga nĂ«nshtrimi i tyre tĂ« folur. NjĂ« grup njĂ«si tĂ« MatrjoskĂ«s C lejon pĂ«rshkrimin dhe krahasimin e gjuhĂ«ve tĂ« ndryshme, duke krijuar njĂ« sĂ«rĂ« Matrjoskash: C++, PHP, JavaScript, C#, MySQL, Python dhe kĂ«shtu me radhĂ«. ËshtĂ« e merituar dhe e drejtĂ« qĂ« gjuhĂ« tĂ« ndryshme pĂ«rshkruhen me njĂ«sitĂ« e gjuhĂ«s themelore.

2. KREU 1. Modeli i të folurit të programit. Gjuha C e kuptueshme

Në kreun e parë paraqitet modeli i të folurit të programit, që pasqyron qasjen aplikative. Sipas tij, programi ka tri lloje të dukshme secila pasuese:

  1. tĂ« folurit — fjalĂ«t e drejtpĂ«rdrejta tĂ« programuesit, i cili zgjidh problemin,
  2. kodi — kodifikimi i zgjidhjes nĂ« formĂ« matematikore nĂ« gjuhĂ«n C (apo ndonjĂ« gjuhĂ« tjetĂ«r)
  3. dhe komanda — urdhrat e drejtpĂ«rdrejta makinerik.

Modeli i të folurit shpjegon pse C është një gjuhë e thjeshtë dhe e kuptueshme. C është ndërtuar sipas modelit të gjuhës sonë njerëzore të zakonshme.

Lloji i parĂ« i programit Ă«shtĂ« fjalimi i drejtpĂ«rdrejtĂ« i programuesit. Fjalimi pĂ«rputhet me mĂ«nyrĂ«n e tĂ« menduarit njerĂ«zor. Me anĂ« tĂ« fjalĂ«s shkruajnĂ« programet programuesit fillestarĂ« — fillimisht nĂ« rusisht, pastaj duke kaluar hap pas hapi veprimet nĂ« gjuhĂ«n e kodit. Dhe pikĂ«risht sipas kĂ«tij modeli u krijua gjuha C.

Arsyetimet e programuesit, tĂ« shprehura me fjalĂ«, shndĂ«rrohen nĂ« njĂ« format numerik tĂ« kodit. Ky shndĂ«rrim duhet tĂ« quhet reflektim, pasi fjalimi dhe kodi kanĂ« njĂ« natyrĂ« tĂ« njĂ«jtĂ« (reflektim — lindje — gjini). Kjo Ă«shtĂ« krejt e qartĂ«, nĂ«se e pĂ«rputhim format e fjalĂ«s (majtas) dhe ato tĂ« kodit (djathtas).

Matrjoshka C. Një sistem i ndarë i gjuhës së programimit

E çuditshme Ă«shtĂ« se reflektimi ndodh shumĂ« thjesht — vetĂ«m me dy lloje shprehjesh.

Megjithatë, përshkrimi modern i gjuhës C (nga viti 1978) nuk përmban një listë të mjaftueshme emërtimesh as për përshkrimin e gjuhës në përgjithësi, as për detyrën e reflektimit në veçanti. Prandaj ne jemi të detyruar të merremi me krijimtari dhe të futim këto emërtesa.

Zgjedhja e fjalĂ«ve duhet tĂ« jetĂ« e saktĂ« dhe e qartĂ«. PĂ«r kĂ«tĂ« nevojitej njĂ« qasje e veçantĂ«, e shprehur shkurtimisht kĂ«shtu — pĂ«rdorimi rigoroz i gjuhĂ«s amtare. PĂ«r anglezĂ«t do tĂ« ishte anglishtja, por ne nuk jemi anglezĂ«. KĂ«shtu qĂ« pĂ«rdorim atĂ« qĂ« kemi dhe do tĂ« pĂ«rpiqemi tĂ« flasim rusisht.

Reflektimi kryhet nga dy lloje shprehjesh:

  1. llogaritja (L) — reflekton ndryshimin e pronave tĂ« objektit. Prona e objektit shprehet me njĂ« numĂ«r, atĂ«herĂ« veprimi mbi pronĂ«n — Ă«shtĂ« veprimi mbi numrin — operacioni.
  2. nĂ«nshtrimi (N) — reflekton ndryshimin e rendit tĂ« veprimeve. Modeli i N Ă«shtĂ« fjalimi i ndĂ«rlikuar, prandaj shumica e llojeve tĂ« N fillojnĂ« me lidhĂ«sin nĂ«nshtrues «nĂ«se», «ndryshe», «derisa», «pĂ«r». Lloje tĂ« tjera tĂ« N i plotĂ«sojnĂ« ato.

Dhe, pĂ«r fat tĂ« keq, mund tĂ« besoni se nĂ« pĂ«rshkrimin e C nuk ekziston emri pĂ«r shprehjet llogaritĂ«se — ato quhen thjesht «shprehje»? Pas kĂ«saj nuk do tĂ« çuditemi mĂ« pĂ«r mungesĂ«n e emĂ«rtimit dhe bashkimit pĂ«r llojin nĂ«nshtrim, dhe pĂ«r gjithĂ« varfĂ«rinĂ« nĂ« emĂ«rtime, pĂ«rkufizime dhe pĂ«rgjithĂ«sime. E gjithĂ« kjo sepse libri i famshĂ«m K/R ("Gjuha C", Kernighan/Ritchie, 1978) Ă«shtĂ« njĂ« manual pĂ«rdorimi, jo njĂ« pĂ«rshkrim i gjuhĂ«s.

Megjithatë, do të donim të kishim një përshkrim të gjuhës. Prandaj ai ofrohet nga Sistemi në nivele i gjuhës së programit.

3. KREU 2. Sistemi në shtresa. Një përmbledhje e shkurtër e C

Çdo pĂ«rshkrim duhet tĂ« jetĂ« i saktĂ« dhe tĂ« mbahet nĂ« minimum. NĂ« rastin e gjuhĂ«s sĂ« programit, njĂ« pĂ«rshkrim i drejtpĂ«rdrejtĂ« Ă«shtĂ« i vĂ«shtirĂ«.

Këtu kemi një program. Ai përbëhet nga module. Modulet përbëhen nga nënprograme dhe grupe (structure). Nënprogramet përbëhen nga shprehje të veçanta: shpallje, llogaritje, varësi. Ka gjithsej dhjetë lloje varësish. Varësitë lidhen me nivele dhe nënprograme. Ka gjithashtu disa shpallje. Megjithatë, shpalljet përfshihen jo vetëm në nënprograme dhe nivele, por edhe në module dhe grupe. Dhe shumica e shprehjeve përbëhet nga fjalë, të cilat janë aq të vështira për t'u përshkruar saqë zakonisht ato jepen vetëm me dy lista - fjalët origjinale dhe ato të nxjerra, me të cilat do të njihemi gjatë gjithë studimit dhe përdorimit të gjuhës. Të shtojmë këtu edhe shenjat e pikësimit dhe një grup tjetër shprehjesh.

Në këtë përshkrim është e vështirë të kuptohet kush qëndron në këmbë të kujt.

Një qasje e drejtpërdrejtë në përshkrimin e gjuhës do të ishte tepër e komplikuar. Kërkimi i rrugëve rrethore çon në përshkrimin e gjuhës mbi bazën e natyrës së saj fjalore dhe anës komanduar. Kështu lindi sistemi me Shtresa, i cili përputhet pjesërisht me Sistemin Periodik të Mendeleievit, i cili gjithashtu është shtresor.Siç u zbulua pas 42 vjetësh nga botimi i tij (1869), periodiciteti i sistemit lidhet me katërshet elektronike (1911, modeli i atomit Bohr-Rutherford). Gjithashtu, sistemi me Shtresa dhe Sistemi Periodik ndajnë vendosjen tabelare të të gjitha njësive në një faqe. Përshkrimi i njësive të gjuhës del të jetë i shkurtër - vetëm 10 lloje shprehjesh dhe 8 lloje njësish të tjera, si dhe informues dhe vizual. Megjithatë, edhe e pazakontë për takimin e parë.

Njësitë e gjuhës janë të ndara në 6 nivele:

grupet - rreshtat e tabelës

  1. departamentet - grupe të veçanta të llojeve (pjesët e rreshtit të parë)
  2. llojtë - qelizat (niveli kryesor i ndarjes)
  3. nënllojtë - ndarësit e llojeve (niveli i rrallë)
  4. llojtë - formulat e njësive në fund të qelizës ose veçmas
  5. modelet - vetë njësitë (vetëm për fjalët)
  6. Modelet e fjalëve përshkruhen

nga fjalori – njĂ« nĂ«nsiatĂ« e veçantĂ«, e pĂ«rbĂ«rĂ« nga tĂ« njĂ«jtit gjashtĂ« nivele. Pjesa fjalore e gjuhĂ«s C Ă«shtĂ« plotĂ«sisht e dukshme, megjithatĂ« ende meriton pĂ«rshkrim. NdĂ«rsa pjesa komanduar e gjuhĂ«s lidhet me menaxhimin e kompilimit, nĂ« tĂ« cilin krijohet njĂ« lloj i tretĂ« programi - komandues. KĂ«tu ne arrijmĂ« nĂ« anĂ«n mĂ« tĂ«rheqĂ«se tĂ« gjuhĂ«s C - bukurinĂ«.

4. KAPITULLAT PASUES. Bukurish C

4. KAPITULLT E NDRYSHME. Gjuha e bukur C

Gjuha C është në thelb të programimit modern. Pse? Së pari, për shkak të përputhshmërisë së saj më të madhe me gjuhën. Së dyti, sepse bukur ka kaluar kufizimet e përpunimit të numrave nga makina.

ÇfarĂ« saktĂ«sisht ofron C? BashkĂ«ngjitje dhe shtresĂ«.

Fjala "bashkĂ«ngjitje" Ă«shtĂ« pĂ«rkthim i anglishtes "type", e cila rrjedh nga greqishtja "prototyp" — "modeli i parĂ«". NĂ« gjuhĂ«n ruse, fjala "tip" nuk pĂ«rcjell saktĂ«si tĂ« plotĂ« tĂ« konceptit tĂ« shprehur, pĂ«r mĂ« tepĂ«r duke u ngatĂ«rruar me pĂ«rdorimin shĂ«rbyes "lloj".

Fillimisht, bashkëngjitja zgjidhte një problem të pastër mekanik të llogaritjes, dhe më pas u bë piste për lindjen e gjuhëve objekt.

Shtresa menjĂ«herĂ« zgjidhte disa probleme — si ato mekanike, ashtu edhe ato praktike. Prandaj, shqyrtimi do tĂ« fillojĂ« me bashkĂ«ngjitjen e njĂ«qĂ«ndrueshme dhe do tĂ« kalojĂ« nĂ« shtresĂ«n shumĂ«qĂ«ndrueshme.

NjĂ« nga karakteristikat e pakĂ«ndshme tĂ« programimit historik Ă«shtĂ« se shumica e koncepteve, duke pĂ«rfshirĂ« ato kryesore, jepen pa definita. "Gjuha e programimit (emri i lumenjve) ka tip tĂ« plotĂ« dhe tĂ« lĂ«vizshĂ«m..." — dhe vazhdoi. ÇfarĂ« Ă«shtĂ« "tipi" (bashkĂ«ngjitja) — nuk Ă«shtĂ« e nevojshme tĂ« pĂ«rcaktohet, sepse autorĂ«t vetĂ« nuk e kuptojnĂ« plotĂ«sisht dhe do ta kalojnĂ« "pĂ«r qartĂ«si". NĂ«se i shtyjnĂ« pĂ«r muri, do tĂ« japin njĂ« pĂ«rcaktim tĂ« paqartĂ« dhe tĂ« pavlefshĂ«m. E ndihmon shumĂ« tĂ« fshihesh pas fjalĂ«ve tĂ« huaja: pĂ«r autorĂ«t rusĂ« — pas atyre angleze (tip), pĂ«r anglezĂ«t — pas atyre franceze (subroutine), greke (polimorfizĂ«m), latine (inkapsulim) ose kombinimeve tĂ« tyre (polimorfizĂ«m ad-hoc).

Por kjo nuk është fati ynë. Zgjedhja jonë është definita me një qëndrim të hapur në gjuhën ruse të pastër.

Imazh

Imazh — kjo Ă«shtĂ« njĂ« emĂ«r prototipik i madhĂ«sisĂ«, qĂ« pĂ«rcakton 1) vetitĂ« e veta tĂ« madhĂ«sisĂ« dhe 2) zgjedhjen e operacioneve pĂ«r madhĂ«sinĂ«.

Fjalës "tip" (lloj) i korrespondon pjesa e parë e definicioni: "vetitë e veta të madhësisë". Por kuptimi kryesor i bashkëngjitjes është në pjesën e dytë: "zgjedhja e operacioneve për madhësitë".

Pika fillestare për introdukimin e bashkëngjitjes në gjuhën C është llogaritja e zakonshme, për shembull, operacioni i mbledhjes.

Matematika e shkruar me dorë ose e shtypur, nuk bën dallime të veçanta midis llojeve të numrave, duke i konsideruar zakonisht ato si reale. Prandaj, operacionet e procesimit të tyre janë njëzësh.

Mekanik Matematika ndan qartĂ« numrat nĂ« numra tĂ« tĂ«rĂ« dhe numra tĂ« fraksionuar. Lloje tĂ« ndryshme numrash ruhen ndryshe nĂ« memorje dhe pĂ«rpunohen nga komandat e ndryshme tĂ« procesorit. PĂ«r shembull, komandat e shtimit tĂ« numrave tĂ« tĂ«rĂ« dhe numrave tĂ« fraksionuar — janĂ« dy komanda tĂ« ndryshme, qĂ« i pĂ«rkasin dy nyjave tĂ« ndryshme tĂ« procesorit. MegjithatĂ«, komanda pĂ«r tĂ« shtuar argumente tĂ« tĂ«rhequra dhe numra tĂ« fraksionuar nuk ekziston.

Aplikative Matematika, pra gjuha C, ndan llojet e numrave, por bashkon operacionet: shtimi për numra të tërë dhe/o numra të fraksionuar shkruhet me një shenjë veprimi.

Përkufizimi i qartë i konceptit të figurës lejon të flasim për dy koncepte të tjera: shkalla dhe operacioni.

Shkalla dhe operacioni

Shkalla — numri i pĂ«rpunuar.

OperaciĂłn — pĂ«rpunimi i vlerave tĂ« figurave fillestare (argumenteve) pĂ«r tĂ« marrĂ« numrin pĂ«rfundimtar (rezultatin).

Shkalla dhe operacioni janĂ« tĂ« lidhura. Çdo operacion Ă«shtĂ« njĂ« shkallĂ«, pasi ka njĂ« rezultat numerik. NdĂ«rsa çdo shkallĂ« Ă«shtĂ« rezultati i dĂ«rgimit tĂ« vlerĂ«s nĂ« regjistrin e procesorit/daljes nga procesori, dmth — rezultati i operacionit. PavarĂ«sisht kĂ«saj lidhjeje, megjithatĂ« kryesore Ă«shtĂ« mundĂ«sia e pĂ«rshkrimit tĂ« tyre tĂ« ndara, pavarĂ«sisht pĂ«rsĂ«ritjes sĂ« njĂ« fjale nĂ« seksione tĂ« ndryshme tĂ« fjalorit, siç ndodh nĂ« ma3.

Prirja makinerike ndante të gjitha numrat e përdorur nga programuesi në komandave dhe nga sonda kozmike WMAP lidhur me heterogjenitetet e temperaturës së rrezatimit reliktar, që është një nga objektet kryesore të vëzhgimit në studimin e universit tonë. Gjatë analizës së këtyre të dhënave u zbulua një anomali e madhe në shpërndarjen këndore të fluktuacioneve të rrezatimit reliktar në harmonika të ulëta. Një nga shpjegimet e këtij fenomeni ishte teoria se topologjia e universit tonë është ndryshe nga një plane tre-dimensionale ose nga një sferë. Kur shqyrtohet topologjia e universit tonë si një dodekaedër, kalkulimet teorike përputhen ngushtë me të dhënat eksperimentale.. Ndërkohë, të dyja ishin pikërisht numra, për shembull, komandat shkruheshin me kode numerike. Megjithatë, në gjuhët aplikative, komandat ndalën së qeni numra dhe u bënë fjalë dhe shenja veprimi. Numrat mbetën vetëm 'të dhëna', por vazhdimi për t'i quajtur ashtu është absurde, sepse kur kalojmë nga pikëpamja makinerike në atë matematikore, numrat janë figura që ndahen si fillestare (nga sonda kozmike WMAP lidhur me heterogjenitetet e temperaturës së rrezatimit reliktar, që është një nga objektet kryesore të vëzhgimit në studimin e universit tonë. Gjatë analizës së këtyre të dhënave u zbulua një anomali e madhe në shpërndarjen këndore të fluktuacioneve të rrezatimit reliktar në harmonika të ulëta. Një nga shpjegimet e këtij fenomeni ishte teoria se topologjia e universit tonë është ndryshe nga një plane tre-dimensionale ose nga një sferë. Kur shqyrtohet topologjia e universit tonë si një dodekaedër, kalkulimet teorike përputhen ngushtë me të dhënat eksperimentale.) dhe përfundimtare (të kërkuara). 'Të dhëna të panjohura' do të tingëllonte qesharake.

Komandat gjithashtu u ndanĂ« nĂ« dy lloje veprimesh: matematikore dhe shĂ«rbyese. Veprimet matematikore — operacione. PĂ«r shĂ«rbyeset do tĂ« kthehemi mĂ« vonĂ«.

Në gjuhët C, operacionet e zakonshme matematikore të qarta dhe makinerike pothuajse bëhen shumëfishe.

Operacionet e shumĂ«fishta – disa operacione tĂ« njĂ« emri me forma tĂ« ndryshme tĂ« argumenteve dhe veprime tĂ« ndryshme, tĂ« ngjashme nĂ« kuptim.

Argumentet e plota pĂ«rputhen me operacionin e plotĂ«, ndĂ«rsa ato tĂ« thjeshta pĂ«rputhen me ato tĂ« thjeshta. Ky ndryshim Ă«shtĂ« veçanĂ«risht i dukshĂ«m gjatĂ« operacionit tĂ« ndarjes, kur shprehja 1/2 jep rezultatin 0, jo 0,5. Kjo shfaqje nuk i pĂ«rmbush rregullat e matematikĂ«s nĂ« letĂ«r, por gjuha C nuk synon t'i respektojĂ« ato (ndryshe nga Fortrani) — ajo luan sipas rregullave tĂ« saj. aplikohet rregullave.

NĂ« rastin e pĂ«rzierjes sĂ« numrave tĂ« plotĂ« dhe tĂ« thjeshtĂ«, pĂ«rfshihet vetĂ«m njĂ« pĂ«rpunim i vlerave tĂ« argumenteve — njĂ« transformim selektiv i vlerĂ«s nga njĂ« formĂ« nĂ« njĂ« tjetĂ«r. NĂ« tĂ« vĂ«rtetĂ«, kur shtohet njĂ« numĂ«r i plotĂ« dhe njĂ« numĂ«r i thjeshtĂ«, rezultati Ă«shtĂ« i thjeshtĂ«, prandaj forma e operacionit pĂ«rzgjedh operacionin e transformimit tĂ« argumentit tĂ« plotĂ« nĂ« njĂ« vlerĂ« tĂ« thjeshtĂ«.

SeritĂ« e operacioneve mbeten jo shumore, ndĂ«rsa njĂ«sore. KĂ«to operacione janĂ« tĂ« caktuara pĂ«r njĂ« lloj argumentesh: mbetja e ndarjes — argumente tĂ« plota, mbledhja (operacionet bit pĂ«r bit) — numra tĂ« plotĂ« natyror. Ma3 tregon shumĂ«sinĂ« e operacioneve me shenjat (#^) me pĂ«rshkrimin e formave pĂ«r tĂ« cilat operacioni Ă«shtĂ« i pĂ«rcaktuar. Ky Ă«shtĂ« njĂ« atribut i rĂ«ndĂ«sishĂ«m, por qĂ« Ă«shtĂ« anashkaluar mĂ« parĂ« pĂ«r çdo operacion.

TĂ« gjitha funksionet janĂ« operacione tĂ« rastit tĂ« njĂ«sive. PĂ«rjashtim pĂ«rbĂ«jnĂ« operatorĂ«t — funksionet e pa kllapa, tĂ« integruara nĂ« gjuhĂ« (operacione tĂ« burimit).

Ndihma

Ndihma — veprim i shoqĂ«rueshĂ«m me operacionin.

Nëse e konsiderojmë operacionin si veprimin kryesor, mund të dallojmë dy veprime ndihmëse që sigurojnë operacionin dhe dallohen nga ai. Këto janë 1) menaxhimi i variablës dhe 2) nënshtrimi. Ky veprim quhet ndihmë.

Këtu duhet të ndajmë një moment dhe të flasim veçmas për përkthimet ruse të teksteve mësimore për programimin. Në tekstin K/R për regjistrimin e veprimeve u fut një fjalë e re statement (shprehje), e cila përpiqej të ndante konceptet e komandës makinerike në veprime të ndryshme: 1) operacione, 2) shpallje dhe 3) nënshtrim (të quajtur "strukturat menaxhuese"). Këtë përpjekje e vranë përkthyesit rusë, duke e zëvendësuar "shprehjen" me fjalën "operator", e cila:

  1. u bë sinonim i fjalës makinerike "komandë",
  2. u bë sinonim i frazës "shenja veprimi",
  3. dhe gjithashtu mori një numër të pakufizuar kuptimesh të tjera. Në këtë mënyrë u shndërrua në diçka si artikulli anglez "ehhh...".

Le të shqyrtojmë veprimet shoqëruese, ose ndihmat.

Menaxhimi i variablës

Menaxhimi i variablĂ«s (UP) — krijimi/fshirja e qelizave tĂ« ndryshueshme.
UP ndodh nĂ« mĂ«nyrĂ« tĂ« pashpjegueshme gjatĂ« shpalljes sĂ« njĂ« ndryshueshme, e cila tashmĂ« shkruhet pĂ«r njĂ« arsye tjetĂ«r — pĂ«r tĂ« treguar njĂ« formĂ« tĂ« madhĂ«sisĂ«. VetĂ«m njĂ« lloj menaxhohet nĂ« mĂ«nyrĂ« tĂ« qartĂ«. variablave shtesĂ« nĂ«pĂ«rmjet funksioneve malloc() dhe free().

Duhet tĂ« theksohet se veprimet e pashpjeguara janĂ« mĂ« tĂ« lehta pĂ«r t'u shkruar, pasi nuk kĂ«rkon asgjĂ« tĂ« shkruhet, por janĂ« mĂ« tĂ« vĂ«shtira pĂ«r t'u kuptuar — Ă«shtĂ« mĂ« e vĂ«shtirĂ« t'i llogaritĂ«sh dhe t'i interpretohesh.

Nënshtrimi

NĂ«nshtrimi — aktivizimi/çaktivizimi i pjesĂ«ve tĂ« nivelit.

Gjuha C ofron njĂ« mĂ«nyrĂ« praktike pĂ«r tĂ« menaxhuar rendin e veprimeve — nĂ«nshtrimi. Ky koncept reflekton dhe zhvillon fjalinĂ« e pĂ«rbĂ«rĂ« fjalĂ« pĂ«r fjalĂ« me njĂ« ndarje tĂ« qartĂ« nĂ« pjesĂ«n kryesore (fjalinĂ« nĂ«nshtruese) dhe pjesĂ«n anĂ«sore (pjesĂ«t nĂ«nnivel/nderprogram).

Si shpallja ashtu edhe nënshtrimi janë plotësisht të ndërtuara mbi konceptin nivel.

Niveli

Niveli — Ă«shtĂ« njĂ« grup i kufizuar, njĂ«-ndĂ«rfaqĂ«sor i shprehjeve selektive.

Niveli mori përsipër qartë dhe paqartë për të realizuar menjëherë disa detyra:

  1. renditja e programit,
  2. kufizimi i dukshmërisë së emrave (qartësisht),
  3. menaxhimi i ndryshueshmeve (qelizave të memories) (qartësisht),
  4. përcaktimi i pjesëve anësore për nënshtrim,
  5. përcaktimi i funksioneve dhe grupeve dhe të tjera.

NĂ« gjuhĂ«t e makinĂ«s nuk kishte konceptin e nivelit, prandaj ajo nuk u shfaq as nĂ« C/R, dhe nĂ«se diçka nuk kishte atje — tĂ« sjellĂ«sh kĂ«tĂ« nĂ« librat e mĂ«vonshĂ«m do tĂ« ishte heretike dhe mendjengushtĂ«. Prandaj, koncepti i nivelit nuk u shfaq fare, ndonĂ«se Ă«shtĂ« shumĂ« e dobishme dhe e qartĂ«.

Pa nivelin, Ă«shtĂ« e pamundur tĂ« shpjegosh disa veprime dhe rregulla tĂ« programit shkurt dhe qartĂ«. PĂ«r shembull, pse njĂ« goto i thjeshtĂ« Ă«shtĂ« i keq, ndĂ«rsa njĂ« while i ndĂ«rlikuar Ă«shtĂ« i mirĂ«. Mund tĂ« protestosh vetĂ«m pa asnjĂ« fuqi, siç bĂ«nte Dijkstra («kualifikimi i programuesve — funksion qĂ« varet invers nga frekuenca e operatorĂ«ve goto nĂ« programet e tyre». NĂ« pĂ«rfundim, vetĂ«m dema pĂ«rdorin goto. Niveli i arsyetimit — Zotit.) E vĂ«rteta, kjo nuk Ă«shtĂ« kaq e frikshme, nĂ«se librat tuaj nuk kanĂ« asnjĂ« detyrĂ« pĂ«r tĂ« shpjeguar, por, siç e thamĂ«, kjo nuk Ă«shtĂ« fati ynĂ«.

Në të vërtetë, mund të supozohet se Den Ritchie la goto si një çelës për të kërkuar një koncept të paemëruar, sepse nuk kishte asnjë nevojë apo bukuri në shprehjen goto. Por kishte një nevojë për një shpjegim të thjeshtë dhe të qartë të principeve të reja të gjuhës, që vetë Ritchie nuk donte t'i jepte, dhe që ishin të bazuara pikërisht në konceptin nivel.

Shkallimi

Shkallimi — ndryshimi i vetive normale tĂ« emrit tĂ« ri.

Shkallimi më i rëndësishëm lidhet me vetitë e shtresave të programit dhe përshkruhet me një fjalë "static", e cila ka kuptime të ndryshme në secilën nga llojet e shtresave.

5. KREU I FUNDIT. Përgjithshmëria e gjuhëve aplikative

Gjuha aplikative është figurative gjuhë (të cilat kanë figurë, "të tipizuara"). Ato bazohet në përdorimin e qartë ose të pacaktuar të figurës. Këtu përsëri shfaqet një kontradiktë: figura e qartë është më e kuptueshme, por më pak praktike, dhe e kundërta.

Matrjoshka C. Një sistem i ndarë i gjuhës së programimit

(Tabela e kodit ende nuk është sjellë, prandaj tabela është dhënë si imazh.)

Pas C-sĂ«, zhvillimi i gjuhĂ«ve aplikative mori rrugĂ«n e rritjes sĂ« figurativitetit tĂ« tyre. MĂ« e rĂ«ndĂ«sishmja pĂ«r tĂ« kuptuar figurativitetin e lartĂ« Ă«shtĂ« pasardhĂ«si i drejtpĂ«rdrejtĂ« i C-sĂ« — gjuha C++. Ajo zhvillon idenĂ« e pĂ«rzgjedhjes sĂ« operacioneve arbitrare pĂ«r vlera dhe e realizon atĂ« mbi bazĂ«n e shprehjes sĂ« C-sĂ« pĂ«rzgjedhje, e cila merr njĂ« emĂ«r tĂ« ri — objekt. MegjithatĂ«, C++ nuk Ă«shtĂ« kaq i shkurtĂ«r dhe i shprehshĂ«m sa C, pĂ«r shkak tĂ« mbingarkesĂ«s sĂ« llojeve tĂ« reja tĂ« pĂ«rzgjedhjes dhe rregullave tĂ« lidhura me to. Le tĂ« flasim, nĂ« kĂ«tĂ« rast, pĂ«r "mbingarkesĂ«n".

Mbingarkesa dhe polimorfizmi

Fjala "mbingarkesĂ«" (overload) — Ă«shtĂ« njĂ« term i vjetruar i qasjes makinerike, qĂ« tregon krijimin e operacioneve tĂ« shumta.

Programuesve (sistematikĂ«) tĂ« makinave shumĂ«sia e operacioneve mund tĂ« irritonte: "ÇfarĂ« do tĂ« thotĂ« ky shenjĂ« (+): shtimi i numrave tĂ« plotĂ«, shtimi i numrave tĂ« thyeshĂ«m apo ndonjĂ« lloj ndihmĂ«s tjetĂ«r?! NĂ« kohĂ«n tonĂ« nuk shkruhej kĂ«shtu!" Nga kĂ«tu vjen nuanca negative e fjalĂ«s sĂ« zgjedhur («mbingarkesë», «konsum»). PĂ«r programuesin aplikativ, operacionet e shumta janĂ« themeli, arritja kryesore dhe trashĂ«gimia e gjuhĂ«s C, aq natyrale sa shpesh nuk njihen.

NĂ« gjuhĂ«n C++ shumĂ«sia kjo u pĂ«rhap jo vetĂ«m nĂ« operacionet fillestare, por edhe nĂ« funksione - si tĂ« veçanta ashtu edhe tĂ« grupuara nĂ« klasa - metoda. SĂ« bashku me metodat shumĂ«fishe erdhi mundĂ«sia e rimarrjes sĂ« tyre nĂ« klasa tĂ« zgjeruara, e cila u quajt paqartĂ« „polimorfizĂ«m“. Kombinimi i polimorfizmit dhe ngarkesĂ«s krijoi njĂ« pĂ«rzierje dinamike, e cila u shpĂ«rnda nĂ« dy polimorfizma: „tĂ« vĂ«rtetĂ«â€œ dhe „ad-hoc“. TĂ« kuptohet kjo mund tĂ« bĂ«het vetĂ«m pavarĂ«sisht emrave tĂ« caktuar. Emrat e huaj kanĂ« bĂ«rĂ« njĂ« rrugĂ« nĂ« ad.

Deklarata e llojit „ngarkesĂ«â€œ Ă«shtĂ« mĂ« mirĂ« tĂ« shprehet me fjalĂ«n ri-deklarim — duke shtuar njĂ« deklaratĂ« tĂ« funksionit me emĂ«r tĂ« njĂ«jtĂ« me argumente tĂ« formĂ«s tjetĂ«r.

Deklarata e llojit „polimorfizĂ«m“ Ă«shtĂ« mĂ« mirĂ« tĂ« quhet me fjalĂ«n ri-deklarim — njĂ« deklaratĂ« mbuluese nĂ« njĂ« shtresĂ« zgjeruese tĂ« funksionit me emĂ«r tĂ« njĂ«jtĂ« me argumente tĂ« njĂ«jtĂ«s forme.

AtĂ«herĂ« do tĂ« jetĂ« e lehtĂ« tĂ« kuptohet se metodat me emĂ«r tĂ« njĂ«jtĂ« tĂ« formave tĂ« ndryshme (argumenteve) — ri-deklara, ndĂ«rsa e njĂ« forme — ri-deklarohen.

Fjalët shqipe gjejnë zgjidhje.

Pista e fluturimit

Rishikimi i koncepteve të gjuhëve të larta-të formuara konfirmon rëndësinë e përcaktimit të qartë të koncepteve themelore. Me një përshkrim të saktë, C do të jetë e lehtë dhe e këndshme për të studiuar gjuhët e larta-të formuara.

Kjo Ă«shtĂ« veçanĂ«risht e rĂ«ndĂ«sishme pĂ«r gjuhĂ«t e larta-tĂ« formuara tĂ« papara (PHP, JavaScript). PĂ«r to, rĂ«ndĂ«sia e objekteve (formave tĂ« pĂ«rbĂ«ra) bĂ«het edhe mĂ« e lartĂ« se nĂ« C++, por vetĂ« nocioni i formĂ«s bĂ«het i paqartĂ« dhe i vĂ«shtirĂ« pĂ«r t'u kapur. Nga kĂ«ndvĂ«shtrimi i lehtĂ«sisĂ«, ato janĂ« bĂ«rĂ« mĂ« tĂ« thjeshta, por nga kĂ«ndvĂ«shtrimi i kuptimit — mĂ« tĂ« vĂ«shtira.

Prandaj, duhet të filloni të studioni gjuhët e programimit nga gjuha C dhe të lëvizni përpara në rendin e shfaqjes së gjuhëve të familjes C.

E njëjta gjë vlen edhe për përshkrimin e gjuhëve. Gjuha të ndryshme kanë një set të përbashkët, ose më të vogël, të kategorive të njësive se gjuha C. Numri i llojeve dhe formave mund të ndryshojë në të dyja drejtimet: C++ ka më shumë lloje se C, JavaScript ka më pak.

NjĂ« vĂ«mendje tĂ« veçantĂ« meriton gjuha MySQL. Mund tĂ« duket se nuk ka asgjĂ« tĂ« pĂ«rbashkĂ«t, por ajo pĂ«rshkruhet shkĂ«lqyeshĂ«m nga Matryoshka, dhe njohja me tĂ« bĂ«het mĂ« e shpejtĂ« dhe mĂ« e lehtĂ«. ÇfarĂ« Ă«shtĂ« e rĂ«ndĂ«sishme, duke marrĂ« parasysh rĂ«ndĂ«sinĂ« e saj pĂ«r webin - rruga e restoranteve tĂ« programimit modern. Dhe ku Ă«shtĂ« MySQL, atje janĂ« dhe SQL tĂ« tjera. Po ashtu, tĂ« gjitha FortranĂ«t, PascalĂ«t, PythonĂ«t po ashtu pĂ«rshkruhen nga Matryoshka, sapo tĂ« arrihet deri te ato.

PĂ«r kĂ«tĂ« arsye, na presin punĂ« tĂ« mĂ«dha — njĂ« pĂ«rshkrim praktike i gjuhĂ«s C dhe njĂ« pĂ«rshkrim i njĂ«jtĂ« pĂ«r gjuhĂ«t qĂ« e ndjekin. "QĂ«llimet tona janĂ« tĂ« qarta, detyrat e pĂ«rcaktuara. NĂ« punĂ«, shokĂ«! (Duartrokitje tĂ« gjalla, tĂ« vazhdueshme qĂ« kalojnĂ« nĂ« ovacione. TĂ« gjithĂ« ngrihen.)"

Mendimet tuaja do të dëgjohen me vëmendje të madhe, ndihma juaj në krijimin e faqes së matryoshkave do të pritet me mirënjohje të madhe. Të dhëna më të plota rreth librit ndodhen në faqen, e cila është fshehur menjëherë brenda Matryoshkës C.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster