Језици за програмирање углавном спадају у две врсте језика - компајлиране или интерпретиране језике. Међутим, разлика није у језику; то је у имплементацији. Није погрешно рећи да су оба својства имплементације језика, али нису својства самог језика. Имплементација програмског језика значи премошћивање јаза од размишљања програмера на високом нивоу до нула и нивоа машине. Ако то раде ефикасно, програмери се могу концентрисати на стварне проблеме, а не на детаље машина. Дакле, програмски језик се може саставити или интерпретирати на основу имплементације.
Па, обе врсте програмских језика имају своје предности. Неки језици захтевају да се сабере сав ваш код пре него што се било који од кода може извршити. Остали језици тумаче сваку инструкцију у време када се код извршава. У ствари, преведене језике програмер обично саставља на рачунару програмера; када програмер дели софтвер, он / она дели састављене 0 и 1, али не и изворни код. Међутим, уз интерпретирани језик, код се чува у истом формату који сте унели и мора бити преведен у току рада. Погледајмо детаљну поређење састављених и тумачених језика.
Рачунари могу само да извршавају језик машине, што је језик централне процесне јединице (ЦПУ) и врло је једноставан. Циљ било које имплементације програмског језика је превести изворни програм на машински језик тако да га може извршити ЦПУ. Све имплементације језика преводе изворни програм у неко посредничко представљање пре превођења средњег представљања у машински језик. Најизравнији начин превођења програма на машински језик назива се компилација. Програм написан на компајлираном језику мора бити преведен у други формат пре него што се покрене. Прије извршавања изворни код мора се претворити у стројно читљива упутства. Укратко, језици чија су имплементација обично компајлери, а не тумачи, називају се компајлирани језици.
Интерпретатор је програм који је написан на неком другом језику и састављен у машински читљив језик. Сам преводилац је програм машинског језика и написан је да чита изворне програме са тумаченог језика и да их тумачи. Тумачени језик, напротив, не компајлира изворни код у машински језик пре покретања програма. Он само тумачи код у лету. Дакле, не добијате користи или недостатке грешака у компилацији. Тумачени језици захтевају део софтвера који се зове интерпретер, који узима изворни код и извршава једну инструкцију. Када покренете интерпретирани изворни програм, заправо покрећете преводилац. Преводилац је програм машинског језика који извршава све програме које пишете на интерпретираном језику.
- Програм написан на компајлираном језику мора бити преведен у други формат пре него што се покрене. Прије извршавања изворни код мора се претворити у стројно читљива упутства. Тумачени језик, напротив, не компајлира изворни код у машински језик пре покретања програма. Он само тумачи код у лету. Тумачени језици захтевају део софтвера који се зове интерпретер, који узима изворни код и извршава једну инструкцију.
- Са компајлираним језицима постоје најмање два корака за прелазак од изворног кода до извршења, док код интерпретираних језика постоји само један - извршење. Програм написан на интерпретираном језику није састављен - интерпретира га други програм док се покреће. Програм написан на компајлираном језику пролази кроз процес да би га из људског читљивог текста претворио у машински читљив формат. Програм који се зове компајлер чини овај прелаз.
- Састављени програми раде брже од интерпретираних програма, али интерпретирани програми се могу модификовати док се програм покреће. То интерпретира програме идеално за писање софтвера за извођење уживо. Рад са компајлираним језицима може бити леп јер се пронађу многе грешке када се компајлира изворни код. Ове грешке, назване грешке у компилацији, спречавају састављање кода. Напротив, интерпретирани језици се не састављају, тако да не добијате користи или недостатке грешака у компилацији.
- Са интерпретираним језицима, све отклањање погрешака дешава се у току рада. Не постоји корак компилације током којег можете избацити све грешке у синтакси у вашем коду; уместо тога морате покренути програм да бисте пронашли било какве грешке у њему. Ово постаје проблем када интерпретирани програм модификује датотеке или изврши било какве промене у сталним ресурсима. Због тога је неке грешке теже ухватити, јер их код не треба компајлирати. Тумачени језици такође представљају одређене безбедносне проблеме у интернетском окружењу јер се злонамерни код може убризгати средином извршења.
Укратко, и састављени и тумачени језици имају своје снаге. Неки језици захтевају да се сабере сав ваш код пре него што се било који од кода може извршити. Остали језици тумаче сваку инструкцију у време када се код извршава. Главна разлика између ова два је у томе што постоје најмање два корака да бисте се прешли од изворног кода до извршења са компајлираним језицима. Међутим, са тумаченим језицима постоји само један корак - извршење. Састављени програми раде брже од интерпретираних програма, али интерпретирани програми се могу модификовати док се програм покреће.