Matryoshka C. Layered program lus system

Cia peb sim xav txog chemistry yam tsis muaj Mendeleev's Periodic Table (1869). Muaj pes tsawg lub ntsiab lus yuav tsum tau khaws cia hauv siab, thiab tsis muaj kev txiav txim tshwj xeeb ... (Tom qab ntawd - 60.)

Txhawm rau ua qhov no, tsuas yog xav txog ib lossis ob peb hom lus programming ib zaug. Tib txoj kev xav, tib yam muaj tswv yim chaos.

Thiab tam sim no peb tuaj yeem rov ua lub siab xav ntawm xyoo pua XNUMXth chemists thaum lawv tau muab tag nrho lawv cov kev paub, thiab me ntsis ntxiv, hauv ib Lub Sijhawm Teem Sijhawm.

Matryoshka C. Layered program lus system


Phau ntawv "Matryoshka C. Cov txheej txheem txheej txheem ntawm hom lus" nthuav qhia tag nrho cov chav ntawm C hom lus ntawm ib sab. Qhov no tso cai rau koj los npaj lawv, kho cov ntaub ntawv tsis tu ncua, thiab tseem qhia meej txog lub tswv yim ntawm qhov program.

Niaj hnub no, cov ntaub ntawv programming xav tau systematization txawm ntau dua li cov khoom siv tshuaj tau ua 150 xyoo dhau los.

Thawj qhov tsim nyog yog kev qhia. Mendeleev pib tsim nws lub cev thaum nws ntsib cov lus nug ntawm lub ntsiab lus twg yuav pib qhia nrog: O, H, N, Nws, Au ... Tib lub sijhawm, nws yooj yim dua rau nws - nws qhia chemistry rau qhov zoo tshaj plaws - cov tub ntxhais kawm ntawm St. Petersburg University. Thiab qhov programming twb tau qhia hauv tsev kawm ntawv thiab yuav pib sai sai hauv kindergarten.

Qhov thib ob xav tau yog ib txoj kev tshawb fawb. Nrog kev pab los ntawm Lub Sijhawm Table, cov ntsiab lus tshiab tau tshawb pom thiab cov ntaub ntawv hais txog cov qub raug kho. Nws pab tsim tus qauv ntawm lub atom (1911). Thiab li ntawd.

Qhov thib peb xav tau yog kom meej meej lub tswvyim ntawm ib qho kev pab cuam.

Niaj hnub nimno programming muaj ib tug ko taw daig nyob rau hauv lub 50s ntawm lub xyoo pua XNUMXth. Rov qab thaum ntawd, cov kev pab cuam tau yooj yim, tab sis tshuab thiab tshuab lus tau nyuaj, yog li txhua yam hloov pauv ntawm cov tshuab thiab hom lus.

Tam sim no txhua yam yog lwm txoj hauv kev: cov kev pab cuam yog complex thiab thawj, cov lus yooj yim thiab theem nrab. Qhov no yog hu ua txoj kev thov, uas txhua tus zoo li paub txog. Tab sis cov tub ntxhais kawm thiab cov neeg tsim khoom txuas ntxiv ntseeg tias txhua yam zoo ib yam.

Uas coj peb rov qab mus rau thawj zaj lus qhia ntawm Privatdozen Mendeleev. Yuav qhia dab tsi rau freshmen? Qhov tseeb nyob qhov twg? Qhov ntawd yog lo lus nug.

Phau ntawv "Matryoshka C" muab nws cov lus teb rau lo lus nug no. Layered system ntawm program lus". Tsis tas li ntawd, nws yog hais txog tsis yog rau cov tub ntxhais kawm nkaus xwb, tab sis kuj rau cov neeg kawm tiav programmers, vim nws yog lawv, uas yog, peb, uas yuav tsum nrhiav qhov tseeb thiab hloov lub ntiaj teb kev xav.

Dab tsi hauv qab no yog cov ntsiab lus ntawm phau ntawv.

1. Taw qhia

Xyoo 1969, cov lus C tau tsim, uas tau dhau los ua cov lus programming tseem ceeb thiab tseem nyob li ntawd rau 50 xyoo. Vim li cas qhov no? Ua ntej tshaj plaws, vim C yog thov hom lus uas muab qhov kev pab cuam tib neeg saib xwb tshuab. Qhov kev ua tiav no tau ruaj ntseg los ntawm cov lus los ntawm tsev neeg C: C ++, JavaScript, PHP, Java, C# thiab lwm yam. Qhov thib ob, nws yog lus luv thiab zoo nkauj.

