Matryoshka C. Sistemi i shtresuar i gjuhës së programimit

Le tĂ« imagjinojmĂ« kiminĂ« pa Sistemin Periodik tĂ« Mendeleevit (1869). Sa shumĂ« elemente duhet tĂ« mbahen mend, madje nĂ« njĂ« rend tĂ« çrregullt... (Aty – 60.)

Bashkë me këtë, mjafton të mendoni për një ose disa gjuhë programimi. Të njëjtat ndjenja, të njëjtat trazira krijuese.

Tani mund të përjetojmë ndjenjat e kimistëve të shekullit XIX, kur iu ofruan të gjitha njohuritë e tyre, dhe pak më shumë, në një tabelë Periodike.

Matryoshka C. Sistemi i shtresuar i gjuhës së programimit


Libri "Matryoshka C. Sistemi i Shtresuar i Gjuhës së Programit" paraqet të gjitha njësitë e gjuhës C ashtu si në një shtrirje. Kjo lejon që ato të renditen, të korrigjohen informacionet e vjetra dhe madje të saktësohet vetë koncepti i programit.

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

Nevoja e parë është 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ë të njëjtën kohë, ishte më e lehtë për të - ai kishte studentë të shkëlqyer të universitetit të Shën Petersburgut. Tani, programimi mësohet në shkollë dhe së shpejti do të fillojë në çerdhet.

Nevoja e dytë është qasja shkencore. Me ndihmën e Sistemit Periodik u zbuluan elemente të reja dhe u korrigjua informacioni mbi të vjetrat. Ajo ndihmoi në krijimin e modelit të atomit (1911). Dhe kështu me radhë.

Nevoja e tretë është saktësimi i konceptit të programit.

Programimi modern është ngatërruar me një këmbë në vitet 50 të shekullit XX. Atëherë programet ishin të thjeshta, ndërsa makinat dhe gjuhët makinerike ishin të komplikuara, kështu që gjithçka përqendrohej rreth makinave dhe gjuhëve.

Tani është krejtësisht e kundërt: programet janë të komplikuara dhe fillestare, gjuhët janë të thjeshta dhe dytësore. Kjo quhet qasje praktike, e njohur për të gjithë. Por studentët dhe zhvilluesit vazhdojnë të bindin se gjithçka është ende si më parë.

Kjo na kthen nĂ« leksionin e parĂ« tĂ« privat-docentit Mendeleev. ÇfarĂ« tĂ« thotĂ« studentĂ«ve tĂ« vitit tĂ« parĂ«? Ku Ă«shtĂ« e vĂ«rteta? Kjo Ă«shtĂ« çështja.

Libri "Matryoshka C. Sistemi i Shtresuar i Gjuhës së Programit" ofron përgjigjen e tij. Në të vërtetë, ai është drejtuar jo vetëm studentëve, por edhe programuesve të përgatitur, pasi janë ata që duhet të kërkojnë të vërtetën dhe të ndryshojnë mënyrën e të menduarit, pra ne.

Më pas, vijon një përmbledhje e shkurtër e librit.

1. Hyrje

Në vitin 1969 u krijua gjuha C, e cila u bë gjuha themelore e programimit dhe vazhdon të jetë e tillë për 50 vjet. Pse ndodh kështu? Në radhë të parë, sepse C është praktike gjuha që i dha programit një pamje njerëzore në vend të asaj makinerike. Ky arritje u konsolidua nga gjuhët e familjes C: C++, JavaScript, PHP, Java, C# dhe të tjera. Në radhë të dytë, është një gjuhë e shkurtër dhe e bukur.Megjithatë, gjuha C shpesh ngatërrohet me assemblerin e makinës, duke e komplikuar dhe deformuar perceptimin e saj. Një ekstrem tjetër është imponimi i një "filozofie" si ngarkesë në gjuhë: procedurale, objektive, funksionale, të kompilueshme, 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, sidomos për gjuhën C - pikërisht në mes të perceptimit filozofik dhe atij makinerik.

Gjuha C nuk është autonome, ajo i përmbahet gjuhës së zakonshme, dhe njëkohësisht - e menaxhon gjuhën assembler. Kjo pozitë përshkruan

Modelin e Fjalës së Programit , sipas të cilit programi ndahet në tri lloje nënshtruese: fjalë, kod, komandë. Gjuha C është përgjegjëse për llojin e dytë, llojin e kodit.Duke përcaktuar vendin e gjuhës në program, mund të renditen informacionet mbi të, që i jep

Sistemi Shtresuar i Gjuhës së Programit , që paraqet gjuhën C në frymën e sistemit të Mendeleevit - në një faqe.Sistemi është ndërtuar me parimin e

