<!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à 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 è 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 è 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ò effettivamente eseguire. <P> <H2><A NAME="ss12.1">12.1 Linguaggi compilati</A> </H2> <P>Il tipo più convenzionale di linguaggio è 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 è stato generato potete eseguirlo direttamente senza più guardare al codice sorgente. (La maggior parte del software è fornita come binari compilati a partire da codice che non vedete.) <P>I linguaggi compilati tendono a dare prestazioni eccellenti e hanno il più completo accesso al SO, ma tendono anche a essere difficili da programmare. <P>C, il linguaggio in cui Unix stesso è scritto, è di gran lunga il più importante tra questi (con la sua variante C++). FORTRAN è un altro linguaggio ancora usato tra gli ingegneri e gli scienziati ma di anni più vecchio e molto più primitivo. Nel mondo Unix nessun altro linguaggio compilato è nell'uso dominante. Al di fuori di esso, il COBOL è 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 è 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ù lenti dei linguaggi compilati e spesso hanno accesso limitato al sistema operativo e all'hardware sottostanti. D'altra parte, essi tendono a essere più facili da programmare e più propensi a perdonare gli errori di codifica rispetto ai linguaggi compilati. <P>Molti programmi di utilità 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ì pure il Tcl. Storicamente, il più importante linguaggio interpretato è stato il LISP (un grande miglioramento rispetto ai suoi predecessori). Oggi il Perl è molto usato ed in costante crescita di popolarità. <P> <H2><A NAME="ss12.3">12.3 Linguaggi a codice P</A> </H2> <P>Dal 1990 è 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 è ciò che viene realmente eseguito, ma che non è esattamente codice macchina. Si tratta invece di <EM>pseudocodice</EM> (o <EM>codice P</EM>) che è solitamente molto più semplice ma più potente di un vero linguaggio macchina. Quando eseguite il programma, interpretate il codice P. <P>Il codice P può 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à 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>