<- User-Mode-Linux - Indice Generale - Copertina - Sviluppo di software Open Source come esempio ... -> |
Sistemi Liberi
L'articolo...L'articolo è suddiviso in tre parti: nella prima parte, pubblicata in questo numero del PLUTO Journal, si discute sulle caratteristiche generali del software scientifico e le aree di utilizzo più importanti. |
Negli ultimi anni, il software libero si è imposto sempre di più in una molteplicità di ambiti di lavoro, producendo programmi per fare quasi tutto, se non tutto: ambienti desktop grafici, database, server e client di posta, server web, programmi per la grafica e il video, modellazione tridimensionale, grafica computerizzata, CAD, ecc...
Ci sono però alcuni ambiti in cui il software libero non ha raggiunto livelli di utilizzo paragonabili ai programmi che abbiamo elencato in precedenza. Uno di questi ambiti è quello scientifico, dove si fa ricorso predominantemente, almeno per quello che ho potuto constatare io, a programmi proprietari. E dico utilizzo perché in realtà il software c'è ed è di ottima qualità.
Questo fatto è dovuto a una molteplicità di fattori, alcuni dei quali sono comuni al software libero in generale, mentre altri sono caratteristici di questo particolare tipo di programmi:
L'ultimo punto potrebbe sembrare un paradosso. Tutto sommato, scienziati e ingegneri hanno a che fare con materie complesse, per cui ci si aspetterebbe una certa competenza nell'utilizzo di sistemi operativi e software adeguati al trattamento di queste problematiche. Nella mia esperienza, però, questa affermazione non corrisponde al vero: ho potuto constatare come anche all'interno di enti di ricerca predominino in genere sistemi operativi e software proprietari.
Non voglio dilungarmi su queste questioni, che tra l'altro tutti sicuramente conosciamo, ciascuno nel proprio ambito d'interesse. Questo articolo intende dare una panoramica delle possibilità che si hanno con il software libero di taglio scientifico, e in più si illustrerà qualche altra cosa. L'utilizzo di questi programmi non presuppone alcun tipo di conoscenze approfondite (anche se sono strumenti ottimi per chi le ha, docenti e professionisti), e può risultare proficuo a partire dagli studenti degli ultimi anni della scuola secondaria o dei primi anni di università.
L'articolo si divide in tre parti. Nella Parte I si fa una discussione sulle caratteristiche generali del software scientifico e le aree di utilizzo più importanti. La Parte II illustrerà alcuni software particolarmente interessanti tramite l'utilizzo di alcuni esempi, in modo da mostrare le loro potenzialità. La Parte III tratterà l'argomento dell'interfacciamento grafico, descrivendo le caratteristiche desiderabili in una buona interfaccia e illustrando una piccola applicazione web che consente l'interfacciamento a uno dei programmi descritti nella Parte II.
Di seguito verranno enumerate le tipologie di software che si hanno a disposizione e il loro relativo campo di utilizzo. All'interno di queste categorie saranno identificati alcuni problemi di media complessità, i quali forniranno un banco di prove per l'utilizzo di alcuni programmi che possiamo considerare rappresentativi delle rispettive categorie, e che saranno brevemente considerati nella Parte II di questo articolo.
I problemi matematici possibili sono di una vastità incredibile. Tuttavia è possibile individuare alcuni temi fondamentali che sono i mattoni di base con i quali risolvere problemi più complessi. In genere i software disponibili offrono strumenti all'interno delle seguenti problematiche [1]:
Soluzione di equazioni lineari algebriche | Sistemi di equazioni non lineari |
Interpolazione e estrapolazione | Minimizzazione e massimizzazione di funzioni |
Integrazione di funzioni | Eigensistemi |
Calcolo funzionale | Trasformate di Fourier e metodi spettrali |
Funzioni speciali | Descrizione statistica di dati |
Numeri random | Modelli di dati |
Ordinamento | Integrazione di equazioni differenziali ordinarie |
Ricerca di radici | Equazioni alle derivate parziali |
L'ampiezza delle problematiche trattabili con software scientifico rende necessaria una codifica per un'identificazione univoca degli algoritmi. Una codifica molto usata è quella elaborata dal GAMS (Guide to Available Mathematical Software, http://gams.nist.gov), che è un sistema incrociato di indicizzazione e un repository virtuale di componenti software utilizzabili nelle scienze della computazione e in ingegneria. La codifica GAMS prevede le seguenti categorie, ciascuna identificata da un codice anlfanumerico:
A Aritmetica, analisi di errori | K Approssimazione |
B Teoria di numeri | L Statistica, probabilità |
C Funzioni elementari e speciali | M Simulazione, modelli stocastici |
D Algebra lineare | N Data handling |
E Interpolazione | O Computazione simbolica |
F Soluzione di equazioni non lineari | P Geometria computazionale |
G Ottimizzazione | Q Grafica |
H Integrazione, differenziazione | R Routine di servizio |
I Equazioni differenziali e integrali | S Tool di sviluppo software |
J Trasformate integrali | Z Altro |
Ognuna di queste categorie è articolata a sua volta in una serie di sottocategorie a più livelli, che consentono la codifica e la classificazione univoca di ogni algoritmo.
Dall'ottica di questo articolo è conveniente realizzare una classificazione sommaria del software disponibile, in modo da delimitare alcuni ambiti applicativi che consentano una maggior chiarezza espositiva. Queste categorie sono arbitrarie e da certi punti di vista sono comuni agli altri tipi di software. Vengono proposte due diverse classificazioni.
Dal punto di vista dell'architettura, il software può essere suddiviso in due categorie principali:
Benché questa classificazione sia comune a tutti i tipi di software, l'inclusione qui è giustificata dal fatto che le librerie costituiscono una modalità particolarmente importante con cui viene rilasciato il software scientifico. Nella Parte II daremo alcuni esempi di librerie importanti.
Dal punto di vista della natura dei problemi da trattare, il software scientifico può essere suddiviso nelle seguenti categorie, ognuna caratterizzante un grande ambito applicativo:
Di che cosa ho bisogno se voglio avere una stazione di lavoro autosufficiente per quanto riguarda il calcolo scientifico? Secondo me si devono avere i seguenti tipi di software:
Se in più si è un programmatore, un buon sistema dovrebbe prevedere:
In questa prima parte abbiamo effettuato una discussione di carattere generale sul software scientifico, ed è stata proposta una classificazione in maniera da delimitare il più chiaramente possibile gli ambiti applicativi. Nella Parte II entreremo più nel dettaglio, descrivendo alcuni programmi interessanti che saranno illustrati con l'aiuto di alcuni esempi.
L'autoreFrancisco Yepes Barrera, Paco, è socio di ILS ed appassionato per diletto e per lavoro di informatica e di scienze. I suoi interessi riguardano la computazione scientifica, l'intelligenza artificiale e l'utilizzo di software libero nella soluzione di problemi matematici. |
<- User-Mode-Linux - Indice Generale - Copertina - Sviluppo di software Open Source come esempio ... -> |