Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Aiuto : una domanda sul linguaggio C

    Ciao a tutti, vorrei sapere quali sono le principali differenze a tempo di esecuzione fra un programma compilato e uno interpretato?
    Qualcuno può gentilmente aiutarmi ?
    Grazie!!!

  2. #2
    quello compilato ha tempo di start-up inferiore?
    Alla batteria dai retta ballA

  3. #3
    ne sei sicuro al cento per cento?
    Io al massimo sarei portato a pensare il contrario essendo l'approccio interpretato piu veloce e immediato.
    Chi sa qls è il benvenuto !

  4. #4
    non al 100%


    http://it.wikipedia.org/wiki/Linguaggio_interpretato
    In compenso, l'interpretazione di un programma può essere più rapida del ciclo compilazione/esecuzione. Questa differenza può costituire un vantaggio durante lo sviluppo, specialmente se questo viene condotto con tecniche di fast prototyping, o durante il debugging. Inoltre, la maggior parte degli interpreti consentono all'utente di agire sul programma in esecuzione sospendendolo, ispezionando o modificando i contenuti delle sue variabili, e così via, in modo spesso più flessibile e potente di quanto si possa ottenere, per il codice compilato, da un debugger.
    http://it.wikipedia.org/wiki/Linguaggio_compilato
    Il file programma compilato è immediatamente eseguito dal sistema operativo. In fase di lancio e di esecuzione, un programma compilato è quindi più veloce.
    ...
    Alla batteria dai retta ballA

  5. #5
    Originariamente inviato da signoresignori
    Io al massimo sarei portato a pensare il contrario essendo l'approccio interpretato piu veloce e immediato.
    "Veloce e immediato" un tubo, per eseguire un programma interpretato il sistema deve prima caricare un programma compilato (l'interprete), che spesso è di dimensioni non indifferenti, il quale si occuperà, poi di interpretare il codice. Un eseguibile compilato, invece, è codice eseguibile quasi direttamente dal processore, per cui il tempo di avvio è quasi immediato.
    I "quasi" della frase precedente si riferiscono al fatto che comunque gli eseguibili non sono codice caricabile ed eseguibile in memoria "al volo", ma prima di poterli eseguire il sistema operativo deve mapparli in memoria, creare uno stack per il thread principale del processo, caricare le dll a cui fanno riferimento (se sono tante l'operazione può richiedere del tempo, specie se vanno rilocate in memoria), sistemare tutti gli RVA con i valori effettivi in memoria, inizializzare la IAT ed effettuare una serie di altre operazioni di inizializzazione (quelle citate sono riferite in particolare agli eseguibili PE Windows, ma operazioni analoghe si applicano agli eseguibili di quasi tutte le piattaforme). Esse naturalmente sono necessarie anche per l'interprete di un linguaggio interpretato, che spesso poi è un programma particolarmente grosso (più tempo per caricare in memoria l'eseguibile).

    Quanto poi a tempo di esecuzione, la questione non è semplicissima. Un linguaggio compilato è generalmente più veloce (se il compilatore è ben fatto), anche se un interprete particolarmente furbo può in alcuni casi avvantaggiarsi della conoscenza dello stato attuale del programma (di cui il compilatore, al momento di compilare, ovviamente non può sapere nulla) per ottimizzare l'esecuzione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466

    Moderazione

    Sorvolando sul titolo poco significativo, che peraltro chiama in causa il linguaggio C senza sfiorarlo nemmeno, la questione è già stata dibattuta su parecchi newsgroup e molto probabilmente anche su questo forum in passato, oltre ad essere affrontata generalmente su molti siti che parlano di programmazione, con tutte le informazioni del caso.

    Non trattandosi comunque di un problema specifico con un linguaggio di programmazione, e considerando quanto detto sopra, anche tenendo conto del rischio "flame" che una discussione di questo tipo tende sempre a generare, meglio chiudere.

    Per ottenere una risposta soddisfacente, è sufficiente leggere siti o manuali che generalmente rispondono in modo diretto ed esaustivo a questa domanda, che è posta in termini troppo generici ("velocità" non vuol dire nulla, poiché vi sono tempi di avviamento, di esecuzione, di creazione degli oggetti e di rilascio della memoria non deterministici e altri fattori che concorrono a mitigare la risposta definitiva che si sta cercando, e che non c'è nei termini in cui è stata posta la questione, cioè senza specificità).

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.