Interpretētās un sastādītās programmēšanas valodas: kāda ir atšķirība?

Katra programma ir instrukciju kopums, neatkarīgi no tā, vai pievienot divus numurus vai nosūtīt pieprasījumu internetā. Sastādītāji un tulki ņem cilvēkiem lasāmu kodu un pārveido to par datorlasāmu mašīnkodu.

Apkopotā valodā mērķa mašīna tieši tulko programmu. Interpretētajā valodā avota kods nav tieši tulkots mērķa mašīnā. Tā vietā cita programma, jeb tulks, nolasa un izpilda kodu.

Labi ... bet ko tas patiesībā nozīmē?

Iedomājieties, ka jums ir humusa recepte, kuru vēlaties pagatavot, taču tā ir uzrakstīta sengrieķu valodā. Ir divi veidi, kā jūs, senatnes un grieķu valodas runātājs, varētu sekot tās norādījumiem.

Pirmais ir tas, ja kāds jums to jau ir iztulkojis angļu valodā. Jūs (un ikviens cits, kurš prot angļu valodu), varētu izlasīt receptes versiju angļu valodā un pagatavot humusu. Padomājiet par šo tulkoto recepti kā apkopoto versiju.

Otrs veids ir, ja jums ir draugs, kurš zina sengrieķu valodu. Kad esat gatavs gatavot humusu, jūsu draugs apsēžas jums blakus un ejot, rindu pa rindai tulko recepti angļu valodā. Šajā gadījumā jūsu draugs ir receptes interpretētās versijas tulks .

Apkopotas valodas

Apkopotās valodas tiek tieši pārveidotas mašīnkodā, kuru procesors var izpildīt. Rezultātā to izpilde parasti ir ātrāka un efektīvāka nekā tulkotās valodas. Tie arī dod izstrādātājam lielāku kontroli pār aparatūras aspektiem, piemēram, atmiņas pārvaldību un CPU lietošanu.

Apkopotajām valodām ir nepieciešams “būvēšanas” solis - vispirms tās jāapkopo manuāli. Programma jāatjauno katru reizi, kad jāveic izmaiņas. Mūsu humusa piemērā viss tulkojums tiek uzrakstīts, pirms tas nonāk pie jums. Ja sākotnējais autors nolemj, ka vēlas izmantot cita veida olīveļļu, visa recepte būtu vēlreiz jātulko un jāapmierina jums.

Tīru kompilētu valodu piemēri ir C, C ++, Erlang, Haskell, Rust un Go.

Interpretētās valodas

Tulki darbojas pa programmu pa rindai un izpilda katru komandu. Ja autors nolemj, ka vēlas izmantot cita veida olīveļļu, viņš varētu izskrāpēt veco un pievienot jaunu. Tad tulkotājs draugs var jums paziņot šīs izmaiņas, kad tas notiek.

Tulkotās valodas savulaik bija ievērojami lēnākas nekā sastādītās valodas. Bet, attīstoties tieši savlaicīgai apkopošanai, šī atšķirība samazinās.

Interpretēto valodu piemēri ir PHP, Ruby, Python un JavaScript.

Neliels brīdinājums

Lielākajai daļai programmēšanas valodu var būt gan apkopotas, gan interpretētas ieviešanas - pati valoda nav obligāti apkopota vai interpretēta. Tomēr vienkāršības labad tos parasti sauc par tādiem.

Piemēram, Python var izpildīt vai nu kā kompilētu programmu, vai kā interpretētu valodu interaktīvajā režīmā. No otras puses, lielāko daļu komandrindas rīku, CLI un čaulu teorētiski var klasificēt kā interpretētās valodas.

Priekšrocības un trūkumi

Apkopoto valodu priekšrocības

Programmas, kas tiek apkopotas vietējā mašīnkodā, parasti ir ātrākas nekā interpretētais kods. Tas ir tāpēc, ka koda tulkošanas process izpildes laikā palielina pieskaitāmās izmaksas un var izraisīt programmas kopumā lēnāku darbību.

Apkopoto valodu trūkumi

Ievērojamākie trūkumi ir:

  • Pirms testēšanas ir nepieciešams papildu laiks, lai pabeigtu visu kompilēšanas darbību
  • Ģenerētā binārā koda atkarība no platformas

Interpretēto valodu priekšrocības

Interpretētās valodas mēdz būt elastīgākas un bieži piedāvā tādas funkcijas kā dinamiska rakstīšana un mazāks programmas lielums. Tā kā tulki paši izpilda avota programmas kodu, pats kods nav atkarīgs no platformas.

Interpretēto valodu trūkumi

Ievērojamākais trūkums ir tipisks izpildes ātrums salīdzinājumā ar kompilētajām valodām.