Интерпретирани срещу компилирани езици за програмиране: Каква е разликата?

Всяка програма е набор от инструкции, независимо дали става въпрос за добавяне на две числа или изпращане на заявка по интернет. Компилаторите и интерпретаторите вземат четим от човека код и го преобразуват в машинно четим машинен код.

В компилиран език целевата машина директно превежда програмата. В интерпретиран език изходният код не се превежда директно от целевата машина. Вместо това, различна програма, известна още като интерпретатор, чете и изпълнява кода.

Добре ... но какво всъщност означава това?

Представете си, че имате рецепта за хумус, която искате да направите, но тя е написана на древногръцки. Има два начина, по който вие, който не е древногръцки, можете да следвате указанията му.

Първият е, ако някой вече го е превел на английски за вас. Вие (и всеки друг, който може да говори английски) бихте могли да прочетете английската версия на рецептата и да направите хумус. Помислете за тази преведена рецепта като за компилирана версия.

Вторият начин е, ако имате приятел, който знае древногръцки. Когато сте готови да направите хумус, вашият приятел седи до вас и превежда рецептата на английски, докато вървите, ред по ред. В този случай вашият приятел е преводач на интерпретираната версия на рецептата.

Компилирани езици

Компилираните езици се преобразуват директно в машинен код, който процесорът може да изпълни. В резултат на това те са по-бързи и по-ефективни за изпълнение от интерпретираните езици. Те също така дават на разработчика по-голям контрол върху хардуерните аспекти, като управление на паметта и използване на процесора.

Компилираните езици се нуждаят от стъпка „изграждане“ - първо трябва да бъдат компилирани ръчно. Трябва да „възстановите“ програмата всеки път, когато трябва да направите промяна. В нашия пример за хумус целият превод е написан, преди да стигне до вас. Ако оригиналният автор реши, че иска да използва различен вид зехтин, цялата рецепта ще трябва да бъде преведена отново и да ви се възмути.

Примери за чисто компилирани езици са C, C ++, Erlang, Haskell, Rust и Go.

Интерпретирани езици

Преводачите преминават през програма ред по ред и изпълняват всяка команда. Тук, ако авторът реши, че иска да използва друг вид зехтин, той може да надраска стария и да добави новия. Тогава вашият приятел преводач може да ви предаде тази промяна, както се случва.

Интерпретираните езици някога са били значително по-бавни от компилираните езици. Но с развитието на компилацията точно навреме тази пропаст намалява.

Примери за често срещани интерпретирани езици са PHP, Ruby, Python и JavaScript.

Малка забележка

Повечето езици за програмиране могат да имат компилирани и интерпретирани реализации - самият език не е непременно компилиран или интерпретиран. За по-голяма простота обаче те обикновено се наричат ​​такива.

Python, например, може да бъде изпълнен като компилирана програма или като интерпретиран език в интерактивен режим. От друга страна, повечето инструменти на командния ред, CLI и черупки теоретично могат да бъдат класифицирани като интерпретирани езици.

Предимства и недостатъци

Предимства на компилираните езици

Програмите, които се компилират в собствен машинен код, са по-бързи от интерпретирания код. Това е така, защото процесът на превод на код по време на изпълнение увеличава режийните разходи и може да доведе до по-бавна програма като цяло.

Недостатъци на компилираните езици

Най-забележителните недостатъци са:

  • Допълнително време, необходимо за завършване на цялата стъпка на компилация преди тестване
  • Зависимост на платформата на генерирания двоичен код

Предимства на интерпретираните езици

Интерпретираните езици са по-гъвкави и често предлагат функции като динамично писане и по-малък размер на програмата. Освен това, тъй като интерпретаторите сами изпълняват изходния програмен код, самият код е независим от платформата.

Недостатъци на интерпретираните езици

Най-забележителният недостатък е типичната скорост на изпълнение в сравнение със компилираните езици.