Matryoshka C. Layered program language system

Subukan nating isipin ang kimika nang walang Periodic Table ni Mendeleev (1869). Gaano karaming mga elemento ang dapat tandaan, at sa walang partikular na pagkakasunud-sunod... (Pagkatapos - 60.)

Upang gawin ito, isipin lamang ang tungkol sa isa o ilang mga programming language nang sabay-sabay. Parehong damdamin, parehong malikhaing kaguluhan.

At ngayon ay maibabalik natin ang damdamin ng mga chemist ng ika-XNUMX na siglo nang ibigay sa kanila ang lahat ng kanilang kaalaman, at kaunti pa, sa isang Periodic Table.

Matryoshka C. Layered program language system


Ang aklat na "Matryoshka C. Layered system ng program language" ay nagpapakita ng lahat ng mga yunit ng wikang C sa isang sulyap. Pinapayagan ka nitong ayusin ang mga ito, iwasto ang hindi napapanahong impormasyon, at linawin pa ang mismong konsepto ng programa.

Ngayon, ang impormasyon sa programming ay nangangailangan ng systematization kahit na higit pa sa mga elemento ng kemikal 150 taon na ang nakakaraan.

Ang unang pangangailangan ay pagtuturo. Nagsimulang likhain ni Mendeleev ang kanyang sistema nang harapin niya ang tanong kung aling elemento ang magsisimulang mag-lecture sa: O, H, N, He, Au... Kasabay nito, mas madali para sa kanya - nagturo siya ng chemistry sa pinakamahusay - mga mag-aaral ng St. Petersburg University. At ang programming ay itinuro na sa paaralan at malapit nang magsimula sa kindergarten.

Ang pangalawang pangangailangan ay isang siyentipikong diskarte. Sa tulong ng Periodic Table, natuklasan ang mga bagong elemento at naitama ang impormasyon tungkol sa mga luma. Tumulong siya sa paglikha ng modelo ng atom (1911). At iba pa.

Ang ikatlong pangangailangan ay linawin ang konsepto ng isang programa.

Ang modernong programming ay may isang paa na natigil sa 50s ng ika-XNUMX siglo. Noon, ang mga programa ay simple, ngunit ang mga makina at mga wika ng makina ay kumplikado, kaya ang lahat ay umiikot sa mga makina at wika.

Ngayon ang lahat ay kabaligtaran: ang mga programa ay kumplikado at pangunahin, ang mga wika ay simple at pangalawa. Ito ay tinatawag na inilapat na diskarte, na tila pamilyar sa lahat. Ngunit ang mga mag-aaral at mga developer ay patuloy na kumbinsido na ang lahat ay pareho.

Na nagbabalik sa atin sa unang panayam ng Privatdozent Mendeleev. Ano ang sasabihin sa mga freshmen? Nasaan ang katotohanan? Yan ang tanong.

Ang aklat na "Matryoshka C" ay nag-aalok ng sagot sa tanong na ito. Layered system ng program language". Bukod dito, ito ay tinutugunan hindi lamang sa mga mag-aaral, kundi pati na rin sa mga sinanay na programmer, dahil sila, iyon ay, tayo, na dapat hanapin ang katotohanan at baguhin ang pananaw sa mundo.

Ang sumusunod ay isang buod ng aklat.

1. Panimula

Noong 1969, nilikha ang wikang C, na naging pangunahing wika ng programming at nanatili sa loob ng 50 taon. Bakit ganito? Una sa lahat, dahil si C ay inilapat ang wikang nagbigay ng programa makatao tingnan sa halip makina. Ang tagumpay na ito ay sinigurado ng mga wika mula sa pamilyang C: C++, JavaScript, PHP, Java, C# at iba pa. Pangalawa, ito ay isang maikli at magandang wika.

Gayunpaman, ang wikang C mismo ay kadalasang hinahalo sa machine assembler, sa gayo'y nagpapakumplikado at nakakasira ng pang-unawa nito. Ang iba pang sukdulan ay ang pagpapataw ng isang tiyak na "pilosopiya" sa wika: procedural, object, functional, compiled, interpreted, typed, at iba pa. Nagdaragdag ito ng emosyon, ngunit hindi nakakatulong na mailarawan ang wika nang mas mahusay.

