Det er mange måter å skille programmeringsspråk på. Til å begynne med faller de inn i forskjellige paradigmer: funksjonelle, objektorienterte og mer i tillegg.
Du kan også klassifisere et programmeringsspråk etter oversettelsesmetoden, noe som har stor effekt på et språks ytelse. Kompilerte programmeringsspråk er vanligvis raskere enn tolkede. Så i situasjoner som spillutvikling som krever hastighet, har utviklere en tendens til å bruke kompilerte språk.
Hva er oversettelse?
Oversettelsesprosessen konverterer kode skrevet av en programmerer til maskinkode som en datamaskin kan utføre. Maskinkode er en type lavnivåspråk, som har enere og nuller. Så det oversetteren gjør er å konvertere høynivåkoden du lager i et programmeringsspråk til maskinkode.
Uten oversettere ville du måtte kode på maskinspråk. Hvert programmeringsspråk på høyt nivå du kjenner bruker en av tre oversettelsesmetoder: en kompilator, en tolk eller en hybrid av de to.
Hva er en kompilator?
En kompilator er programvare som konverterer kildekode skrevet på et høynivåspråk til lavnivåkode for kjøring.
Diagrammet ovenfor representerer en kompilator i sin mest grunnleggende form. Kompilatoren har flere faser. Hver fase transformerer koden fra en tilstand til en annen. Målet med hver kompilatorfase er å lage en utgang som er lettere å manipulere for den etterfølgende fasen. Den generelle strukturen til en kompilator er som følger:
- Skanner: denne fasen tar en strøm av tegn og grupperer dem i tokens som representerer identifikatorer, bokstaver i strenger og så videre.
- Parser: denne fasen grupperer tokens basert på grammatikken til kildeprogrammeringsspråket. Det skaper et abstrakt syntakstre som er en samling av uttrykk som utgjør programmet.
- Semantikk: denne fasen utfører en semantisk analyse på det abstrakte syntakstreet (AST). Den bruker reglene for kildespråket for å legge til mening ved å tilordne typer til AST-uttrykkene og kontrollere deres gyldighet. AST blir da en mellomrepresentasjon.
- Mellomrepresentasjon (IR): denne fasen konverterer det originale programmets kildekode til maskinkode. Den produserer en forenklet versjon av monteringskoden. IR-en bruker en eller flere optimerere for å forbedre IR-koden og for å samle informasjon for maskinen den kjører på. En optimizer kan gjøre et program mer effektivt, raskere eller enda mindre.
- Kodegenerator: denne fasen bruker den optimaliserte IR-koden og konverterer den til maskinkode.
Hvilke programmeringsspråk bruker kompilatorer?
Noen populære kompilerte programmeringsspråk inkluderer:
- C
- C++
- Gå
- Ada
- Fortran
- COBOL
- Lisp
- Mål-C
- Fort
En fordel med å bruke et kompilert språk er at det identifiserer feil under kompilering. Dette lar deg fikse slike feil, og deretter prøve å kompilere programmet på nytt. Det er mindre sannsynlig at kompilerte språk mislykkes når de begynner å utføres. Disse språkene vil ikke engang generere et program som skal kjøres hvis kildekoden har syntaksfeil. Men semantiske feil, og andre former for kjøretidsfeil, vil komme forbi det.
Kompilerte språk kjøres også veldig raskt etter at de kompilerte.
Hva er en tolk?
En tolk er et program som oversetter og kjører en enkelt linje med kode om gangen. Denne prosessen gjentas til tolken kommer til den siste kodelinjen i det gitte programmet eller skriptet.
Som du kan se av diagrammet ovenfor, tar en tolk to innganger. Først tar den hele kildekoden (programmet). Den leser deretter den første linjen i programmet (som en inngang), oversetter og kjører den. Hvis den linjen kjører riktig, går den videre til neste linje i programmet eller skriptet.
I motsetning til en kompilator, oversetter ikke en tolk et helt program til maskinkode. I stedet analyserer og analyserer den en gitt kodelinje før den kjøres. En tolk bør begynne å kjøre et program – spesielt et større – før en kompilator i det hele tatt er ferdig med å oversette det.
Hvilke programmeringsspråk bruker tolker?
Noen populære tolkede programmeringsspråk inkluderer:
- Python
- JavaScript
- Perl
- MATLAB
- GRUNNLEGGENDE
Selv om en tolk begynner å kjøre kode raskere, vil den fortsatt mislykkes hvis den støter på en feil. Som programmerer må du fikse en slik feil og starte programmet på nytt. Denne hendelsen oppstår hver gang tolken støter på en ny feil. Noen feil kan ligge i dvale hvis de er relatert til et sjeldent sett av omstendigheter. I slike tilfeller, testing er viktigere enn noen gang.
Tolker er vanligvis lettere å utvikle enn kompilatorer, og programmene deres er mer bærbare av design.
Hva er hybridoversettelse?
Hybrid oversettelse bruker en kompilator og en tolk. Hybrid oversettelse kompilerer kildekode på høyt nivå til en form på lavere nivå, for eksempel bytekode. Den bruker deretter en tolk for å kjøre den bytekoden.
Hybrid oversettelse kan variere fra ett programmeringsspråk til et annet, men vil bruke denne generelle strukturen. Et av de mer populære programmeringsspråkene som bruker hybrid oversettelse er Java. Java-kompilatoren oversetter kildekoden til Java Virtual Machine (JVM) bytekode. Tolken oversetter deretter JVM-bytekoden til maskinkode.
Hvilke programmeringsspråk bruker hybridoversettelse?
Noen populære hybrid programmeringsspråk inkluderer:
- Java
- C#
- Visual Basic
- Erlang
- F#
Med hybrid oversettelse får du det beste fra to verdener. Ved å kompilere koden først kan du løse feil så snart som mulig. Bytekoden som hybridkompilatorer lager er lettere å tolke enn en programkildekode på høyt nivå.
Verdien av å kjenne til de forskjellige oversettelsesmetodene
Du bør forstå den spesifikke oversettelsesmetoden som et språk bruker, spesielt hvis du bruker den til et nytt prosjekt. En språkoversettelsesmetode er en viktig del av et programmeringsspråks identitet. Det kan påvirke hvordan du distribuerer programmet og hvordan brukerne vil kjøre det.
Hver oversettelsestilnærming har sine egne fordeler. Topp programmeringsspråk som C++, Python og Java bruker alle forskjellige oversettelsesmetoder. Ved siden av et språks paradigme er oversettelsesmetoden en av de viktigste egenskapene du bør være klar over.
Det er flere paradigmer som et programmeringsspråk kan bruke. De fleste av de beste programmeringsspråkene er flerparadigmespråk; de støtter bruken av to eller flere forskjellige paradigmer. Tre av de mest populære paradigmene er imperativ, objektorientert og funksjonell programmering.