În programarea computerelor, atunci când codul sursă care poate fi citit de om este analizat de un compilator, compilatorul traduce adesea comenzile sursă într-o secvență de instrucțiuni care nu sunt chiar cod nativ de mașină, dar care pot fi procesate, optimizate sau compilate în continuare de către compilator sau alt software. unelte. Fișierele care sunt produse conțin instrucțiuni despre care se spune că sunt într-un limbaj intermediar, deoarece limbajul folosit de compilator nu are nici un sens pentru sistemul de operare mai mare, nici limbajul folosit de programator pentru a scrie codul în primul rând, ci în schimb este un limbaj care acționează ca o punte între scrierea și execuția programului. Un limbaj intermediar este uneori folosit pentru a permite unui compilator să facă optimizări foarte precise, astfel încât programul să ruleze mai eficient, dar poate fi folosit și pentru a produce fișiere de ieșire care sunt portabile între sisteme diferite, incompatibile. Sintaxa reală a limbajului poate să semene cu codul de mașină sau cu alte tipuri de bytecode care nu pot fi citite de oameni, sau limbajul poate fi doar un limbaj de programare de computer multiplatformă existent.
Când este utilizat pentru optimizarea compilatorului, un compilator de limbă preia fiecare instrucțiune într-un fișier de cod sursă și descompune comanda în limbajul intermediar. O singură instrucțiune de programare care poate fi citită de om se poate descompune în zeci de instrucțiuni în limbajul mașinii, astfel încât limbajul intermediar creează un nivel de abstractizare pe care compilatorul îl poate folosi pentru a identifica zonele din cod în care pot fi făcute optimizări fără a fi nevoie mai întâi de a lega codul de orice implementări sau biblioteci native. Odată finalizat, fișierul de cod intermediar poate fi apoi compilat în continuare pentru a face un fișier binar nativ sau poate fi rulat printr-un alt program, cunoscut sub numele de interpret, care va executa codul compilându-l în instrucțiuni native, după cum este necesar.
Unele limbaje, cum ar fi Java®, folosesc un limbaj intermediar pentru a crea fișiere compilate care sunt optimizate, dar și portabile pe alte sisteme informatice. Acest tip de cod este uneori cunoscut ca bytecode și seamănă cu codul mașinii sau limbajul de asamblare. Bytecode este stocat în fișiere într-un mod care este independent de platformă, ceea ce înseamnă că poate fi transferat pe orice sistem de computer sau dispozitiv care poate rula un interpret. Odată ce bytecode este pe un sistem, poate fi fie rulat ca program interpretat, fie poate fi compilat pentru a rula nativ pe sistemul țintă.
În unele cazuri, un limbaj de calculator este conceput pentru a facilita programarea către un anumit scop, cum ar fi o aplicație web interactivă, dar designerii nu doresc să includă compilatoare personalizate, interpreți sau plug-in-uri pentru diferite sisteme. În aceste cazuri, limbajul intermediar al compilatorului poate fi un limbaj existent care are deja interpreți multi-platformă stabiliți. Limbajul intermediar rezultat în acest caz este lizibil de om. Un exemplu de limbaj de programare pentru computer care este folosit și ca limbaj intermediar este JavaScript®, care are avantajul de a putea rula în aproape orice browser web pe orice platformă, începând cu 2011.