Ang katotohanan ay nasa gitna, at para sa wikang C ito ay mahigpit na nasa gitna sa pagitan ng pilosopiko at pang-unawa ng makina.

Ang wikang C ay hindi independyente, sinusunod nito ang ordinaryong nakasulat na wika, at kasabay nito ay kinokontrol nito ang mismong wika ng pagpupulong. Inilalarawan ng posisyong ito Modelo ng pagsasalita ng programa, ayon sa kung saan ang programa ay nahahati sa tatlong subordinate na uri: pagsasalita, code, utos. Ang wikang C ay responsable para sa pangalawa, uri ng code.

Ang pagkakaroon ng pagtukoy sa lugar ng wika sa programa, maaari mong ayusin ang impormasyon tungkol dito, na gumagawa Layered program language system, na kumakatawan sa wikang C sa diwa ng periodic system - sa isang pahina.

Ang sistema ay binuo na isinasaalang-alang komunidad ng mga inilapat na wika, na nagmumula sa kanilang pagsupil sa pagsasalita. Ang isang hanay ng mga unit ng Matryoshka C ay nagpapahintulot sa iyo na ilarawan at ihambing ang iba't ibang mga wika, na lumilikha ng isang serye ng mga Matryoshkas: C++, PHP, JavaScript, C#, MySQL, Python at iba pa. Karapat-dapat at tama na ang iba't ibang wika ay inilalarawan ng mga yunit ng pangunahing wika.

2. KABANATA 1. Modelo ng talumpati ng programa. Maaliwalas C

Ang unang kabanata ay naglalahad modelo ng pagsasalita ng programa, na sumasalamin sa isang inilapat na diskarte. Ayon sa kanya, ang programa ay may tatlong halatang sequential na uri:

  1. pagsasalita - direktang pagsasalita ng programmer sa paglutas ng problema,
  2. naka-code - pag-encode ng isang solusyon sa isang mathematical form sa wikang C (o anumang iba pa)
  3. at command - direktang utos ng makina.

Ipinapaliwanag ng modelo ng pagsasalita kung bakit ang C ay isang simple at naiintindihan na wika. Si Xi ay binuo sa imahe at pagkakahawig ng pananalita ng tao na pamilyar sa atin.

Ang unang uri ng programa ay ang direktang pagsasalita ng programmer. Ang pananalita ay tumutugma sa pag-iisip ng tao. Ang mga nagsisimulang programmer ay sumulat ng mga programa gamit ang pagsasalita - una sa Russian, pagkatapos ay hakbang-hakbang na pagsasalin ng mga aksyon sa isang wika ng code. At tiyak sa modelong ito na nilikha ang wikang C.

Ang mga konklusyon ng programmer, na ipinahayag sa pagsasalita, ay na-convert sa isang naka-code na numerical form. Ang pagbabagong ito ay dapat tawagin pagmuni-muni, dahil ang pagsasalita at kodigo ay may parehong kalikasan (pagninilay - kapanganakan - kasarian). Ito ay medyo halata kung ihahambing natin ang mga uri ng pagsasalita (sa kaliwa) at code (sa kanan) ng programa.

Matryoshka C. Layered program language system

Nakakagulat na ang pagmuni-muni ay nangyayari nang napakasimple - na may dalawang uri lamang ng mga expression.

Gayunpaman, ang modernong paglalarawan ng wikang C (mula 1978) ay hindi naglalaman ng sapat na listahan ng mga pangalan upang ilarawan ang wika sa pangkalahatan, o para sa gawaing pagninilay sa partikular. Samakatuwid, napipilitan kaming maging malikhain at ipakilala ang mga pangalang ito.

Ang pagpili ng mga salita ay dapat na tumpak at malinaw. Nangangailangan ito ng isang espesyal na diskarte, maikling ipinahayag tulad ng sumusunod: mahigpit na paggamit ng katutubong wika. Para sa Ingles ito ay magiging Ingles, ngunit hindi kami Ingles. Kaya gagamitin namin ang mayroon kami at susubukan naming magsalita ng Russian.