pĂ«rbashkĂ«sisĂ« sĂ« gjuhĂ«ve praktike , qĂ« rrjedh nga nĂ«nshtrimi i tyre nĂ« fjalĂ«. NjĂ« grup i njĂ«sive tĂ« Matryoshka C lejon pĂ«rshkrimin dhe krahasimin e gjuhĂ«ve tĂ« ndryshme, duke krijuar njĂ« grup Matryoshka: C++, PHP, JavaScript, C#, MySQL, Python dhe tĂ« tjera. ËshtĂ« e arsyeshme dhe e drejtĂ« qĂ« gjuhĂ«t e ndryshme pĂ«rshkruhen nga njĂ«sitĂ« e gjuhĂ«s themelore.2. KAPITULLI 1. Modeli i FjalĂ«s sĂ« Programit. C e Kuptueshme

Në kapitullin e parë është paraqitur

modeli i fjalës së programit , i cili reflekton qasjen praktike. Sipas tij, programi ka tri lloje të dukshme:fjalë - fjala e drejtpërdrejtë e programuesit që zgjidh problemin,

  1. i kodit - kodimi i zgjidhjes në një format matematikor në gjuhën C (ose në ndonjë gjuhë tjetër)
  2. dhe komandë - komandat e drejtpërdrejta të makinës.
  3. Modeli i fjalës shpjegon pse C është një gjuhë e thjeshtë dhe e kuptueshme. C është ndërtuar sipas shembullit dhe ngjashmërisë të fjalës njerëzore që na është bërë e zakonshme.

Modeli i të folurit shpjegon pse C është një gjuhë e thjeshtë dhe e kuptueshme. C është ndërtuar pas imazhit dhe ngjashmërisë së gjuhës sonë të zakonshme njerëzore.

Lloji i parë i programit është fjalimi i drejtpërdrejtë i programuesit. Fjalimi përputhet me mendimin njerëzor. Me anë të fjalës shkruajnë programe programuesit e rinj - fillimisht në rusisht, e pastaj hapat duke e përkthyer në gjuhën koduese. Dhe pikërisht sipas një këshille të tillë është krijuar gjuha C.

Arsyetimet e programuesit, të shprehura me fjalë, transformohen në një format numerik kodik. Ky transformim duhet të quhet reflektim, për shkak se fjala dhe kodi kanë një natyrë të përbashkët (reflektim - lindje - prind). Kjo është plotësisht e dukshme, nëse krahasojmë format e fjalës (majtas) dhe të kodit (djathtas) të programit.

Matryoshka C. Sistemi i shtresuar i gjuhës së programimit

ËshtĂ« interesante se reflektimi ndodh shumĂ« thjesht—duke pĂ«rdorur vetĂ«m dy lloje shprehjesh.

Megjithatë, përshkrimi modern i gjuhës C (nga viti 1978) nuk përmban një listë të mjaftueshme emrash as për përshkrimin e gjuhës në përgjithësi, as për detyrën e reflektimit në veçanti. Prandaj, jemi të detyruar të angazhohemi në krijimtarinë dhe të introduktojmë këto emra.

Zgjedhja e fjalëve duhet të jetë e saktë dhe e qartë. Për këtë është nevojitur një qasje e veçantë, e cila shprehet shkurtimisht - përdorim rigoroz të gjuhës amtare. Për anglezët kjo do të ishte anglishtja, por ne nuk jemi anglezë. Prandaj, përdorim atë çfarë kemi dhe do të përpiqemi të flasim rusisht.

Reflektimi realizohet nga dy lloje shprehjesh:

  1. llogaritje (Vl) - reflekton ndryshimin e vetive të subjektit. Veti e subjektit shprehet me një numër, atëherë veprimi mbi vetinë - është një veprim mbi numrin - operacion.
  2. nënshtrim (N) - reflekton ndryshimin e rendit të veprimeve. Paraqitja e N është një propozuar komplekse fjalësh, prandaj shumica e llojeve të N fillojnë me lidhet e nënshtrimit "nëse", "ndryshe", "përsa kohë", "për". Lloje të tjera N i shtojnë ato.

Përndryshe, a mund të besoni që në përshkrimin e C nuk ka një emër për shprehjet e llogaritjes - ato quhen thjesht "shprehje"? Pas kësaj, nuk do të habiste mungesa e emrit dhe bashkimit për llojin nënshtrim, dhe tërësisht skarciteti në pjesën e emrave, definicionëve dhe përgjithësimeve. Kjo është për shkak se e njohura K/R ("Gjuha C", Kernighan/Ritchie, 1978) është jo një përshkrim, por udhëzues për përdorimin e gjuhës.

Megjithatë, do të dëshiroja të kisha një përshkrim të gjuhës. Prandaj, ajo ofrohet , që paraqet gjuhën C në frymën e sistemit të Mendeleevit - në një faqe..

3. KAPITULLI 2. Sistemi me Shtresa. Një C e Shkurtuar

Çdo pĂ«rshkrim duhet tĂ« jetĂ« i saktĂ« dhe ekstremisht i shkurtĂ«r. NĂ« rastin e gjuhĂ«s sĂ« programit, njĂ« pĂ«rshkrim i hapur Ă«shtĂ« i vĂ«shtirĂ«.

