[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