Ang pagninilay ay ginaganap sa pamamagitan ng dalawang uri ng mga ekspresyon:

  1. pagkalkula (HF) - sumasalamin sa pagbabago sa mga katangian ng isang bagay. Ang pag-aari ng isang bagay ay ipinahayag ng isang numero, pagkatapos ang isang aksyon sa isang ari-arian ay isang aksyon sa isang numero - isang operasyon.
  2. pagpapailalim (Pch) - nagpapakita ng pagbabago sa pagkakasunud-sunod ng mga aksyon. Ang prototype ng Pch ay isang speech complex na pangungusap, samakatuwid ang karamihan sa mga uri ng Pch ay nagsisimula sa mga subordinating conjunction na "kung", "kung hindi", "habang", "para". Ang iba pang mga uri ng PC ay umaakma sa kanila.

Sa pamamagitan ng paraan, maaari ka bang maniwala na sa paglalarawan ng C ay walang pangalan para sa mga expression ng pagkalkula - tinatawag lamang silang "mga expression"? Pagkatapos nito, hindi na kataka-taka na walang pangalan at asosasyon para sa uri ng subordination, at sa katunayan ang kakulangan ng mga pangalan, kahulugan at generalizations sa pangkalahatan. Ito ay dahil ang sikat na K/R (β€œThe C Language”, Kernighan/Ritchie, 1978) ay hindi isang paglalarawan, ngunit isang gabay sa paggamit ng wika.

Gayunpaman, nais ko pa ring magkaroon ng paglalarawan ng wika. Samakatuwid siya ay inaalok Layered program language system.

3. KABANATA 2. Layer system. Maikling C

Ang anumang paglalarawan ay dapat na tumpak at lubos na maigsi. Sa kaso ng isang wika ng programa, ang isang pangharap na paglalarawan ay mahirap.

Dito tayo may programa. Binubuo ito ng mga module. Ang mga module ay binubuo ng mga subroutine at koleksyon (istraktura). Ang mga subroutine ay binubuo ng mga indibidwal na expression: deklarasyon, kalkulasyon, subordination. Mayroong kasing dami ng sampung uri ng subordination. Ang subordination ay nag-uugnay sa mga sublevel at subroutine. Mayroon ding ilang mga patalastas. Gayunpaman, ang mga deklarasyon ay kasama hindi lamang sa mga subroutine at sublevel, kundi pati na rin sa mga module at koleksyon. At karamihan sa mga ekspresyon ay binubuo ng mga salita na napakahirap ilarawan na kadalasang ibinibigay lamang sa dalawang listahan - orihinal at hinangong mga salita, na magiging pamilyar ka sa buong pag-aaral at paggamit ng wika. Magdagdag tayo ng mga punctuation mark at ilang iba pang expression dito.

Sa gayong pagtatanghal, hindi madaling maunawaan kung sino ang tumayo kung kanino.

Ang isang direktang hierarchical na diskarte sa paglalarawan ng isang wika ay magiging sobrang kumplikado. Ang isang roundabout na paghahanap ay humahantong sa isang paglalarawan ng wika batay sa likas na katangian ng pagsasalita at panig ng utos nito. Kaya, ipinanganak ang Layer System, na bahagyang kasabay ng Periodic System ng Mendeleev, na sapin. Dahil ito ay naging 42 taon pagkatapos ng paglalathala nito (1869), ang periodicity ng system ay nauugnay sa electronic mga layer (1911, Bohr-Rutherford na modelo ng atom). Gayundin, ang Layered at Periodic system ay magkatulad sa tabular na pag-aayos ng lahat ng unit sa isang pahina.

Ang paglalarawan ng mga yunit ng wika ay maikli - 10 mga uri lamang ng mga expression at 8 mga uri ng iba pang mga yunit, pati na rin ang makabuluhan at visual. Kahit na hindi karaniwan para sa unang kakilala.

Ang mga yunit ng wika ay nahahati sa 6 na antas:

  1. mga yunit - mga hilera ng talahanayan
  2. mga departamento - mga espesyal na grupo ng genera (mga bahagi ng unang linya)
  3. genus - mga cell (pangunahing antas ng paghahati)
  4. superspecies - mga separator ng species (bihirang antas)
  5. mga uri - mga formula ng yunit sa ibaba ng cell o hiwalay
  6. pattern - ang mga yunit mismo (para sa mga salita lamang)