Ja se kemi një program. Ai përbëhet nga module. Modulët përbëhen prej nënprogramesh dhe kompozitash (structure). Nënprogramet përbëhen nga shprehje të veçanta: shpallje, llogaritje, nënshtrime. Nënshtrimet janë të gjithë dhjetë lloje. Nënshtrimet lidhin nën-nivelet dhe nënprogramet. Shpalljet gjithashtu janë disa. Megjithatë, shpalljet përfshihen jo vetëm në nënprogramet dhe nën-nivelet, por edhe në module dhe kompozita. Dhe shumica e shprehjeve përbëhen nga fjalë, të cilat janë kaq të vështira për t'u përshkruar, sa që zakonisht ato jepen vetëm me dy lista - fjalët origjinale dhe ato të deriva, me të cilat do të njohim gjatë gjithë studimit dhe përdorimit të gjuhës. Shtojmë këtu shenjat e pikësimit dhe një sërë shprehjesh të tjera.

Në këtë përshkrim është e vështirë të kuptohet se kush ishte mbi kë.

Qasja e drejtpërdrejtë dhe hierarkike në përshkrimin e gjuhës do të ishte tepër e komplikuar. Kërkimi i rrugëve të shkuara çon në një përshkrim të gjuhës në bazë të natyrës së saj fjalore dhe anës komandimore. Kështu lindi Sistemi me Shtresa, i cili përputhet pjesërisht me Sistemin Periodik të Mendelievit, i cili gjithashtu është i shtresuar. Siç u zbulua 42 vjet pas publikimit të tij (1869), periodikja e sistemit është e lidhur me elektronet (1911, modeli i atomit Bohr-Rutherford). Gjithashtu, Sistemi me Shtresa dhe Sistemi Periodik ndajnë vendosjen tabelar të të gjitha njësive në një faqe. Përshkrimi i njësive të gjuhës del të jetë i shkurtër - gjithsej 10 lloje shprehjesh dhe 8 lloje njësish të tjera, si dhe i pasur dhe i përshtatshëm. Megjithatë, nuk është e zakonshme për njohjen e parë.

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

grupet - rreshtat e tabelës

  1. ndarjet - grupe të veçanta llojesh (pjesët e rreshtit të parë)
  2. llojtë - kutitë (nivele kryesore të ndarjes)
  3. tipet - ndarësit e llojeve (nivele të rralla)
  4. shtypet - formula e njësive në fund të kutisë ose veçmas
  5. modelet - vetë njësitë (vetëm për fjalë)
  6. Modelet e fjalëve përshkruhen

fjalori — njĂ« nĂ«n-sistem i veçantĂ«, i pĂ«rbĂ«rĂ« nga tĂ« njĂ«jtat gjashtĂ« nivele. Pjesa fjalore e gjuhĂ«s C Ă«shtĂ« mjaft e dukshme, edhe pse megjithatĂ« meriton pĂ«rshkrim. NdĂ«rsa pjesa komandore e gjuhĂ«s Ă«shtĂ« pikĂ«risht ajo qĂ« lidhet me menaxhimin e kompilimit, gjatĂ« procesit tĂ« cilit krijohet njĂ« lloj i tretĂ« programi - programi komandor. KĂ«tu arrijmĂ« nĂ« anĂ«n mĂ« magjepsĂ«se tĂ« gjuhĂ«s C - bukurinĂ«.

4. KAPITULLAT E TREGUARA. Bukuria e C

4. KAPITUJ TJETËR. C e bukur

Gjuha C është themeli i programimit modern. Pse? Së pari, për shkak të korrektësisë së saj me gjuhën e natyrshme. Së dyti, sepse shmangu bukur kufizimet në përpunimin e numrave nga makinat.

ÇfarĂ« ofron saktĂ«sisht C? Imazh dhe nivel.

Fjala "imazh" Ă«shtĂ« pĂ«rkthim i anglishtes "type", e cila vjen nga greqishtja "prototypo" — "modeli origjinal". NĂ« gjuhĂ«n ruse, fjala "tip" nuk pĂ«rcjell saktĂ«sisht kuptimin e konceptit, pĂ«rveç se pĂ«rzihet me kuptimin e proporcionit "lloj".

Fillimisht, imazhi zgjidhte një problem të pastër makinerik të llogaritjes, dhe më pas u bë një pistë për lindjen e gjuhëve objekt.

Niveli menjĂ«herĂ« zgjidhte disa probleme — si makinerike ashtu edhe aplikative. Prandaj shqyrtimi do tĂ« fillojĂ« me imazhin me njĂ« detyrĂ« dhe do tĂ« kalojĂ« nĂ« nivelin me shumĂ« detyra.

