Medan termen "kusiner" inte är en strikt teknisk term inom datavetenskap, kan vi tänka på följande verktyg som nära släktingar till kompilatorer:
1. Tolkar:
* Förhållande: Tolkar är som kompilatorer men istället för att producera maskinkod kör de källkoden direkt.
* Skillnad: Kompilatorer översätter hela programmet på en gång, medan tolkarna kör varje rad en efter en.
* Exempel: Python, JavaScript, Ruby
2. Assemblers:
* Förhållande: Assemblers översätter monteringsspråk (låg nivå kod) till maskinkod och fungerar som en bro mellan mänsklig läsbar kod och datorns språk.
* Skillnad: Kompilatorer arbetar med språk på hög nivå, medan monterare hanterar instruktioner på låg nivå.
* Exempel: NASM, MASM
3. Transpilers:
* Förhållande: Transpilers, eller källa-till-källkompilatorer, konverterar kod från ett programmeringsspråk till ett annat.
* Skillnad: Istället för att producera maskinkod matar de ut koden på ett annat högnivåspråk.
* Exempel: BABEL (Transpiles JavaScript -kod), TypeScript (Transpiles to JavaScript), CoffeeScript (Transpiles to JavaScript)
4. Förbearbetare:
* Förhållande: Förbearbetare ändrar källkoden innan den sammanställs. De kan definiera makron, inkludera externa filer och hantera villkorad sammanställning.
* Skillnad: De används som ett förbehandlingssteg före den faktiska kompileringsprocessen.
* Exempel: C Förprocessor, SASS (förbehållare för CSS)
5. Nedbrytare:
* Förhållande: Nedbrytare är motsatsen till kompilatorer. De försöker omvända ingenjörens maskinkod tillbaka till ett högnivåspråk.
* Skillnad: Nedbrytare förlorar ofta information under processen, vilket resulterar i mindre läsbar kod.
* Exempel: Ida Pro, Ghidra
6. Länkar:
* Förhållande: Länkar kombinerar sammanställd kod från flera filer till en enda körbar fil.
* Skillnad: De ingår inte i själva sammanställningsprocessen, men är avgörande för att bygga ett komplett program.
* Exempel: GNU LD, Microsoft Linker
Dessa verktyg har alla ett liknande mål att konvertera kod från en form till en annan, vilket gör dem nära släktingar till kompilatorfamiljen. Men de har var och en specifika uppgifter och arbetar på olika nivåer av abstraktion.