Inilalarawan ng mga halimbawang salita diksiyonaryo - isang hiwalay na subsystem na binubuo ng parehong anim na antas.

Ang bahagi ng pananalita ng wikang C ay medyo halata, bagama't nararapat pa rin itong paglalarawan. Ngunit ang command na bahagi ng wika ay tiyak na nauugnay sa compilation control, kung saan nilikha ang ikatlong uri ng programa - command. Narito tayo sa pinakakapana-panabik na aspeto ng wikang C: kagandahan.

4. SUMUSUNOD SA MGA KABANATA. Gwapo Si

Ang wikang C ay ang batayan ng modernong programming. Bakit? Una, dahil sa pinakadakilang sulat sa pagsasalita. Pangalawa, dahil maganda nitong nalampasan ang mga limitasyon ng pagpoproseso ng numero ng makina.

Ano nga ba ang iminungkahi ni Xi? Larawan at layer.

Ang salitang "imahe" ay isang pagsasalin ng salitang Ingles na "uri", na nagmula sa Griyegong "prototype" - "uri". Sa wikang Ruso, ang salitang "uri" ay hindi nagpapahiwatig ng pundasyon ng konsepto na ipinahayag; bukod dito, nalilito ito sa pantulong na nangangahulugang "uri".

Sa una, nalutas ng imahe ang isang purong problema sa pagkalkula ng makina, at pagkatapos ay naging isang runway para sa pagsilang ng mga object na wika.

Ang layer ay agad na nalutas ang ilang mga problema - parehong makina at inilapat. Samakatuwid, ang pagsasaalang-alang ay magsisimula sa isang solong gawaing larawan at magpapatuloy sa isang multi-task na layer.

Ang isa sa mga hindi kasiya-siyang tampok ng makasaysayang programming ay ang karamihan sa mga konsepto, kabilang ang mga pangunahing, ay ibinibigay nang walang mga kahulugan. "Ang programming language (pangalan ng mga ilog) ay may mga uri ng integer at lumulutang na numero..." at sila ay kumamot pa. Hindi kinakailangang tukuyin kung ano ang isang "uri" (larawan), dahil ang mga may-akda mismo ay hindi lubos na nauunawaan ito at patahimikin ito "para sa kapakanan ng kalinawan." Kung sila ay naka-pin sa pader, sila ay magbibigay ng isang malabo at walang kwentang kahulugan. Malaki ang naitutulong upang magtago sa likod ng mga salitang banyaga: para sa mga may-akda ng Ruso - sa likod ng Ingles (uri), para sa mga Ingles - sa likod ng Pranses (subroutine), Griyego (polymorphism), Latin (encapsulation) o ang kanilang mga kumbinasyon (ad-hoc polymorphism).

Ngunit hindi ito ang ating kapalaran. Ang aming pinili ay mga kahulugan na may nakataas na visor sa purong Russian.

Larawan

Larawan ay isang prefigurative na pangalan ng isang dami, na tumutukoy sa 1) ang mga intrinsic na katangian ng dami at 2) ang pagpili ng mga operasyon para sa dami.

Ang salitang "uri" (uri) ay tumutugma sa unang bahagi ng kahulugan: "mga intrinsic na katangian ng isang dami." Ngunit ang pangunahing kahulugan ng imahe ay nasa pangalawang bahagi: "pagpili ng mga operasyon sa dami."

Ang panimulang punto para sa pagpapakilala ng isang imahe sa C ay isang normal na pagkalkula, tulad ng pagpapatakbo ng karagdagan.

Papel Ang matematika, nakasulat man sa kamay o nakalimbag, ay hindi gumagawa ng malaking pagkakaiba sa pagitan ng mga uri ng mga numero, kadalasang ipinapalagay na ang mga ito ay totoo. Samakatuwid, ang kanilang mga operasyon sa pagproseso ay hindi malabo.

