Pipedija - tautosaka, gandai, kliedesiai ir jokios tiesos! Durniausia wiki enciklopedija durnapedija!


Kompiliuojama programavimo kalba

Iš Pipedijos - durniausios enciklopedijos.
Jump to navigation Jump to search

Kompiliuojama programavimo kalba - tai tokia, kuri yra pirmiausiai transliuojama į kažkokį tai vykdomąjį kodą, naudojant kompiliatorių, o tik po to jau vykdoma. Tai visiškai priešinga interpretuojamoms programavimo kalboms, kurios niekaip nėra į nieką kompiliuojamos, o vykdomos būna iškart.

Kompiliacijos esmė - kad kompiliatorius perskaito programą, ją išparsina (išskaido į sintaksinius ir semantinius elementus su apibrėžiamais pragmatiniais kontekstais), o jau tada iš viso to, ką gavo, išgeneruoja kažkokį tai visai kitą kodą, kuris gali būti gerai optimizuojamas ir vykdomas.

Kai kuriais atvejais kompiliacija būna nepilna - štai pvz., tipiška Java interpretacija vykdoma pirmiausiai programą kompiliuojant į specialų tarpinį kodą, skirtą virtualiai mašinai, o jau šita mašina tą kodą vykdo kaip interpretatorius. Panašiai, kad ir kiek paprasčiau (nesukuriant tam specialių failų) veikia ir nemažai kitų interpretatorių, pvz., Basic ar PHP interpretatoriai.

Kas be ko, griežtos ribos tarp kompiliavimo ir interpretavimo kartais nėra - štai pvz., klasikinis DOS skirtas IBM gamybos Basic kompiliatorius sutransliuodavo Basic parašytą programą į Basic pseudokodą, prikabindavo prie to pseudokodo nukarpytą interpretatorių ir vat taip gaudavosi "sukompiliuota" programa, kuri kaip ir kompiliuota, bet vykdoma interpretuojant. Nu ir nesuprasi, kaip čia taip.

Kitu atveju, pvz., buvo tokia Forth programavimo kalba (nieko bendro neturinti su Fortran), kuri buvo tuo pat metu ir kompiliuojama, ir turinti mikrokompiliatorių savyje su kažkokiu tai objektų dispečeriu. Tai kur riba tarp interpretavimo ir kompiliavimo - čia jau per tą objektų dispečerį išvis nesigauna pasakyti. Paskui panašius dispečerius ėmė kabinti ir prie kitų programavimo kalbų, tai kai jau būna kokia nors objektinė programavimo kalba, tai jau nelabai ir būna aišku, ar čia su ja vyksta kompiliacija, ar tik pusiau kompiliacija.

Visgi paprastai kompiliavimu būna vadinamas pilanavertis kompiliavimas į kodą, tinkamą realiam procesoriui, ar į asemblerį, kas yra beveik tapatu, nes asembleris į procesoriaus kodą visada transliuojamas be problemų.

Tipiškos kompiliuojamos kalbos yra tokios, kaip C kalba, Cpp, Pascal, Ada, Modula ir panašios. Žodžiu, tos kalbos, kuriomis programuoja visokie hakeriai, gerai išmanantys reikalus.