Interpretuojamos ir sudarytos programavimo kalbos: koks skirtumas?

Kiekviena programa yra instrukcijų rinkinys, nesvarbu, ar reikia pridėti du numerius, ar siųsti užklausą internetu. Kompiliatoriai ir vertėjai žodžiu ima žmonėms suprantamą kodą ir paverčia jį kompiuteriu nuskaitomu mašininiu kodu.

Sudaryta kalba tikslinė mašina tiesiogiai verčia programą. Išaiškinta kalba šaltinio kodas nėra tiesiogiai išverstas tikslinės mašinos. Vietoj to, kita programa, dar vadinama vertėju, skaito ir vykdo kodą.

Gerai ... bet ką tai iš tikrųjų reiškia?

Įsivaizduokite, kad turite humuso receptą, kurį norite pagaminti, tačiau jis parašytas senovės graikų kalba. Yra du būdai, kaip jūs, ne senovės graikų kalba, galėtumėte sekti jo nurodymus.

Pirmasis yra tas, jei kažkas jau buvo išvertęs jį į anglų kalbą. Jūs (ir visi kiti, kurie moka angliškai), galėtumėte perskaityti anglišką recepto versiją ir pasigaminti humuso. Pagalvokite apie šį išverstą receptą kaip apie sukurtą versiją.

Antrasis būdas - jei turite draugą, mokantį senovės graikų kalbą. Kai būsite pasiruošę gaminti humusą, jūsų draugas atsisėda šalia jūsų ir eidamas iš eilės išverčia receptą į anglų kalbą. Šiuo atveju jūsų draugas yra interpretuojamos recepto versijos vertėjas .

Sudarytos kalbos

Sudarytos kalbos yra tiesiogiai konvertuojamos į kompiuterio kodą, kurį procesorius gali vykdyti. Todėl jie paprastai yra greičiau ir efektyviau vykdomi nei interpretuojamos kalbos. Jie taip pat suteikia kūrėjui daugiau galimybių kontroliuoti aparatūros aspektus, pvz., Atminties valdymą ir procesoriaus naudojimą.

Sudėtoms kalboms reikia „sukūrimo“ žingsnio - pirmiausia jas reikia kompiliuoti rankiniu būdu. Kiekvieną kartą, kai reikia atlikti pakeitimus, turite „atstatyti“ programą. Mūsų humuso pavyzdyje visas vertimas parašomas, kol jis nepasiekia jūsų. Jei originalus autorius nusprendžia, kad nori naudoti kitokio tipo alyvuogių aliejų, visą receptą reikės dar kartą išversti ir pasipiktinti.

Grynų kompiliuotų kalbų pavyzdžiai yra C, C ++, Erlang, Haskell, Rust ir Go.

Aiškinamos kalbos

Vertėjai žodžiu paleidžia programą po eilutę ir vykdo kiekvieną komandą. Čia, jei autorius nuspręs, kad nori naudoti kitokį alyvuogių aliejų, jis galėtų išbrėžti seną ir įpilti naują. Tada jūsų vertėjo draugas gali jums perduoti tą pasikeitimą, kaip tai atsitiks.

Kadaise išaiškintos kalbos buvo žymiai lėtesnės nei sudarytos. Tačiau tobulėjant kompiliavimui laiku, ši spraga mažėja.

Dažniausiai aiškinamų kalbų pavyzdžiai yra PHP, „Ruby“, „Python“ ir „JavaScript“.

Mažas įspėjimas

Daugumoje programavimo kalbų gali būti sudarytos ir interpretuojamos versijos - pati kalba nebūtinai yra sudaryta ar interpretuojama. Tačiau paprastumo dėlei jie paprastai vadinami tokiais.

Pavyzdžiui, „Python“ gali būti vykdomas kaip sukompiliuota programa arba kaip interpretuota kalba interaktyviuoju režimu. Kita vertus, teoriškai dauguma komandinės eilutės įrankių, CLI ir apvalkalų gali būti klasifikuojami kaip aiškinamos kalbos.

Privalumai ir trūkumai

Sudarytų kalbų privalumai

Programos, sudarytos į gimtąjį mašininį kodą, paprastai būna greitesnės nei interpretuojamas kodas. Taip yra todėl, kad kodo vertimo vykdymo metu procesas prideda pridėtines išlaidas ir gali apskritai lėtinti programą.

Sudarytų kalbų trūkumai

Svarbiausi trūkumai yra šie:

  • Prieš bandant reikia viso laiko, kad būtų atliktas visas kompiliavimo etapas
  • Sukurto dvejetainio kodo priklausomybė nuo platformos

Aiškinamų kalbų privalumai

Interpretuojamos kalbos paprastai būna lankstesnės ir dažnai siūlo tokias funkcijas kaip dinaminis spausdinimas ir mažesnis programos dydis. Be to, kadangi vertėjai patys vykdo šaltinio programos kodą, pats kodas yra nepriklausomas nuo platformos.

Aiškinamų kalbų trūkumai

Labiausiai pastebimas trūkumas yra tipinis vykdymo greitis, palyginti su sukompiliuotomis kalbomis.