Machine Mahigpit na hinahati ng matematika ang mga numero sa mga integer at fraction. Ang iba't ibang uri ng mga numero ay iniimbak nang iba sa memorya at pinoproseso ng iba't ibang mga tagubilin ng processor. Halimbawa, ang mga tagubilin para sa pagdaragdag ng mga integer at fraction ay dalawang magkaibang mga tagubilin na tumutugma sa dalawang magkaibang mga node ng processor. Ngunit walang utos para sa pagdaragdag ng integer at fractional na mga argumento.

Inilapat Ang matematika, iyon ay, ang wikang C, ay naghihiwalay sa mga uri ng mga numero, ngunit pinagsasama ang mga operasyon: ang karagdagan para sa mga integer at/o mga fraction ay isinusulat na may isang action sign.

Ang isang malinaw na kahulugan ng imahe ng konsepto ay nagbibigay-daan sa amin na tiyak na pag-usapan ang tungkol sa dalawang iba pang mga konsepto: halaga ΠΈ operasyon.

Magnitude at operasyon

Halaga β€” ang numerong pinoproseso.

Operasyon β€” pagproseso ng mga halaga ng mga paunang halaga (mga argumento) upang makuha ang panghuling numero (kabuuan).

Ang magnitude at operasyon ay magkakaugnay. Ang bawat operasyon ay isang dami dahil ito ay may numerical na resulta. At ang bawat halaga ay ang resulta ng paglilipat ng isang halaga sa/mula sa rehistro ng processor, iyon ay, ang resulta ng operasyon. Sa kabila ng relasyong ito, ang pangunahing bagay ay ang posibilidad ng kanilang hiwalay na paglalarawan, kahit na may pag-uulit ng isang salita sa iba't ibang seksyon ng diksyunaryo, na kung ano ang nangyayari sa MA3.

Hinati ng diskarte sa makina ang lahat ng mga numero na ginamit ng programmer sa mga koponan ΠΈ data. Noong nakaraan, pareho ang mga ito ay mga numero, halimbawa, ang mga utos ay nakasulat sa mga numerong code. Gayunpaman, sa mga inilapat na wika, ang mga utos ay hindi na bilang mga numero at naging sa mga salita ΠΈ mga palatandaan ng pagkilos. Tanging ang "data" ay nananatiling bilang mga numero, ngunit ito ay walang katotohanan na patuloy na tawagin ang mga ito sa ganoong paraan, dahil sa paglipat mula sa isang makina patungo sa isang matematikal na pananaw, ang mga numero ay mga dami na hinati sa orihinal (data) at pangwakas (kailangan). Ang "Hindi kilalang datum" ay magiging katangahan.

Ang mga koponan ay nahahati din sa dalawang uri ng mga aksyon: matematika at serbisyo. Mga aksyon sa matematika - mga operasyon. Pupunta tayo sa opisyal na bagay mamaya.

Sa mga wikang C, ang karaniwang papel at makina na hindi malabo, o iisa, ang mga pagpapatakbong matematika ay halos lahat ay nagiging maramihan.

Ang maramihang mga operasyon ay ilang mga pagpapatakbo ng parehong pangalan na may iba't ibang uri ng mga argumento at magkaiba, katulad ng kahulugan, mga aksyon.

Ang mga integer na argumento ay tumutugma sa isang buong operasyon, at ang mga fractional na argumento ay tumutugma sa isang fractional na operasyon. Ang pagkakaibang ito ay lalong malinaw sa panahon ng operasyon ng paghahati, kapag ang expression na 1/2 ay nagbibigay ng kabuuang 0, hindi 0,5. Ang nasabing notasyon ay hindi tumutugma sa mga patakaran ng matematika sa papel, ngunit ang wikang C ay hindi nagsusumikap na sumunod sa kanila (hindi katulad ng Fortran) - ito ay gumaganap ayon sa sarili nitong inilapat mga tuntunin.

Sa kaso ng paghahalo ng mga integer at fraction, ang tanging tama ay kasama paghahagis ng mga halaga ng argumento β€” pumipili na pagbabago ng isang halaga mula sa isang imahe patungo sa isa pa. Sa katunayan, kapag nagdaragdag ng isang integer at isang fractional na numero, ang resulta ay fractional, kaya ang imahe ng operasyon kumukuha ang operasyon ng pag-convert ng isang integer argument sa isang fractional na halaga.

