MatrjoÅ”ka C. Slāņu programmu valodu sistēma

Mēģināsim iedomāties Ä·Ä«miju bez Mendeļejeva periodiskās tabulas (1869). Cik elementu bija jāpatur prātā, un ne Ä«paÅ”i secÄ«bā... (Tad - 60.)

Lai to izdarÄ«tu, vienkārÅ”i padomājiet par vienu vai vairākām programmÄ“Å”anas valodām vienlaikus. Tās paÅ”as sajÅ«tas, tas pats radoÅ”ais haoss.

Un tagad mēs varam no jauna izdzÄ«vot XNUMX. gadsimta Ä·Ä«miÄ·u sajÅ«tas, kad viņiem tika piedāvātas visas zināŔanas un nedaudz vairāk vienā periodiskajā tabulā.

MatrjoÅ”ka C. Slāņu programmu valodu sistēma


Grāmata ā€œMatryoshka C. Programmu valodas slāņu sistēma" vienā mirklÄ« parāda visas C valodas vienÄ«bas. Tas ļauj tos sakārtot, labot novecojuÅ”u informāciju un pat precizēt paÅ”u programmas koncepciju.

MÅ«sdienās programmÄ“Å”anas informācijai ir nepiecieÅ”ama sistematizācija pat vairāk nekā Ä·Ä«miskajiem elementiem pirms 150 gadiem.

Pirmā nepiecieÅ”amÄ«ba ir mācÄ«Å”ana. Mendeļejevs sāka veidot savu sistēmu, kad viņŔ saskārās ar jautājumu, ar kuru elementu sākt lasÄ«t lekcijas: O, H, N, He, Au... Tajā paŔā laikā viņam bija vieglāk - viņŔ mācÄ«ja Ä·Ä«miju labākajiem - studentiem. Sanktpēterburgas universitāte. Un programmēt jau māca skolā un drÄ«z sāksies bērnudārzā.

Otrā nepiecieÅ”amÄ«ba ir zinātniska pieeja. Ar Periodiskās tabulas palÄ«dzÄ«bu tika atklāti jauni elementi un izlabota informācija par vecajiem. Viņa palÄ«dzēja izveidot atoma modeli (1911). Un tā tālāk.

TreŔā nepiecieÅ”amÄ«ba ir programmas jēdziena precizÄ“Å”ana.

MÅ«sdienu programmÄ“Å”ana ir iestrēgusi 50. gadsimta XNUMX. gados. Toreiz programmas bija vienkārÅ”as, bet maŔīnas un maŔīnu valodas bija sarežģītas, tāpēc viss grozÄ«jās ap maŔīnām un valodām.

Tagad viss ir otrādi: programmas ir sarežģītas un primāras, valodas ir vienkārŔas un sekundāras. To sauc par lietiŔķo pieeju, kas, Ŕķiet, ir pazīstama visiem. Taču studenti un izstrādātāji turpina būt pārliecināti, ka viss ir pa vecam.

Tas mūs atgriež pie pirmās Privatdozent Mendeļejeva lekcijas. Ko teikt pirmkursniekiem? Kur ir patiesība? Tas ir jautājums.

Grāmata ā€œMatryoshka Cā€ piedāvā atbildi uz Å”o jautājumu. Programmu valodas slāņu sistēma". Turklāt tas ir adresēts ne tikai studentiem, bet arÄ« apmācÄ«tiem programmētājiem, jo ā€‹ā€‹tieÅ”i viņiem, tas ir, mums ir jāmeklē patiesÄ«ba un jāmaina pasaules uzskats.

Tālāk ir sniegts grāmatas kopsavilkums.

1. Ievads

1969. gadā tika izveidota C valoda, kas kļuva par pamata programmÄ“Å”anas valodu un tā ir palikusi 50 gadus. Kāpēc tas tā ir? Pirmkārt, tāpēc, ka C ir piemēroja valoda, kas deva programmu humāns skata vietā maŔīna. Å o sasniegumu nodroÅ”ināja valodas no C saimes: C++, JavaScript, PHP, Java, C# un citas. Otrkārt, tā ir Ä«sa un skaista valoda.

