en tolks roll i programmering
En tolk är ett datorprogram som direkt kör instruktioner skrivna på ett programmeringsspråk, rad för rad (eller uttalande per uttalande), utan att först konvertera hela källkoden till maskinkod. Den läser koden, analyserar den (analyserar syntaxen) och utför sedan de åtgärder som anges av koden omedelbart.
Nyckelegenskaper hos tolkar:
* Line-by-line exekvering: Tolkaren läser och kör programkoden en rad åt gången.
* Ingen mellanliggande kodgenerering: Till skillnad från kompilatorer skapar tolkar inte en separat körbar fil eller objektkodfil.
* dynamisk tolkning: Tolkningsprocessen sker under körtid. Tolkaren analyserar koden och utför åtgärder när programmet körs.
* Omedelbar körning: Ändringar som gjorts i källkoden kan ses omedelbart efter att ha sparat (vanligtvis).
Här är en uppdelning av processen:
1. Läs en rad/uttalande: Tolkaren läser nästa instruktion från källkoden.
2. analysera instruktionen: Den kontrollerar syntaxen och ser till att instruktionen är giltig.
3. Utför instruktionen: Tolkaren utför den operation som anges av instruktionen.
4. Upprepa: Steg 1-3 upprepas för varje rad/uttalande tills hela programmet har körts eller ett fel uppstår.
Exempel:
Föreställ dig ett enkelt Python -program:
`` `python
x =5
y =10
tryck (x + y)
`` `
När detta program drivs av Python -tolkaren:
1. Tolkaren läser `x =5`.
2. Den analyserar linjen och tilldelar värdet 5 till variabeln `x`.
3. Tolkaren läser `y =10 '.
4. Den analyserar linjen och tilldelar värdet 10 till variabeln `y`.
5. Tolkaren läser `print (x + y)`.
6. Den analyserar linjen, utvärderar `x + y '(som är 15) och kallar sedan funktionen' Print 'för att visa resultatet.
hur tolkar skiljer sig från kompilatorer
Den primära skillnaden mellan tolkar och kompilatorer ligger i hur de hanterar exekveringen av programkoden:
| Funktion | Tolk | Kompilator |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------
| Översättning | Linje-för-linjeutförande; ingen separat körbar. | Översätter hela källkoden till maskinkod eller en mellanliggande representation * före * exekvering. |
| exekvering | Körs direkt under runtime. | Utför den sammanställda koden senare, som en separat process. |
| felhantering | Fel upptäcks under körtid. | Fel upptäcks under sammanställningen och exekvering förhindras om fel finns. |
| hastighet | Generellt långsammare exekveringshastighet. | Generellt snabbare exekveringshastighet eftersom koden redan är översatt. |
| portabilitet | Mycket bärbar (körs på alla system med en tolk). | Mindre bärbar; Kräver en omkompil för varje målplattform. |
| felsökning | Enklare felsökning; Fel kan fastställas omedelbart. | Felsökning kan vara mer komplex, eftersom du felsöker den sammanställda utgången. |
| Minnesanvändning | Kan ha lägre initialt minnesavtryck eftersom det laddar kod på begäran. | Kan kräva mer minne under sammanställning för att skapa mellanliggande/maskinkod. |
| Utvecklingscykel | Snabbare utvecklingscykler eftersom förändringar är omedelbart synliga | Längre utvecklingscykler eftersom varje kodbyte måste kompileras igen innan du kör |
| exempel | Python, JavaScript, Ruby, PHP | C, C ++, Java (kompilerar till bytekode), gå, rost |
i ett nötskal:
* tolk: Kör direkt kod, rad för rad. Bra för snabb utveckling och portabilitet, men potentiellt långsammare.
* kompilator: Översätter hela programmet till maskinkod före körning. Resulterar i snabbare exekvering, men mindre bärbar och en längre utvecklingscykel.
Analogi:
Föreställ dig att du har en bok skriven på ett främmande språk.
* tolk: Du anställer en översättare som läser boken till dig högt och översätter en mening åt gången när de går.
* kompilator: Du har hela boken översatt till ditt modersmål i förväg. Du kan sedan läsa den översatta versionen själv utan att behöva en översättare närvarande.
hybridmetoder:
Det är också viktigt att notera att vissa språk använder en hybridmetod. Till exempel sammanställs Java till Bytecode, som sedan tolkas av Java Virtual Machine (JVM). Detta kombinerar fördelarna med både sammanställning (snabbare utförande) och tolkning (plattformsoberoende).