C# Maatrjoska. Kihiliselt sĂŒsteemne programmeerimiskeel

Kujutame ette keemiat ilma Mendelejevi perioodilise sĂŒsteemita (1869). Kui palju elemente tuli meeles pidada, veelgi enam, suvalises jĂ€rjekorras... (Tollal - 60.)

Selleks on piisavalt mĂ”elda ĂŒhele vĂ”i mitmele programmeerimiskeelele. Samad tunded, sama loominguline segadus.

Ja nĂŒĂŒd saame lĂ€bi elada 19. sajandi keemikute tundeid, kui neile pakuti kogu nende teadmiste kogumit, veidi lisaks, ĂŒhes perioodilises tabelis.

C# Maatrjoska. Kihiliselt sĂŒsteemne programmeerimiskeel


Raamat "C# Maatrjoska. Kihiliselt sĂŒsteemne programmeerimiskeel" esitab kĂ”ik C# keele ĂŒksused kĂ€eulatuses. See vĂ”imaldab neid korrastada, parandada aegunudandmeid ja isegi tĂ€psustada mĂ”istet 'programm'.

TĂ€napĂ€eval vajab programmeerimise teave sĂŒsteematiseerimist isegi rohkem kui 150 aastat tagasi keemilised elemendid.

Esimene vajadus on Ă”petamine. Mendelejev alustas oma sĂŒsteemi loomist, kui ta seisis silmitsi kĂŒsimusega, millisest elemendist alustada loengute pidamist: O, H, N, He, Au... Samal ajal oli tal lihtsam - ta Ă”petas keemiat parimatele Peterburi ĂŒlikooli tudengitele. Ja programmeerimist Ă”petatakse juba koolis ning varsti alushariduses.

Teine vajadus on teaduslik lĂ€henemine. Perioodilise sĂŒsteemi abil avati uusi elemente ja parandati vanade kohta kĂ€ivat teavet. See aitas kaasa aatomi mudeli loomisele (1911). Ja nii edasi.

Kolmas vajadus on programmi mÔiste tÀpsustamine.

Kaasaegne programmeerimine on ĂŒhe jalaga kinni 20. sajandi 50ndates. Siis olid programmid lihtsad ning masinad ja masinakeeled keerulised, seega keerles kĂ”ik masinate ja keelte ĂŒmber.

NĂŒĂŒd on kĂ”ik vastupidi: programmid on keerulised ja primaarsetes, keeled on lihtsad ja sekundaarsetes. Seda nimetatakse rakenduslikuks lĂ€henemiseks, mis on kĂ”igile tuttav. Kuid tudengeid ja arendajaid jĂ€tkatakse veenmas, et kĂ”ik on endiselt samasugune.

See toob meid tagasi Mendelejevi atroofilise Ă”ppe korralduse juurde. Mida öelda esmakursuslastele? Kus on tĂ”de? See on kĂŒsimus.

Oma vastuse sellele pakub raamat "C# Maatrjoska. Kihiliselt sĂŒsteemne programmeerimiskeel". Ja see ei ole suunatud ainult tudengitele, vaid ka ettevalmistatud programmeerijatele, sest just nemad, ehkki me, peaksime tĂ”de otsima ja maailmavaateid ĂŒmber pöörama.

JĂ€rgneb raamatu lĂŒhikokkuvĂ”te.

1. Sissejuhatus

Aastal 1969 loodi keel C, mis sai aluskeeleks programmeerimises ja on seda olnud juba 50 aastat. Miks on see nii? Esiteks, sest C on rakenduslik keel, mis annab programmile inimliku ilme asemel masinlikule. Seda saavutust on kinnitanud C sugulased: C++, JavaScript, PHP, Java, C# ja teised. Teiseks, tegemist on lĂŒhikese ja ilusa keele kasutamisega.

Kuid keelt C segatakse sageli masinasse assembleeritava keelega, mis muudab selle ettekujutuse keeruliseks ja moonutab. Teiseks ÀÀrmusteks on millegipĂ€rast keelele sissetoomine mingit "filosoofiat": protseduuriline, objektne, funktsionaalne, kompileeritud, tĂ”lgendatav, tĂŒpiseeritud jne. See lisab emotsioone, kuid ei aita paremini keelt kirjeldada.