Txawm li cas los xij, cov lus C nws tus kheej feem ntau yog tov nrog lub tshuab dhos, yog li ua rau nyuaj thiab cuam tshuam nws txoj kev xav. Lwm qhov tsis txaus ntseeg yog qhov kev txiav txim siab ntawm qee qhov "philosophy" rau cov lus: txheej txheem, khoom, ua haujlwm, sau ua ke, txhais, ntaus ntawv, thiab lwm yam. Qhov no ntxiv kev xav, tab sis tsis pab piav cov lus zoo dua.

Qhov tseeb yog nyob rau hauv nruab nrab, thiab rau cov lus C nws yog nruj me ntsis nyob rau hauv nruab nrab ntawm philosophical thiab tshuab xaav.

Cov lus C tsis yog ywj pheej, nws ua raws li cov lus sau yooj yim, thiab tib lub sijhawm nws tswj cov lus sib dhos nws tus kheej. Txoj hauj lwm no piav qhia Hais lus qauv ntawm qhov kev pab cuam, raws li qhov kev pab cuam muab faib ua peb subordinate hom: hais lus, code, hais kom ua. Cov lus C yog lub luag haujlwm rau qhov thib ob, hom code.

Tau txiav txim siab qhov chaw ntawm cov lus hauv qhov program, koj tuaj yeem npaj cov ntaub ntawv hais txog nws, uas ua rau Layered program lus system, sawv cev rau C lus nyob rau hauv tus ntsuj plig ntawm lub sij hawm system - ntawm ib nplooj ntawv.

Lub system yog tsim los rau hauv tus account cov zej zog ntawm cov lus siv, tshwm sim los ntawm lawv cov lus subordination. Ib txheej ntawm Matryoshka C units tso cai rau koj los piav qhia thiab sib piv cov lus sib txawv, tsim kom muaj cov Matryoshkas: C ++, PHP, JavaScript, C#, MySQL, Python thiab lwm yam. Nws yog qhov tsim nyog thiab muaj tseeb tias cov lus sib txawv tau piav qhia los ntawm cov lus ntawm cov lus tseem ceeb.

2. QHOV 1. Hais lus qauv ntawm qhov kev pab cuam. Clear C

Thawj tshooj nthuav tawm hais lus qauv ntawm qhov kev pab cuam, xav txog ib txoj hauv kev siv. Raws li nws, qhov kev zov me nyuam muaj peb yam pom tseeb ua ntu zus:

  1. hais lus - hais ncaj qha ntawm tus programmer daws qhov teeb meem,
  2. coded - encoding ib qho kev daws rau hauv daim ntawv lej hauv C (lossis lwm yam)
  3. thiab hais kom ua - direct machine commands.

Tus qauv hais lus piav qhia vim li cas C yog hom lus yooj yim thiab nkag siab. Xi yog tsim nyob rau hauv daim duab thiab zoo li tib neeg hais lus uas peb paub.

Thawj hom kev pab cuam yog hais ncaj qha ntawm tus programmer. Kev hais lus sib haum rau tib neeg txoj kev xav. Pib programmers sau cov kev pab cuam siv kev hais lus - thawj zaug hauv Lavxias, tom qab ntawd ib kauj ruam los ntawm kev txhais cov lus ua rau hauv cov lus code. Thiab nws yog qhov tseeb ntawm tus qauv no uas tau tsim hom lus C.

Tus programmer cov lus xaus, hais hauv kev hais lus, raug hloov mus rau hauv daim ntawv sau tus lej. Qhov kev hloov pauv no yuav tsum raug hu ua xav txog, txij li thaum hais lus thiab kev cai muaj tib yam xwm txheej (xav txog - yug - poj niam txiv neej). Qhov no yog qhov pom tseeb heev yog tias peb piv cov lus hais (sab laug) thiab cov lej (ntawm sab xis) hom kev pab cuam.

Matryoshka C. Layered program lus system

Nws yog xav paub tias kev xav tshwm sim yooj yim heev - nrog tsuas yog ob hom kab lus.

Txawm li cas los xij, cov lus piav qhia niaj hnub no ntawm cov lus C (los ntawm 1978) tsis muaj cov npe txaus los piav qhia cov lus dav dav, lossis rau kev xav txog kev ua haujlwm tshwj xeeb. Yog li ntawd, peb raug yuam kom muaj tswv yim thiab qhia cov npe no.

Kev xaiv cov lus yuav tsum meej thiab meej. Qhov no yuav tsum tau ib txoj hauv kev tshwj xeeb, luv luv qhia raws li hauv qab no: nruj siv hom lus. Rau cov lus Askiv nws yuav yog lus Askiv, tab sis peb tsis yog lus Askiv. Yog li peb yuav siv yam peb muaj thiab sim hais lus Lavxias.

