|
Abbiamo visto dunque come Linux non sia il
lavoro di una sola persona, ma il risultato di decenni di sviluppo
di software orientato alla ricerca, e che il kernel sia stato
sviluppato in realtà da un team di volontari in contatto tra
loro grazie ad Internet. Gran parte dei programmi per Linux
provengono dallo GNU Project, altri dallo Unix BSD, altri ancora da
svariati progetti di ricerca. Faremo una rassegna di alcuni dei
principali pacchetti di free software che girano su Linux.
Sicuramente il nucleo di software più
ricco sono i programmi dello GNU Project. La FSF vorrebbe (e a
ragione) che il nome dei sistemi oggi chiamati Linux fosse
GNU/Linux. Infatti se Linux è il kernel, il resto è
in gran parte software GNU, anche se non soltanto GNU.
Linux stesso è stato sviluppato
utilizzando il compilatore GNU gcc. Si tratta di uno dei
primi programmi sviluppati dalla FSF. Questo compilatore è
importantissimo nel mondo Unix: è unanimemente riconosciuto
come eccellente, tanto che alcuni rivenditori di sistemi Unix
commerciali hanno abbandonato lo sviluppo dei loro compilatori C
preferendo finanziare lo sviluppo del gcc. Questo
compilatore è un ottimo esempio di come il software possa
essere considerato ricerca, e come la disponibilità dei
sorgenti possa portare risultati notevoli: il compilatore è
modulare, diviso in un front end che analizza il sorgente e
produce un codice intermedio e un back end che genera dal
codice intermedio il codice macchina per i vari processori. Sono
stati sviluppati parecchi altri front end per linguaggi
diversi dal C in grado di generare il codice intermedio per il
back end già esistente. Inoltre sono stati sviluppati
vari moduli per il back end in grado di generare codice per
moltissimi processori diversi. In pratica chi aveva bisogno di un
compilatore per un nuovo linguaggio o per una nuova piattaforma, ha
trovato più comodo aggiungere un pezzo e contribuire alla
causa del gcc che rifare tutto il lavoro da capo. Il
gcc è dunque il nucleo di un gruppo di compilatori
per linguaggi come C++, Pascal, Fortran, Objective C e Modula-3 in
grado di produrre codice per Intel, Alpha, PowerPC, 68000 e una
miriade di altre piattaforme. I risultati sono programmi compatti e
veloci. Ci sono voluti parecchi anni perché il gcc si
stabilizzasse e venissero corretti gli innumerevoli bug,
inevitabili in un progetto così complesso, ma oggi il gcc
è piuttosto stabile. Non bisogna dimenticare che la sua
libreria è tra le più complete esistenti ed è
in grado di compilare codice in C proveniente da fonti
diversissime. È in buona parte merito del gcc se molti
programmi per gli Unix più disparati riescono a compilare
senza problemi o con poche modifiche su Linux.
Il primo programma del progetto GNU comunque
è stata la terza implementazione di Emacs sviluppata da
Stallman, lo GNU Emacs. Si tratta di un sofisticatissimo editor di
testi programmabile in linguaggio Emacs Lisp (più o meno
come il Word che è programmabile in linguaggio Word Basic) e
quindi estendibile in molti modi. Qualcuno lo definisce un editor
che da solo è un sistema operativo, tante e tali sono le
funzioni che offre: si può leggere la posta e le news,
aprire un telnet, e perfino giocare con le torri di hanoy o
consultare un psicanalista simulato senza uscire dall'editor.
Per quanto riguarda le interfacce grafiche,
su Linux gira l'XFree86, un adattamento per le schede grafiche
tipiche dei PC dell'ambiente grafico XWindows, sviluppato al MIT
nella metà degli anni '80. L'XWindows è in sostanza
un protocollo, ma la implementazione del MIT è distribuita
anche essa come free software. In un certo senso XWindows è
il Windows di Unix anche se il paragone non calza perfettamente:
infatti questo ambiente grafico non mette a disposizione chiamate
di sistema per creare finestre e menù, ma primitive grafiche
di livello più basso, come quelle per tracciare linee e
cerchi. Una interfaccia grafica è un insieme di elementi
grafici, detti widget. Un widget set definisce una
interfaccia, che dà ai programmi che lo usano un certo look.
In un certo senso è possibile definire il look
dell'interfaccia, come se Windows offrisse la possibilità di
usare anche il look del Mac. Insieme a XWindows viene fornito il
set di widget Athena, piuttosto scarno e brutto: per esempio i
bottoni sono solo dei rettangoli con una scritta al centro! Lo
standard per le interfacce grafiche in ambiente Unix è il
Motif, che sfortunatamente è software commerciale, e non
è disponibile in sorgente; comunque è in vendita
anche per Linux. Per ovvi motivi, non molto free software viene
sviluppato utilizzando Motif. È in corso lo sviluppo di un
clone, detto Lesstif, ma non è ancora utilizzabile come
alternativa al Motif. Invece, molto promettente e collegato al
progetto GNU è il progetto GNUStep, che ha come obiettivo
quello di produrre un ambiente grafico simile al NextStep, in
quanto le specifiche, dette OpenStep, sono state pubblicate e sono
liberamente utilizzabili.
Una caratteristica importantissima di
XWindows purtroppo poco conosciuta e sottovalutata ma che potrebbe
tornare in auge i prossimi anni è la sua capacità di
creare applicazioni grafiche completamente distribuite: in pratica
un utente può utilizzare una applicazione grafica che gira
in una altra macchina. Non si tratta di client/server nel senso
classico di due programmi, un server e un client: esiste infatti un
solo programma che gira su una macchina, ma che produce output
grafico su un'altra. In teoria, avendo un Word Processor che giri
sotto XWindows, un utente potrebbe collegarsi via Internet alla
macchina dell'ufficio e utilizzare da casa il word processor
grafico come se sedesse alla scrivania dell'ufficio. Oggi per fare
queste cose con Windows o Mac occorrono appositi programmi
commerciali da acquistare a parte, mentre XWindows offre questa
possibilità come funzione base del sistema grafico.
Per la produzione di documentazione, abbiamo
il TeX, sviluppato da Knuth, l'autore della monumentale Art of
Computer Programming, proprio per produrre risultati esteticamente
accettabili per la sua opera. Il TeX non è un word processor
come Word, in quanto non è WYSIWYG: l'autore non vede il
risultato; piuttosto scrive delle direttive su come vuole che il
testo sia formattato, similmente a come avviene con l'HTML. Il
"sorgente" viene poi passato attraverso il "compilatore" TeX che
produrrà un file con estensione .dvi, una
rappresentazione indipendente dalla periferica di output. Infine il
dvi potrà essere stampato o visualizzato, utilizzando
appositi programmi per ogni particolare periferica di output.
Esiste tuttavia già oggi il LyX, un word processor che gira
sotto XWindows quasi WYSIWYG che è in grado di produrre
un sorgente TeX mostrando mentre si compone il testo i risultati
della formattazione.
Per quanto riguarda i linguaggi di
programmazione, ce ne sono tantissimi disponibili. Innanzitutto il
C e tutti gli altri supportati dal gcc, poi numerosi altri:
per esempio il Perl e il TCL. Il Perl è un linguaggio
sviluppato da Larry Wall che trasforma la "filosofia" di Unix in un
linguaggio di programmazione, estremamente potente ma anche
piuttosto atipico e non semplicissimo. Il TCL invece è stato
da molti definito il Visual Basic di Unix. La sua sintassi è
C like, ma si tratta di un linguaggio interpretato
particolarmente semplice, in grado di produrre velocemente, grazie
al toolkit Tk, interfacce grafiche in ambiente XWindows in maniera
molto semplice. Infatti il Tcl/Tk è molto usato per creare
dei front end grafici in ambiente Unix. Da notare che il Tk ha
lo stesso "look" a bassorilievo di Motif, ma non è Motif:
l'esistenza del Tcl/Tk ha abbastanza mitigato il problema che il
Motif non è free software, ed è già possibile
utilizzare il Tk anche con linguaggi diversi dal Tcl.
|