Tomēr pati C valoda parasti tiek sajaukta ar maŔīnu montētāju, tādējādi sarežģījot un izkropļojot tās uztveri. Otra galējÄ«ba ir noteiktas ā€œfilozofijasā€ uzspieÅ”ana valodai: procesuāla, objekta, funkcionāla, apkopota, interpretēta, drukāta utt. Tas palielina emocijas, bet nepalÄ«dz labāk aprakstÄ«t valodu.

Patiesība ir pa vidu, un C valodai tā ir strikti pa vidu starp filozofisko un maŔīnu uztveri.

C valoda nav neatkarÄ«ga, tā pakļaujas parastajai rakstu valodai, un tajā paŔā laikā tā kontrolē paÅ”u montāžas valodu. Å Ä« pozÄ«cija apraksta Programmas runas modelis, saskaņā ar kuru programma ir sadalÄ«ta trÄ«s pakārtotos veidos: runa, kods, komanda. C valoda ir atbildÄ«ga par otro, koda veidu.

Nosakot valodas vietu programmā, varat sakārtot informāciju par to, kas padara Slāņu programmu valodu sistēma, kas pārstāv C valodu periodiskās sistēmas garā - uz vienas lapas.

Sistēma ir veidota, ņemot vērā lietiŔķo valodu kopienas, kas izriet no viņu runas pakļautÄ«bas. Viens Matryoshka C vienÄ«bu komplekts ļauj aprakstÄ«t un salÄ«dzināt dažādas valodas, veidojot Matryoshkas sēriju: C++, PHP, JavaScript, C#, MySQL, Python un tā tālāk. Ir cienÄ«gi un pareizi, ka dažādas valodas apraksta ar pamatvalodas vienÄ«bām.

2. NODAĻA 1. Programmas runas modelis. Skaidrs C

Pirmajā nodaļā ir sniegta informācija programmas runas modelis, atspoguļojot piemērotu pieeju. Pēc viņa teiktā, programmai ir trīs acīmredzami secīgi veidi:

  1. runa - programmētāja tieÅ”a runa, kas risina problēmu,
  2. kodēts - risinājuma kodÄ“Å”ana matemātiskā formā C valodā (vai jebkurā citā)
  3. un komanda ā€” tieŔās maŔīnas komandas.

Runas modelis izskaidro, kāpēc C ir vienkārÅ”a un saprotama valoda. Sji ir veidota cilvēka runas tēlā un lÄ«dzÄ«bā, kas mums ir pazÄ«stama.

Pirmais programmas veids ir programmētāja tieŔā runa. Runa atbilst cilvēka domāŔanai. Iesācēji programmētāji raksta programmas, izmantojot runu - vispirms krievu valodā, pēc tam soli pa solim tulkojot darbÄ«bas koda valodā. Un tieÅ”i uz Ŕī modeļa tika izveidota C valoda.

Programmētāja secinājumi, kas izteikti runā, tiek pārvērsti kodētā skaitliskā formā. Å o transformāciju vajadzētu saukt pārdomas, jo runai un kodam ir vienāds raksturs (refleksija - dzimÅ”ana - dzimums). Tas ir diezgan acÄ«mredzams, ja salÄ«dzinām programmas runas (kreisajā pusē) un koda (labajā pusē) veidus.

MatrjoÅ”ka C. Slāņu programmu valodu sistēma

Interesanti, ka refleksija notiek ļoti vienkārÅ”i - tikai ar divu veidu izteiksmēm.

Tomēr mÅ«sdienu C valodas aprakstā (no 1978. gada) nav pietiekama nosaukumu saraksta nedz, lai aprakstÄ«tu valodu kopumā, nedz arÄ« konkrēti refleksijas uzdevumam. Tāpēc esam spiesti darboties radoÅ”i un ieviest Å”os vārdus.

Vārdu izvēlei jābÅ«t precÄ«zai un skaidrai. Tam bija nepiecieÅ”ama Ä«paÅ”a pieeja, kas Ä«si izteikta Ŕādi: stingra dzimtās valodas lietoÅ”ana. Angļiem tas bÅ«tu angļi, bet mēs neesam angļi. Tāpēc izmantosim to, kas mums ir, un mēģināsim runāt krieviski.