Reflection yog ua los ntawm ob hom kab lus:

  1. xam (HF) - qhia txog kev hloov pauv ntawm cov khoom ntawm ib yam khoom. Cov cuab yeej ntawm ib qho khoom raug nthuav tawm los ntawm tus lej, tom qab ntawd qhov kev txiav txim ntawm cov cuab yeej yog kev ua ntawm tus lej - kev ua haujlwm.
  2. subordination (Pch) - qhia txog kev hloov pauv ntawm qhov kev txiav txim. Tus qauv ntawm Pch yog ib kab lus nyuaj, yog li feem ntau hom Pch pib nrog subordinating conjunctions "yog", "lwm", "thaum", "rau". Lwm hom PCs ntxiv rau lawv.

Los ntawm txoj kev, koj puas ntseeg tau tias hauv C piav qhia tsis muaj lub npe rau kev suav cov lus - lawv tsuas yog hu ua "kev nthuav qhia"? Tom qab qhov no, nws yuav tsis xav tsis thoob tias tsis muaj lub npe thiab kev koom tes rau hom subordination, thiab qhov tseeb ntawm cov npe, cov ntsiab lus thiab cov ntsiab lus dav dav. Qhov no yog vim lub npe nrov K/R ("C Language", Kernighan / Ritchie, 1978) tsis yog ib qho kev piav qhia, tab sis yog ib qho kev qhia siv hom lus.

Txawm li cas los xij, kuv tseem xav kom muaj cov lus piav qhia. Yog li ntawd nws yog muab Layered program lus system.

3. Tshooj 2. Txheej txheej txheej. Luv luv C

Cov lus piav qhia yuav tsum yog qhov tseeb thiab tsis tshua meej. Nyob rau hauv cov ntaub ntawv ntawm ib tug programming lus, ib tug frontal piav qhia yog nyuaj.

Ntawm no peb muaj ib qho program. Nws muaj cov modules. Modules muaj subroutines thiab collections (structure). Subroutines muaj xws li ib tug neeg qhia: tshaj tawm, xam, subordination. Muaj ntau li kaum hom subordination. Subordination txuas sublevels thiab subroutines. Kuj tseem muaj ntau qhov kev tshaj tawm. Txawm li cas los xij, cov lus tshaj tawm suav nrog tsis yog nyob rau hauv subroutines thiab sublevels, tab sis kuj nyob rau hauv modules thiab collections. Thiab feem ntau cov kab lus muaj cov lus uas nyuaj heev los piav qhia tias lawv feem ntau tsuas yog muab rau hauv ob lub npe - cov lus qub thiab muab los, uas koj yuav paub txog thoob plaws hauv kev kawm thiab siv cov lus. Cia peb ntxiv cov cim cim thiab ntau lwm cov kab lus rau qhov no.

Hauv kev nthuav qhia zoo li no, nws tsis yooj yim to taub tias leej twg sawv ntawm leej twg.

Ib txoj hauv kev ncaj qha hierarchical los piav txog ib hom lus yuav nyuaj heev. Kev tshawb nrhiav roundabout ua rau kev piav qhia ntawm cov lus raws li nws qhov kev hais lus thiab kev hais kom ua. Yog li, Txheej Txheej Txheej Txheem tau yug los, ib nrab coinciding nrog Periodic System ntawm Mendeleev, uas kuj yog. ply. Raws li nws muab tawm 42 xyoo tom qab nws luam tawm (1869), lub sij hawm ntawm lub system yog txuam nrog hluav taws xob. txheej (1911, Bohr-Rutherford qauv ntawm lub atom). Tsis tas li ntawd, Cov Txheej Txheem Txheej Txheem thiab Lub Sijhawm Sijhawm zoo sib xws hauv kev npaj ntawm txhua chav nyob ntawm ib nplooj ntawv.

Cov lus piav qhia ntawm cov chav nyob yog luv luv - tsuas yog 10 hom kab lus thiab 8 hom ntawm lwm chav, nrog rau cov ntsiab lus thiab pom. Txawm hais tias txawv txawv rau thawj tus neeg paub.

Cov chav kawm lus tau muab faib ua 6 qib:

  1. units - kab lus
  2. departments - cov pab pawg tshwj xeeb ntawm genera (qhov chaw ntawm thawj kab)
  3. genus - hlwb (theem loj ntawm kev faib)
  4. superspecies - hom cais (qib tsis tshua muaj)
  5. hom - unit formulas nyob rau hauv qab ntawm lub cell los yog nyias
  6. qauv - cov units lawv tus kheej (rau cov lus xwb)