TÔde asub keskel, C keele puhul - rangelt keskel erakordse ja masinliku mÔistmise vahel.

Keel C ei ole iseseisev, see allub tavapĂ€rasele kirjutusviisile ja samas - juhib ise assembleerimise keelt. See seisukoht kirjeldab Programmi kĂ”nemudel, mille kohaselt on programm jagatud kolme alluvasse tĂŒĂŒpi: kĂ”ne, kood, kĂ€sk. C keel vastutab teise, koodi tĂŒĂŒbi eest.

MÀÀratledes keele koha programmis, saab selle kohta teavet korraldada, mis teeb Programmi kihi sĂŒsteem, mis esitleb keelt C Menedeleevi sĂŒsteemi vaimus - ĂŒhel lehel.

SĂŒsteem on ĂŒles ehitatud rakenduslike keelte ĂŒldisusele, mis tuleneb nende kĂ”ne alluvusest. Üks komplekt C Matryoshka elemente vĂ”imaldab kirjeldada ja vĂ”rrelda erinevaid keeli, luues rea Matryoshka-nukke: C++, PHP, JavaScript, C#, MySQL, Python jne. On kena ja Ă”ige, et erinevaid keeli kirjeldatakse aluskeele elementidega.

2. PEATÜKK 1. Programmi kĂ”nemudel. Selge C

Esimeses peatĂŒkis on esitatud programmi kĂ”nemudel, mis kajastab rakenduslikku lĂ€henemist. Selle kohaselt on programmil kolm ilmset jĂ€rjestikku tĂŒĂŒpi:

  1. kÔne - otsekÔne programmeerijalt, kes lahendab probleemi,
  2. kood - lahenduse koodimine matemaatilisse vormi keeles C (vÔi mis tahes muus)
  3. ja kÀsk - otse masinakomplektid.

KĂ”nemudel selgitab, miks C on lihtne ja arusaadav keel. C on ĂŒles ehitatud meie tavalise inimkĂ”ne mudeli jĂ€rgi.

Esimene programmiliik on programmeerija otsekĂ”ne. KĂ”ne vastab inimmĂ”tlemisele. Algajad programmeerijad loovad programme kĂ”ne kaudu — esmalt vene keeles ja seejĂ€rel tĂ”lgivad jĂ€rk-jĂ€rgult tegevused koodikeelde. Just sellise mudeli jĂ€rgi loodi keele C.

Programmeeri mĂ”tlemised, vĂ€ljendatud kĂ”nes, muudetakse koodi numbriliseks vormiks. Seda teisendust tuleks nimetada peegeldamiseks, kuna kĂ”ne ja kood omavad ĂŒhte loodust (peegeldamine — sĂŒnnitus — sugulane). See on tĂ€iesti ilmselge, kui vĂ”rrelda kĂ”ne (vasakul) ja koodi (paremal) programmiliike.

C# Maatrjoska. Kihiliselt sĂŒsteemne programmeerimiskeel

Huvitav, et peegeldamine toimub vĂ€ga lihtsalt — vaid kahe vĂ€ljendusliigiga.

Kuid, kaasaegne keele C kirjeldus (1978. aastast) ei sisalda piisavat nimekirja nimetustest ega keele ĂŒldise kirjelduse jaoks, ega ka peegeldamise ĂŒlesande jaoks. SeetĂ”ttu peame loovalt tegutsema ja need nimetused sisse viima.

SĂ”nade valik peab olema tĂ€pne ja selge. Selleks oli vajalik eriline lĂ€henemine, mida vĂ”ib lĂŒhidalt vĂ€ljendada sedasi — ema keele range kasutamine. Inglaste jaoks oleks see inglise keel, kuid me ei ole inglastest. Seega kasutame seda, mis meil on, ja pĂŒĂŒame rÀÀkida vene keeles.

