[PLUTO-help] Domanda su compilatore perl
sabatino
sabatino.palladino a aliceposta.it
Lun 13 Nov 2006 15:18:14 CET
Alle 10:37, lunedì 13 novembre 2006, Gian Uberto Lauri ha scritto:
> Queste sono seghe mentali.
> ...
> Una implementazione di un linguaggio che compila al volo (per una
> macchina virtuale o fisica) è un interprete.
Sí, sono seghe mentali; in fin dei conti un programma che
si comporta esattamente come un interprete è un interprete,
qualunque sia la sua particolare implementazione.
Però il caso di Perl è unico: ha una grammatica sensibile al
contesto e ciò lo rende più simile alle lingue naturali (tipo
inglese o napoletano) piuttosto che agli altri linguaggi di
programmazione (che hanno grammatiche libere dal contesto) e
contemporaneamente rende molto difficile, se non impossibile,
la compilazione.
In pratica rimane la via obbligata della compilazione
just-in-time o dell'interpretazione.
E dire che perl è un compilatore just-in-time e non un
interprete è una questione di lana caprina.
Ed ancora perl non produce un bytecode come risultato
intermedio ma un albero sintattico incompleto poiché
l'analisi lessicale risulta possibile solo al tempo
di esecuzione.
E questa non è una questione futile; il codice
intermedio di perl non si può semplicemente eseguire
su una macchina virtuale o linkare a librerie dinamiche
ma bisogna eseguire una analisi lessicale (il supporto
runtime comprende una versione modificata di Bison),
cioè bisogna finire la compilazione mentre si sta
eseguendo il programma.
Cioè nel caso di Perl la cosiddetta compilazione non
è la compilazione classica e non presenta vantanggi.
--
Sabatino
......
Non voglio i mille baci che diede Lesbia a Catullo,
pochi baci vuole chi riesce a contarli.
M. Valerio Marziale
(versione libera)
More information about the pluto-help
mailing list