NjĂ« nga karakteristikat e pakĂ«ndshme tĂ« programimit historik Ă«shtĂ« se shumica e koncepteve, duke pĂ«rfshirĂ« ato themelore, jepen pa pĂ«rkufizim. "Gjuha e programimit (emri i rekordeve) ka njĂ« tip tĂ« plotĂ« dhe tĂ« lĂ«vizshĂ«m tĂ« numrave..." — dhe kĂ«ta kalonin mĂ« tej. ÇfarĂ« Ă«shtĂ« "tipi" (imazhi) — pĂ«rkufizimi nuk Ă«shtĂ« i domosdoshĂ«m, sepse autorĂ«t nĂ« vetĂ« e ndiejnĂ« se nuk e kuptojnĂ« plotĂ«sisht dhe e pĂ«rmbytin "nĂ« emĂ«r tĂ« qartĂ«sisĂ«". NĂ«se i shtyjnĂ« nĂ« mur, do tĂ« japin njĂ« pĂ«rkufizim tĂ« paqartĂ« e tĂ« pavlerĂ«. Kjo ndihmon shumĂ« pĂ«r tĂ« u fshehur pas fjalĂ«ve tĂ« huaja: pĂ«r autorĂ«t rusĂ« — pas anglishtes (tip), pĂ«r anglezĂ«t — pas frĂ«ngjishtes (subroutine), greqishtes (polymorphism), latinishtes (encapsulation) ose kombinimeve tĂ« tyre (polymorphism ad-hoc).

Por ajo nuk Ă«shtĂ« fati ynĂ«. Zgjedhja jonĂ« — pĂ«rkufizime me njĂ« nivel tĂ« qartĂ« nĂ« gjuhĂ«n rusĂ«.

Imazhi

Imazhi — Ă«shtĂ« emri protogjenik i sasisĂ«, i cili pĂ«rcakton 1) vetitĂ« e saj dhe 2) pĂ«rzgjedhjen e operacioneve pĂ«r sasinĂ«.

FjalĂ«s "tip" (lloj) i korrespondon pjesa e parĂ« e pĂ«rkufizimit: "vetitĂ« e sasisĂ«". Por kuptimi kryesor i imazhit — Ă«shtĂ« nĂ« pjesĂ«n e dytĂ«: "pĂ«rzgjedhja e operacioneve pĂ«r sasi".

Pika e nisjes për ta futur imazhin në gjuhën C është llogaritja normale, p.sh., operacioni i mbledhjes.

Matematika në letër, e regjistruar me dorë ose e printuar, nuk bën ndonjë dallim të veçantë midis llojeve të numrave, zakonisht duke i supozuar ato si të qendrueshme. Prandaj, operacionet e përpunimit të tyre janë të qarta.

Matematika makinerike e ndan numrat nĂ« tĂ«rĂ« dhe thyesa. Lloje tĂ« ndryshme numrash ruajnĂ« informacionin ndryshe nĂ« kujtesĂ« dhe pĂ«rpunohen nga komanda tĂ« ndryshme tĂ« procesorit. PĂ«r shembull, komandat e mbledhjes pĂ«r numra tĂ« plotĂ« dhe me thyesa — janĂ« dy komanda tĂ« ndryshme, tĂ« cilat pĂ«rkojnĂ« me dy nyje tĂ« ndryshme tĂ« procesorit. NdĂ«rsa, komanda pĂ«r mbledhjen e argumenteve tĂ« plotĂ« dhe me thyesa mungon.

Matematika aplikative, pra, gjuha C, e ndan llojet e numrave, por i bashkon operacionet: mbledhja për numra të plotë dhe/ose me thyesa shënohet me një simbol veprimi. Një përkufizim i saktë i konceptit të imazhit lejon të flasë me saktësi për dy koncepte të tjera:

sasi operacion dhe Sasia dhe operacioni.

Sasia

— numri qĂ« pĂ«rpunon. — pĂ«rpunimi i vlerave tĂ« sasisĂ« fillestare (argumenteve) pĂ«r tĂ« marrĂ« numrin pĂ«rfundimtar (rezultatin).

Operacioni Sasia dhe operacioni janĂ« tĂ« lidhura ngushtĂ«. Çdo operacion Ă«shtĂ« njĂ« sasi, sepse ka njĂ« rezultat numerik. Dhe çdo sasi Ă«shtĂ« rezultat i dĂ«rgimit tĂ« vlerĂ«s nĂ« regjistrin e procesorit/dhe nga procesori, pra — rezultat i operacionit. MegjithatĂ«, pavarĂ«sisht kĂ«saj lidhjeje, mundĂ«sia pĂ«r t'i pĂ«rshkruar ata veçmas Ă«shtĂ« ajo qĂ« ka rĂ«ndĂ«si kryesore, ndonĂ«se me pĂ«rsĂ«ritjen e njĂ« fjale nĂ« pjesĂ« tĂ« ndryshme tĂ« fjalorit, gjĂ« qĂ« ndodh gjithashtu nĂ« ma3.

Prandaj, qasja makinerike e ndante të gjitha numrat që përdor programuesi në