Cov lus piv txwv piav qhia lus paub - cais subsystem ua los ntawm tib rau qib.

Cov lus hais ntawm C hom lus yog qhov pom tseeb, txawm hais tias nws tseem tsim nyog piav qhia. Tab sis qhov hais kom ua ib feem ntawm cov lus yog precisely hais txog kev muab tso ua ke tswj, thaum lub sij hawm uas peb hom kev pab cuam yog tsim - hais kom ua. Ntawm no peb tuaj rau qhov zoo siab tshaj plaws ntawm C lus: kev zoo nkauj.

4. QHOV TSEEB. Zoo kawg Si

Cov lus C yog lub hauv paus ntawm kev ua haujlwm niaj hnub no. Vim li cas? Firstly, vim yog qhov loj tshaj correspondence rau hais lus. Thib ob, vim tias nws zoo nkauj dhau qhov kev txwv ntawm kev ua haujlwm ntawm lub tshuab.

Xi tau hais li cas tiag? Duab thiab txheej.

Lo lus "duab" yog txhais lus Askiv lo lus "hom", uas los ntawm Greek "prototype" - "type". Nyob rau hauv Lavxias teb sab lus, lo lus "hom" tsis qhia lub hauv paus ntsiab lus ntawm lub tswv yim qhia; ntxiv mus, nws yog tsis meej pem nrog lub ntsiab lus pab "hom".

Thaum xub thawj, daim duab tau daws qhov teeb meem ntawm lub tshuab xam zauv, thiab tom qab ntawd dhau los ua ib txoj hauv kev rau kev yug ntawm hom lus.

Cov txheej tam sim ntawd daws tau ntau yam teeb meem - ob qho tib si tshuab thiab siv. Yog li ntawd, qhov kev txiav txim siab yuav pib nrog ib daim duab ua haujlwm thiab txav mus rau ntau txheej txheej.

Ib qho ntawm cov yam ntxwv tsis zoo ntawm kev ua haujlwm keeb kwm yog tias feem ntau cov ntsiab lus, suav nrog cov ntsiab lus yooj yim, tau muab yam tsis muaj kev txhais. "Cov lus programming (lub npe ntawm cov dej ntws) muaj cov lej thiab cov lej ntab ..." thiab lawv khawb ntxiv. Nws tsis yog qhov tsim nyog los txhais tias "hom" (duab) yog dab tsi, vim tias cov neeg sau ntawv lawv tus kheej tsis nkag siab qhov no thiab yuav ua rau nws "rau qhov pom tseeb." Yog tias lawv tau pinned rau phab ntsa, lawv yuav muab qhov tsis meej thiab tsis muaj txiaj ntsig txhais. Nws pab ntau kom nkaum qab cov lus txawv teb chaws: rau cov neeg sau ntawv Lavxias - qab lus Askiv (hom), rau cov neeg Askiv - qab Fabkis (subroutine), Greek (polymorphism), Latin (encapsulation) lossis lawv cov kev sib txuas (ad-hoc polymorphism).

Tab sis qhov no tsis yog peb txoj hmoo. Peb qhov kev xaiv yog cov lus txhais nrog lub visor tsa hauv cov lus Lavxias.

Duab

Duab yog lub npe prefigurative ntawm ib tug kom muaj nuj nqis, txhais tau tias 1) lub intrinsic zog ntawm tus kom muaj nuj nqis thiab 2) xaiv kev khiav hauj lwm rau qhov ntau.

Lo lus "hom" (hom) sib raug rau thawj feem ntawm lub ntsiab lus: "qhov khoom ntawm qhov ntau." Tab sis lub ntsiab lus tseem ceeb ntawm daim duab yog nyob rau hauv qhov thib ob: "kev xaiv ntawm kev ua haujlwm rau qhov ntau."

Qhov pib taw qhia rau kev qhia cov duab hauv C yog qhov kev suav ib txwm, xws li kev ua haujlwm ntxiv.

Ntawv Kev ua lej, txawm tias sau los ntawm tes lossis luam tawm, tsis muaj qhov sib txawv ntawm ntau hom lej, feem ntau xav tias lawv yog tiag tiag. Yog li ntawd, lawv cov kev ua haujlwm yog unambiguous.

Tshuab Kev ua lej nruj me ntsis faib cov lej rau hauv cov lej thiab feem. Cov lej sib txawv yog khaws cia sib txawv hauv lub cim xeeb thiab ua tiav los ntawm cov lus qhia sib txawv processor. Piv txwv li, cov lus qhia rau kev ntxiv cov lej thiab cov feem ntau yog ob qho kev qhia sib txawv uas sib raug rau ob qhov sib txawv processor nodes. Tab sis tsis muaj lus txib rau ntxiv cov lej thiab cov lus sib piv.

