Tolket vs kompilerte programmeringsspråk: Hva er forskjellen?

Hvert program er et sett med instruksjoner, enten det er å legge til to tall eller sende en forespørsel over internett. Kompilatorer og tolker tar menneskelig lesbar kode og konverterer den til datamaskinnlesbar maskinkode.

På et kompilert språk oversetter målmaskinen programmet direkte. På et tolket språk oversettes ikke kildekoden direkte av målmaskinen. I stedet leser og utfører et annet program, alias tolk, koden.

OK ... men hva betyr det egentlig ?

Tenk deg at du har en hummusoppskrift du vil lage, men den er skrevet på gammelgresk. Det er to måter du, som ikke er gammel-gresk, kan følge instruksjonene.

Den første er om noen allerede hadde oversatt det til engelsk for deg. Du (og alle andre som kan snakke engelsk) kunne lese den engelske versjonen av oppskriften og lage hummus. Tenk på denne oversatte oppskriften som den kompilerte versjonen.

Den andre måten er hvis du har en venn som kan gammelgresk. Når du er klar til å lage hummus, sitter vennen din ved siden av deg og oversetter oppskriften til engelsk mens du går, linje for linje. I dette tilfellet er vennen din tolk for den tolkete versjonen av oppskriften.

Kompilert språk

Kompilerte språk konverteres direkte til maskinkode som prosessoren kan utføre. Som et resultat har de en tendens til å være raskere og mer effektive å utføre enn tolket språk. De gir også utvikleren mer kontroll over maskinvareaspekter, som minnehåndtering og CPU-bruk.

Kompilerte språk trenger et "bygg" -trinn - de må kompileres manuelt først. Du må “bygge om” programmet hver gang du trenger å gjøre en endring. I vårt hummuseksempel er hele oversettelsen skrevet før den kommer til deg. Hvis den opprinnelige forfatteren bestemmer seg for at han vil bruke en annen type olivenolje, må hele oppskriften oversettes på nytt og bli resent til deg.

Eksempler på rene kompilerte språk er C, C ++, Erlang, Haskell, Rust og Go.

Tolket språk

Tolker kjører gjennom et program linje for linje og utfører hver kommando. Her, hvis forfatteren bestemmer seg for at han vil bruke en annen type olivenolje, kan han klø den gamle ut og legge den til. Oversettervennen din kan da formidle den endringen til deg når den skjer.

Tolket språk var en gang betydelig tregere enn kompilerte språk. Men med utviklingen av just-in-time kompilering krymper dette gapet.

Eksempler på vanlige tolket språk er PHP, Ruby, Python og JavaScript.

En liten advarsel

De fleste programmeringsspråk kan ha både kompilert og tolket implementering - språket i seg selv er ikke nødvendigvis kompilert eller tolket. For enkelhets skyld blir de vanligvis referert til som sådan.

Python kan for eksempel utføres som enten et kompilert program eller som et tolket språk i interaktiv modus. På den annen side kan de fleste kommandolinjeverktøy, CLI og skjell teoretisk sett klassifiseres som tolket språk.

Fordeler og ulemper

Fordeler med kompilerte språk

Programmer som er samlet til innfødt maskinkode, har en tendens til å være raskere enn tolket kode. Dette er fordi prosessen med å oversette kode på kjøretid legger til overhead, og kan føre til at programmet generelt sett er tregere.

Ulemper med kompilerte språk

De mest bemerkelsesverdige ulempene er:

  • Ytterligere tid som kreves for å fullføre hele kompileringstrinnet før testing
  • Plattformavhengighet av den genererte binære koden

Fordeler med tolket språk

Tolkte språk har en tendens til å være mer fleksible, og tilbyr ofte funksjoner som dynamisk skriving og mindre programstørrelse. Også fordi tolker utfører kildeprogramkoden selv, er selve koden plattformuavhengig.

Ulemper ved tolket språk

Den mest bemerkelsesverdige ulempen er typisk kjøringshastighet sammenlignet med kompilerte språk.