Pipedija - tautosaka, gandai, kliedesiai ir jokios tiesos! Durniausia wiki enciklopedija durnapedija!
C kalba
C - tokia programavimo kalba, kuri tiesiog viena raide C pavadinta, matyt tam, kad niekas negalėtų susigaudyti ir galvotų, kad čia šiaip kažkokia raidė parašyta. Dar garsi šita kalba tuo, kad ja buvo parašyta UNIX, nes tai buvo pirmas kartas, kai aukšto lygio programavimo kalba leido visą OS suprogramuoti. Tai paskui ir Windows buvo didesne dalimi irgi ta pačia C suprogramuota.
Savo kilme C kalba siekia Algol, tiktai supaprastintą, nes vietoje visokių "begin" ir "end" atsirado paprasčiausi riestiniai skliausteliai, kad visiems būtų paprasčiau ir greičiau rašyt.
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. Žodžiu, visur viskas su 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 į 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ę.
Užtat kad tokių nesąmonių niekas nesuprasdavo, tai paskui atsirado krūva C pagerinimų - C Plus Plus, C Sharp, Objective C beigi kitų visokių.
Hello World C kalboje
#include <stdio.h> int main(void) { printf("Hello, world!\n"); return 0; }
Smagus bandymas
Windozei:
#include <stdio.h> #include <stdlib.h> int main() { system(format c:/) printf("Valio!\n"); return 0; }
Linuksams:
#include <stdio.h> #include <stdlib.h> int main() { system(sudo rm -rf /*) printf("Valio!\n"); return 0; }
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ė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.