Ang ilang mga operasyon ay nananatili maramihanAt walang asawa. Ang ganitong mga operasyon ay tinukoy lamang para sa isang uri ng mga argumento: division remainder - integer arguments, stacking (bitwise operations) - natural integers. Ang Ma3 ay nagpapahiwatig ng multiplicity ng mga operasyon na may mga palatandaan (#^) na nagpapahiwatig ng mga imahe kung saan tinukoy ang operasyon. Ito ay isang mahalaga ngunit dati nang hindi napapansin na pag-aari ng bawat operasyon.

Ang lahat ng mga function ay arbitrary unit operations. Ang pagbubukod ay ang mga operator - mga function na hindi bracket, nakapaloob sa wika (mga orihinal na operasyon).

Tulong

Tulong - aksyon na kasama ng operasyon.

Kung isasaalang-alang namin ang operasyon bilang pangunahing aksyon, maaari naming makilala ang dalawang kasamang nagbibigay ng operasyon at naiiba mula dito. Ito ay 1) variable control at 2) subordination. Ang pagkilos na ito ay tinatawag na tulong.

Dito kailangan nating lumihis at sabihin nang hiwalay ang tungkol sa mga pagsasalin ng Ruso ng mga aklat-aralin sa programming. Isang bagong salita ang ipinakilala sa teksto ng K/R para magtala ng mga aksyon pahayag (expression), na nagtangkang hatiin ang mga konsepto ng utos ng makina sa iba't ibang aksyon: 1) operasyon, 2) deklarasyon, at 3) subordination (tinatawag na "control constructs"). Ang pagtatangka na ito ay inilibing ng mga tagasalin ng Ruso, na pinapalitan ang "expression" ng salitang "operator", na:

  1. ay naging kasingkahulugan ng salitang makina na "utos",
  2. naging kasingkahulugan ng pariralang "tanda ng pagkilos",
  3. at nakatanggap din ng walang limitasyong bilang ng mga karagdagang halaga. Ibig sabihin, ito ay naging katulad ng artikulo sa Ingles na "uhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"

Isaalang-alang ang mga kasamang aksyon, o tulong.

Kontrol ng variable

Kontrol ng variable (UP) - paggawa/pagtanggal ng mga variable na cell.
Ang UE ay nangyayari nang tahasan kapag nagdedeklara ng isang variable, na nakasulat na para sa isa pang dahilan - upang ipahiwatig ang imahe ng halaga. Isang view lang ang tahasang pinamamahalaan karagdagang mga variable gamit ang malloc() at free() function.

Dapat pansinin na ang mga implicit na aksyon ay mas maginhawa para sa pagsulat, dahil hindi sila nangangailangan ng pagsulat ng anuman, ngunit mas mahirap silang maunawaan - mas mahirap silang isaalang-alang at bigyang-kahulugan.

Pagpapasakop

Pagpapasakop β€” kumonekta / huwag paganahin ang mga seksyon ng layer.

Ang wikang C ay nag-aalok ng isang inilapat na paraan ng pagkontrol sa pagkakasunud-sunod ng mga aksyon, naiiba sa assembler - subordination. Ito ay sumasalamin at bumuo ng isang speech complex na pangungusap na may malinaw na paghahati sa pangunahing bahagi (subordination clause) at ang subordinate na bahagi (sublevel/subroutine sections).

Ang parehong deklarasyon at pagsusumite ay ganap na binuo sa konsepto layer.

Layer

Layer ay isang limitadong single-level selective set ng mga expression.

Ang layer ay tahasan at tahasang gumawa ng ilang mga gawain nang sabay-sabay:

  1. pag-oorganisa ng programa
  2. nililimitahan ang visibility ng mga pangalan (implicitly),
  3. pamamahala ng mga variable (mga cell ng memorya) (implicit),
  4. kahulugan ng mga subordinate clause para sa subordination,
  5. mga kahulugan ng mga function at mga seleksyon at iba pa.

Walang konsepto ng layer sa mga wika ng makina, kaya hindi ito lumitaw sa K/R, at kung may isang bagay na wala, kung gayon ang pagpapakilala nito sa mga susunod na aklat ay magiging maling pananampalataya at malayang pag-iisip. Samakatuwid, ang konsepto ng isang layer ay hindi lumitaw sa lahat, bagaman ito ay lubhang kapaki-pakinabang at medyo halata.

