Newsgroup: it.scienza.informatica
Titolo: Interprete o compilatore ?

Salve a tutti.
Volevo chiedere a voi informatici,
quali sono i vantaggi e gli svantaggi nell'usare un interprete
anziche un compilatore a parte la velocita di esecuzione del codice.
E poi un'ultima cosa, secondo voi,
costruire un s/o con un interprete e' una fesseria?
oppure si potrebbe fare?
che problemi comporta?
(non vi preoccupate di parlare in termini tecnici
perche' sono analista-programmatore da oltre 12 anni)
grazie a tutti
davide U.

 davide U.
-- 
# Giorgio Vecchiocattivi
# Osra Toscana srl
# Tel. 
+39 0583 981501
 
#      +39 0339 2842578 



 costruire un s/o con un interprete e' una fesseria?


E poi devo essere pignolo l'assembler non e' interpretato
???
Paolo
--------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
--------------------------------------------------

 che problemi comporta?
Premesso che tutti i sistemi operativi comprendono alcune parti
interpretate (tutti i sistemi "Unix Like" realizzano molte funzioni
mediante "shell script" che vengono interpretati) e' evidente che una
parte del S.O. deve essere in linguaggio macchina e quindi compilata, ma
se questa comprende l'interprete il resto puo' essere tutto interpretato.
Ad esempio molti anni fa alcuni computer "mescolavano" il sistema
operativo con l'interprete del Linguaggio Basic e quest'ultimo costituiva
l'unico ambiente di lavoro. Molte funzioni tipiche del sistema operativo
(copia di files, accesso alle periferiche, etc.) venivano realizzate
mediante programmi scritti in Basic. Quindi penso si possa parlare di un
S.O. interpretato.
--------------------------------------------------------------------------
       -- )     Luca Fini                            Tel: +39 055 2752 307
 ___    |\      Osservatorio Astrofisico di Arcetri  Fax: +39 055 2752 292
/   |   | |-_   L.go E.Fermi, 5 +-----------------------------------------
(___|___//___)  50125 Firenze  /   WWW: 
http://www.arcetri.astro.it/~lfini
 (_)      (_)   Italia        / e-mail: 
lf...@arcetri.astro.it
-----------------------------+--------------------------------------------
                              In a world without fences - who needs GATES?

se questa comprende l'interprete il resto puo' essere tutto interpretato.
Il linguaggio macchina e` interpretato (dall'hardware).
In effetti a livello firmware esiste solo interpretazione.


saluti
Veramente una istruzione assembly (mi riferisco all'assembly privo
di pseudo istruzioni o per meglio capirci al linguaggio macchina) e` un
microprogramma che e` rigorosamente interpretato.
Forse ci stiamo riferendo a cose diverse.


 writes:
LF> 
LF> Il codice sorgente e' per sua natura "portabile". Quindi un linguaggio
LF> interpretato facilita l'esecuzione su diverse piattaforme.
scusa, ma io   questa cosa proprio non   riesco a  capirla. Perchè  un
linguaggio      compilato  dovrebbe essere     meno   portabile di uno
interpretato? in linea  di  massima poi un linguaggio  potrebbe essere
sia compilabile che interpretabile, o no?
Ad esempio: l'ANSI C (compilato)  mi sembra moooolto più portabile del
Visual Basic (interpretato). Probabilmente è  questione di marketing e
non tecnica, ma tant'è... :-)
Esistono degli interpreti C, anche se non so quanto siano validi.
Ciao
Marco
-- 
Non sempre fugge chi volta le spalle.
		-- Anonimo gay, su it.hobby.umorismo

MP>non tecnica, ma tant'è... :-)
La portabilita' non si riferisce al linguaggio di programmazione ma al
codice prodotto dal compilatore/interprete!!!

precisazione al mio precedente post:
l'interprete non produce codice...
quindi la portabilita' si riferisce al codice da dare in pasto
all'interprete nel caso di linguaggi interpretati e al codice da dare in
pasto al s.o.nel caso di linguaggi compilati!
per la versione di un  linguaggio sia compilato che interpretato...vedi
JAVA...la portabilita' si riferisce al risultato della compilazione
file.class che puo' essere eseguito su differenti  architetture
indistintamente.
L'esistenza di un compilatore o di un interprete per un linguaggio
dipende semplicemente da opportunita' commerciali o di altra natura!!!

 Esistono degli interpreti C, anche se non so quanto siano validi.
E' vero. Credo comunque che la validita' dipenda dal campo applicativo. C
e' usato principalmente per applicazioni "compilate" (ovvero per scrivere
programmi che vengono compilati una volta e poi girano molte
volte). Il "pubblico" del linguaggio e' poco interessato a versioni
interpretate. Di conseguenza quelle che si trovano in giro sono "poco
valide".
							l.f.
-- 


 microprogramma che e` rigorosamente interpretato.
Questo e' vero a patto che il uProc sia microprogrammato. Ad esempio un RISC
non lo č.

 writes:
FF> 
FF> precisazione al mio precedente post:
a dir la verità,   io ho sempre    sentito parlare di portabilità   in
riferimento ai linguaggi, mai agli  eseguibili, se non prima di  java,
che però è un caso molto molto particolare, essendo totalmente ibrido:
priam fase di compilazione e seconda di interpretazione. Oltretutto ci
sono dei  chip   che 'interpretano' il  byte-code,   quindi portano il
byte-cose nella stessa situazione del codice macchine. Senza contare i
compilatori java->nativo.
FF> l'interprete non produce codice...
dipende dall'interprete  e dal livello  di ottimizzazione che si vuole
raggiungere.  Ad   esempio,  l'interprete java  di  Borland (javacomp)
quando incontra un certo byte-code la prima volta, lo interpreta, alla
seconda produce codice macchina.
FF> quindi la  portabilita' si  riferisce  al codice  da dare in pasto
FF> all'interprete nel caso di  linguaggi interpretati e al  codice da
FF> dare in pasto al s.o.nel caso di linguaggi compilati!
mi sembra una classificazione un poco artificiosa, già per il fatto di
fare riferimento al concetto di sistema operativo che  è quanto di più
vago ci possa essere.
FF> per     la versione   di   un    linguaggio   sia compilato    che
FF> interpretato...vedi    JAVA...la   portabilita'   si  riferisce al
FF> risultato della compilazione file.class  che puo' essere  eseguito
FF> su differenti architetture indistintamente.
il  bytecode   java  E' un assembler,    con  pari dignità   di quello
intel.  L'unica differenza è  che non esistono altrettanti 'emulatori'
di  Intel. In quest'ottica,  allora dovremmo dire  che anche il codice
macchina  del  C-64  era portabile,  perchè  possiamo  farlo girare su
intel, con S.O.  linux o windows. ;-)
FF> L'esistenza di un compilatore o di un interprete per un linguaggio
FF> dipende semplicemente da opportunita' commerciali o di altra natura!!!
certamente.
Ciao
Marco
-- 
Noi usiamo Linux per tutte le nostre applicazioni critiche.  Avere il
codice sorgente significa che non saremo mai tenuti in ostaggio
dall'ufficio di supporto di nessuno.
		-- Russell Nelson, Presidente della Crynwr Software