Refleksija tiek veikta ar divu veidu izteiksmēm:

  1. aprēķins (HF) - atspoguļo objekta Ä«paŔību izmaiņas. Objekta Ä«paŔību izsaka ar skaitli, tad darbÄ«ba uz Ä«paÅ”umu ir darbÄ«ba uz skaitli ā€“ darbÄ«ba.
  2. pakļautÄ«ba (Pch) - atspoguļo izmaiņas darbÄ«bu secÄ«bā. Pch prototips ir runas komplekss teikums, tāpēc lielākā daļa Pch veidu sākas ar pakārtotiem savienojumiem ā€œjaā€, ā€œcitādiā€, ā€œkamērā€, ā€œparā€. Cita veida datori tos papildina.

Starp citu, vai varat noticēt, ka C aprakstā aprēķina izteiksmēm nav nosaukuma - tās vienkārÅ”i sauc par ā€œizteiksmēmā€? Pēc tam vairs nebÅ«s pārsteidzoÅ”i, ka padotÄ«bas veidam nav nosaukuma un asociācijas, kā arÄ« nosaukumu, definÄ«ciju un vispārinājumu mazums kopumā. Tas ir tāpēc, ka slavenais K/R (ā€œThe C Languageā€, Kernighan/Ritchie, 1978) nav apraksts, bet gan valodas lietoÅ”anas ceļvedis.

Tomēr es tomēr vēlētos saņemt valodas aprakstu. Tāpēc viņŔ tiek piedāvāts Slāņu programmu valodu sistēma.

3. 2. NODAÄ»A. Slāņu sistēma. ÄŖss C

Jebkuram aprakstam jābūt precīzam un ļoti kodolīgam. Programmas valodas gadījumā frontālais apraksts ir sarežģīts.

Å eit mums ir programma. Tas sastāv no moduļiem. Moduļi sastāv no apakÅ”programmām un kolekcijām (struktÅ«ras). ApakÅ”programmas sastāv no atseviŔķām izteiksmēm: deklarācijām, aprēķiniem, pakārtotÄ«bas. Ir pat desmit pakļautÄ«bas veidi. Subordinācija savieno apakÅ”lÄ«meņus un apakÅ”programmas. Ir arÄ« vairāki sludinājumi. Taču deklarācijas tiek iekļautas ne tikai apakÅ”programmās un apakÅ”lÄ«meņos, bet arÄ« moduļos un kolekcijās. Un lielākā daļa izteicienu sastāv no vārdiem, kurus ir tik grÅ«ti aprakstÄ«t, ka tie parasti ir vienkārÅ”i doti divos sarakstos ā€“ oriÄ£inālvārdos un atvasinātajos vārdos, ar kuriem jÅ«s iepazÄ«sities valodas apguves un lietoÅ”anas laikā. Tam pievienosim pieturzÄ«mes un vairākus citus izteicienus.

Šādā prezentācijā nav viegli saprast, kurÅ” uz kura stāvēja.

TieÅ”a hierarhiska pieeja valodas aprakstam bÅ«tu pārāk sarežģīta. Apļveida meklÄ“Å”ana noved pie valodas apraksta, pamatojoties uz tās runas raksturu un komandu pusi. Tādējādi radās slāņu sistēma, kas daļēji sakrÄ«t ar Mendeļejeva periodisko sistēmu, kas arÄ« ir kārta. Kā izrādÄ«jās 42 gadus pēc publicÄ“Å”anas (1869), sistēmas periodiskums ir saistÄ«ts ar elektronisko slāņi (1911, Bohr-Rutherford atoma modelis). ArÄ« Slāņu un Periodiskās sistēmas ir lÄ«dzÄ«gas visu vienÄ«bu tabulas izkārtojumā vienā lapā.

Valodas vienību apraksts ir īss - tikai 10 izteicienu veidi un 8 citu vienību veidi, kā arī saturiski un vizuāli. Lai gan neparasti pirmajai paziņai.

Valodas vienības ir sadalītas 6 līmeņos:

  1. vienības - tabulas rindas
  2. nodaļas - īpaŔas ģinŔu grupas (pirmās rindas daļas)
  3. ģints - Ŕūnas (galvenais dalīŔanas līmenis)
  4. supersugas ā€” sugu atdalÄ«tāji (rets lÄ«menis)
  5. veidi - vienības formulas Ŕūnas apakŔā vai atseviŔķi
  6. modeļi - paŔas vienības (tikai vārdiem)

