Compilatore e interprete

stellacometa
Allora fanciulli/e...
Ecco il mio dubbio..più che dubbio vorrei essere sicura di aver capito bene! Mi direste la differenza sostanziale tra interprete e compilatore? Poi, che differenza c'è tra un programma interpretato e uno compilato?

Grazie di cuore a tutti coloro che mi aiuteranno magari inserendo pure qualche esempio!! :wink:

Risposte
eugenio.amitrano
ricordi il basic del commodore 64 ?
10 print
20 .....
aveva dei numeri che indicavano l'ordine di esecuzione delle linee di comando.
Questo tipo di editor vengono chiamati interpreti perche' eseguono una per volta le linee di comando.

Un compilatore invece, traduce interamente il programma e poi lo esegue.

Esempio:

programma scritto con un interprete basic

10 print "Ciao"
20 print "Stellacomenta"
30 cavolo
40 print "questo lo fara' ?"

se esegui il programma verra' stampato a video
Ciao
Stellacometa
syntax error in 30

Esegue il programma fino a che non trova l'errore.

Un compilatore non esegue il programma finquando non correggi l'errore.

Spero sia stato chiaro.

A presto,
Eugenio

stellacometa
Abbastanza direi..

Quindi vediamo se ho capito bene.. il compilatore prima traduce il programma per intero e poi lo esegue e questo sta ad indicare che se c'è anche un piccolo errore il programma non verrà eseguito..
L'interprete invece esegue comando per comando quindi non eseguirà il comando errato e segnalerà l'eventuale errore nella stringa in cui appare!!

Giusto?

eugenio.amitrano
giustissimo !!!! :smt023

gigilatrottola2
L'interprete è un programma in grado di tradurre, al volo, del codice da una forma intermedia a codice macchina, specifica per l'architettura su cui si trova. Per forma intermedia intendo un codice non piu come lo hai scritto tu, ma nemmeno in forma binaria.

I linguaggi interpretati (java, python, ...) ti danno il vantaggio di poter portare lo stesso codice su macchine diverse. Il problema è la lentezza... in quanto l'interprete deve tradurre riga per riga mentre il programma viene eseguito.

Il compilatore si occupa della traduzione dei sorgenti in una forma intermedia che poi verrà utilizzata dal linker o dall'interprete.

auridevil
c'è anche da dire che un programma interpretato sarà molto più lento in esecuzione rispetto a uno compilato, in quanto il secondo è ottimizzato in fase di compilazione.

manuelaoro
"eugenio.amitrano":

Un compilatore non esegue il programma finquando non correggi l'errore.


completamente odioso!
ricordo un episodio in cui, dopo aver perso tempo a capire come funzionava la quadratura di una funzione, il programma in linguaggio FORTran95 non fungeva mai..... 5 di noi x capire dove fosse il problema.... credevamo che non andasse bene l'algoritmo.....

ed invece era una semplice parentesi in +!!!! :smt068

stellacometa
HEHEHE..questa è bella!!! Capita spesso anche a me!

La novità è che non sapevo che il compilatore ottimizza il programma.. Interessante!

gigilatrottola2
Beh, nn è il suo compito primario, ma i moderni strumenti di sviluppo fanno questo ed altro, anche se in realta con il termine compilatore, ormai, molti intendono "tutto".

In realta, per capirci, nn è il compilatore a crearti l'.exe ;)

auridevil
bhe si...è il linker! il compilatore crea gli obj poi il linker li collega e crea l'exe

freddofede
"goldengirl":
[quote="eugenio.amitrano"]
Un compilatore non esegue il programma finquando non correggi l'errore.


completamente odioso!
ricordo un episodio in cui, dopo aver perso tempo a capire come funzionava la quadratura di una funzione, il programma in linguaggio FORTran95 non fungeva mai..... 5 di noi x capire dove fosse il problema.... credevamo che non andasse bene l'algoritmo.....

ed invece era una semplice parentesi in +!!!! :smt068[/quote]

Io non uso fortran, ma basta usare un buon IDE o fare un sano debug, in questi casi ;-)

manuelaoro
ma se il prof vuole che usiamo il fortran... :x

manuelaoro
"goldengirl":
ma se il prof vuole che usiamo il fortran... :x


mi autoquoto: nella fretta ho letto una cosa x un'altra lore.... :oops:
facendo la figura dell'ignorante....
scusatemi....

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.