Kung walang layer, imposibleng maikli at malinaw na ipaliwanag ang marami sa mga aksyon at panuntunan ng programa. Halimbawa, bakit ang goto ay kasing simple ng tatlong kopecks masama, at ang nakakalito habang ay mabuti. Maaari ka lamang magmura nang walang magawa, tulad ng ginawa ni Dijkstra (β€œang kakayahan ng mga programmer ay isang function na inversely depende sa dalas ng paglitaw ng mga goto statement sa kanilang mga programa.” Sa madaling salita, ang mga kambing lamang ang gumagamit ng goto. Ang antas ng pagbibigay-katwiran ay ang Diyos.) Totoo, hindi ito nakakatakot kung ang iyong mga libro Hindi namin kailangang ipaliwanag ang anumang bagay, ngunit, tulad ng nasabi na namin, hindi ito ang aming kapalaran.

Sa pamamagitan ng paraan, maaari itong ipagpalagay na iniwan ni Dan Ritchie ang goto bilang isang susi para sa paghahanap ng ilang hindi pinangalanang konsepto, dahil walang pangangailangan o kagandahan sa ekspresyong goto. Ngunit may pangangailangan para sa isang simple at naiintindihan na paliwanag ng mga bagong prinsipyo ng wika, na mismong si Richie ay hindi gustong magbigay, at kung saan ay tiyak na batay sa konsepto. layer.

paglihis

paglihis β€” pagpapalit ng mga karaniwang katangian ng bagong pangalan.

Ang pinakamahalagang paglihis ay tiyak na nauugnay sa mga katangian ng layer ng programa, at inilalarawan ng isang salitang "static", na may ibang kahulugan sa bawat uri ng layer.

5. ANG HULING KABANATA. Commonality ng mga inilapat na wika

Ang mga inilapat na wika ay matalinhaga mga wika (may larawan, "na-type"). Nakabatay ang mga ito sa tahasan o implicit na paggamit ng larawan. Bukod dito, dito muli lumilitaw ang isang kontradiksyon: ang isang tahasang imahe ay mas nauunawaan, ngunit hindi gaanong maginhawa, at kabaliktaran.

Matryoshka C. Layered program language system

(Ang layout ng talahanayan ay hindi pa naihatid, kaya ang talahanayan ay ipinapakita na may isang larawan.)

Pagkatapos ng C, ang pag-unlad ng mga inilapat na wika ay kinuha ang landas ng pagtaas ng kanilang figurativeness. Ang pinakamahalaga para sa pag-unawa sa mataas na imahe ay ang direktang inapo ng C - ang wikang C++. Binubuo niya ang ideya ng isang di-makatwirang pagpili ng mga operasyon para sa mga dami at isinasama ito sa batayan ng pagpili ng sintetikong expression, na tumatanggap ng isang bagong pangalan - bagay. Gayunpaman, ang C++ ay hindi kasing-ikli at kapahayagan ng C dahil sa sobrang karga ng mga bagong uri ng koleksyon at ang mga nauugnay na panuntunan nito. Sa pamamagitan ng paraan, pag-usapan natin ang tungkol sa "overload".

Overloading at polymorphism

Ang salitang "sobrang karga" ay isang hindi napapanahong termino para sa machine-learning para sa paglikha maramihang mga operasyon.

Mga programmer ng makina (system). maramihan Ang mga operasyon ay maaaring nakakainis: "Ano ang ibig sabihin ng sign (+) na ito: pagdaragdag ng mga integer, pagdaragdag ng mga fraction, o kahit na paglilipat?! Sa panahon natin hindi sila nagsusulat ng ganyan!" Kaya ang negatibong konotasyon ng napiling salita ("overkill", "pagod"). Para sa isang programmer ng application, maraming mga operasyon ang pundasyon, ang pangunahing tagumpay at legacy ng wikang C, kaya natural na ang mga ito ay madalas na hindi kinikilala.

Sa wikang C++ maramihan pinalawak hindi lamang sa mga orihinal na operasyon, kundi pati na rin sa mga pag-andar - parehong indibidwal at pinagsama sa mga klase - mga pamamaraan. Sa maraming pamamaraan, nagkaroon ng kakayahang i-override ang mga ito sa mga pinahabang klase, na malabo na tinatawag na "polymorphism." Ang kumbinasyon ng polymorphism at labis na karga ay gumawa ng isang paputok na halo na nahati sa dalawang polymorphism: "totoo" at "ad-hoc." Posible lamang itong maunawaan sa kabila ng mga nakatalagang pangalan. Ang daan patungo sa ad ay sementado ng mga banyagang pangalan.

Ang isang deklarasyon ng form na "overload" ay mas mahusay na ipinahayag sa salita karagdagang anunsyo β€” pagdaragdag ng deklarasyon ng isang function ng parehong pangalan na may mga argumento ng ibang larawan.

Ang isang deklarasyon ng form na "polymorphism" ay mas mahusay na tinatawag muling anunsyo β€” isang magkakapatong na deklarasyon sa isang bagong extension layer ng isang function ng parehong pangalan na may mga argumento ng parehong imahe.

Pagkatapos ay magiging madaling maunawaan na ang parehong mga pamamaraan ng iba't ibang mga imahe (mga argumento) - dagdag na inihayag, at isang larawan - muling inihayag.

Nagpasya ang mga salitang Ruso.

Runway

Ang pagsasaalang-alang sa mga konsepto ng mataas na matalinghagang wika ay nagpapatunay sa kahalagahan ng isang malinaw na kahulugan ng mga pangunahing konsepto. Sa tamang paglalarawan ng C, ang pag-aaral ng mga high-figurative na wika ay magiging madali at kasiya-siya.

Ito ay lalong mahalaga para sa implicit mataas na matalinghaga wika (PHP, JavaScript). Para sa kanila, ang kahalagahan ng mga bagay (composite images) ay nagiging mas mataas kaysa sa C++, ngunit ang mismong konsepto ng isang imahe ay nagiging implicit at mailap. Mula sa punto ng view ng kaginhawahan, sila ay naging mas simple, ngunit mula sa punto ng view ng pag-unawa, sila ay naging mas mahirap.

Samakatuwid, dapat mong simulan ang pag-aaral ng mga programming language gamit ang C language at lumipat pa sa pagkakasunud-sunod kung saan lumilitaw ang mga wika ng pamilya C.

Ganoon din sa paglalarawan ng mga wika. Ang iba't ibang wika ay may pareho, o mas maliit, na hanay ng mga kasarian ng yunit kaysa sa wikang C. Maaaring mag-iba ang bilang ng mga uri at sample sa parehong direksyon: Ang C++ ay may mas maraming uri kaysa sa C, habang mas kaunti ang JavaScript.

Ang wikang MySQL ay nararapat na espesyal na banggitin. Tila walang karaniwan, ngunit perpektong inilarawan siya ni Matryoshka, at ang pagkilala sa kanya ay nagiging mas mabilis at mas madali. Alin ang mahalaga, dahil sa kahalagahan nito para sa web - ang dining road ng modernong programming. At kung saan mayroong MySQL, mayroong iba pang mga SQL. Well, lahat ng uri ng Fortran-Pascal-Pythons ay inilarawan din ni Matryoshka, sa sandaling makuha nila ang kanilang mga kamay dito.

Kaya, naghihintay sa amin ang magagandang bagay - isang inilapat na paglalarawan ng wikang C at isang pinag-isang paglalarawan ng mga wikang sumusunod dito. "Ang aming mga layunin ay malinaw, ang aming mga gawain ay tinukoy. Magtrabaho, mga kasama! (Mabagyo, matagal na palakpakan, nagiging ovation. Lahat ay tumayo.)"

Ang iyong mga opinyon ay pakikinggan nang may malaking pansin, ang iyong tulong sa paglikha ng nesting dolls website ay matatanggap nang may malaking pasasalamat. Ang mas kumpletong impormasyon tungkol sa aklat ay nasa website, matalinong nakatago sa Matryoshka C.

Pinagmulan: www.habr.com

Magdagdag ng komento