Apraksta vārdu paraugi vārdnÄ«ca - atseviŔķa apakÅ”sistēma, kas sastāv no tiem paÅ”iem seÅ”iem lÄ«meņiem.

C valodas runas sastāvdaļa ir diezgan acÄ«mredzama, lai gan tā joprojām ir apraksta. Bet valodas komandu daļa ir tieÅ”i saistÄ«ta ar kompilācijas vadÄ«bu, kuras laikā tiek veidota treŔā veida programma - komanda. Å eit mēs nonākam pie aizraujoŔākā C valodas aspekta: skaistuma.

4. TĀLĀKĀS NODAĻAS. Skaistais Si

C valoda ir mÅ«sdienu programmÄ“Å”anas pamats. Kāpēc? Pirmkārt, vislielākās runas atbilstÄ«bas dēļ. Otrkārt, tāpēc, ka tas skaisti apiet maŔīnu numuru apstrādes ierobežojumus.

Ko tieÅ”i Sji ierosināja? Attēls un slānis.

Vārds "image" ir tulkojums no angļu valodas vārda "type", kas cēlies no grieÄ·u "prototype" - "tips". Krievu valodā vārds ā€œtipsā€ nenorāda izteiktā jēdziena stÅ«rakmeni, turklāt tas tiek sajaukts ar palÄ«gnozÄ«mi ā€œtipsā€.

Sākotnēji attēls atrisināja tÄ«ri maŔīnu aprēķina problēmu, un pēc tam kļuva par objektu valodu raÅ”anās skrejceļu.

Slānis uzreiz atrisināja vairākas problēmas ā€“ gan ar maŔīnu, gan uzklāt. Tāpēc izskatÄ«Å”ana sāksies ar viena uzdevuma attēlu un pāries uz vairāku uzdevumu slāni.

Viena no nepatÄ«kamajām vēsturiskās programmÄ“Å”anas iezÄ«mēm ir tā, ka lielākā daļa jēdzienu, tostarp pamata jēdzieni, ir doti bez definÄ«cijām. ā€œProgrammÄ“Å”anas valodai (upju nosaukumiem) ir veselu skaitļu un peldoÅ”o skaitļu veidi...ā€, un viņi skrāpēja tālāk. Nav nepiecieÅ”ams definēt, kas ir "tips" (attēls), jo paÅ”i autori to lÄ«dz galam nesaprot un "skaidrÄ«bas labad" to noklusēs. Ja tie ir piestiprināti pie sienas, tie dos neskaidru un bezjēdzÄ«gu definÄ«ciju. Ä»oti palÄ«dz slēpties aiz sveÅ”vārdiem: krievu autoriem - aiz angļu valodas (tips), angļiem - aiz franču valodas (apakÅ”programma), grieÄ·u (polimorfisms), latīņu (iekapsulÄ“Å”ana) vai to kombinācijām (ad-hoc polimorfisms).

Bet tas nav mūsu liktenis. Mūsu izvēle ir definīcijas ar paceltu vizieri tīrā krievu valodā.

Attēls

Attēls ir daudzuma prefiguratÄ«vs nosaukums, kas nosaka 1) daudzuma raksturÄ«gās Ä«paŔības un 2) daudzuma darbÄ«bu atlasi.

Vārds ā€œtipsā€ (tips) atbilst definÄ«cijas pirmajai daļai: ā€œlieluma raksturÄ«gās Ä«paŔībasā€. Bet attēla galvenā nozÄ«me ir otrajā daļā: ā€œoperāciju atlase pēc daudzumiemā€.

Sākumpunkts attēla ievadÄ«Å”anai C ir parasts aprēķins, piemēram, pievienoÅ”anas darbÄ«ba.

PapÄ«rs Matemātikā neatkarÄ«gi no tā, vai tie ir rakstÄ«ti ar roku vai drukāti, skaitļu veidi netiek Ä«paÅ”i atŔķirti, parasti pieņemot, ka tie ir reāli. Tāpēc to apstrādes darbÄ«bas ir nepārprotamas.

MaŔīna Matemātika stingri sadala skaitļus veselos skaitļos un daļskaitļos. Dažādu veidu skaitļi atmiņā tiek saglabāti atŔķirÄ«gi un apstrādāti ar dažādām procesora instrukcijām. Piemēram, instrukcijas veselu skaitļu un daļskaitļu pievienoÅ”anai ir divas dažādas instrukcijas, kas atbilst diviem dažādiem procesora mezgliem. Bet nav komandas, lai pievienotu veselus skaitļus un daļskaitļus.