Qasja makinerike ndan tĂ« gjitha numrat e pĂ«rdorur nga programuesi nĂ« komandat dhe tĂ« dhĂ«na. MĂ« parĂ«, tĂ« dy ishin pikĂ«risht numra, pĂ«r shembull, komandat u shkruanin nĂ« kode numerike. MegjithatĂ«, nĂ« gjuhĂ«t aplikative komandat u ndaluan tĂ« ishin numra dhe u bĂ«nĂ« fjalĂ« dhe simboli i veprimeve. Numrat mbetĂ«n vetĂ«m si "tĂ« dhĂ«na", por vazhdimi pĂ«r tĂ« i quajtur kĂ«shtu Ă«shtĂ« absurd, sepse nĂ« kalimin nga perspektiva makinerike nĂ« atĂ« matematikore, numrat janĂ« sasi qĂ« ndahen nĂ« ato fillestare (tĂ« dhĂ«na) dhe pĂ«rfundimtare (tĂ« kĂ«rkuara). "NjĂ« tĂ« dhĂ«nĂ« tĂ« panjohur" — do tĂ« tingĂ«llonte absurd.

Komandat gjithashtu u ndanĂ« nĂ« dy lloje veprimesh: veprime matematikore dhe shĂ«rbimi. Veprimet matematikore — operacionet. PĂ«r veprimet shĂ«rbimit do tĂ« kthehemi mĂ« vonĂ«.

Në gjuhët C, operacionet matematikore të zakonshme në letër dhe makineri, të qarta, ose të vetme, pothuajse e gjithë rëndësia bëhen të shumta.

Operacione tĂ« shumta — disa operacione me tĂ« njĂ«jtat emra me argumente tĂ« ndryshme dhe veprime qĂ« janĂ« tĂ« ngjashme nĂ« kuptim.

Argumentet e plotĂ« i pĂ«rgjigjen operacioneve tĂ« plota, ndĂ«rsa ato fraksionale operacioneve fraksionale. Kjo diferencĂ« Ă«shtĂ« veçanĂ«risht e dukshme gjatĂ« operacionit tĂ« ndarjes, ku shprehja 1/2 jep rezultatin 0, e jo 0,5. Ky shkrim nuk i pĂ«rmbush rregullat e matematikĂ«s pĂ«r letĂ«r, por gjuha C nuk pĂ«rpiqet tĂ« respektojĂ« ato (ndryshe nga Fortrans) — ajo luan sipas rregullave tĂ« saja. aplikativ rregullave.

NĂ« rastin e pĂ«rzierjes sĂ« numrave tĂ« plotĂ« dhe fraksionalĂ«, aktivizohet vetĂ«m e drejta e vetme konvertimit tĂ« vlerave tĂ« argumenteve — konvertimi pĂ«rzgjedhĂ«s i vlerĂ«s nga njĂ« formĂ« nĂ« njĂ« tjetĂ«r. NĂ« tĂ« vĂ«rtetĂ«, kur shtojmĂ« njĂ« numĂ«r tĂ« plotĂ« dhe njĂ« fraksional, rezultati Ă«shtĂ« fraksional, prandaj forma e operacionit pĂ«rshtatet operacionit tĂ« konvertimit tĂ« argumentit tĂ« plotĂ« nĂ« njĂ« vlerĂ« fraksionale.

NjĂ« sĂ«rĂ« operacionesh mbetet njĂ«vjeçare, dhe . KĂ«to operacione janĂ« definuar vetĂ«m pĂ«r njĂ« lloj argumentesh: mbetje e ndarjes — argumente tĂ« plota, vendosje (operacione bit pĂ«r bit) — numra tĂ« plotĂ« natyrorĂ«. Ma3 tregon shumĂ«llojshmĂ«rinĂ« e operacioneve me shenjat (#^) duke treguar format pĂ«r tĂ« cilat Ă«shtĂ« e definuar operacioni. Ky Ă«shtĂ« njĂ« atribut i rĂ«ndĂ«sishĂ«m, por shpesh injorohet.TĂ« gjitha funksionet janĂ« operacione tĂ« rastit tĂ« vetme. PĂ«rjashtim pĂ«rbĂ«jnĂ« operatorĂ«t —

funksionet pa shkronja , të integruara në gjuhë (operacionet e burimit).Kontributi

— veprimi shoqĂ«rues i operacionit.

— veprimi shoqĂ«rues i operacionit. NĂ«se e shikojmĂ« operacionin si veprimin kryesor, mund tĂ« veçojmĂ« dy veprime shoqĂ«ruese, tĂ« cilat e mbĂ«shtesin operacionin dhe ndryshojnĂ« nga ai. KĂ«to janĂ« 1) menaxhimi i variablĂ«s dhe 2) nĂ«nshtrimi. Ky veprim Ă«shtĂ« quajtur

kontribut Duhet të shkëputemi pak dhe të flasim veçmas për përkthimet ruse të librave të programmimit. Në tekstin C/K është futur një fjalë e re.