Peegeldust teostavad kaks vÀljendusliiki:

  1. arvutamine (A) — peegeldab objekti omaduste muutumist. Objekti omadus vĂ€ljendatakse arvuga, seega tegevus omaduse ĂŒle on tegevus numbri ĂŒle — tehe.
  2. alitamine (B) — peegeldab tegevuste jĂ€rjekorra muutumist. Alitemplari B eelkĂ€ijaks on kĂ”neline mitmealuse lause, seetĂ”ttu algab enamik B tĂŒĂŒpe alistuskonjunktidega "kui", "muul juhul", "kuni", "selleks". Teised B tĂŒĂŒbid tĂ€iendavad neid.

Muide, kas usute, et C kirjelduse jaoks ei ole nimetust arvutamise vĂ€ljendite jaoks — neid nimetatakse lihtsalt "vĂ€ljendid"? PĂ€rast seda ei ĂŒllata enam, et alitamise liigi jaoks pole nimetuse ja ĂŒhenduse puudumist, ja ĂŒldse see nimetuste, definitsioonide ja ĂŒldistuste nappus. KĂ”ik on tingitud sellest, et kuulus K/R ("C keel", Kernighan/Ritchie, 1978) ei ole mitte kirjeldus, vaid keele rakendamise juhis.

Siiski sooviksime omada keele kirjeldust. SeetĂ”ttu pakub selle Programmi kihi sĂŒsteem.

3. PEATÜKK 2. Kihtide sĂŒsteem. LĂŒhike C

Iga kirjeldus peab olema tĂ€pne ja ÀÀrmiselt lĂŒhike. Programmeerimise keele puhul on otsene kirjeldus keeruline.

Meil on programm. See koosneb moodulitest. Moodulid koosnevad alamprogrammidest ja kogumitest (structure). Alamprogrammid koosnevad eraldi vĂ€ljenditest: deklaratsioonidest, arvutustest, allutustest. Allutusi on kokku kĂŒmme tĂŒĂŒpi. Allutused ĂŒhendavad alampinkide ja alamprogrammidega. Deklaratsioone on samuti mitu. Tegelikult hĂ”lmatakse deklaratsioone mitte ainult alamprogrammidesse ja alampinkidesse, vaid ka moodulitesse ja kogumitesse. Enamik vĂ€ljendeid koosneb sĂ”nadest, mille kirjeldamine on sedavĂ”rd keeruline, et tavaliselt esitletakse neid lihtsalt kahe nimekirjana - algsed ja tuletatud sĂ”nad, millega tuleb tutvuda kogu keele Ă”ppimise ja kasutamise vĂ€ltel. Lisame siia ka kirjapungid ja veel rea vĂ€ljendeid.

Sellises esituses on keeruline mÔista, kes kellel seisis.

