C kalba: Skirtumas tarp puslapio versijų

1 806 pridėti baitai ,  01:26, 16 vasario 2025
nėra keitimo aprašymo
S (atminties sutrikimai)
 
(nerodoma 3 tarpinės versijos, sukurtos to paties naudotojo)
5 eilutė: 5 eilutė:
Išties gi C turi vieną įdomumą, kurį jau seniai sukapojo visokie standartizacijos komitetai, nes geriau jau to privalumo nereikia, nes dar priprogramuos tie programuotojai neaišku, ko. Taigi, jau to privalumo C kalba neturi.
Išties gi C turi vieną įdomumą, kurį jau seniai sukapojo visokie standartizacijos komitetai, nes geriau jau to privalumo nereikia, nes dar priprogramuos tie programuotojai neaišku, ko. Taigi, jau to privalumo C kalba neturi.


Privalumas gi buvo toksai, kad C išties tėra nežymiai pagražintas asembleris, primenantis normalią kalbą daugiau savo išore, negu vidumi. Vidumi gi C visur remiasi prielaida, kad viskas yra arba kokia nors asemblerio komanda, skirta kokius nors veiksmus padaryti, arba kokie nors duomenys, arba koks nors pointeris arba kažko tai adresas. O jei nei tas, nei anas - tai reiškia, kad išvis nieko nereiškia ir tai galima tiesiog išmesti.
Privalumas gi buvo toksai, kad C išties tėra nežymiai pagražintas [[asembleris]], primenantis normalią kalbą daugiau savo išore, negu vidumi. Vidumi gi C visur remiasi prielaida, kad viskas yra arba kokia nors asemblerio komanda, skirta kokius nors veiksmus padaryti, arba kokie nors duomenys, arba koks nors [[pointeris]] arba kažko tai adresas. O jei nei tas, nei anas - tai reiškia, kad išvis nieko nereiškia ir tai galima tiesiog išmesti. Žodžiu, visur viskas su [[rodyklės|rodyklėmis]], dėl kurių visus mažiau patyrusiems programuotojams kyla baisi šiknasopė.


Todėl pasiėmus C parašytą programą, visada galima ją nuosekliai išversti į [[asembleris|asemblerio]] tekstą, o paskui jau gautame asemblerio tekste turėti visiškai tiesioginį tos C programos ekvivalentą.
Todėl pasiėmus C parašytą programą, visada galima ją nuosekliai išversti į [[asembleris|asemblerio]] tekstą, o paskui jau gautame asemblerio tekste turėti visiškai tiesioginį tos C programos ekvivalentą.
Nepatyrusiems programuotojams atrodo, kad C kalba palaiko duomenų tipus, tačiau čia slypi žiauri klasta: realiai gi šita kalba tepalaiko tik tokius dalykus, kaip [[baitai]], iš jų sudaryti žodžiai (word) ar panašūs duomenys, ir rodyklės. Visa kita - tėra daugiau ar mažiau apgaulingos duomenų tipų simuliacijos, o pats [[kompiliatorius]] gali absoliučiai neskirti ir nesuprasti, kur kokių tipų duomenys yra. Ypač tai pasakytina apie klasikinį, tą gerąjį C kalbos variantą, kuris vadinamas '''Kernighan and Ritchie C''' arba tiesiog '''K&R C'''. Šitas pliusas leidžia dirbti su duomenimis kaip nori, tačiau duoda ir pasekmių.


Atitinkamai, tradiciniame C programavime galima daryti keistus dalykus, kurie atrodo ganėtinai nenormalūs. Pavyzdžiui, galima su kokiu nors [[Goto]] pereiti tiesiai į kokio nors ciklo ar funkcijos vidų. Arba galima apsibrėžti kintamąjį, kuris yra integeris, į jį įsimesti kokio nors masyvo adresą, o į tą masyvą prikaišioti pointerių į kokias nors funkcijas ir paskui kokiame nors cikle iškvietinėti kokią nors ''array[*point+x]()'' ar dar kokią nors didesnę nesąmonę.
Atitinkamai, tradiciniame C programavime galima daryti keistus dalykus, kurie atrodo ganėtinai nenormalūs. Pavyzdžiui, galima su kokiu nors [[Goto]] pereiti tiesiai į kokio nors ciklo ar funkcijos vidų. Arba galima apsibrėžti kintamąjį, kuris yra integeris, į jį įsimesti kokio nors masyvo adresą, o į tą masyvą prikaišioti pointerių į kokias nors funkcijas ir paskui kokiame nors cikle iškvietinėti kokią nors ''array[*point+x]()'' ar dar kokią nors didesnę nesąmonę.
50 eilutė: 52 eilutė:
  }
  }


Išbandykite, ir pažiūrėkite kas gausis.
Išbandykite, ir pažiūrėkite kas gausis. Išties tai gausis kompiliacijos erroras, nes surašyta tai čia klaidingai, bet linkim sėkmės išsiaiškinant, pataisant, o paskui prasitrinant sau iš disko visus duomenis su šita nesąmone.
 
 
== C kalbos programinės bibliotekos ==
Daugelis dalykų, kurie aukšto lygio programavimo kalbose apibrėžiami kaip kalbos dalis, pvz., tipų atpažinimas, tipų konversija, įvedimas/išvedimas, atminties alokavimas ir panašiai, C kalboje tėra tiesiog eilinės funkcijos, kurios šia pačia kalba yra ir parašytos. Tai dėl tos priežasties vienas iš esminių dalykų, dirbant su C kalba, yra išmokti susigaudyti visokiose [[programinės bibliotekos|programinėse bibliotekose]].
 
Tai C programuotojus atrenkant ir priimant į darbą, būna klausiama ne tiek apie tai, kokias jie programavimo kalbas naudoja, kiek apie tai, su kokiomis bibliotekomis jie dirba.
 
Savaime aišku, svarbiausia C kalbos biblioteka yra [[libc]], ant kurios visas [[UNIX]] pastatytas bei visokie programavimo pagrindai bendrai.
 


[[Category:Programavimo kalbos]]
[[Category:Programavimo kalbos]]
1 648

pakeitimai