statement (shprehje), e cila bëri përpjekjen për të ndarë konceptet e komandës së makinës në veprime të ndryshme: 1) operacion, 2) shpallje dhe 3) nënshtrim (i quajtur "konstrukte udhëheqëse"). Kjo përpjekje është shkatërruar nga përkthyesit rusë, të cilët zëvendësuan "shprehjen" me fjalën "operator", e cila: u bë sinonim për fjalën makinerike "komandë",

  1. u bë sinonim për frazën "shenja veprimi",
  2. si dhe mori një numër të pakufizuar kuptimesh të tjera. Pra, u shndërrua në diçka të ngjashme me artikullin anglez "uhhh...".
  3. Të shqyrtojmë veprimet shoqëruese, ose

kontributet Menaxhimi i variablës.

(MV) — krijimi / fshirja e qelizave tĂ« variablĂ«s.

(MV) — krijimi / fshirja e qelizave tĂ« variablĂ«s. MV ndodh nĂ« mĂ«nyrĂ« tĂ« papritur gjatĂ« shpalljes sĂ« variablĂ«s, e cila gjithashtu shkruhet pĂ«r njĂ« arsye tjetĂ«r — pĂ«r tĂ« treguar formĂ«n e madhĂ«sisĂ«. VetĂ«m njĂ« lloj
variablash shtesĂ« menaxhohet nĂ« mĂ«nyrĂ« tĂ« qartĂ« pĂ«rmes funksioneve malloc() dhe free(). Duhet tĂ« theksohet se veprimet e paprekura janĂ« mĂ« tĂ« lehta pĂ«r t'u shkruar, pasi nuk kĂ«rkojnĂ« asgjĂ« pĂ«r t'u shkruar, por janĂ« mĂ« tĂ« vĂ«shtira pĂ«r t'u kuptuar — Ă«shtĂ« mĂ« e vĂ«shtirĂ« tĂ« marrĂ«sh parasysh dhe interpretohesh ato.

Nënshtrimi

— lidhja / shkĂ«putja e pjesĂ«ve tĂ« nivelit.

— lidhja / shkĂ«putja e pjesĂ«ve tĂ« nivelit. Gjuha C propozoi njĂ« mĂ«nyrĂ« tĂ« ndihmuar pĂ«r menaxhimin e rendit tĂ« veprimeve — nĂ«nshtrimin. Ai pasqyron dhe zhvillon njĂ« frazĂ« tĂ« komplikuar tĂ« folur me ndarje tĂ« qartĂ« nĂ« pjesĂ«n kryesore (propozimi i nĂ«nshtrimit) dhe pjesĂ«n anĂ«sore (seksionet nĂ«nnivel / nĂ«nprogram).

Si shpallja, ashtu edhe nënshtrimi janë ndërtuar plotësisht mbi konceptin e

nivelit Niveli.

— njĂ« grup i kufizuar i shprehjeve njĂ«niveli pĂ«rzgjedhĂ«se.

— njĂ« grup i kufizuar i shprehjeve njĂ«niveli pĂ«rzgjedhĂ«se. Niveli e ka marrĂ« nĂ« mĂ«nyrĂ« tĂ« qartĂ« dhe tĂ« papretenduar mbajtjen e menjĂ«hershme tĂ« disa detyrave:

renditjen e programit,

  1. kufizimin e dukshmërisë së emrave (në mënyrë të paprekur),
  2. menaxhimin e variablave (qelizave të memories) (në mënyrë të paprekur),
  3. definimin e seksioneve anësore për nënshtrim,
  4. definimin e funksioneve dhe seleksioneve dhe të tjera.
  5. NĂ« gjuhĂ«t makinerike nuk kishte koncepti i nivelit, prandaj ai nuk Ă«shtĂ« shfaqur as nĂ« C/K, dhe nĂ«se njĂ« gjĂ« nuk ishte aty — tĂ« futet nĂ« librat e mĂ«vonshĂ«m do tĂ« ishte herezi dhe gjithĂ«pĂ«rfshirĂ«s. Prandaj, koncepti i nivelit nuk ka ekzistuar fare, pavarĂ«sisht se Ă«shtĂ« shumĂ« i dobishĂ«m dhe e qartĂ«.

Pa nivelin, nuk Ă«shtĂ« e mundur tĂ« shpjegohet shkurt dhe qartĂ« shumĂ« veprime dhe rregulla tĂ« programit. PĂ«r shembull, pse goto — njĂ« veprim i thjeshtĂ« si tre qindarka — Ă«shtĂ« i keq, ndĂ«rsa while — i zgjuar Ă«shtĂ« i mirĂ«. Mund tĂ« pĂ«rfundohet vetĂ«m me shprehje tĂ« paefektshme, siç bĂ«ri Dijkstra, "kualifikimi i programuesve Ă«shtĂ« njĂ« funksion qĂ« varet mbrapsht nga frekuenca e shfaqjes sĂ« operatorĂ«ve goto nĂ« programet e tyre". NĂ« pĂ«rmbledhje, vetĂ«m idiotĂ«t pĂ«rdorin goto. Niveli i argumentimit — Zoti.) MegjithatĂ«, kjo nuk Ă«shtĂ« aq e frikshme, nĂ«se librat tuaj nuk janĂ« tĂ« detyruar tĂ« shpjegojnĂ« asgjĂ«, por, siç e thamĂ« mĂ« parĂ«, kjo nuk Ă«shtĂ« fati ynĂ«.