Otsene hierarhiline lĂ€henemine keele kirjeldamisele oleks ĂŒlemÀÀra keeruline. KĂŒllastuslikud teed viivad keele kirjeldamiseni selle kĂ”nesusega ja kĂ€su poolega seotud. Nii sĂŒndis Kihtide sĂŒsteem, mis osaliselt kokku langeb Mendelejevi Perioodilise sĂŒsteemiga, mis on samuti kihtmine. 42 aastat pĂ€rast selle vĂ€ljaandmist (1869) selgus, et sĂŒsteemi perioodilisus on seotud elektronide kihtidega (1911, Bohr-Rutherford'i aatomimudel). Samuti seob Kihiline ja Perioodiline sĂŒsteem kĂ”iki ĂŒksusi tabelis ĂŒhele lehele.

KeeleĂŒksuste kirjeldamine on lĂŒhike - kokku 10 vĂ€ljendi liiki ja 8 muu ĂŒksuse liiki, aga ka sisukas ja visuaalne. Kuigi esmakordse tutvumise juures vĂ”ib see olla harjumatu.

KeeleĂŒksused on jaotatud 6 tasemesse:

  1. rĂŒhmad - tabeli read
  2. osakonnad - erigruppide liigid (esimese rea osad)
  3. liigid - lahtrid (peamine jaotustase)
  4. ĂŒlemliigid - liikide eraldajad (haruldane tase)
  5. liigid - valemiĂŒksused lahtri all vĂ”i eraldi
  6. nĂ€idised - iseĂŒksused (ainult sĂ”nade jaoks)

SĂ”nade nĂ€idiseid kirjeldab sĂ”nastik - eraldi alamsĂŒsteem, mis koosneb samadest kuuest tasemest.

Keel C on selgelt kĂ”nekomponent, kuigi see vÀÀrib siiski kirjeldamist. Kuid selle keele kĂ€suosa on seotud kompileerimise juhtimisega, mille kĂ€igus luuakse kolmas programmiliik - kĂ€su. Siin jĂ”uame keele C kĂ”ige pĂ”nevamasse kĂŒlge - ilu.

4. JÄRGMISED PEATÜKID. Ilus C

C-keel on kaasaegse programmeerimise alus. Miks? Esiteks, tĂ€nu sellele, et see vastab kĂ”ige paremini keelele. Teiseks, sest see ĂŒletab kenasti numbrite masinaprotsessimise piirangud.

Mida tĂ€pselt C pakkus? TĂŒĂŒp ja kiht.

SĂ”na „tĂŒĂŒp” on tĂ”lge ingliskeelsest sĂ”nast „type”, mis tuleneb kreekakeelsest „prototypos” — „kuju”. Eesti keeles ei edasta sĂ”na „tĂŒĂŒp” vĂ€ljendatava mĂ”iste tuuma, lisaks seguneb see teenuslikku tĂ€hendusse „liik”.

Alguses lahendas tĂŒĂŒp puhtalt masinlikku arvutamisĂŒlesannet, kuid hiljem sai see objektipĂ”histe keelte loomise stardivĂ€ljaks.

Kiht lahendas kohe mitu ĂŒlesannet — nii masinlikke kui ka rakenduslikke. SeetĂ”ttu algab arutelu ĂŒheliikmelisest tĂŒĂŒbist ja liigub edasi mitme ĂŒlesande kihile.

Üks ajaloolise programmeerimise ebameeldiv omadus on see, et enamik mĂ”isteid, sealhulgas pĂ”hielemendid, esitatakse ilma mÀÀratlusteta. „Programmeerimiskeele (jĂ”gede nimed) puhul on terviklik ja ujuv numbrite tĂŒĂŒp...” — ja edasi minnakse. Mis tĂ€hendab „tĂŒĂŒp” (kuju) — ei ole kohustuslik mÀÀratleda, sest autorid ise ei mĂ”ista seda lĂ”peti ja vehivad „selguse nimel”. Kui neid nurka suruda, annavad nad Ă€hmase ja kasutu mÀÀratluse. HĂ€sti aitab peituda vÔÔrkeelsete sĂ”nade taha: vene autorite jaoks ingliskeelsete (type) taha, inglaste puhul aga prantsuskeelsete (subroutine), kreekakeelsete (polymorphism), ladinakeelsete (encapsulation) vĂ”i nende kombinatsioonide (polymorphism ad-hoc) taha.

Aga see ei ole meie saatus. Meie valik on mÀÀratlused puhtas eesti keeles.

TĂŒĂŒp

TĂŒĂŒp — see on liiki mÀÀrav nimi, mis mÀÀratleb 1) suuruse omadused ja 2) operatsioonide valiku suuruse jaoks.

SĂ”nale „tĂŒĂŒp” (liik) vastab mÀÀratlemise esimene osa: „suuruse omadused”. Kuid peamine tĂ€hendus on teises osas: „operatsioonide valik suurustele”.

TĂŒĂŒbi tutvustamise lĂ€htepunkt C-keeles on tavapĂ€rane arvutus, nĂ€iteks liitmisoperatsioon.

Paberimatemaatika, mida kirjutatakse kĂ€sitsi vĂ”i trĂŒkitakse, ei tee liigide vahel suurt vahet, pidades neid tavaliselt reaalseteks. SeetĂ”ttu on nende töötlemise operatsioonid ĂŒheselt mĂ”istetavad. Masinlik

