Compilació anticipada

De la Viquipèdia, l'enciclopèdia lliure
compilació anticipada

Tipuscompilation mode (en) Tradueix Modifica el valor a Wikidata
Característiques tècniques
PlataformaMultiplataforma

En informàtica, la compilació anticipada (amb acrònim anglès, compilació AOT) és l'acte de compilar un llenguatge de programació (sovint) de nivell superior en un llenguatge (sovint) de nivell inferior abans de l'execució d'un programa, normalment en temps de compilació, per reduir la quantitat de treball que cal dur a terme en temps d'execució.

Molt sovint, s'associa amb l'acte de compilar un llenguatge de programació de nivell superior com C o C++, o una representació intermèdia com Java bytecode o .NET Framework Common Intermediate Language (CIL) en un codi màquina natiu (depenent del sistema) de manera que el fitxer binari resultant es pugui executar de manera nativa, igual que un compilador natiu estàndard . Quan s'utilitza en aquest context específic, sovint es veu com el contrari de la compilació just-in-time (JIT).

Parlant de manera més general, els idiomes de destinació d'una compilació AOT no són necessàriament específics del codi de màquina natiu, sinó que es defineixen de manera més aviat arbitrària. Alguns articles acadèmics utilitzen aquesta paraula per significar l'acte de compilar el bytecode Java a C [1] o el moment en què es realitza el pipeline d'optimització.[2] Un projecte acadèmic[3] utilitza aquesta paraula per significar l'acte de compilar prèviament JavaScript a un IR optimitzat depenent de la màquina per a V8 (motor JavaScript) [4] i a un bytecode independent de la màquina per a JavaScriptCore.[5] Algunes implementacions de llenguatge industrial (p Clojure [6] i el motor de JavaScript d'Hermes [7]) utilitzen aquesta paraula per significar l'acte de compilar prèviament l'idioma font a un bytecode específic de VM. Angular (marc web) utilitza aquesta paraula per significar convertir la seva plantilla HTML i TypeScript a JavaScript.[8]

Referències[modifica]

  1. Jung, Dong-Heon; Park, Jong Kuk; Bae, Sung-Hwan; Lee, Jaemok; Moon, Soo-Mook Proceedings of the 6th ACM & IEEE International Conference on Embedded Software [Seoul, Korea], 22-10-2006, pàg. 188–194. DOI: 10.1145/1176887.1176915.
  2. Chambers, Craig Proceedings of the 2002 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-based Program Manipulation [Portland, Oregon], 14-01-2002, pàg. 1–8. DOI: 10.1145/503032.503045.
  3. Zhuykov, R.; Sharygin, E. (en anglès) Programming and Computer Software, 43, 1, 01-01-2017, pàg. 51–59. DOI: 10.1134/S036176881701008X. ISSN: 1608-3261.
  4. , <https://github.com/ispras/v8-aotc>. Consulta: 17 març 2021
  5. , <https://github.com/ispras/webkit-aotc>. Consulta: 17 març 2021
  6. «Clojure - Ahead-of-time Compilation and Class Generation» (en anglès). clojure.org. [Consulta: 17 març 2021].
  7. «Hermes: A new open source JavaScript engine optimized for mobile apps» (en anglès). Facebook Engineering, 12-07-2019. [Consulta: 17 març 2021].
  8. «Angular» (en anglès). angular.io. [Consulta: 17 març 2021].