Pa një nivel, është e pamundur të shpjegohet shkurt dhe qartë shumë veprime dhe rregulla të programit. Për shembull, pse një operator i thjeshtë si goto është i keq, ndërsa while është i mirë. Mund të shprehni vetëm pakënaqësinë, siç bënte Dijkstra ("kualifikimi i programuesve është një funksion, që varet mbrapsht nga frekuenca e operatorëve goto në programet e tyre". Në përmbledhje, vetëm dele përdorin goto. Niveli i arsyes është Zot.) Megjithatë, kjo nuk është kaq e frikshme nëse librat tuaj nuk kanë obligime për të shpjeguar asgjë, por, siç e thamë, kjo nuk është fati ynë.

Në fakt, mund të supozohet se Den Ritchie e la goto pikërisht si çelës për të kërkuar një koncept të paemëruar, sepse nuk kishte asnjë nevojë apo bukuri në shprehjen goto. Megjithatë, kishte nevojë për një shpjegim të thjeshtë dhe të kuptueshëm të parimeve të reja të gjuhës, të cilat vetë Ritchie nuk dëshiron të japë, dhe që bazohen pikërisht në konceptin Niveli.

Devijimi

Devijimi — Ă«shtĂ« ndryshimi i vetive tĂ« zakonshme tĂ« emrit tĂ« ri.

Devijimi më i rëndësishëm është pikërisht ai që lidhet me vetitë e shtresave të programit, dhe përshkruhet me një fjalë "static", që ka kuptime të ndryshme në secilën nga llojet e shtresave.

5. KREU I FUNDIT. Bashkësia e gjuhëve të aplikacioneve

Gjuha të aplikacioneve janë gjuha figurative të cilat kanë formë, "të tipizuara". Ato bazohen në përdorimin e qartë ose të paqartë të figurës. Këtu përsëri shfaqet një kontradiktë: figura e qartë është më e kuptueshme, por më pak e përshtatshme, dhe anasjelltas.

Matryoshka C. Sistemi i shtresuar i gjuhës së programimit

(Tabela ende nuk është ndarë, kështu që tabela është dhënë si imazh.)

Pas C, zhvillimi i gjuhĂ«ve tĂ« aplikacioneve ndoqi 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 — gjuha C++. Ajo zhvillon idenĂ« e lidhjes sĂ« rastĂ«sishme tĂ« operacioneve me sasi dhe e implementon atĂ« mbi shprehjen e C-tĂ«, e cila merr emrin e ri — objekt. MegjithatĂ«, C++ nuk Ă«shtĂ« aq e shkurtĂ«r dhe e shprehshme sa C, pĂ«r shkak tĂ« mbingarkesĂ«s sĂ« llojeve tĂ« reja tĂ« lidhjes dhe rregullave tĂ« lidhura me to. Po tĂ« flasim pĂ«r "mbingarkesĂ«n".

Mbingarkesa dhe polimorfizmi

Fjala "mbingarkesë" (overload) është një term i vjetër i qasjes makinerike, që përfaqëson krijimin e operacioneve të shumta.

Programuesit e makinave (sistemit) shumĂ«sia e operacioneve mund tĂ« irritonte: "ÇfarĂ« do tĂ« thotĂ« ky shenjĂ« (+): mbledhja e numrave tĂ« plotĂ«, mbledhja e numrave tĂ« thjeshtĂ« apo ndonjĂ« lĂ«vizje tjetĂ«r?! NĂ« kohĂ«n tonĂ« nuk shkruhej kĂ«shtu!" Nga kjo vjen njĂ« nuancĂ« negative pĂ«r fjalĂ«n e zgjedhur ("ndĂ«rhyrje", "u lodha"). PĂ«r programuesin e aplikacioneve, operacione multiple janĂ« thelbĂ«sore, arritja kryesore dhe trashĂ«gimia e gjuhĂ«s C, aq natyrale sa shpesh nuk kuptohen.

NĂ« gjuhĂ«n C++ shumĂ«sia ka shkuar jo vetĂ«m nĂ« operacionet e burimit, por edhe nĂ« funksione — si tĂ« veçanta, ashtu edhe tĂ« bashkuara nĂ« klasa — metoda. NĂ« bashkĂ«punim me metodat e shumta erdhi mundĂ«sia e pĂ«rcaktimit tĂ« tyre nĂ« klasat e zgjeruara, e cila u quajt ngatĂ«rruar "polimorfizĂ«m". Kombinimi i polimorfizmit dhe mbingarkesĂ«s krijoi njĂ« pĂ«rzierje eksplozive, e cila u ndarĂ« nĂ« dy polimorfizma: "tĂ« vĂ«rtetĂ«" dhe "ad-hoc". TĂ« kuptosh kĂ«tĂ« mund tĂ« bĂ«het vetĂ«m pĂ«rballĂ« emrave tĂ« dhĂ«nĂ«. Emrat e huaj e kanĂ« shtruar rrugĂ«n nĂ« ad.