Siv tau lej, uas yog, hom C, cais cov lej, tab sis sib txuas ua haujlwm: ntxiv rau cov lej thiab/lossis feem feem yog sau nrog ib qho kev kos npe.

Lub ntsiab lus meej ntawm lub tswv yim duab tso cai rau peb los tham txog ob lub ntsiab lus: qhov loj ΠΈ kev ua haujlwm.

Magnitude thiab kev ua haujlwm

Magnitude - tus lej raug ua tiav.

Ua haujlwm - ua cov nqi ntawm cov nqi pib (cov lus sib cav) kom tau txais tus lej kawg (tag nrho).

Qhov loj thiab kev ua haujlwm yog sib cuam tshuam. Txhua qhov kev ua haujlwm yog qhov ntau vim tias nws muaj cov lej tshwm sim. Thiab txhua tus nqi yog qhov tshwm sim ntawm kev hloov pauv tus nqi mus rau / los ntawm tus processor sau npe, uas yog, qhov tshwm sim ntawm kev ua haujlwm. Txawm hais tias qhov kev sib raug zoo no, qhov tseem ceeb tshaj plaws yog qhov muaj peev xwm ntawm lawv cov lus piav qhia cais, txawm hais tias nrog kev rov ua dua ntawm ib lo lus hauv ntau ntu ntawm phau ntawv txhais lus, uas yog qhov tshwm sim hauv MA3.

Lub tshuab mus kom ze tau faib tag nrho cov lej siv los ntawm tus programmer rau hauv pab pawg ΠΈ cov ntaub ntawv. Yav dhau los, ob leeg ntawm lawv yog tus lej, piv txwv li, cov lus txib tau sau rau hauv cov lej lej. Txawm li cas los xij, hauv cov lus siv, cov lus txib tsis yog tus lej thiab tau los ua hauv cov lus ΠΈ cov cim qhia. Tsuas yog "cov ntaub ntawv" tseem yog tus lej, tab sis nws yog qhov tsis txaus ntseeg txuas ntxiv hu rau lawv li ntawd, vim tias nyob rau hauv kev hloov ntawm lub tshuab mus rau qhov kev xav ntawm lej, cov lej yog qhov ntau uas tau muab faib los ntawm tus thawj (cov ntaub ntawv) thiab kawg (xav tau). "Unknown datum" yuav suab ruam.

Cov pab pawg kuj tau muab faib ua ob hom kev ua: lej thiab kev pabcuam. Kev ua lej - kev ua haujlwm. Peb mam li mus rau cov khoom official tom qab.

Hauv cov lus C, cov ntawv ib txwm muaj thiab tshuab tsis pom tseeb, lossis ib leeg, kev ua lej yuav luag txhua lub ntiaj teb ua ntau yam.

Kev ua haujlwm ntau yam yog ntau yam haujlwm ntawm tib lub npe nrog ntau hom kev sib cav thiab sib txawv, zoo ib yam hauv lub ntsiab lus, kev ua.

Integer sib cav sib haum mus rau tag nrho cov hauj lwm, thiab fractional sib cav sib haum mus rau ib tug fractional ua hauj lwm. Qhov sib txawv no tshwj xeeb tshaj yog thaum lub sijhawm ua haujlwm faib, thaum cov lus qhia 1/2 muab tag nrho ntawm 0, tsis yog 0,5. Cov ntawv sau zoo li no tsis yog raws li cov cai ntawm kev ua lej, tab sis hom C tsis siv zog ua raws li lawv (tsis zoo li Fortran) - nws ua si raws li nws tus kheej. siv txoj cai.

Nyob rau hauv cov ntaub ntawv ntawm kev sib xyaw cov lej thiab cov feem, tsuas yog ib qho yog suav nrog casting qhov tseem ceeb - xaiv hloov pauv ntawm tus nqi ntawm ib daim duab mus rau lwm qhov. Tseeb tiag, thaum ntxiv cov lej thiab tus lej feem ntau, qhov tshwm sim yog fractional, yog li cov duab ntawm kev ua haujlwm khaws kev khiav hauj lwm ntawm converting ib tug integer sib cav mus rau ib tug fractional tus nqi.