Pielietots matemātika, tas ir, C valoda, atdala skaitļu veidus, bet apvieno darbības: saskaitīŔanu veseliem skaitļiem un/vai daļskaitļiem raksta ar vienu darbības zīmi.

Skaidra jēdziena attēla definÄ«cija ļauj mums noteikti runāt par diviem citiem jēdzieniem: summa Šø operācija.

Lielums un darbība

VērtÄ«ba ā€” numurs, kas tiek apstrādāts.

Darbība - sākotnējo vērtību (argumentu) vērtību apstrāde, lai iegūtu galīgo skaitli (kopā).

Lielums un darbÄ«ba ir savstarpēji saistÄ«ti. Katra darbÄ«ba ir daudzums, jo tai ir skaitlisks rezultāts. Un katra vērtÄ«ba ir vērtÄ«bas pārsÅ«tÄ«Å”anas rezultāts uz/no procesora reÄ£istra, tas ir, darbÄ«bas rezultāts. Neskatoties uz Ŕīm attiecÄ«bām, galvenais ir to atseviŔķa apraksta iespēja, kaut vai ar viena vārda atkārtoÅ”anos dažādās vārdnÄ«cas sadaļās, kā tas notiek MA3.

MaŔīnas pieeja sadalÄ«ja visus programmētāja izmantotos skaitļus komandām Šø dati. IepriekÅ” abi bija cipari, piemēram, komandas tika rakstÄ«tas ciparu kodos. Tomēr lietiŔķajās valodās komandas pārstāja bÅ«t skaitļi un kļuva vārdos Šø darbÄ«bas zÄ«mes. Paliek tikai ā€œdatiā€ kā skaitļi, bet ir absurdi tos turpināt tā saukt, jo pārejā no maŔīnas uz matemātisko skatu skaitļi ir lielumi, kas tiek dalÄ«ti ar sākotnējo (dati) un pēdējais (nepiecieÅ”ams). ā€œNezināms datumsā€ izklausÄ«sies muļķīgi.

Komandas tika sadalītas arī divu veidu akcijās: matemātiskajā un dienesta. Matemātiskās darbības - darbības. Pie oficiālajām lietām pievērsīsimies vēlāk.

C valodās parastās papÄ«ra un maŔīnas viennozÄ«mÄ«gas jeb atseviŔķas matemātiskas darbÄ«bas gandrÄ«z vispār kļūst daudzkārtējas.

Vairākas darbības ir vairākas viena nosaukuma darbības ar dažāda veida argumentiem un dažādām, pēc nozīmes līdzīgām darbībām.

Veselu skaitļu argumenti atbilst visai darbÄ«bai, un daļskaitļu argumenti atbilst daļējai darbÄ«bai. Å Ä« atŔķirÄ«ba ir Ä«paÅ”i skaidri redzama dalÄ«Å”anas operācijas laikā, kad izteiksme 1/2 dod kopsummu 0, nevis 0,5. Šāds apzÄ«mējums neatbilst papÄ«ra matemātikas noteikumiem, bet C valoda necenÅ”as tos ievērot (atŔķirÄ«bā no Fortran) - tā spēlē pēc sava piemērots noteikumiem.

Ja tiek sajaukti veseli skaitļi un daļskaitļi, tiek iekļauts vienÄ«gais pareizais argumentu vērtÄ«bu lieÅ”ana ā€” selektÄ«va vērtÄ«bas pārveidoÅ”ana no viena attēla uz citu. PatieŔām, pievienojot veselu skaitli un daļskaitli, rezultāts ir daļskaitlis, tāpēc operācijas attēls paņem vesela skaitļa argumenta pārvērÅ”anas darbÄ«ba daļskaitlÄ«.