Deklarata e llojit "mbingarkesĂ«" Ă«shtĂ« mĂ« mirĂ« tĂ« shprehet me fjalĂ«n tĂ« shpalljes sĂ« mĂ«tejshme — e cila shton njĂ« shpallje tĂ« funksionit tĂ« njĂ«jtĂ« me argumento tĂ« njĂ« forme tjetĂ«r.

Deklarata e llojit "polimorfizĂ«m" Ă«shtĂ« mĂ« mirĂ« tĂ« quhet me fjalĂ«n rishpallje — shpallje qĂ« mbulon nĂ« njĂ« shtresĂ« tĂ« re zgjeruese tĂ« funksionit tĂ« njĂ«jtĂ« me argumento tĂ« sĂ« njĂ«jtĂ«s formĂ«.

AtĂ«herĂ« do tĂ« jetĂ« e lehtĂ« tĂ« kuptohet se metodat e njĂ«jta tĂ« formave tĂ« ndryshme (argumenteve) — shpallen pĂ«rsĂ«ri, ndĂ«rsa e njĂ«jta formĂ« — shpallet pĂ«rsĂ«ri.

Fjalët ruse zgjidhin.

Pista e fluturimit

Kërkimi i koncepteve të gjuhëve me figuracion të lartë e konfirmon rëndësinë e parametrizimit të qartë të koncepteve themelore. Me një C të saktë, studimi i gjuhëve me figuracion të lartë do të jetë i lehtë dhe i këndshëm.

Kjo Ă«shtĂ« veçanĂ«risht e rĂ«ndĂ«sishme pĂ«r gjuhĂ«t e figuracionit tĂ« lartĂ« tĂ« paqarta (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Ă« koncepti i figurĂ«s bĂ«het i paqartĂ« dhe i vĂ«shtirĂ« pĂ«r t'u kapur. Nga kĂ«ndvĂ«shtrimi i pĂ«rshtatshmĂ«risĂ« ato janĂ« bĂ«rĂ« mĂ« tĂ« thjeshta, por nga kĂ«ndvĂ«shtrimi i kuptimit — mĂ« tĂ« komplikuara.

Prandaj, duhet të filloni studimin e gjuhëve të programimit me gjuhën C dhe të shkoni përpara në rendin e shfaqjes së gjuhëve të familjes C.

E njĂ«jta gjĂ« vlen pĂ«r pĂ«rshkrimin e gjuhĂ«ve. GjuhĂ«t e ndryshme kanĂ« njĂ« grup tĂ« pĂ«rbashkĂ«t, ose njĂ« grup mĂ« tĂ« vogĂ«l njĂ«sish se gjuha C. Numri i llojeve dhe formave mund tĂ« ndryshojĂ« nĂ« tĂ« dy drejtimet: nĂ« C++ ka mĂ« shumĂ« lloje sesa nĂ« C, ndĂ«rsa nĂ« JavaScript — mĂ« pak.

NjĂ« gjuhĂ«, MySQL, meriton veçanĂ«risht vĂ«mendje. Mund tĂ« duket se nuk ka asnjĂ« lidhje, por ajo pĂ«rshkruhet shkĂ«lqyer nga Matryoshka, dhe njohja me tĂ« bĂ«het mĂ« e shpejtĂ« dhe mĂ« e thjeshtĂ«. Çka Ă«shtĂ« e rĂ«ndĂ«sishme, duke marrĂ« parasysh rĂ«ndĂ«sinĂ« e saj pĂ«r web-in — autostradĂ«n e sotme tĂ« programimit. Dhe ku ka MySQL, atje janĂ« edhe SQL tĂ« tjera. Po ashtu, gjuhĂ«t e tjera si Fortran, Pascal, Python gjithashtu pĂ«rshkruhen nga Matryoshka, sapo t’u vijĂ« radhĂ«s.

KĂ«shtu qĂ« na presin vepra tĂ« mĂ«dha — njĂ« pĂ«rshkrim praktik i gjuhĂ«s C dhe njĂ« pĂ«rshkrim i vetĂ«njohur i gjuhĂ«ve qĂ« pasojnĂ«. «QĂ«llimet tona janĂ« tĂ« qarta, detyrat janĂ« tĂ« pĂ«rcaktuara. TĂ« punojmĂ«, shokĂ«! (Duartrokitje tĂ« ashpra, qĂ« kalojnĂ« nĂ« ovacione. TĂ« gjithĂ« qĂ«ndrojnĂ«.)»

Mendimet tuaja do të dëgjohen me shumë vëmendje, ndihma juaj në krijimin e faqes së matryoshkave do të pranohen me shumë mirënjohje. Më shumë informacion në lidhje me librin gjendet në faqen e internetit, e cila është fshehur mjeshtërisht në Matryoshka C.

Burimi: habr.com

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