matemaatika. Matemaatika eristab numbreid rangelt tĂ€isarvudeks ja murdarvudeks. Erinevad arvutĂŒĂŒbid salvestatakse mĂ€llu erinevalt ja neid töödeldakse protsessori erinevate kĂ€skudega. NĂ€iteks on tĂ€isarvude ja murdarvude liitmise kĂ€sud kaks erinevat kĂ€sku, mis vastavad kahele erinevale protsessori sĂ”lmele. Seevastu puudub kĂ€sk tĂ€isarvu ja murru argumentide liitmiseks.

Rakenduslik matemaatika, st C keel eristab arvutĂŒĂŒpe, kuid ĂŒhendab tehteid: tĂ€isarvude ja/vĂ”i murdarvude liitmine kirjutatakse ĂŒhe mĂ€rgiga.

Selge mÔiste mÀÀratlemine vÔimaldab kindlalt rÀÀkida ka kahest muust mÔistest: kogus ja tehe.

Kogus ja tehe

Kogus — töödeldud number.

Tehe — algvÀÀrtuste (argumentide) vÀÀrtuste töötlemine lĂ”plikku numbrisse (tulemuseni) jĂ”udmiseks.

Kogus ja tehe on omavahel seotud. Iga tehe on kogus, kuna sellel on numbriline tulemus. Ja iga kogus on tulemus vÀÀrtuse edastamisest protsessori registrisse/registrist vĂ€lja, st – tehe tulemus. Vaatamata sellele seosele on siiski peamine nende eraldi kirjeldamise vĂ”imalus, isegi kui ĂŒhtaegu korratakse sama sĂ”na erinevates sĂ”naraamatute osades, nagu see toimub ma3.

Masinlik lÀhenemine jagas kÔik programmis kasutatavad numbrid kÀskudeks ja andmeteks. Varem olid need mÔlemad numbrid, nÀiteks kirjutati kÀsud numbrilistes koodides. Kuid rakenduskeeltes lakkasid kÀsud olemast numbrid ja muutusid sÔnadeks ja tehte mÀrkideks. Numbriteks jÀid vaid "andmed", kuid nende jÀtkuv nimetamine nii oleks naeruvÀÀrne, kuna masinlikult matemaatilisest vaatenurgast on numbrid kogused, mis jagunevad algseteks (andmeteks) ja lÔplikeks (otsitavad). "Tundmatu andmed" kÔlaks rumalalt.

KÀsud jagunesid samuti kaheks teheteks: matemaatilised ja teenindavad. Matemaatilised tehed on operatsioonid. Teenindavatele pöördume hiljem.

C keeltes muutuvad tuttavad paberil ja masinall tehtavad ĂŒhemĂ”ttelised, vĂ”i ĂŒksikud, matemaatilised operatsioonid peaaegu ĂŒldiselt mitmemĂ”tteliseks.

MitmemĂ”ttelised operatsioonid – mitu sama nimega operatsiooni erinevate argumentide ja erinevate, tĂ€henduse poolest lĂ€hedaste tegudega.

TĂ€ielikele argumentidele vastab tĂ€isoperatsioon, murdudele aga murdopeatsioon. See erinevus on eriti nĂ€htav jagamisoperatsiooni puhul, kui vĂ€ljend 1/2 annab tulemuseks 0, mitte 0,5. Selline mĂ€rgistus ei vasta pabermatemaatika reeglitele, kuid programmeerimiskeel C ei pĂŒĂŒdle nende jĂ€rgimise poole (erinevalt Fortranist) — see mĂ€ngib oma reeglite jĂ€rgi. rakenduslik reeglid.

Segades tĂ€isarve ja murdarveid, rakendatakse ainut Ă”iged argumentide vÀÀrtuste viimist — valimistransformatsioon vÀÀrtuse ĂŒhtesuks teisendamiseks. TĂ”epoolest, tĂ€isarvu ja murdarvu liitmisel on tulemus — murd, seega operatsiooni valib tĂ€isargumendi muunde murdarvuks.