AtlikuÅ”as vairākas operācijas vairākasUn viens. Šādas darbÄ«bas ir definētas tikai viena veida argumentiem: dalÄ«Å”anas atlikums - veselu skaitļu argumenti, sakrauÅ”ana (bitu operācijas) - dabiski veseli skaitļi. Ma3 norāda darbÄ«bu daudzveidÄ«bu ar zÄ«mēm (#^), kas norāda attēlus, kuriem darbÄ«ba ir definēta. Tas ir svarÄ«gs, bet iepriekÅ” aizmirsts katras darbÄ«bas Ä«paÅ”ums.

Visas funkcijas ir patvaļīgas vienības darbības. Izņēmums ir operatori - funkcijas bez iekavām, iebūvēts valodā (oriģinālās darbības).

Palīdzība

Palīdzība - darbība, kas saistīta ar operāciju.

Ja mēs uzskatām operāciju par galveno darbÄ«bu, tad mēs varam atŔķirt divas pavadoŔās darbÄ«bas, kas nodroÅ”ina operāciju un atŔķiras no tās. Tie ir 1) mainÄ«gā kontrole un 2) pakļautÄ«ba. Å o darbÄ«bu sauc palÄ«dzÄ«bu.

Å eit mums ir jāatkāpjas un atseviŔķi jāsaka par programmÄ“Å”anas mācÄ«bu grāmatu tulkojumiem krievu valodā. K/R tekstā tika ieviests jauns vārds darbÄ«bu fiksÄ“Å”anai paziņojums (izteiksme), kas mēģināja sadalÄ«t maŔīnas komandas jēdzienus dažādās darbÄ«bās: 1) darbÄ«ba, 2) deklarÄ“Å”ana un 3) pakārtoÅ”ana (sauktas par "kontroles konstrukcijām"). Å o mēģinājumu apglabāja krievu tulki, aizstājot ā€œizteiksmiā€ ar vārdu ā€œoperatorsā€, kas:

  1. ir kļuvis par sinonÄ«mu maŔīnas vārdam ā€œkomandaā€,
  2. izrādÄ«jās sinonÄ«ms frāzei ā€œdarbÄ«bas zÄ«meā€,
  3. un arÄ« saņēma neierobežotu skaitu papildu vērtÄ«bu. Tas ir, tas ir pārvērties par kaut ko lÄ«dzÄ«gu angļu rakstam ā€œuhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhā€

Apsveriet papildu darbības vai palīdzību.

Mainīga vadība

MainÄ«ga vadÄ«ba (UP) - mainÄ«go Ŕūnu izveide/dzÄ“Å”ana.
UE notiek netieÅ”i, deklarējot mainÄ«go, kas jau ir uzrakstÄ«ts cita iemesla dēļ - lai norādÄ«tu vērtÄ«bas attēlu. Tikai viens skats tiek tieÅ”i pārvaldÄ«ts papildu mainÄ«gie izmantojot malloc () un free () funkcijas.

JāatzÄ«mē, ka netieŔās darbÄ«bas ir ērtākas rakstÄ«Å”anai, jo tām vispār nekas nav jāraksta, taču tās ir grÅ«tāk saprotamas - tās ir grÅ«tāk ņemt vērā un interpretēt.

Subordinācija

Subordinācija ā€” savienot/atspējot slāņu sekcijas.

C valoda piedāvāja lietiŔķu darbÄ«bu secÄ«bas kontroles metodi, kas atŔķiras no montētāja - padotÄ«bas. Tas atspoguļo un attÄ«sta runas kompleksu teikumu ar skaidru iedalÄ«jumu galvenajā daļā (subordinācijas klauzula) un pakārtotajā daļā (apakÅ”lÄ«meņa/apakÅ”programmas sadaļas).

Gan deklarācija, gan iesniegŔana ir pilnībā balstīta uz koncepciju Layer.

Slānis

Slānis ir ierobežota viena līmeņa selektīva izteiksmju kopa.

Slānis skaidri un netieÅ”i uzņēmās vairākus uzdevumus vienlaikus:

  1. programmas organizēŔana
  2. vārdu redzamības ierobežoŔana (netieŔi),
  3. mainÄ«go lielumu (atmiņas Ŕūnu) pārvaldÄ«ba (netieÅ”a),
  4. pakārtoto klauzulu definīcija subordinācijai,
  5. funkciju un atlases definīcijas un citi.

MaŔīnvalodās nebija jēdziena par slānis, tāpēc tas neparādÄ«jās K/R, un, ja kaut kas tur nebija, tad to ieviest nākamajās grāmatās bÅ«tu Ä·ecerÄ«ba un brÄ«vdomÄ«ba. Tāpēc slāņa jēdziens vispār neparādÄ«jās, lai gan tas ir ārkārtÄ«gi noderÄ«gs un diezgan acÄ«mredzams.

