Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 1238

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>The Unix and Internet Fundamentals HOWTO: Come funzionano i linguaggi per computer?</TITLE>
 <LINK HREF="Unix-Internet-Fundamentals-HOWTO-13.html" REL=next>
 <LINK HREF="Unix-Internet-Fundamentals-HOWTO-11.html" REL=previous>
 <LINK HREF="Unix-Internet-Fundamentals-HOWTO.html#toc12" REL=contents>
</HEAD>
<BODY>
<A HREF="Unix-Internet-Fundamentals-HOWTO-13.html">Avanti</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO-11.html">Indietro</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO.html#toc12">Indice</A>
<HR>
<H2><A NAME="s12">12. Come funzionano i linguaggi per computer?</A></H2>

<P>Abbiamo gi&agrave; visto 
<A HREF="Unix-Internet-Fundamentals-HOWTO-6.html#run">come vengono eseguiti i programmi</A>. Ogni programma in definitiva deve eseguire un flusso di
byte che sono istruzioni nel <EM>linguaggio macchina</EM>
del vostro computer. Ma gli esseri umani non se la cavano molto bene
con il linguaggio macchina; riuscirci &egrave; divenuta un'arte rara, una
magia nera persino tra gli hacker.
<P>Quasi tutto il codice Unix, ad eccezione di una piccola porzione
relativa all'interfaccia diretta con l'hardware nel kernel, viene
oggi scritto in un <EM>linguaggio di alto
livello</EM>. (`Alto livello' in questa espressione &egrave; un residuo
storico volto a distinguerlo dai <EM>linguaggi
assembler</EM> di `basso livello', che sono fondamentalmente
sottili involucri attorno al codice macchina.)
<P>Ci sono diversi tipi di linguaggi di alto livello. Per affrontare
l'argomento troverete utile tenere a mente che il <EM>codice
sorgente</EM> di un programma (la versione creata dall'uomo,
editabile) deve passare attraverso un qualche tipo di traduzione in
codice macchina che il computer pu&ograve; effettivamente eseguire.
<P>
<H2><A NAME="ss12.1">12.1 Linguaggi compilati</A>
</H2>

<P>Il tipo pi&ugrave; convenzionale di linguaggio &egrave; il <EM>linguaggio
compilato</EM>. I linguaggi compilati vengono tradotti in file
eseguibili di codice macchina binario da uno speciale programma
chiamato (ovviamente) <EM>compilatore</EM>. Una volta che
il codice binario &egrave; stato generato potete eseguirlo direttamente senza
pi&ugrave; guardare al codice sorgente. (La maggior parte del software &egrave;
fornita come binari compilati a partire da codice che non vedete.)
<P>I linguaggi compilati tendono a dare prestazioni eccellenti e hanno il
pi&ugrave; completo accesso al SO, ma tendono anche a essere difficili da
programmare.
<P>C, il linguaggio in cui Unix stesso &egrave; scritto, &egrave; di gran lunga il pi&ugrave;
importante tra questi (con la sua variante C++). FORTRAN &egrave; un altro
linguaggio ancora usato tra gli ingegneri e gli scienziati ma di anni
pi&ugrave; vecchio e molto pi&ugrave; primitivo. Nel mondo Unix nessun altro
linguaggio compilato &egrave; nell'uso dominante. Al di fuori di esso, il
COBOL &egrave; molto usato per il software finanziario e commerciale.
<P>C'erano molti altri linguaggi compilati, ma la maggior parte di essi
si sono estinti oppure sono strumenti strettamente di ricerca. Se
siete nuovi sviluppatori Unix e usate un linguaggio compilato &egrave;
estremamente probabile che questo sia il C o il C++.
<P>
<H2><A NAME="ss12.2">12.2 Linguaggi interpretati</A>
</H2>

<P>Un <EM>linguaggio interpretato</EM> dipende da un programma
interprete che legge il codice sorgente e lo traduce al volo in
calcoli e chiamate di sistema. Il sorgente deve essere reinterpretato
(e l'interprete deve essere presente) ogni volta che il codice viene
eseguito.
<P>I linguaggi interpretati tendono a essere pi&ugrave; lenti dei linguaggi
compilati e spesso hanno accesso limitato al sistema operativo e
all'hardware sottostanti. D'altra parte, essi tendono a essere pi&ugrave;
facili da programmare e pi&ugrave; propensi a perdonare gli errori di
codifica rispetto ai linguaggi compilati.
<P>Molti programmi di utilit&agrave; di Unix, inclusa la shell, bc(1), sed(1) e
awk(1), sono in effetti piccoli linguaggi interpretati. I BASIC sono
di solito interpretati. Cos&igrave; pure il Tcl. Storicamente, il pi&ugrave;
importante linguaggio interpretato &egrave; stato il LISP (un grande
miglioramento rispetto ai suoi predecessori). Oggi il Perl &egrave; molto
usato ed in costante crescita di popolarit&agrave;.
<P>
<H2><A NAME="ss12.3">12.3 Linguaggi a codice P</A>
</H2>

<P>Dal 1990 &egrave; andato assumendo importanza crescente un tipo di linguaggi
ibridi che usa sia la compilazione che l'interpretazione. I linguaggi
a codice P sono come i linguaggi compilati nel senso che il sorgente
viene tradotto in una forma binaria compatta che &egrave; ci&ograve; che viene
realmente eseguito, ma che non &egrave; esattamente codice macchina. Si
tratta invece di <EM>pseudocodice</EM> (o <EM>codice
P</EM>) che &egrave; solitamente molto pi&ugrave; semplice ma pi&ugrave; potente di
un vero linguaggio macchina. Quando eseguite il programma,
interpretate il codice P.
<P>Il codice P pu&ograve; girare velocemente quasi quanto un binario compilato
(gli interpreti di codice P possono essere abbastanza semplici,
leggeri e rapidi). Ma i linguaggi a codice P riescono a mantenere la
flessibilit&agrave; e la potenza di un buon interprete.
<P>Importanti linguaggi a codice P includono Python e Java.
<P>
<HR>
<A HREF="Unix-Internet-Fundamentals-HOWTO-13.html">Avanti</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO-11.html">Indietro</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO.html#toc12">Indice</A>
</BODY>
</HTML>