Kompiliuojamos kalbos: Skirtumas tarp puslapio versijų

2 322 pridėti baitai ,  00:45, 27 sausio 2023
nėra keitimo aprašymo
S (Pikachu pervadino puslapį Kompiliuojama kalba į Kompiliuojamos kalbos)
 
8 eilutė: 8 eilutė:


Iš Algol išaugo dvi esminės kompiliuojamų kalbų grupės - [[Pascal]], kuri dar pertaisė Algol idėjas taip, kad gavosi vienu perėjimu kompiliuojama kalba, o taip pat [[C kalba]], kuri buvo tyčia pakankamai supaprastinta, kad nors ir buvo kompiliuojama dviem perėjimais, kompiliatoriai būdavo paprasti. Šių dviejų kalbų įtaka nulėmė daugumos vėlesnių kompiliuojamų, o taip pat ir daugelio nekompiliuojamų kalbų [[gramatika|gramatiką]].
Iš Algol išaugo dvi esminės kompiliuojamų kalbų grupės - [[Pascal]], kuri dar pertaisė Algol idėjas taip, kad gavosi vienu perėjimu kompiliuojama kalba, o taip pat [[C kalba]], kuri buvo tyčia pakankamai supaprastinta, kad nors ir buvo kompiliuojama dviem perėjimais, kompiliatoriai būdavo paprasti. Šių dviejų kalbų įtaka nulėmė daugumos vėlesnių kompiliuojamų, o taip pat ir daugelio nekompiliuojamų kalbų [[gramatika|gramatiką]].
Šiuo atžvilgiu ypatingai išskirtinė yra Pascal, nes kadaise ji, o paskui ir jos USCD Pascal realizacija nulėmė daugybės kitų kalbų ir kompiliatorių vystymąsi - buvo netgi periodas, kai apie 90% pasaulio kompiliatorių viename ar kitame kūrimo etape patys naudojo Pascal kompiliatorius. Pascal išskirtinumas - kad jau pačios kalbos pagrinduose buvo atsižvelgta į kompiliavimą taip, kad pavyktų programą sukompiliuoti vienu praėjimu: t.y., buvo griežta tipizacija, privaloma kintamųjų, funkcijų ir procedūrų išankstinė deklaracija, apribotas [[GOTO]] ir [[rekursija|rekursijos]] naudojimas ir panašiai. Dėl to kalba gavosi visai paprasta, bet nepaprastai efektyviai kompiliuojama ir optimizuojama, o jos įtaka labai pasijuto daugybėje kitų programavimo kalbų.


Kompiliuojamos kalbos yra daug pranašensės už [[interpretuojamos kalbos|interpretuojamas kalbas]], nes jomis parašytos programos po kompiliacijos gali būti vykdomos kaip tikros mašininės programos. Kitaip tariant, kompiliatorius vieną kartą gerokai padirbėjo, išvertė programą į realų [[mašininis kodas|mašininį kodą]] ir tada jau programa dirba dideliu greičiu. Praktiškai tai reiškia, kad netgi neefekytivai ir menkai optimizuojant kompiliuotos programos dirba bent 10-30 kartų greičiau už greičiausias interpretuojamas programas. Dažniausiai greičių skirtumas būna dar didesnis, iki šimtų ar tūkstnačių kartų.
Kompiliuojamos kalbos yra daug pranašensės už [[interpretuojamos kalbos|interpretuojamas kalbas]], nes jomis parašytos programos po kompiliacijos gali būti vykdomos kaip tikros mašininės programos. Kitaip tariant, kompiliatorius vieną kartą gerokai padirbėjo, išvertė programą į realų [[mašininis kodas|mašininį kodą]] ir tada jau programa dirba dideliu greičiu. Praktiškai tai reiškia, kad netgi neefekytivai ir menkai optimizuojant kompiliuotos programos dirba bent 10-30 kartų greičiau už greičiausias interpretuojamas programas. Dažniausiai greičių skirtumas būna dar didesnis, iki šimtų ar tūkstnačių kartų.
14 eilutė: 16 eilutė:


Esminis kompiliuojamų kalbų trūkumas - jų reiklumas gramatikai. Šiomis kalbomis negalima rašyti belenkaip, tikintis, kad visvien kažkaip kažkas suveiks. Klaidos čia lemia daug, o kai kada būna ir nepastebimos, išlendančios tik ilgiau ta kalba parašytą programą naudojant. Taigi, toli gražu ne visi programuotojai šias kalbas mėgsta ir toli gražu ne visiems uždaviniams šios kalbos gerai tinka.
Esminis kompiliuojamų kalbų trūkumas - jų reiklumas gramatikai. Šiomis kalbomis negalima rašyti belenkaip, tikintis, kad visvien kažkaip kažkas suveiks. Klaidos čia lemia daug, o kai kada būna ir nepastebimos, išlendančios tik ilgiau ta kalba parašytą programą naudojant. Taigi, toli gražu ne visi programuotojai šias kalbas mėgsta ir toli gražu ne visiems uždaviniams šios kalbos gerai tinka.
Svarbu neužmiršti, kad kai kurių interpretuojamų kalbų kūrėjai visiškai melagingai aiškina, kad jų kalbos esą yra kompiliuojamos, nors niekas tenai nėra kompiliuojama, o tiesiog sutransliuotas [[pseudokodas]] prikabinamas prie interpretatoriaus ir pasakoma, kad čia binarinis vykdomasis failas. Tai tokių kalbų rimtai vertinti neverta, nes nesąmonės nenusipelno jūsų dėmesio. Tiesa, norint atskirti tas kompiliuojamas kalbas nuo interpretuojamų, kartais reikia šiek tiek pasiaiškinti apie realizacijas, nes kartais būna nemažų makaronų. Kaip pvz., paskaitę kokią nors [[Vikipedija|Vikipediją]] galite atrasti kliedesių apie tai, kad kompiliuoamos kalbos esą yra kokia nors ActionScript, Basic ar Java, nors nei viena iš jų nėra kompiliuojama.
Visgi naujesniais laikais griežtą ribą tarp kompiliuojamų ir interpretuojamų kalbų nustatyti sunku, nes pvz., Java kompiliuojama į pseudokodą, o [[C plus plus]] gali naudoti kokį nors objektų brokerį, kuris faktiškai veikia kaip specialus interpretatorius. Taigi, visai jau griežtos ribos nebelieka, nes kai kurios realizacijos būna truputį hibridinės. Vėlgi, faktiškai visos kompiliuojamos programavimo kalbos turi ir principines interpretavimo galimybes, tad gali būti vykdomos ir interpretuojant.
== Populiarios kompiliuojamos programavimo kalbos ==
Tarp žinomesnių pilnai kompiliuojamų programavimo kalbų yra šios:
* [[Fortran]]
* [[Pascal]]
* [[Ada]]
* [[C kalba]]
* [[C++]]
* [[Modula]]
* [[Objective C]]
* [[Oberon]]




[[Category:Programavimo kalbos]]
[[Category:Programavimo kalbos]]
856

pakeitimai