Bez slāņa nav iespējams Ä«si un skaidri izskaidrot daudzas programmas darbÄ«bas un noteikumus. Piemēram, kāpēc goto ir tik vienkārÅ”s kā trÄ«s kapeikas slikts, un viltÄ«gais kamēr ir labs. Var tikai bezpalÄ«dzÄ«gi lamāties, kā to darÄ«ja Dijkstra (ā€œprogrammētāju prasme ir funkcija, kas apgriezti ir atkarÄ«ga no goto apgalvojumu sastopamÄ«bas biežuma viņu programmās.ā€ ÄŖsāk sakot, goto lieto tikai kazas. Pamatojuma lÄ«menis ir Dievs.) Tiesa, tas nav tik biedējoÅ”i, ja jÅ«su grāmatas Mums vispār nekas nav jāpaskaidro, taču, kā jau teicām, tas nav mÅ«su liktenis.

Starp citu, var pieņemt, ka Dens Ričijs goto atstāja tieÅ”i kā atslēgu kāda nenosaukta jēdziena meklÄ“Å”anai, jo izteicienā goto nebija ne vajadzÄ«bas, ne skaistuma. Taču bija vajadzÄ«gs vienkārÅ”s un saprotams skaidrojums par jaunajiem valodas principiem, kurus pats Ričijs nevēlējās sniegt un kuri ir tieÅ”i balstÄ«ti uz koncepciju. Layer.

Novirze

Novirze ā€” mainot jaunā nosaukuma parastos rekvizÄ«tus.

BÅ«tiskākā novirze ir tieÅ”i saistÄ«ta ar programmas slāņa Ä«paŔībām, un to raksturo viens vārds ā€œstaticā€, kam katrā slāņa tipā ir atŔķirÄ«ga nozÄ«me.

5. PĒDĒJĀ NODAÄ»A. LietiŔķo valodu kopÄ«gums

LietiŔķās valodas ir tēlains valodas (ar attēlu, ā€œierakstÄ«tsā€). Tie ir balstÄ«ti uz tieÅ”u vai netieÅ”u attēla izmantoÅ”anu. Turklāt Å”eit atkal parādās pretruna: izteikts attēls ir saprotamāks, bet mazāk ērts, un otrādi.

MatrjoÅ”ka C. Slāņu programmu valodu sistēma

(Tabulas izkārtojums vēl nav piegādāts, tāpēc tabula ir attēlota ar attēlu.)

Pēc C lietiŔķo valodu attÄ«stÄ«ba virzÄ«jās uz to figurativitātes palielināŔanas ceļu. VissvarÄ«gākais, lai izprastu augstus attēlus, ir tieÅ”ais C pēctecis ā€” C++ valoda. ViņŔ attÄ«sta ideju par patvaļīgu darbÄ«bu atlasi daudzumiem un iemieso to, pamatojoties uz sintētisko izteiksmju atlasi, kas saņem jaunu nosaukumu - objektu. Tomēr C++ nav tik kodolÄ«gs un izteiksmÄ«gs kā C jauno kolekcijas veidu un ar tiem saistÄ«to noteikumu pārslodzes dēļ. Starp citu, parunāsim par ā€œpārslodziā€.

Pārslodze un polimorfisms

Vārds "pārslodze" ir novecojis maŔīnmācības termins radīŔanai vairākas operācijas.

MaŔīnu (sistēmu) programmētāji plurālisms darbÄ«bas varētu bÅ«t kaitinoÅ”as: ā€œKo Ŕī zÄ«me (+) nozÄ«mē: veselu skaitļu pievienoÅ”anu, daļskaitļu pievienoÅ”anu vai pat pārvietoÅ”anu?! MÅ«su laikā viņi tā nerakstÄ«ja! LÄ«dz ar to izvēlētā vārda negatÄ«vā konotācija (ā€œpārmērÄ«gsā€, ā€œnogurisā€). Lietojumprogrammu programmētājam vairākas darbÄ«bas ir C valodas stÅ«rakmens, galvenais sasniegums un mantojums, kas ir tik dabisks, ka bieži vien netiek atpazÄ«ts.