Ib tug xov tooj ntawm cov haujlwm tseem nyob ntau tshajthiab tib leeg xwb. Cov hauj lwm zoo li no tsuas yog txhais tau rau ib hom kev sib cav: kev faib seem - cov lus sib piv, stacking (bitwise operations) - natural integers. Ma3 qhia txog ntau qhov kev ua haujlwm nrog cov paib (#^) qhia cov duab uas txhais tau tias kev ua haujlwm. Qhov no yog ib qho tseem ceeb tab sis yav tas los saib tsis tau cov cuab yeej ntawm txhua txoj haujlwm.

Tag nrho cov haujlwm yog kev ua haujlwm ntawm chav tsev arbitrary. Qhov kev zam yog cov neeg ua haujlwm - tsis-bracket functions, ua rau hauv cov lus (cov haujlwm qub).

Kev pab

Kev pab - kev nqis tes ua nrog kev ua haujlwm.

Yog tias peb xav txog qhov kev ua haujlwm yog qhov tseem ceeb, ces peb tuaj yeem paub qhov txawv ntawm ob qhov sib txawv uas muab kev ua haujlwm thiab txawv ntawm nws. Cov no yog 1) tswj kev sib txawv thiab 2) subordination. Qhov kev txiav txim no hu ua kev pab.

Ntawm no peb yuav tsum tau disgress thiab hais cais txog Lavxias teb sab translations programming phau ntawv. Ib lo lus tshiab tau qhia hauv cov ntawv ntawm K / R los sau cov haujlwm daim ntawv qhia (qhia), uas sim faib cov ntsiab lus ntawm lub tshuab hais kom ua ntau yam: 1) kev ua haujlwm, 2) tshaj tawm, thiab 3) subordination (hu ua "control constructs"). Qhov kev sim no tau faus los ntawm cov neeg txhais lus Lavxias, hloov "qhia" nrog lo lus "tus neeg ua haujlwm", uas:

  1. tau ua synonymous nrog lub tshuab lo lus "command",
  2. muab tau los ua synonymous nrog cov kab lus "kos npe ntawm kev nqis tes ua",
  3. thiab kuj tau txais ib qho kev txwv tsis pub muaj tus nqi ntxiv. Ntawd yog, nws tau hloov mus ua ib yam dab tsi zoo ib yam li lus Askiv "uhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

Xav txog cov kev nqis tes ua, lossis kev pab.

Kev tswj tsis sib xws

Kev tswj tsis sib xws (UP) - tsim / tshem tawm cov hlwb sib txawv.
UE tshwm sim implicitly thaum tshaj tawm qhov sib txawv, uas twb tau sau rau lwm qhov laj thawj - los qhia cov duab ntawm tus nqi. Tsuas yog ib qho kev pom tau meej meej tswj hwm ntxiv variable siv cov malloc() thiab free() ua haujlwm.

Nws yuav tsum raug sau tseg tias kev ua tsis ncaj ncees yog qhov yooj yim dua rau kev sau ntawv, vim lawv tsis tas yuav sau ib yam dab tsi, tab sis lawv nyuaj rau kev nkag siab ntau dua - lawv nyuaj rau kev txiav txim siab thiab txhais.

Kev Sib Tw

Kev Sib Tw - txuas / lov tes taw ntu ntu.

Cov lus C tau muab ib txoj hauv kev los tswj qhov kev txiav txim ntawm kev ua, txawv ntawm assembler - subordination. Nws qhia txog thiab tsim cov kab lus hais lus nyuaj nrog kev faib kom meej rau hauv qhov tseem ceeb (subordination clause) thiab subordinate part (sublevel/subroutine sections).

Ob qho kev tshaj tawm thiab kev xa tawm yog tsim los ntawm lub tswv yim txheej.

Txheej

Txheej yog ib qho txwv ib-theem xaiv cov kab lus.

Cov txheej txheem qhia meej thiab implicitly coj ob peb txoj haujlwm ib zaug:

  1. npaj qhov kev pab cuam
  2. txwv qhov pom ntawm cov npe (implicitly),
  3. tswj kev sib txawv (nco cov hlwb) (implicit),
  4. Cov ntsiab lus ntawm subordinate clauses rau subordination,
  5. txhais cov haujlwm thiab kev xaiv thiab lwm yam.

Tsis muaj lub tswv yim ntawm txheej hauv tshuab lus, yog li nws tsis tshwm sim hauv K / R, thiab yog tias tsis muaj ib yam dab tsi, tom qab ntawd qhia nws hauv cov phau ntawv tom ntej yuav yog kev ntseeg thiab kev xav. Yog li ntawd, lub tswv yim ntawm ib txheej tsis tshwm sim txhua, txawm hais tias nws yog qhov tseem ceeb heev thiab pom tseeb heev.