Mitu operatsiooni jÀÀb mitte mitmekordseks, vaid ĂŒheks. Sellised operatsioonid on mÀÀratletud ainult ĂŒhe tĂŒĂŒbi argumentide jaoks: jÀÀk jagamisel — tĂ€isarvud, bititasemed (bitwise operations) — naturaalsed tĂ€isarvud. Ma3 mĂ€rgib operatsioonide mitmekordse olemuse mĂ€rkide (#^) abil, mĂ€rkides, milliste kuvandite jaoks operatsioon on mÀÀratletud. See on oluline, kuid varasemalt tĂ€helepanuta jĂ€etud omadus iga operatsiooni.

KĂ”ik funktsioonid on juhuslikud ĂŒhekordsed operatsioonid. Erandiks on operaatorid — ilmse sulgudeta funktsioonid, mis on keele sisse ehitatud (algoperatsioonid).

Koostöö

Koostöö — operatsioonile kaasnev tegevus.

Kui vaadata operatsiooni kui pÔhitegevust, siis saab eristada kahte kaasnevat tegevust, mis toetavad operatsiooni ja eristuvad sellest. Need on 1) muutuja juhtimine ja 2) allutamine. Seda tegevust nimetatakse koostööks..

Siin tuleb kÔrvale kalduda ja eraldi rÀÀkida vene tÔlgetest programmeerimise Ôpikutes. K/ R teksti tegevuse kajastamiseks on sisse viidud uus sÔna statement (avaldis), mis proovib jagada masinkÀsku erinevatesse tegevustesse: 1) operatsioon, 2) deklareerimine ja 3) allutamine (nimetatud «juhtivaks konstruktsiooniks»). Selle katse hÀvitasid vene tÔlkijad, asendades «avaldis» sÔnaga «operaator», mis:

  1. sai sĂŒnonĂŒĂŒmiks masinsĂ”nale «kĂ€sk»,
  2. osutus sĂŒnonĂŒĂŒmiks sĂ”napaarile «toimingumĂ€rk»,
  3. ja sai ka piiramatu hulga tĂ€iendavaid tĂ€hendusi. See tĂ€hendab, et sellest sai sarnasus ingliskeelse artikli «uhh ».

Vaatleme kaasnevaid tegevusi, vÔi koostööid..

Muutujate haldamine

Muutujate haldamine (ÜH) — muutujate rakkude loomine/ kustutamine.
ÜH toimub vaikimisi muutujate kuulutamise ajal, mis kirjutatakse muul pĂ”hjusel — suuruse nĂ€itamiseks. SelgesĂ”naliselt juhitakse ainult ĂŒhte tĂŒĂŒpi tĂ€iendavaid muutujaid malloc() ja free() funktsioonide abil.

Oluline on mĂ€rkida, et vaikimisi toimingud on kirjutamise mĂ”ttes mugavamad, kuna nad ei nĂ”ua mitte midagi kirjutamist, kuid on arusaamise poolest keerulisemad — neid on raskem arvesse vĂ”tta ja tĂ”lgendada.

Allutamine

Allutamine — kihiliste osade ĂŒhendamine/eraldamine.

C keel pakkus hea alternatiivina assemblerile rakendusmeetodi tegevuste jĂ€rjekorra juhtimiseks — allutamine. See kajastab ja arendab keerukate lausete struktuuri, kus on selge eristus pĂ”hitegevuse (allutamislause) ja alategevuse (osade tasand/alamprogramm) vahel.

N nii kuulutamine kui ka allutamine on tĂ€ielikult ĂŒles ehitatud mĂ”istele kiht.

Kiht

Kiht — see on piiratud ĂŒhe tasandi valikuline vĂ€ljenduskomplekt.

Kiht on vĂ”tnud selge ja vaikimisi endale mitme ĂŒlesande tĂ€itmise:

  1. programmi struktureerimine,
  2. nimede nÀhtavuse piiramise (vaikimisi),
  3. muutujate (mÀlu rakkude) haldamine (vaikimisi),
  4. aluste allutamise mÀÀramine,
  5. funktsioonide ja kogude mÀÀramine, ja muud.