C++ valodā plurālisms attiecināts ne tikai uz sākotnējām operācijām, bet arÄ« uz funkcijām ā€“ gan individuālajām, gan klasēs apvienotajām ā€“ metodēm. Ar vairākām metodēm radās iespēja tos ignorēt paplaÅ”inātajās klasēs, ko neskaidri sauca par "polimorfismu". Polimorfisma un pārslodzes kombinācija radÄ«ja sprādzienbÄ«stamu maisÄ«jumu, kas sadalÄ«jās divos polimorfismos: ā€œpatiesaisā€ un ā€œad-hocā€. To var saprast tikai neskatoties uz pieŔķirtajiem nosaukumiem. CeļŔ uz sludinājumu ir bruģēts ar sveÅ”iem nosaukumiem.

Formas ā€œpārslodzeā€ deklarācija ir labāk izteikta vārdā papildu paziņojums ā€” tāda paÅ”a nosaukuma funkcijas deklarācijas pievienoÅ”ana ar cita attēla argumentiem.

Formas ā€œpolimorfismsā€ deklarāciju labāk saukt atkārtots paziņojums ā€” pārklāŔanās deklarācija tāda paÅ”a nosaukuma funkcijas jaunā paplaÅ”inājuma slānÄ« ar viena un tā paÅ”a attēla argumentiem.

Tad bÅ«s viegli saprast, ka vienas un tās paÅ”as dažādu attēlu (argumentu) metodes - papildus paziņots, un viens attēls - izsludināts atkārtoti.

Krievu vārdi izŔķir.

SkrejceļŔ

Ä»oti figurālu valodu jēdzienu apsvērÅ”ana apstiprina skaidras pamatjēdzienu definÄ«cijas nozÄ«mi. Pareizi aprakstot C, grafisko valodu apguve bÅ«s vienkārÅ”a un patÄ«kama.

Tas ir Ä«paÅ”i svarÄ«gi, lai netieÅ”i izteikti tēlainas valodas (PHP, JavaScript). Viņiem objektu (salikto attēlu) nozÄ«me kļūst vēl lielāka nekā C++, bet pati attēla koncepcija kļūst netieÅ”a un netverama. No ērtÄ«bas viedokļa tie ir kļuvuÅ”i vienkārŔāki, bet no izpratnes ā€“ grÅ«tāki.

Tāpēc jums vajadzētu sākt mācÄ«ties programmÄ“Å”anas valodas ar C valodu un virzÄ«ties tālāk tādā secÄ«bā, kādā parādās C saimes valodas.

Tas pats attiecas uz valodu aprakstu. Dažādām valodām ir tāda pati vai mazāka vienību dzimumu kopa nekā C valodai. Veidu un paraugu skaits var atŔķirties abos virzienos: C++ ir vairāk veidu nekā C, savukārt JavaScript ir mazāk.

MySQL valoda ir pelnÄ«jusi Ä«paÅ”u pieminÄ“Å”anu. Å Ä·iet, ka nav nekā kopÄ«ga, taču MatrjoÅ”ka viņu lieliski raksturo, un iepazÄ«t viņu kļūst ātrāk un vieglāk. Kas ir svarÄ«gi, ņemot vērā tā nozÄ«mi tÄ«meklÄ« - mÅ«sdienu programmÄ“Å”anas ēdienkartē. Un kur ir MySQL, tur ir arÄ« citi SQL. Nu visādus Fortran-Pascal-Pithonus arÄ« MatrjoÅ”ka apraksta, tiklÄ«dz dabÅ« rokās.

Tātad mÅ«s sagaida lieliskas lietas - lietiŔķs C valodas apraksts un vienots tam sekojoÅ”o valodu apraksts. ā€œMÅ«su mērÄ·i ir skaidri, mÅ«su uzdevumi ir noteikti. Sāciet strādāt, biedri! (Vētraini, ilgstoÅ”i aplausi, pārvērÅ”oties ovācijās. Visi pieceļas.)"

JÅ«su viedokļi tiks uzklausÄ«ti ar lielu uzmanÄ«bu, jÅ«su palÄ«dzÄ«ba ligzdojoÅ”o leļļu vietnes izveidē tiks uzņemta ar lielu pateicÄ«bu. PilnÄ«gāka informācija par grāmatu ir mājaslapā, gudri paslēpta MatrjoÅ”kā C.

Avots: www.habr.com

Pievieno komentāru