Yog tsis muaj ib txheej, nws yog tsis yooj yim sua kom luv luv thiab meej piav qhia ntau yam ntawm cov kev ua thiab kev cai ntawm qhov kev pab cuam. Piv txwv li, yog vim li cas yog goto yooj yim li peb kopecks phem, thiab lub dag thaum zoo. Koj tsuas tuaj yeem cog lus tsis muaj txiaj ntsig, zoo li Dijkstra tau ua ("cov txuj ci ntawm cov programmers yog qhov ua haujlwm uas cuam tshuam nyob ntawm qhov zaus ntawm qhov tshwm sim ntawm goto nqe lus hauv lawv cov kev pab cuam." Hauv luv luv, tsuas yog tshis siv goto. Qib ntawm kev ncaj ncees yog Vajtswv.) Muaj tseeb, qhov no tsis txaus ntshai yog tias koj phau ntawv Peb tsis tas yuav piav qhia txhua yam, tab sis, raws li peb tau hais lawm, qhov no tsis yog peb txoj hmoo.

Los ntawm txoj kev, nws tuaj yeem xav tias Dan Ritchie sab laug goto meej raws li tus yuam sij rau kev tshawb nrhiav qee lub tswv yim tsis muaj npe, vim tias tsis muaj kev xav tau lossis kev zoo nkauj hauv kev qhia goto. Tab sis muaj qhov xav tau kev piav qhia yooj yim thiab nkag siab ntawm cov ntsiab cai tshiab ntawm cov lus, uas Richie nws tus kheej tsis xav muab, thiab qhov uas yog raws li lub tswv yim. txheej.

Deviation

Deviation - hloov cov khoom ib txwm muaj ntawm lub npe tshiab.

Qhov sib txawv tseem ceeb tshaj plaws yog muaj feem xyuam nrog cov txheej txheem txheej txheem, thiab tau piav qhia los ntawm ib lo lus "static", uas muaj lub ntsiab lus sib txawv hauv txhua hom txheej.

5. QHOV TSEEB. Commonality ntawm cov lus siv

Applied languages ​​yog piv txwv hom lus (muaj cov duab, "typed"). Lawv ua raws li kev siv tsis meej lossis tsis meej ntawm daim duab. Ntxiv mus, ntawm no dua ib qho kev tsis sib haum xeeb tshwm sim: ib qho duab meej yog nkag siab ntau dua, tab sis yooj yim dua, thiab rov ua dua.

Matryoshka C. Layered program lus system

(Lub rooj layout tseem tsis tau muab xa tuaj, yog li lub rooj tau qhia nrog daim duab.)

Tom qab C, txoj kev loj hlob ntawm cov lus siv tau coj txoj hauv kev ntawm kev nce lawv cov figurativeness. Qhov tseem ceeb tshaj plaws rau kev nkag siab cov duab siab yog cov xeeb leej xeeb ntxwv ntawm C - C ++ lus. Nws tsim lub tswv yim ntawm kev xaiv arbitrary ntawm kev khiav hauj lwm rau ntau thiab embodies nws nyob rau hauv lub hauv paus ntawm lub synthetic qhia xaiv, uas tau txais ib tug tshiab lub npe - khoom. Txawm li cas los xij, C ++ tsis yog qhov tseeb thiab nthuav tawm raws li C vim muaj ntau dhau ntawm cov khoom sau tshiab thiab lawv cov kev cai cuam tshuam. Los ntawm txoj kev, cia peb tham txog "overload".

Overloading thiab polymorphism

Lo lus "overload" yog ib lo lus siv tshuab-kawm siv los tsim ntau yam kev ua haujlwm.

Tshuab (system) programmers ntau ntau Kev ua haujlwm tuaj yeem ua rau muaj kev ntxhov siab: "Qhov kos npe no (+) txhais li cas: ntxiv cov lej, ntxiv cov feem, lossis tseem hloov ?! Hauv peb lub sijhawm lawv tsis sau li ntawd!” Li no lub ntsiab lus tsis zoo ntawm lo lus xaiv ("overkill", "nyom"). Rau ib daim ntawv thov programmer, ntau yam kev ua haujlwm yog lub hauv paus, qhov kev ua tiav tseem ceeb thiab keeb kwm ntawm C hom lus, yog li ntuj tsim lawv feem ntau tsis lees paub.