Masinakeeltes polnud kihtide mĂ”istet, seega ei ilmunud see ka K/R keeles, ja kui seal midagi polnud, siis oleks olnud mingite hilisemate raamatute sisu nende tutvustamine vale ja vabaduse puudumine. SeetĂ”ttu ei ilmnenud kihtide mĂ”isted ĂŒldse, kuigi need on ÀÀrmiselt kasulikud ja tĂ€iesti ilmsed.

Ilma kihtideta ei saa paljusid tegevusi ja programmi reegleid lĂŒhidalt ja selgelt selgitada. NĂ€iteks, miks 'goto', mis on lihtne nagu kolm senti, on halb, aga 'while', mis tundub keeruline, on hea. Saame vaid jĂ”hkralt protestida, nagu tegi Dijkstra ("programmeerijate kvalifikatsioon on pöördeline funktsioon, mis sĂ”ltub nende programmides 'goto' operaatorite esinemissagedusest"). LĂŒhidalt, vaid tolad kasutavad 'goto'. PĂ”hjendamise tase — Jumal.) Tegelikult pole see nii hirmus, kui teie raamatud ei pea midagi selgitama, aga nagu me juba ĂŒtlesime, ei ole see meie saatus.

Muide, vÔib arvata, et Den Ritchie jÀttis goto just kui vÔtme mingisuguse nimetu mÔiste otsimiseks, kuna goto vÀljendil polnud mingit vajadust ega ilu. Pigem oli vajadus keele uute pÔhimÔtete lihtsaks ja arusaadavaks selgitamiseks, mida Ritchie ise ei soovinud anda, ja mis pÔhinevad just mÔistel. kiht.

HĂ€lve

HĂ€lve — uue nime harilike omaduste muutmine.

KĂ”ige olulisem hĂ€lve on seotud programmi kihiliste omadustega ja seda kirjeldatakse ĂŒhe sĂ”naga „staatiline“, millel on igas kihis erinev tĂ€hendus.

5. VIIMANE PEATÜKK. Rakenduskeelte ĂŒhtsus

Rakenduskeeled on kujundlikud keeled (mis sisaldavad kujundit, „tĂŒĂŒbitud“). Need pĂ”hinevad kujundi selgel vĂ”i ebaselgel kasutamisel. Siin ilmneb taas vastuolu: selge kujund on arusaadavam, kuid vĂ€hem mugav, ja vastupidi.

C# Maatrjoska. Kihiliselt sĂŒsteemne programmeerimiskeel

(Tabeli struktuuri pole veel tarnitud, seega on tabel kujutisena.)

PĂ€rast C keele areng suundus rakenduskeelte areng suureneva kujundlikkuse poole. KĂ”ige olulisem kĂ”rge kujundlikkuse mĂ”istmiseks on C keele otsene jĂ€reltulija — keel C++. See arendab ideed suvaliste toimingute kohandamisest vÀÀrtustega ja kehastab selle C keele vĂ€ljendi jĂ€rgi, mida nimetatakse uueks nimeks — objekt. Kuid C++ ei ole nii kompaktne ja vĂ€ljendusrikas kui C, kuna see ĂŒhistab uusi tĂŒĂŒpe ja seotud reegleid. Üks asi, rÀÀgime â€žĂŒlekoormusest“.

Ülekoormus ja polĂŒmorfism

SĂ”na â€žĂŒlekoormus“ (overload) on vananenud masinliku lĂ€henemise mĂ”isted, millega tĂ€histatakse mitmekesiseid toiminguid.

Masin (sĂŒsteem) programmeerijate mitmekesisus toimingutes vĂ”is hĂ€irida: „Mida tĂ€hendab see mĂ€rk (+): tĂ€isarvude liitmine, murdarvude liitmine vĂ”i ĂŒldse nihkumine?! Meie ajal ei kirjutatud niimoodi!“ Seega ikka negatiivne varjund valitud sĂ”nal (â€žĂŒleliigne“, „kĂŒll” ). Rakendusprogrammeeri jaoks on mitmekesised toimingud keele C nurga kivi, peamine saavutus ja pĂ€rand, nii loomulik, et tihti pole seda isegi teadvustatud.

