Linguaggio compilato: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Collegamenti esterni: Creato la sezione e aggiunto il template "Collegamenti esterni"
 
(31 versioni intermedie di 26 utenti non mostrate)
Riga 1:
{{C|La voce, riguardo ad un concetto enciclopedico, allo stato sembra una ricerca originale. Da verificare molte informazioni contenute con l'ausilio di fonti adeguate.|informatica|giugno 2018}}
Per '''linguaggio compilato''' si intende un [[linguaggio di programmazione]] che prevede la traduzione ''una tantum'' del [[codice]] predisposto dal programmatore in [[linguaggio macchina]]; la traduzione viene eseguita da un programma detto [[compilatore]]. Si distingue dal [[linguaggio interpretato]], che invece viene tradotto, ad ogni esecuzione del codice, da un programma detto [[interprete]].
{{F|programmazione|giugno 2018}}
In [[informatica]] un '''linguaggio compilato''' è un [[linguaggio di programmazione]] implementato tramite un [[compilatore]], un programma che converte il [[codice sorgente]] in [[codice macchina]]. Differisce dal [[linguaggio interpretato]], in cui il codice è eseguito direttamente da un programma detto [[interprete (informatica)|interprete]].
 
Questo nome è vago e tecnicamente errato, perché ogni linguaggio può essere implementato sia con un compilatore, sia con un interprete. Inoltre, esistono e sono sempre più diffuse soluzioni miste, in cui un compilatore converte il codice in una forma intermedia (spesso detta [[bytecode]]), che viene interpretata o compilata in codice macchina a tempo di esecuzione da un [[compilatore just-in-time]].
Eseguita la traduzione in linguaggio macchina, si ottiene un [[file eseguibile]], che - in ambiente DOS/Windows - in genere è caratterizzato dall'estensione ''.exe'' (un tempo, piccoli programmi eseguibili avevamo l'estensione ''.com'').
 
== Caratteristiche ==
==Vantaggi dei linguaggi compilati==
Un programma compilato è generalmente autonomo, nel senso che non richiede che sia stato installato un secondo programma (l'interprete, appunto) per essere eseguito. Tuttavia, può richiedere che siano installati altri programmi e librerie per svolgere i propri compiti.<br />
*Il file programma compilato è immediatamente eseguito dal sistema operativo. In fase di lancio e di esecuzione, un programma compilato è quindi più veloce.
Un'altra conseguenza dell'assenza di interprete è il minor "peso" a tempo di esecuzione, in termini di tempo e memoria. Pertanto, un programma compilato risulta mediamente più veloce. Tuttavia, la differenza reale dipende dalle caratteristiche della macchina e dell'interprete utilizzato.<br />
*Il file programma compilato è generalmente autonomo. Copiato tale quale in un computer con sistema operativo identico o almeno compatibile con quello in cui è stata fatta la compilazione, non necessita di altri programmi o files per essere eseguito.
Al tempo dei primi PC, le [[CPU]] erano straordinariamente deboli e lente. Il vantaggio, in termini di velocità di esecuzione del programma, era assolutamente significativo e critico (secondi invece che minuti). Con i PC attuali e in ambiente grafico, la differenza nella velocità di esecuzione che passa fra unl'esecuzione linguaggiodi compilatoun eprogramma un buoncompilato linguaggioo interpretato rimane proporzionalmente la stessa, ma è praticamente inavvertibile (decimi di secondo invece che centesimi di secondo).
*Il file programma compilato è praticamente immodificabile. Non è possibile modificarlo per errore, ed è molto difficile (anche se un bravo [[hacker]] ci riesce) modificarlo deliberatamente.
*Il file programma compilato è praticamente incomprensibile all'uomo. Questo è molto utile quando il programma, per libera scelta dell'autore, è coperto da copyright. Un programma compilato può essere copiato illecitamente da chiunque, ma solo pochi riescono a "rubare le idee" che il programma contiene. E' uno dei motivi per cui in ambiro Free Software i programmi compilati vengono ''evitati''.
 
*Il filecodice programma compilatooggetto è praticamente immodificabile.: Nonnon è possibile modificarlo per errore, ed è molto difficile (anchemodificarlo sedeliberatamente unper bravoottenere [[hacker]]una cidiversa riesce)esecuzione modificarlodel deliberatamenteprogramma.<br />
==Svantaggi dei linguaggi compilati==
*IlInoltre, fileil programmacodice compilatooggetto è praticamente incomprensibile all'uomo. QuestoCiò èsi moltorivela utile quando il programma, per libera scelta dell'autore, è coperto da [[copyright.]]: Unun programma compilato può essere copiato illecitamente da chiunque, ma soloper pochi riescono a "rubareanalizzare le idee" che il programma contiene. E'è unonecessario deiun motivilavoro perdi cui in ambiro Free Software i programmi compilati vengono ''evitati''[[decompilazione]].
*Durante la programmazione, ogni modifica va verificata ricompilando il progetto e poi lanciando il file eseguibile ottenuto. In termini di rapidità di ''debugging'' e di aggiornamento, la differenza con un linguaggio interpretato è notevolissima.
*Non è possibile lanciare il programma eseguibile su un computer con un sistema operativo non compatibile.
*L'utente medio non ha alcuna possibilità di comprendere la logica del programma. Non è quindi in grado di individuare, o di proporre, alcun miglioramento (se non giudicando dai soli risultati dell'esecuzione.
*L'uso di soli programmi compilati mantiene l'utente finale in uno stato di sostanziale ''analfabetismo informatico''.
 
In termini di rapidità di ''[[debugging]]'' e di modifica del programma, la differenza tra compilatore e interprete è notevolissima.
==Esecuzione più veloce. Ma serve veramente?==
Al tempo dei primi PC, le [[CPU]] erano straordinariamente deboli e lente. Il vantaggio, in termini di velocità di esecuzione del programma, era assolutamente significativo e critico (minuti invece di secondi).
 
*Non è possibile lanciare il programma eseguibile su un computer consu cui non è installato un sistemainterprete operativoper nonil linguaggio in compatibileuso.
Con i PC attuali in ambiente grafico, la differenza nella velocità di esecuzione che passa fra un linguaggio compilato e un buon linguaggio interpretato rimane proporzionalmente la stessa, ma è praticamente inavvertibile (decimi di secondo invece che centesimi di secondo).
 
I linguaggi compilati rimangono di scelta in tutti gli ambiti in cui la velocità di esecuzione del software è fondamentale, deve essere monitorata, dove vengono sfruttate a fondo le risorse hardware, o le stesse sono limitate (applicazioni embedded, real time, videogiochi, multimedia).
Il vero motivo per cui attualmente si utilizzano linguaggi compilati è quello di evitare che l'utente ci metta il naso; non a caso, la qiasi totalità dei programmi commerciali (compreso il [[Freeware]], che non è [[Free software]] sono compilati e distribuiti in formato .exe. Il sorgente (il codice scritto dal programmatore) è gelosamente custodito dall'autore.
In questi casi si rinuncia alla relativa facilità di realizzazione del software con linguaggi interpretati, in cambio di maggior controllo delle risorse offerte dai linguaggi compilati.
 
==Voci correlate==
Parallelamente, molto Free Software viene scritto in linguaggio interpretato, ed in caso contrario viene liberamente distribuito anche il codice sorgente.
*[[Linguaggio interpretato]]
*[[Linux]]
*[[DosDOS]]
*[[Windows]]
*[[Sistema operativo]]
*[[Python]]
 
== Collegamenti esterni ==
==Alcuni esempi==
* {{Collegamenti esterni}}
Il [[linguaggio C]] è il migliore esempio di linguaggio compilato, ampiamente utilizzato sia in ambiente [[DOS]]/[[Windows]] che in ambiente [[UNIX]]/[[Linux]]/[Mac]].
 
[Categoria:{{portale|informatica]}}
[[Python]] é uno dei migliori, e più attuali, esempi di linguaggio interpretato; '''altamente''' consigliabile a chi voglia oggi avvicinarsi alla programmazione con un linguaggio su cui è veramente semplice fare i "primi passi", pur consentendo all'utente esperto praticamente qualsiasi cosa.
 
 
==Voci correlate==
[[Linguaggio interpretato]]
[[Linux]]
[[Dos]]
[[Windows]]
[[Sistema operativo]]
[[Python]]
 
[categoria[Categoria:Linguaggi di programmazione]]
[Categoria:informatica]