Hauv C++ lus ntau ntau txuas ntxiv tsis yog rau cov haujlwm qub xwb, tab sis kuj rau kev ua haujlwm - ob leeg tus kheej thiab ua ke rau hauv cov chav kawm - txoj hauv kev. Nrog ntau txoj hauv kev tuaj yeem muaj peev xwm hla lawv hauv cov chav kawm txuas ntxiv, uas tau hu ua "polymorphism." Kev sib xyaw ua ke ntawm polymorphism thiab overload ua rau cov khoom tawg tawg ua rau ob lub polymorphisms: "tseeb" thiab "ad-hoc." Nws tuaj yeem nkag siab qhov no tsuas yog txawm tias cov npe tau raug xaiv. Txoj kev mus rau ad yog paved nrog txawv teb chaws npe.

Kev tshaj tawm ntawm daim ntawv "overload" yog zoo dua hais nyob rau hauv lo lus tshaj tawm ntxiv - ntxiv ib qho kev tshaj tawm ntawm kev ua haujlwm ntawm tib lub npe nrog kev sib cav ntawm cov duab sib txawv.

Kev tshaj tawm ntawm daim ntawv "polymorphism" yog hu ua zoo dua rov tshaj tawm - ib qho kev tshaj tawm sib tshooj hauv cov txheej txheem txuas ntxiv tshiab ntawm kev ua haujlwm ntawm tib lub npe nrog cov lus sib cav ntawm tib daim duab.

Tom qab ntawd nws yuav yooj yim to taub tias tib txoj kev ntawm cov duab sib txawv (kev sib cav) - tshaj tawm, thiab ib daim duab - rov tshaj tawm.

Cov lus Lavxias txiav txim siab.

Txoj kev khiav

Kev txiav txim siab ntawm cov ntsiab lus ntawm cov lus uas muaj txiaj ntsig zoo tau lees paub qhov tseem ceeb ntawm kev txhais lus meej ntawm cov ntsiab lus tseem ceeb. Nrog C tau piav qhia kom raug, kev kawm cov lus pom zoo yuav yooj yim thiab txaus siab.

Qhov no tseem ceeb tshwj xeeb rau implicit cov lus zoo heev (PHP, JavaScript). Rau lawv, qhov tseem ceeb ntawm cov khoom (cov duab sib xyaw) dhau los ua siab dua hauv C ++, tab sis lub tswv yim ntawm cov duab dhau los ua implicit thiab elusive. Los ntawm qhov pom ntawm qhov yooj yim, lawv tau dhau los ua qhov yooj yim dua, tab sis los ntawm qhov pom ntawm kev nkag siab, lawv tau dhau los ua nyuaj dua.

Yog li ntawd, koj yuav tsum pib kawm cov lus programming nrog cov lus C thiab txav mus ntxiv nyob rau hauv qhov kev txiav txim uas cov lus ntawm tsev neeg C tshwm.

Tib yam mus piav txog hom lus. Cov lus sib txawv muaj tib yam, lossis me dua, cov chav tsev ntawm cov poj niam txiv neej ntau dua li cov lus C. Tus naj npawb ntawm hom thiab cov qauv yuav txawv ntawm ob qho kev qhia: C ++ muaj ntau hom C, thaum JavaScript muaj tsawg dua.

Cov lus MySQL tsim nyog tau hais tshwj xeeb. Nws yuav zoo li tias tsis muaj dab tsi zoo sib xws, tab sis nws tau piav qhia zoo kawg nkaus los ntawm Matryoshka, thiab kev paub nws ua sai dua thiab yooj yim dua. Qhov tseem ceeb, muab nws qhov tseem ceeb rau lub vev xaib - txoj kev noj mov ntawm kev ua haujlwm niaj hnub. Thiab qhov twg muaj MySQL, muaj lwm yam SQLs. Zoo, txhua yam ntawm Fortran-Pascal-Pythons kuj tau piav qhia los ntawm Matryoshka, sai li sai tau lawv tau txais lawv txhais tes.

Yog li, tej yam tseem ceeb tos peb - ​​ib qho kev piav qhia ntawm cov lus C thiab ib qho kev piav qhia ntawm cov lus uas ua raws li nws. "Peb lub hom phiaj yog qhov tseeb, peb cov dej num tau raug txhais. Mus ua hauj lwm, comrades! (Stormy, ntev npuaj teg, tig mus rau hauv ovation. Txhua tus sawv ntsug.) "

Koj cov kev xav yuav raug mloog nrog kev mloog zoo, koj txoj kev pab tsim lub vev xaib zes menyuam roj hmab yuav tau txais txiaj ntsig zoo. Cov ntaub ntawv tiav ntau ntxiv txog phau ntawv yog nyob rau ntawm lub vev xaib, cleverly zais hauv Matryoshka C.

Tau qhov twg los: www.hab.com

Ntxiv ib saib