C++ keeles mitmekesisus laienes mitte ainult algoperatsioonidele, vaid ka funktsioonidele — nii eraldi kui ka klassidesse koondatuna — meetoditele. Koos mitmete meetoditega tekkis vĂ”imalus nende ĂŒlekirjutamiseks laiendatud klassides, mida on uduselt nimetatud „polĂŒmorfismiks“. PolĂŒmorfismi ja ĂŒlekulude kombinatsioon andis plahvatusohtliku segu, mis jagunes kaheks polĂŒmorfismiks: „tĂ”eline“ ja „ad-hoc“. Selgusele jĂ”udmine on vĂ”imalik vaid nimetuste antud tĂ€hendustele vastu seistes. VÔÔrkeelsed nimetused sillutavad teed ad.

Deklaratsioon, mis on â€žĂŒlekulu“ tĂŒĂŒpi, on parem vĂ€ljendada sĂ”naga lisadeklaratsioon — lisav deklaratsioon sama nimega funktsioonist, mille argumendid on teistsugused.

Deklaratsiooni, mis on „polĂŒmorfism“, on parem nimetada sĂ”naks ĂŒlekirjutamine — kattuv deklaratsioon uue laiendava kihi sama nimega funktsioonist, mille argumendid on samasugused.

Siis on lihtne selgeks teha, et sama nimega meetodid erinevate vormide (argumentide) — lisatakse, aga ĂŒhe vormi — ĂŒlekirjutatakse.

Eesti sÔnad lahendavad.

Lennurada

KÕRGE VORMIDE KEELTE KOHASED KONTSEPTSIOONID TÕENDAVAD PÕHISTE TÄPSUSE OLULISUST. ÕIGE KIRJELDUSTEGA C-JUHTUMITE ÕPPIMINE ON KERGEM JA MEELDIVAM.

Seda on eriti oluline kaudsete kÔrgete vormide keelte jaoks (PHP, JavaScript). Nende jaoks on objektide (kompleksvormide) tÀhtsus veelgi suurem kui C++-s, kuid ainete mÔisted muutuvad kaudseks ja raskesti tabatavaks. Mugavuse mÔttes on need muutunud lihtsamaks, arusaamise mÔttes aga keerulisemaks.

Seega tuleks programmeerimiskeelte Ôppimist alustada C-keelest ja liikuda edasi C-perekonna keeltes jÀrjekorras, milles need ilmusid.

Sama kehtib keelte kirjeldamise kohta. Erinevatel keeltes on sama vÔi vÀiksem hulk liike kui C-keeles. Liikide ja vormide arv vÔib erineda mÔlemas suunas: C++-l on liike rohkem kui C-l, JavaScriptis on vÀhem.

Erilist tĂ€helepanu vÀÀrib keel MySQL. Tundub, et there pole midagi ĂŒhist, kuid seda saab hĂ€sti kirjeldada Matryoshka meetodil, ja tutvumine sellega muutub kiiremaks ja lihtsamaks. Mis on oluline, arvestades selle tĂ€htsust veebis — kaasaja programmeerimise peamisel teel. Ja kus on MySQL, seal on ka teised SQL-id. Noh, ja igasugused Fortranid, Pascalid, Pythonid saavad samuti Matryoshka meetodi jĂ€rgi kirjeldatud, kui kĂ€ed sinna ulatuvad.

Nii et, meid ootavad suured ettevĂ”tmised – C-programmeerimiskeele praktiline kirjeldus ja jĂ€rjestikuste keelte ĂŒhine kirjeldus. „Meie eesmĂ€rgid on selged, ĂŒlesanded on mÀÀratletud. Tööle, kaaslased! (Kohutavad, pikad aplausid, mis muutuvad ovatsiooniks. KĂ”ik tĂ”usevad.)“

Teie arvamusi kuulatakse suure tÀhelepanuga, teie abi veneemade veebisaidi loomisel vÔetakse vastu suurte tÀnudega. Rohkem teavet raamatu kohta leiate saidilt, mis on peidetud C-matrioshka sisse.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster