Un llenguatge compilat és un llenguatge de programació les implementacions del qual solen ser compiladors (traductors que generen codi màquina a partir del codi font) i no intèrprets (executors pas a pas del codi font, on no es produeix cap traducció prèvia a l'execució).[1]
El terme és una mica vague. En principi, qualsevol llenguatge es pot implementar amb un compilador o amb un intèrpret.[2] També és habitual una combinació d'ambdues solucions: un compilador pot traduir el codi font a alguna forma intermèdia (sovint anomenada p-code o bytecode), que després es passa a un intèrpret que l'executa.[3]
Avantatges i inconvenients
Els programes compilats en codi natiu en temps de compilació solen ser més ràpids que els traduïts en temps d'execució a causa de la sobrecàrrega del procés de traducció. Tanmateix, les noves tecnologies, com ara la compilació just-in-time, i les millores generals en el procés de traducció, estan començant a reduir aquesta bretxa. Les solucions mixtes que utilitzen bytecode tendeixen a una eficiència intermèdia.
Els llenguatges de programació de baix nivell s'acostumen a compilar, especialment quan la principal preocupació és l'eficiència, en lloc del suport multiplataforma. Per a aquests llenguatges, hi ha més correspondències un a un entre el codi programat i les operacions de maquinari realitzades pel codi màquina, cosa que facilita als programadors controlar l'ús de la unitat central de processament (CPU) i la memòria amb detall.
Amb cert esforç, sempre és possible escriure compiladors fins i tot per a llenguatges interpretats tradicionalment. Per exemple, Common Lisp es pot compilar al codi de bytes de Java (després interpretat per la màquina virtual Java), codi C (després compilat al codi de màquina natiu) o directament al codi natiu. Els llenguatges de programació que admeten múltiples objectius de compilació ofereixen als desenvolupadors més control per triar la velocitat d'execució o la compatibilitat o l'ús entre plataformes.[4]
Exemple de llenguatges compilats
Referències